Updating the lighting
Not much, I made the renderer plug-able for our shaders, add a better lighting support (see screenshots).
I added a fourth Render Target.
The surface type is D3DFMT_A8R8G8B8, it stores the specular intensity, specular power, and occlusion factor (not computed actually).
I also tried to palletize the Material settings. I made the whole dynamic system which stores all the materials’ settings into a texture, with a look up index stored per pixel in the MRT. Everything went fine and smooth, but I dropped it because I don’t have the feeling it’s something necessary.
Read many papers on subsurface scattering, ambient occlusion and parallax mapping. I had to make sure everything could fit in the current architecture!
Screenshots:
Deferred Shading renderer version! I like this!!! 🙂
The point light is red, has short range and a high power, the specular highlight looks great. And it’s hundred times better when you can move the camera and lights in real-time! 🙂
Standard Renderer version.
The floor is a dumb square, so forget about specular lighting. The Point light (at the left) has a small range, that’s it does absolutely nothing on the floor.
Screenshots of the intermediate buffers:
Final Render
Final without Tonemap
Albedo
Position of each pixel in 3D space. Yes you can see the cylinder and the sphere, just look closer! 🙂
Depth of each pixel
Normal of each pixel
Blurred version, used by the ToneMapping process