coreBlackbird
coreBlackbird copied to clipboard
Point cloud transparency optimizations
Changes
- Early transparency test for point clouds. Transparency is now tested in the Embree filter function only for points with transparency. From a simple test included below, the total render time for a cube with 10k points the render time goes from 136.44s to 96.76s (tiled, 128spp, default camera, random opacity 0.1-0.9). In the presence of emitters in the scene we also avoid a linear loop over the lights that should bring more savings.
- Stratified sampling: The reference opacity value that is used for testing is calculated as described in this NVIDIA paper (Figure 4), which combines seeds from the pixel, the sample number and the geometry id to produce a value which mantains stratification for the respective disjoint spans. It combines the radical 2 inverse of the pixel and sample id with the geometry one and scrambles it with xors. The results below are good, but the convergence with stratified sampling is perceptually unexpected as different discs seem to make the same (transmit) decision at the same time. It's almost like the pixel hash is of no effect. Try it out and let me know what you think!
64spp with stratified sampling
64spp without stratified sampling (Using the sobol prng)
- (custom intersection code) Avoiding self-intersection for ray oriented discs. This was missing from the original implementation.
Test files
points_cube_test.zip
