Sie sind auf Seite 1von 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.

Das könnte Ihnen auch gefallen