Nabla
Nabla copied to clipboard
Raytracing Roadmap
Bugs and Hacky Workaround removal
- [x] Sporadic UIAutomationCore crash (OpenCL timeout)
- [x] Cache the sample sequence properly (record the params) and change its locality
- [x] Solve the weird coloured fireflies issue
- [x] Instancing transform bugs (stuff gets thrown all over the scene)
Minimum Usability
- [x] Read Max Samples from the XML file
- [x] Implement Russian Roulette and read it from the XML as well
- [ ] Robust Intersections
- [ ] Implement Rejection Sampled NEE & Multiple Importance Sampling
- [x] Scramble key advancement
- [x] Denoiser Integration (optionally enabled)
- [x] Autoexposure Integration
- [x] Tonemapping Integration
- [x] Saving intermediate outputs when screenshotting
- [x] Envmap light source and importance sampling
- [ ] Fast and FFT bloom choice
Tests
- [ ] test divergence between Mitsuba, ex 42 and ex 22 in
daily_pt.xml - [x] yank up the max bounces and see if it causes a problem
Ease of Use
- [x] Unify
raygen.compandclosestHit.comp - [ ] Extend
nbl::systemto be able to download textures and meshes over HTTP/URL - [ ] Integrate NVENC/libvpx for producing video captures while rendering (CPU solution preferred)
- [ ] Cloud XR
Quality and Convergence with no bias
- [ ] OBB computation for light source meshes
- [ ] Blue Noise Sampling via Heitz's techniques of scramble key ordering
- [x] Schussler et al. BxDF fixes for bumpmaps and smooth shading normals
- [ ] CLEAR/LEADR/Toksvig (produce roughness map while mipmap filtering bumpmap)
Easy Quality Wins
- [ ] Covariance Rendering (possible memory bandwidth win of >15% by using mipmaps)
- [x] Light Path Expressions || Reweighting Firefly Samples
- [ ] GSAA (increase roughness of curvy surfaces)
- [ ] A-SVGF
Uber Quality
- [ ] ReSTIR
- [ ] Adaptive Sampling
- [ ] Spatial and Temporal Denoising (Nvidia SDK, ProRender, Intel, Renderman-like 7 frame AI?)
- [ ] Local TMO
Load Time Optimizations
- [ ] Converted Asset Cache
- [x] Polyphase Mip Mapping
- [ ]
commiton GPU Virtual Texture and Virtual Geometry
Memory Optimizations
- [ ] Basis-U compressed prefiltered textures in the cache
- [ ] Compress geometry position attribute into 64bits
Rendering Optimizations
- [x] Pretransform (de-instance) if memory allows
- [x] Single BLAS for static scene elements
- [ ] Selectively disable normals and reonstruct from position derivatives
- [x] dont fetch UVs or compute some derivatives if no texture precomp stream
- [ ] Dont jitter and re-rasterize every frame if camera is still and we're accumulating
- [x] Occlusion and Triangle Culling when rasterizing
- [ ] Vulkan Raytracing port
- [ ] Path Guiding
- [ ] Descriptor Indexing
- [ ] Bidirectional or Global integrators such as VCM or UBP
- [ ] Manifold NEE for caustics or lightsources embedded in bulbs
Risky Optimizations
- [x] Optimize rejection sampling to do spherical convex hulls of light source or clipping to the hemisphere
- [ ] Material Compiler made out of RTX callables
- [ ] Last Krivanek paper MIS weights out of the [0,1] range
- [ ] Replace all scene BxDFs with LTC (texturing is problematic)
- [ ] Combined product sampling of LTC and light (requires the above) probably via composed warps
- [ ] LTC product path guiding
Endgame
- [ ] Baking (DDGI or Spherical Gaussian lightmaps)
- [ ] Animations & Temporal Tracing
- [ ] Subsurface Scattering (level up the BxDFs)
- [ ] Subdivision NEE for rendering of skin lit up by office lights
- [ ] PN-Triangle intersection
- [ ] Hair Rendering (geometry and BxDF)
- [ ] Geometry LoDs
- [ ] Out of Core Rendering (streaming Moana, here we come!)
- [ ] Spectral Rendering with Herowavelengths and resolving to multiple colourspaces simultaneously
albedo needs 8-10 bits of ray payload normal needs between 16 and 32
would a good idea to subsample (lower the spp) on the AoV calculations (they're noiseless anyway)
New stuff
- [ ] Register compression in Material Compiler (lots of benchmarks needed)
- [ ] Use tweaked GGX as a tweaked spherica sampler for diffuse ;)
- [ ] Adapative Sampling (cast more rays in pixels where variance is higher)