Real-time subsurface scattering on the GPU
We present a GPU algorithm that computes subsurface light transport
in real time on arbitrary animated meshes. We evaluate both
single scattering and multiple scattering, by using piecewise linear
and ring-based approximations of the surface in the fragment
shader. We demonstrate our technique on animated meshes at 60
fps.
Images and movies
See also
A little word about this work:
The paper is an extended abstract that was submitted to the SIGGRAPH07 sketch sessions but not accepted. I put it here as a research report. It is mostly a spin-off on my research on clouds rendering. I doubt I will write more about it, but if you're interested by this work don't hesitate to ask me about it.
Since there is not much detail in the paper, here are a few important things:
About the videos:
Reviewer's comments:
The paper is an extended abstract that was submitted to the SIGGRAPH07 sketch sessions but not accepted. I put it here as a research report. It is mostly a spin-off on my research on clouds rendering. I doubt I will write more about it, but if you're interested by this work don't hesitate to ask me about it.
Since there is not much detail in the paper, here are a few important things:
- This technique is very close to Dachsbacher & Stamminger's Translucent Shadow Maps, which I wasn't aware of at the time of writing (should be the first reference !) ;
- Our main contributions are
- Contrary to all papers on real-time subsurface scattering (including TSM), we do compute single scattering. The technique we use is the same as the one we use in our clouds rendering paper ;
- Contrary to François et. al.'s work, our single scattering computation is more accurate since we sample the surface along the view direction ;
- Instead of sampling the surface as in TSM, we use concentric rings using MIP-maps, which leads to less noise and more efficiency ;
- This work can easily be extended to multi-layered techniques (e.g., Jensen's work or NVIDIA's EGSR07 paper.)
About the videos:
- The method and material used for rendering is written in the top left corner. We switch bewteen methods to show the differences ;
- Where one can spot differences:
- Shadow boundaries: with subsurface scattering, light bleeds into the shadows and the boundaries are smoother ;
- Thin parts lit from behind : they let light go through (e.g., nose & back hair of the statue, thin parts of the hand...) ;
- Yes I know, they could be of much better quality. That is probably what killed the submission. Oh, well ;
Reviewer's comments:
- This is a nice incremental contribution to the subsurface scattering toolset. I recommend it for acceptance as a poster. I found the length and chopiness of the videos a little distracting.
- I appreciate that there was alot of care in choosing the algorithm based on current hardware performance around certain instructions costs. Although it does run in real-time, its use for the largest percentage of real-time application, games, seems not very practical at present. I wish the video was of higher quality to show off the algorithms full potential....
- This sketch provides additional building blocks (specifically the use of rings and mip-mapping) to the community's bag of tricks that can be used to throw at the problem of real-time subsurface scattering. To the trained eye, this technique is generating hard-to-render subsurface scattering effects, but the dataset is so horribly ugly that it's hard to evaluate the merits of the technique. (The per-vertex artifacts, poor shadow map filtering and lack of a compelling ambient term are the main things wrong with the demo. Also, there should be more real-time split-screen or toggling going on.) If accepted, this work could really benefit from better showmanship in this regard.
BibTex references
@TechReport\{BBNM07,
author = "Bouthors, Antoine and Bruneton, Eric and Neyret, Fabrice and Max, Nelson",
title = "Real-time subsurface scattering on the GPU",
institution = "INRIA",
year = "2007",
url = "http://www-evasion.imag.fr/Publications/2007/BBNM07"
}
Other publications in the database
» Antoine Bouthors :
in lab LJK base , in team EVASION base
» Eric Bruneton : in lab LJK base , in team EVASION base
» Fabrice Neyret : in lab LJK base , in team EVASION base
» Nelson Max : in lab LJK base , in team EVASION base
» Eric Bruneton : in lab LJK base , in team EVASION base
» Fabrice Neyret : in lab LJK base , in team EVASION base
» Nelson Max : in lab LJK base , in team EVASION base
![sap_0327.pdf [169Ko]](/Publications/images/pdf.png)