Ok, I got a little bit longer this morning, and got the Beer-Lamberts law function correctly implemented, and it looked a LOT better when it worked correctly. I had some issues with distance and how the absorbtion was calculated, but finally its working.
I’m still just using the depth buffer to get the distance, using two textures.. I need to render to more depth buffers of the object gets complex( like the spikeball ), and use all of them to get the correct distance. I will post more on this later, but first I want to get the transmittance algorithm working correctly ( Depth peeling ).
I decided that I want to devide the transmittance tutorial into three parts. One for the transmittance, one for reflection on our object and one for refraction. I think I will have the first one ready by today or tomorrow so if you think this is interesting, get ready to get some code to play around with! 🙂
Anyway, here is todays result, and don’t mind the artifacts on the spikeball and abstract model:
Spikeball got some depth buffer artifacts, and a problem because the depthbuffers aint overlapping 100 correct. I need to find out whats wrong..
Also, Depth-peeling can be used to get a good result on the distance the rays are traveling inside the object.
Sphere is correct at the moment.
This is a complex mesh and you can clearly see the depth buffer problem.
Looks much better, but still having the depth buffer problem.
Did you look at this article? http://developer.nvidia.com/object/real_time_translucency_gdc2004.html Might help you with the depth problems.
No I haven\’t, thank you very much for this. It looks really promising 🙂