Kayıtlar

Project - Progressive Photon Mapping Implementation

Resim
Ahmet Alperen Akcay and I chose implementing Progressive Photon Mapping for extending our ray tracers. However, since the flow of the algorithm is different and not suitable for adding to our raytracers' interfaces, we took only needed parts of my ray tracer and implemented it as a different project. Introduction Global illlumination is one of the core issues for computer graphics. There are several algorithms developed for simulating lighting of the scenes correctly and efficiently to solve the rendering equation (Kajiya, 1986). Proposed by Hachisuka and Jensen (2008), Progressive Photon Mapping is one of those algorithms developed through years. It can simulate illumination of caustic objects and Specular-Diffuse-Specular paths better and faster than other techniques. Yet, getting desired image quality still takes time. Related Work In the original Photon Mapping algorithm developed by Jensen (1996), there exists two different steps. In ...

Homework 7 - Object Lights, Spherical Environment Mapping, Path Tracing

Resim
In the last assignment of CENG795, we are expected to introduce many new features to the ray tracer, such as: Object Lights Spherical Environment Mapping Path Tracing Object Lights As object lights, I introduced sphere lights and mesh lights to my ray tracer. Multiple inheritance of C++ helped me a lot. We describe object lights with their radiance. While sampling, we use radiance of the light over probability of choosing sample for lighting computations. There are some outputs for object light. All of them are rendered in acceptable short times, I didn't check the exact timings for object lights. Increasing number of samples helps a lot to get better results. The scenes that contain "jaroslav" in them are adapted from  http://cgg.mff.cuni.cz/~jaroslav/teaching/2015-npgr010/index.html . cornellbox_jaroslav_nobrdf.png(for reference) cornellbox_jaroslav_glossy.png(for reference) cornellbox_jaroslav_diffuse.png (for reference) cornellbox_jaros...

Homework 6 - All about BRDF

Resim
In the sixth assignment of CENG795, we are expected to introduce BRDFs for lighning computations, such as: Phong BRDF Modified Phong BRDF Normalized Modified Phong BRDF Blinn-Phong BRDF Modified Blinn-Phong BRDF Normalized Modified Blinn-Phong BRDF  Torrance-Sparrow BRDF  A few notes about my outputs: In killeroo scenes, my outputs are slightly different. I think that, main reason of this result is differences of smooth shading. Probably my way of calculating vertex normals is slightly different.  While my png outputs for tonemapped scenes are similar to the reference outputs, my exr outputs are not same for same exposures. I used OpenCV for image writing, since it handles all file types with one image writing function. I will try to use tinyexr when I'm available. My outputs: brdf_phong_original brdf_phong_modified brdf_phong_modified_normalized brdf_blinnphong_original brdf_blinnphong_modified brdf_blinnphong_modified_...

Homework 5 - Additional Light Sources, Tonemapping, HDR Output

Resim
In the fifth assignment of CENG795, we are expected to introduce many new features to the ray tracer, such as: Directional Light Sources Spot Light Sources Photographic Tonemapping HDR Output In this assignment, I removed lodepng library and added OpenCV library to be able to generate both png and exr outputs. Directional and Spot Light Sources To introduce new light sources, I implemented an virtual base named "Light" for all the light sources. After converting old light types(which are point and area), I implemented Directional and Spot Light sources. My outputs are: cube_directional.png(800x800) is saved in: 72 milliseconds 499 microseconds dragon_spot_light_msaa.png(800x800) is saved in: 20 seconds 363 milliseconds 401 microseconds   Photographic Tonemapping For photographic tonemapping, I followed Reinhard's Photographic Reproduction Technique ( http://www.cmap.polytechnique.fr/~peyre/cours/x2005signal/hdr_photographic.pdf ). Note that...

Homework 4 - All About Textures (Textures, Perlin Texture, Bump Mapping)

Resim
In the fourth assignment of CENG795, we are expected to introduce many new features to the ray tracer, such as: Textures: Interpolation Types: nearest, bilinear Decal Modes: Replacing Color, Replacing Diffuse Constant, Blending Diffuse Constant Appearance: Repeat, and Clamp  Perlin Texture: Appearance: Vein and Patch  Bump Mapping for both Textures and Perlin Textures. For reading texture data I used stb_image.h( https://github.com/nothings/stb ). To create perlin noise, and to calculate bump normals, I used the techniques that were mentioned in the lectures.  I couldn't get similar results with given bumpmapMultiplier values for normal textures(not perlin ones), I slightly changed the values for achieving similar results.  My results: bump_mapping_basic.png bump_mapping_transformed.png (bumpmapMultiplier ->75.0) ellipsoids_texture.png galactica_dynamic.png galactica_static.png killeroo_bump_walls.png (bump...