Cycles X
Technical Presentation
What is it?
This presentation contains a mix of planned work and speculative future direction that may or may not happen in those 6 months.
User Level Goals
Render Kernel
Kernel
Kernel Graph
Init From Camera
Intersect Closest
Shade Surface
Shade Background
Intersect Shadow
Shade Shadow
Ray-tracing isolated to own kernels, for CPU packet tracing and hopefully better GPU performance.
Surface kernel does shader evaluation, light sampling and evaluation, and BSDF sampling and evaluation.
Kernels that do shading can be specialized to include only needed shader nodes.
Shadow tracing branches off from main path and can be handled in parallel with next bounce.
Transparent shadow tracing is a loop to keep GPU memory usage for intersections constant.
Shade Light
Kernel Graph
with volumes and sss
Init From Camera
Intersect Closest
Shade Surface
Shade Background
Intersect Shadow
Shade Shadow
Shade Volume
Volume Stack Init
Intersect Subsurface
For most scenes we can determine the camera position volume stack in advance and run this only once before the render loop.
If the volume stack is non-empty, a volume rendering kernel runs. The ray may either scatter or pass through to the surface.
If surface sampled a subsurface closure instead of BSDF, continue to subsurface kernel which will do ray-traced scattering, and go back to Shade Surface to shade the exit point.
Surface and volume kernels may cast shadow rays.
On GPU, existing shadow ray must be handled before execution of the next kernel that could cast them.
Volume Stack Init
Just like for cameras, this volume stack init can be skipped most of the time.
Kernel Memory
Kernel GPU Scheduling
Shade Surface Kernel
Shadow Kernels
Other Ideas
Render Pipeline
Progressive & Adaptive
Denoising
Resumable & Incremental Rendering
Viewport Rendering
Rendering Algorithms
Light Sampling
Volumes
Subsurface Scattering
Caustics etc.
Shadow Catcher / Matte