0% found this document useful (0 votes)
79 views

Writeupfinal

Tian Qiu completed several tasks for the final project on basic high quality rendering including implementing a custom toon shader, shadow mapping with PCF and adjustable light positions, and environment mapping with reflection and refraction. Stratified poisson sampling was added to improve shadow mapping but Lambert and Phong convolutions for environment mapping were not finished. The project was built upon a previous scene viewer assignment and used libraries such as GLEW, GLUT and GLM.

Uploaded by

api-383824406
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
79 views

Writeupfinal

Tian Qiu completed several tasks for the final project on basic high quality rendering including implementing a custom toon shader, shadow mapping with PCF and adjustable light positions, and environment mapping with reflection and refraction. Stratified poisson sampling was added to improve shadow mapping but Lambert and Phong convolutions for environment mapping were not finished. The project was built upon a previous scene viewer assignment and used libraries such as GLEW, GLUT and GLM.

Uploaded by

api-383824406
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

Tian Qiu

A91114755
Group: none
Final Project Report
1.2 Basic High Quality Rendering
Things completed:
1.2.1 GLSL Shaders Custom Toon Shader
1.2.2 Shadow Mapping with PCF, real time light position adjustment
1.2.3 Environment Mapping with switch between refraction and reflection
1.2.4 Addon 1 Stratified Possion Sampling (different from milestone where I put
adaptive shadow as the first addon)

Things not completed:


1.2.4 Addon 2 Lambert and Phong convolutions in environment mapping

Library used:
glew, glut, glm

FreeImage.h (screenshot)
stb_image.h (jpg file loading)

*this project is built upon my cs167 hw2 (scene viewer)

1.2.1:
Basic viewer operations are printed to the command line, plus number key 1-6 to
adjust position of the first light. 1 2 3 increase x y z. 4 5 6 decrease x y z.
The default shading is Lambert and Phong shading implemented before. I picked a
custom toon shading to achieve a non-photorealistic effect.
You can pass in an argument [xxx.txt] to this program to set up objects, lights, and
scene. The default set up is in default.txt. Note that the first light is assumed to be
the brightest light and a moveable light source.

(with shadow) (w/o shadow)


1.2.2:
Bias are introduced to reduce shadow acne. I have also fixed oversampling issue.
1.2.3:
The environment map uses textures from ./background/[position].jpg

(reflection vs refraction) the ratio is set


to simulate glass material.
1.2.4 Addon 1:
I implemented stratified
possion sampling that
samples the depth map 9
times randomly. Then, it
combines the sampled
result. Seed is the
combination of loop
counter and current
fragment position in the
world space. (left: with
Possion sampling)
(right: with normal PCF)

1.2.4 Addon 2:
Due to my late decision, I didnt complete this part. :(

Video demo:
https://youtu.be/P8MjKh2yhPE
General comment about this assignment:
I started this assignment with Nvidia OptiX real time raytracer that I was fairly
unfamiliar with. I built my project on one of its sample programs, hoping this set
up can get me a head start in learning this engine. However, I encountered lots of
difficulties while using the provided utility functions, such as load mesh, partially
because they are designed for very specific purposes. I had been stuck on a weird
problem about texture loading that is not the concern of this assignment for several
days and with no luck, I finally decided to move on and switch to GLSL shaders.
Thats the reason why I turned in an image using Optix on milestone but now
submit an opengl program instead. I would definitely try to learn more about
OptiX, but not for this assignment.

You might also like