Well yeah now finally i was able to convert the recursive problem to iterative, hence the raytracing has been achieved. Currently i am setting a trace depth of three so that the process stops tracing after three depth levels.
I now a specular highlites and reflective surfaces showing up.
Just a quick test render i got from my tracer. I will work a little more on the setting of Anit -Aliasing and DOF.
Depth of Field
I might not be do all the extras but lets see and give it a try !
Now i think i have somthing decent showing up. I got the diffused surfaces working shadows are working.
To calculate i did DOT(light_direction, object normal)*Material_color.
And to calculate shadows we send the rays from the light source to the point of intersection and see if the ray intersects any object on the way.
Now i serioulsly wish i had rendered out in some better colors 🙂
Pretty renders will be coming out soon.
Well finally i do have the intersections test working and shadows almost done. This mean i will be having a flat shaded image with shadows soon.
Things that are left to be implemented are-:
Which means next couple of days are gonna be very rough !
I am super excited to write this bolg as it includes two on my favorite projects in Computer graphics ie making a Raytracer and then extending it to be a pathtracer.
The ultimate purpose of this project is to serve as the foundation for the next project: a full CUDA based global illumination pathtracer. Raytracing can be thought of as a way to generate an isolated version of the direct light contribution in a global illumination scenario.
In this project, we are given code for:
- Loading, reading, and storing the TAKUAscene scene description format
- Example functions that can run on both the CPU and GPU for generating random numbers, spherical intersection testing, and surface point sampling on cubes
- A class for handling image operations and saving images
- Working code for CUDA-GL interop
We will need to implement the following features:
- Raycasting from a camera into a scene through a pixel grid
- Phong lighting for one point light source
- Diffuse lambertian surfaces
- Raytraced shadows
- Cube intersection testing
- Sphere surface point sampling
We are also required to implement at least 2 of the following features:
- Specular reflection
- Soft shadows and area lights
- Texture mapping
- Bump mapping
- Depth of field
- Supersampled antialiasing
- Refraction, i.e. glass
- OBJ Mesh loading and renderin
- Interactive camera
I am super excited to get started. I hope i keep updating the blog regularly even though i am pretty sure this is not gonna happen 🙂
Lets get started!!