-
Notifications
You must be signed in to change notification settings - Fork 7
-
Star 68
This project collects multiple compute shader based ray tracing samples for Unity. The main purpose of this project is demonstrating how the ray tracing works. It is very helpful for the people who want to know the knowledge behind hardware ray tracing.
License
fallingcat/ComputeRayTracingSamples
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Latest commitHistory36 Commits | ||||
Assets | Assets | |||
Packages | Packages | |||
ProjectSettings | ProjectSettings | |||
UserSettings | UserSettings | |||
.gitignore | .gitignore | |||
.vsconfig | .vsconfig | |||
HybridRendering_Screenshot.gif | HybridRendering_Screenshot.gif | |||
HybridRendering_Screenshot.jpg | HybridRendering_Screenshot.jpg | |||
License.md | License.md | |||
RayQuery_Screenshot.gif | RayQuery_Screenshot.gif | |||
RayQuery_Screenshot.jpg | RayQuery_Screenshot.jpg | |||
Screenshot.gif | Screenshot.gif | |||
Screenshot.jpg | Screenshot.jpg | |||
Screenshot_64x64.jpg | Screenshot_64x64.jpg | |||
VoxelRayTracer.gif | VoxelRayTracer.gif | |||
VoxelRayTracer_BVH.jpg | VoxelRayTracer_BVH.jpg | |||
VoxelRayTracer_BruteForce.jpg | VoxelRayTracer_BruteForce.jpg | |||
readme.md | readme.md | |||
Repository files navigation
This project collects multiple compute shader based ray tracing samples for Unity. Because the samples use compute shader for ray tracing, they are not as fast as hardware ray tracing. The main purpose of this project is demonstrating how the ray tracing works. It is very helpful for the people who want to know the knowledge behind hardware ray tracing. This project contains following samples:
- Ray Tracing in One Weekend
- Ray Query
- Hybrid Rendering
- Voxel Ray Tracer
- Subsurface Scattering (upcoming)
- Hybrid Ambient Occlusion (upcoming)
- Hybrid Reflection and Refraction (upcoming)
Acknowledge
The voxel model in this project is created by MagicaVoxel.
Samples
Ray Tracing in One Weekend
This sample demonstrates how to implement a basic ray tracer using compue shader. The implementation is based on
Ray Tracing in One Weekend article.
Image Quality Compare
Samples per pixel : 64
Maximum tracing depth : 64
Samples per pixel : 16
Maximum tracing depth : 6
Ray Query
This sample demonstrates how to implement ray query using compue shader. This sample uses simple ray tracing for shading and ray query for shadow.
Hybrid Rendering
This sample demonstrates how to use ray query in fragment shader to render shadow. This sample uses traditional rasterizing for shading and ray query for shadow. That is why it is called hybrid rendering.
Voxel Ray Tracer
This sample demonstrates how to build a simple BVH tree and use it in compute shader to speed up scene traversal. This sample uses voxel scene to simplify the BVH building procedure.
With BVH
- 3 rays per fragment(1 ray for rendering, 2 rays for shadowing)
- 21129 voxels
- Use 15 levls deep BVH tree to speed up traversal
- ~200 fps
Without BVH
- 3 rays per fragment(1 ray for rendering, 2 rays for shadowing)
- 21129 voxels
- Brute-force traversal
- ~5 fps
About
This project collects multiple compute shader based ray tracing samples for Unity. The main purpose of this project is demonstrating how the ray tracing works. It is very helpful for the people who want to know the knowledge behind hardware ray tracing.
Resources
License
Stars
Watchers
Forks
Releases
Packages 0
Languages
- C# 63.1%
- HLSL 34.0%
- ShaderLab 2.9%