071116 / Deferred Shading II

previous | next

These two shots are from my deferred shading prototype path.

Deferred Shading with Alpha Blending of Normals?

Back in August I forked my development path, branched out and tried Deferred Shading. I had not got it working (as can be seen if you follow the previous link) because of the problems of alpha blending normals. Unlike the traditional deferred shading path, I'm doing sorted alpha blending of material properties (including something which is not quite a normal, but serves a similar purpose) into my G-buffer.

Now I've found a trick method to blend my "normals" which modifies a shiny-to-diffuse material property (effectively changing the mipmap level in a future texture lookup). This knowledge is effectively the gateway towards a simplified shading pipeline, but I have a few more problems to solve to get there.

Random Thoughts on DX10.1

Putting this in my archive of thoughts on DX10.1 level hardware, of which perhaps it is going to take 1-2 years before the Khronos group catches up with an OpenGL spec for ... and then another 6 months to a year for driver support!

Anyway the hardware is here now in the form of AMD/ATI RV670 chipset.

What excites me the most about the hardware is the GPU double precision support. Something like 2 clocks for an ADD and 4 for a MUL? Would be ideal for say Atom II to move over the CPU bound double precision math to the GPU.

As for DX10.1, the ability to read and write from multi-sample buffers would be awesome! With this, it becomes easy to do order independent transparency in one geometry pass. Simply setup a multi-sample FBO with 4x4 samples per pixel. Render with AA off and stencil setup so each write to a pixel goes to another sample. Then read back the color/depth for the 16 samples, sort by depth and manually composite in the correct order. With any luck, by the time GL has support for this, the cards will have the bandwidth to do this at a good resolution.

As for the rest of DX10.1, I don't see it as all that important. Cubemap Arrays would be useful if only they managed to get the geometry shader pipe fast. Separate blend modes per MRT is something I'm not sure I'd use. Haven't reached the limit of vertex shader inputs and outputs yet either...