Fresnel equations & subsurface scattering


Fresnel:
Fresnel equations describe the reflection and transmission of rays through an object. In essence, when the rays reach the boundaryof two different objects then  the part of the ray is reflected and part is refracted. I used russian roullette technique which determines either to refract or reflect based on the fresnel transmission coefficient. The working example can be seen at:Fresnel example

Here are some of the results of the rendering with color bleeding and caustic effects:


Reflection and refraction





SUBSURFACE SCATTERING
Subsurface scattering is a mechanism of light transport in which the light penetrates the surface of the translucent object, is scattered by interacting with material, and exits the surface at a different point. I used monte carlo subsurface scattering and absorption technique. Although the results are not quite accurate. The working example can be seen at: Subsurface scatter using monte carlo method







I also tried the sub surface scattering hack from the website:http://machinesdontcare.wordpress.com/2008/10/29/subsurface-scatter-shader/.
The results are as follows:




Cool Images produced while trying to do subsurface scattering:







Glossy effect

Color accumulation & refraction/reflection


Color Accumulation:
Finally I got the color accumulation working. The color is accumulated by creating two textures. For the final color in the scene we access the colors from the texture and then render the final color to the texture. That way, we are constantly accessing textures from the previous frame and updating the texture in current frame with the final color.





Investigating three.js-- Interactive Camera

We are planing to use Three.js to do non-rendering related works, like interactive camera.
Here is a interactive camera test, didn't integrated with our path tracer yet:


First Ray Traced Image

We just finished reading and testing the tutorials from http://learningwebgl.com/blog/?p=1067 and produced my first ray Traced image using the base code from its mandelbrot example. Here is a screenshot of the ray traced image.






The most difficult problem for creating such an image was to find out all the pixels on the screen and how to trace them. So, in the mandelbrot example of those tutorial they have used a technique of tracing the corners. Hence, the problem now comes to how to find the corners of the screen. We used the course notes given to us in CIS460 to find this out. Once that was done, it was really simple to implement ray tracing. Now, We have to figure out how to convert the ray tracer into path tracer.