Right now I'm mucking around with the structure of the renderer. Actual drawing, batching and sorting is already a solved problem, although I would probably prefer to have my alias models indexed to take advantage of vertex reuse, but I don't know yet if that's going to make it.
I think I'm on my 6th incarnation at the moment; ideally where I want to be is to have everything stored in a single list that I can read and draw from at any time. There have been some weird implementations, including chained lists (this one just would not die and bits of it persisted across 2 or 3 subsequent incarnations) and a fairly strange interpreted bytecode dialect.
I'd say that a good chunk of the difficulties here involve properly handling sky and water surfaces in instanced brushmodels. I don't even know if many mods actually even use them, but all the same it's something that GLQuake supported so I feel that I should too.
I need to resist the temptation to construct it as a generic scenegraph program, which is all too strong, and which I know is at least some of my motivation for what I'm doing, but it's something I feel that I need to get out of my system all the same. The final product looks like it's going meet somewhere inbetween that and GLQuakes naive "just draw everything as it passes" approach.
Update:
Just been building what I think is the 7th incarnation of the whole rendering structure, and I think I'm pretty happy with what I have now. It's reasonably generic (so far as Quake is concerned) and flexible enough to handle newer map and model features with relatively little pain.
So far I just have brush models (including the world) and alias models plugged into it, but as soon as I include sky (which is next, and needs HLSL support) things should progress quickly enough.
Thinking over it again, another motivation here was the sheer frustration I had implementing alpha brushmodel support on the 1.7 line, and the desire to avoid that again. This time I think I'm gonna be there nicely, so all looks well. I've said before that I loathed the setup of that old renderer, so it's nice to wave it goodbye.
I think that when release time draws near I might do 3 releases of 1.8; alpha, beta and final. There is just such a dramatic upheaval of the renderer after happening that I wouldn't be happy giving people the impression that the first release was in any way guaranteed to be utterly stable.
1 comments:
1.8alpha sounds good to me, bring it on! ;)
Post a Comment