Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Project 3: Linda Zhu #31

Open
wants to merge 27 commits into
base: main
Choose a base branch
from
Open

Conversation

LinDadaism
Copy link

@LinDadaism LinDadaism commented Oct 11, 2023

Used all 4 late days. Working on REAME now.

Repo link

Features Implemented:

Core Features

  • Material shading (diffuse & perfectly specular)
  • Path termination with stream compaction
  • Material sorting
  • First bounce ray caching

Extra Features

  • Extra material shading: refraction, glass, plastic, lambertian BTDF
  • Stochastic sampled anti-aliasing
  • Motion blur (camera ray jitter about some axis)
  • Runtime object motion (continuous transformation update throughout time)
  • Physically based depth of field (thin-lens camera)
  • glTF & GLB mesh loading (with bounding box culling)
  • OBJ mesh loading (with bounding box culling)
  • Bounding volume hierarchy (with both midpoint split and attempt of SAH, no sure if working properly)

Modifications to CMakeLists:
Added the files below for mesh loading to the headers section:
- src/tiny_obj_loader.h
- src/gltf/json.hpp
- src/gltf/tiny_gltf.h

Feedback:
It was definitely a fun project that gives you freedom to explore a plethora of interesting topics in graphics and rendering, or to put focus on CUDA performance optimization. However, it was not even a smooth-sailing experience for me implementing the core features, let alone later debugging the mesh loaders, before I had the chance to do more optimization. I wish we could have had a very basic path tracer provided, say with diffuse shading and an OBJ loader implemented, so that we can spend more time on advanced visual and performance improvements. More importantly, since the focus of this course should really be on GPU programming techniques and CUDA performance optimization, I want to have more practice of using advanced CUDA features such as CUDA stream/ graphs, shared memory, and etc. in this project. Right now my project is not well-balanced, stressing more on impressive graphics without enough thinking on performance. I think that's actually a common pain point of most big class projects, where you try hard to just complete it leaving no time or energy for the better.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants