I've mentioned in passing once or twice that I have an experimental GLQuake engine which I use for testing out ideas on before moving them into a main codebase, and that this engine completely obliterates everything else for performance.
The reason for this is that I've abandoned any support for legacy hardware in it. It absolutely requires multitexture, shaders, vertex buffers, pixel buffers, all the good, modern stuff. (This, incidentally, is a direction I also intend moving in with DirectQ).
Unfortunately it's completely unreleasable for a number of reasons.
Firstly, the somewhat - shall we say - reactionary conservative - nature of some parts of the Quake community would prohibit it from being released. People will want to try it, and it won't work for many. This is for OpenGL 2.1 or higher hardware only, and makes extensive use of OpenGL 2.1 or higher features, so those who are still clinging to older kit won't be able to use it.
Secondly, it's very much a bare bones engine. No wateralpha, no fog, no shadows, no extended limits, no interpolation, no external textures, no multiplayer features, no mapper or modder features, you get the idea. It's just a very basic, very pure, ID1 Quake engine that exists for trying out ideas (like doing fullbrights on the GPU without needing an extra texture), without anything fancy to distract from it's purpose (and - more importantly - without polluting any main codebase with experimental stuff).
Thirdly, and most decisively - it contains non-GPL code in a critical area - it's timer. This is code otained from Microsoft's research website (search for KUSER_SHARED_DATA and ignore the rootkit sites) for a Windows (NT only - see first point) timer that has better resolution than timeGetTime but without the quirks of QueryPerformanceCounter.
I could go off on a rant here about how the GPL restricts creativity and sharing of useful code, all in the name of gene-pool purity, but I've done that before and I won't do it now. (Besides, Microsoft's attitude towards the GPL could be raised as a valid counter-argument).
Over time code and ideas from this will start emerging, but what of the engine itself? Life at over 1000 FPS is nice for sure, and I might circulate it privately some time, but I really don't want to remove the timer (doing so would prevent it from running at over 1000 FPS) or compromise it by adding compatibility with older hardware (or with features I consider inessential for the purposes of this engine) so a public release is out of the question.
Thursday, October 7, 2010
More Experimental Work
Posted by
mhquake
at
12:02 AM
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment