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 beautiful 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
Created a video of Psirens with fraps. A very good video-capturer of in game action.
Placed the procedural asteroids around the earth sphere. Added rotation, direction and speed. I was wondering if the procedural texturing would make the system bog down.
But it didn’t, so it won’t break a sweat on the Xbox 360 either I suppose. What takes a bit longer on the Xbox however is the creation of the rocks.
But that is probably because of the poor floating point performance of the Xbox.
I guess the Moon is finished…..
Expanded the rock shader with some ambient lighting. This makes the asteroid look less flat and show some more of the structure.
This is medium complex asteroid that still looks a bit dark, but looks detailed from a distance.
This is the highest complex rock. It looks like coal. It is probably a good idea to add some white parts that looks like ICE.
Developed a procedure to generate Perlin noise in a 3D Texture.
I got the idea to texture the asteroids this way from the Orange Book (OpenGL Shading Language, 2nd Edition (2006)), but I needed to convert the GLSL shader code to HLSL.
I am not a crack at that stuff so that was a bit hard to develop.
The benefit of this procedure instead of Projective texturing is that it always looks crisp and non distorted at any angle or distance.
It does’nt look lowpoly but in fact it is (light enable):
So everything about the rock is procedural now!!!
Now the next step is to smooth the asteroid, so that the lighting is more realistic.
And probably add some more irregularity. Some bump/normal mapping would make the asteroid more realistic.