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: Xuntong Liang #2

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

Conversation

PacosLelouch
Copy link

  • Repo Link
  • Implemented a CUDA path tracer and completed some performance analysis.
    • Implemented refraction, and non-perfect specular surfaces with Phong material and microfacet material with GGX normal distribution.
    • Used stream compaction thrust::partition after shading to reduce the number of rays for further bounce, and completed performance analysis for this feature.
    • Used sorting by material type before shading, and completed performance analysis for this feature.
    • Implemented a toggleable option to cache the first bounce for re-using, and completed performance analysis for this feature.
    • Implemented importance sampling of scattered ray with different materials.
    • Implemented OBJ mesh loading with tinyObj.
    • Implemented stochastic anti-aliasing.
    • Implemented post processing such as outlining by stencil, and a simple version of ramp shading with a ramp texture.
    • Implemented texture import and mapping with triangle meshes, and HDR image sky sphere.
    • Implemented bounding volume hierarchy as a hierarchical spatial data structure for triangle meshes, and completed performance analysis for this feature.
  • Feedback:
    • This framework helps me a lot in how to do bounces separately, and how to use CUDA-OpenGL interop. However, the code structure of this framework seems not so unified. For example, the indents are different in different files. There may be some improvements.
    • Also, I don't know if there are methods to separate the declarations and definitions of CUDA kernels or functions in header files and source files. What I know is that it is difficult to do this with templates, but I'm not sure if so it is with CUDA. A header-only implementation seems hard to maintain.
    • Last but not least, it has a good interop with the guest lecture on Monday! I think there are some idea for further development on the path tracer.

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.

1 participant