Crossfading Texturemapping Plans (Patreon)
Content
People who examined Retroquad's source code may have noticed that I wanted to implement a texturemapping mode called "crossfading." It's a texturemapping mode that should smooth out texture transitions in a manner similar to terrain blending in the Quake 3 Arena engine. However, there's a number of reasons why it's difficult to implement:
• First, Retroquad doesn't support Q3A BSPs, and implementing a different file format every time I want to implement a new feature would bloat the engine. Retroquad is very complex already, and multiplying this complexity across a multitude of file formats isn't productive. Not to mention that Retroquad wouldn't be able to support the full Q3A BSP specifications anyway. It's already a shame that MD5 files aren't fully supported (only the minimum requirements for the remastered Q1 models)...
• Second, tools support. I am in no position to negotiate adoptions of Retroquad-specific features by tools developers. Getting people to adopt lightmapped liquids took years already.
• Third, the BSP compiling process. Without tools support and a different map format, there's no way to reliably assign extra rendering parameters per polygon between the map sources and the compiled BSP file. The BSP compiler subdivides the geometry and reorganizes the polygons in a way that there's no reliable way to track it.
• Fourth, authoring complexity. The (excellent) tutorial linked above requires creating multiple specific shaders, and additional brushes for each vertex. It's a laborious process, and if you switch textures and modify the brush geometry you'll have to update everything manually, so it's not optimal for freely iterating and experimenting around. And again, it's not supported in vanilla Quake's BSP29 file format.
However, today I had an idea of how to solve that. I won't get into specifics, but besides solving all those issues above, my implementation will also allow modders to implement crossfading texturemapping in closed-source maps. It will consist of a small in-engine WYSIWYG editor that saves the work in an external metadata file format that's compiled by the engine in specific caches upon rendering the map. Mappers will be able to modify textures, modify the geometry a little and recompile their maps in any BSP29-compatible way without having to redo the crossfading work.
Implementing this will take a lot of work, but will be easier than the whole work I've been doing on the raytraced dynamic lighting with pseudo-deviance, so I can do it.
But first, I gotta finish the pseudo-deviance optimizations.