@Kartoffel: Very nice and useful, though Hummel already did this some years (?) ago with his bacterium. I've had a look at the source and it's pretty simple and fast but could even be a little faster:
float zProj = pow(abs(dot(input.Normal, float3(0.f, 1.f, 0.f))), ProjectionPower); is obviously the same as float zProj = pow(abs(input.Normal.y), ProjectionPower); which can be shortened to float zProj = input.Normal.y*input.Normal.y; as ProjectionPower = 2 apparently gives the best results (the same goes for zProjx/y, of course).
EDIT: Thanks for sharing!
Last edited by Superku; 11/21/1221:31.
"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual