(Anti-aliasing is A4 extra feature)
A close ended cone and a double ended cylinder are created as extra primitives. ![Cone](./Project/Screenshot & Scripts/A_Cone.png) ![Cylinder](./Project/Screenshot & Scripts/A_Cylinder.png) ![Together](./Project/Screenshot & Scripts/Cone&Cylinder.png)
Reflection is done by tracing a new reflected ray when primary ray hits an reflected surface. ![Reflection](./Project/Screenshot & Scripts/Reflection.png)
Refraction is done by tracing a new refracted ray when primary ray pass through a glass. ![Reflection](./Project/Screenshot & Scripts/Refraction.png)
Path tracing follows fresnel equation to properly select percentage of reflection and refraction. A little reflection of side walls (red and blue) can be seen in the glass sphere. ![Together](./Project/Screenshot & Scripts/BeautifulReflection.png)
Soft shadow is implemented throught distributed ray tracing. A spherical area light is implemented. ![SoftShadow](./Project/Screenshot & Scripts/SoftShadow.png)
Glossy reflection can be identified on the top left glass sphere. ![GlossyReflection](./Project/Screenshot & Scripts/GlossyReflection.png)
Glossy refraction is shown on the spherical glass. ![GlossyRefraction](./Project/Screenshot & Scripts/GlossyRefraction.png)
Perlin Noise is used to generate a marble like texture. Perlin noise is divided into octave. Octave with higher frequence has its magnitude decreased. 4 Octaves are summed up, then used as a phase shift to a sine function. ![PerlinNoise](./Project/Screenshot & Scripts/PerlinNoise.png)
![Animation](./Project/Screenshot & Scripts/animation.gif)
![FinalScene1](./Project/Screenshot & Scripts/finalScene.png) ![FinalScene2](./Project/Screenshot & Scripts/coolimage.png) ![FinalScene3](./Project/Screenshot & Scripts/room.png)
-
Texture Mapping & Transparent Cone ![TextureMapping](./Project/Screenshot & Scripts/TextureMapping.png)
-
Multiprocessing is enabled to help with the speed of processing.