Realistic Separable Subsurface Scattering Demo (paper + D3D source code)




Separable Subsurface Scattering demo

Want to see a realistic plate of fruits in real time 3D with acceptable framerate? If so, here is a Direct3D demo that shows several scenes (fruits, NV head, dragon, milk or ketchup) rendered with a new mathematical method which makes surfaces appear much more realistic by taking into account light scattering which occurs below the surface.

In this paper we propose two real-time models for simulating subsurface scattering for a large variety of translucent materials, which need under 0.5 milliseconds per frame to execute. This makes them a practical option for real-time production scenarios. Current state-of-the-art, real-time approaches simulate subsurface light transport by approximating the radially symmetric non-separable diffusion kernel with a sum of separable Gaussians, which requires multiple (up to twelve) 1D convolutions. In this work we relax the requirement of radial symmetry to approximate a 2D diffuse reflectance profile by a single separable kernel. We first show that low-rank approximations based on matrix factorization outperform previous approaches, but they still need several passes to get good results. To solve this, we present two different separable models: the first one yields a high-quality diffusion simulation, while the second one offers an attractive trade-off between physical accuracy and artistic control. Both allow rendering subsurface scattering using only two 1D convolutions, reducing both execution time and memory consumption, while delivering results comparable to techniques with higher cost. Using our importance-sampling and jittering strategies, only seven samples per pixel are required. Our methods can be implemented as simple post-processing steps without intrusive changes to existing rendering pipelines.

All materials (D3D demo + source + paper) are available HERE.





I tested the demo on my old but still good GTX 660 (R347.09). The framerate was roughly 50 FPS (I don’t have precise values because the demo switched suddenly from fullscreen to windowed mode…).


Separable Subsurface Scattering demo

Separable Subsurface Scattering demo

Separable Subsurface Scattering demo

Separable Subsurface Scattering demo

Separable Subsurface Scattering demo

Separable Subsurface Scattering demo

Separable Subsurface Scattering demo

and the final screenshot:


Separable Subsurface Scattering demo





Source: Geeks3D’s news hunter