marciano wrote:
Regarding the remaining OpenGL states in egRenderer.cpp: I'm very busy with work but this shouldn't take too much time, so I can try to take care of it.
I have started to work on the d3d11 port. Did you have any free time to work on this Marciano ?
A little offtopic:
I have also started to do some optimization on h3dRender. Culling was fairly inefficient as we have 3 drawgeometries (opaque,alphatest,alphablend) in our pipeline and h3dRender currently does the culling for each drawgeom with the same parameters. So I split updatequeues into two function: cull and filter_sort and does the culling only once. It made the culling nearly three times faster.
The distant goal could be something like in this presentation:
http://bitsquid.se/presentations/flexib ... tforms.pdf.
h3dRender could have 4 stages:
1. culling visible objects (camera, light and shadow frustums) - probably more cache friendly to cull an object for each frustum at once
2. draw objects into an intermediate command stream
3. sort command stream
4. issue commands to device
stage 1 and 2 could be split into jobs
stage 3 could use some parallel_sort if needed
stage 4 could be parallel on d3d11, use main thread on OpenGL
what do you think about this design?