Ok, I finally resolved my initial Q3A rendering issues – turns out that vertex winding in Q3A levels is not predefined (instead of the default cull-clockwise approach of OpenGL, 3D Studio etc) so that you have to turn all automatic culling off and cull yourself by face normals (ahh, like the old days…;). Once I altered this, fully fledged non-erratic geometry was mine to behold.
I still have a number of issues to resolve (in this order):
- Lightmaps need overbrightening – they are too dark using modulation and I can’t use a post-modulate calculation because this isn’t standard across rendering APIs.
- Textures seem to be inverted in the y-axis. This is odd. I am deliberately inverting textures in the D3DTexture class because under D3D a texture coordinate of (0,0) is the top left of the texture, wheras in OpenGL and 3D Studio it is the bottom left. I assumed Q3A would be the same since it uses OpenGL. Hmmm.
- Bezier patch support.
- Shader script support. Right now I’m only loading shaders that are of the simple fixed texture/lightmap variety. I need to parse the .shader files for textures with moving parts or multiple layers.
So, plenty to keep me busy. I move house tomorrow though so expect there to be silence for a few days…..