Some modeling work. I’ve taken a barrel and a muzzle flash from my double-barreled shotgun, mixed up with Quake’s regular shotgun, and the basic idea is to get a cleaner and smoother version of the regular shotgun done.
I’ve also re-aligned all vertices, swapped the edges of some pairs of triangles around to make sure the lighting works the same on both sides of the model, and of course created some new vertices and triangles to smooth the model up.
A funny thing about gouraud shading is that the lighting for each vertex takes in consideration all triangles made from it. So, to get the lighting working correctly on the model, we can’t delete all of the triangles that are never rendered, because some of them are needed to smooth out the lighting of their visible neighboring triangles.
In reverse, this also means that a model’s lighting can be flattened out by splitting all of its vertexes so none of them is assigned to more than one triangle. So, knowing where to merge and where to split a model’s vertexes can greatly improve its shading sometimes.
In this model’s case, the barrel’s vertexes will be split from the rest of the gun, to make the barrel more sharply lit. I’ve also done this in my version of the double-barreled shotgun, so you can have an idea of the effect.
This thing about the gouraud shading is also why the muzzle flash contains some triangles which are never rendered. I like the idea of having my models looking and working well in as many engines as possible, such as WinQuake, ToChriS, qbismSuper8, GLQuake, QuakeDC, Darkplaces, DirectQ and FTE, so I also take some of their specific quirks in consideration - which means that, even though those muzzleflashes are supposed to always be fully lit, I’ve also included enough triangles for them to be shaded correctly in engines without fullbrights.