A very big milestone. The Rock shader I was working on is finally complete. With a lot of trial and error the triplanar bump mapping works togethers with the specular reflections. Lighting is now correct. And I created a new skybox because it’s getting boring looking at the same sky over and over again. Will release the hlsl shader soon….
Aaah this is the most beatiful thing. Earths atmosphere…. Spent hours creating a good UV sphere.
Updated the procedural rock and awesome shader to create bumps on the rock and now finally it looks great. The inspiration for this all was the opengl shader from Cave3d, a very inspirational google project that shows some fantastic graphics. The porting to HLSL and the triplanar blending went well but the lighting and specularity were wrong (Due to wrong normals and blending problems). Then I looked at the Cascades sample and looked at the triplanar texturing part. After that I had some specular artifacts (extreme white dots and flickering) and it looked just plain horrible. But finally the last piece of the puzzle was found on Petrocket blog that used 6 texture samples to create the bump vector. The shader on Petrocket calculates the normals in world-space but while that is good for static objects, this is not good for moving rocks (world transformed). So I calculate the UV’s in object space and also the normals!!! With the increased sampling the normal vector is now reliable enough to give correct lighting and specularity. I switched back to Lambert shading because this gives the best results (this was also used in the Cave3d shader. Here are some pictures that speak for themselves: You can see the triplanar blending if I render with RED, GREEN and BLUE components:
Can it get better that this? This looks real enough for me…… It’s a shader with bling-phong lighting model. The diffuse and normals are blended together. The model only has position and normal data. No UV-mapping!!!
Created a new noisy shader to create graphical effects for my ‘Procedural Rocks’. It is based on a shader mentioned on gamedev : Journal of Ysaneya And I got a basis implementation for this effect from : A hybrid approach for procedural planets. But I stripped the noise functions, deleted the UV mapping (because of procedural won’t have assigned UV mapping) and created these images: This could be used for craters, cracks and many other possibilities. Sources for this sample can be downloaded here