1.34k likes | 1.39k Views
Learn about the intricate process of simulating realistic skin appearance for computer graphics. Explore advanced subsurface scattering, specular reflectance, and the utilization of physically based models for achieving lifelike skin textures. Discover the challenges of skin rendering and efficient approximations for accurate results.
E N D
SIGGRAPH 2007 GPU Gems 3:Advanced Skin Rendering Eugene d’Eon
Outline • Demo: Human Head • The Appearance of Skin • An overview of the system • Specular Surface Reflectance • Scattering Theory • Advanced Subsurface Scattering
The Appearance of Skin • Difficult to simulate:
The Appearance of Skin • Difficult to simulate: • Detailed
The Appearance of Skin • Difficult to simulate: • Detailed • Modern scanning
The Appearance of Skin • Difficult to simulate: • Detailed • Modern scanning • Translucent
The Appearance of Skin • Difficult to simulate: • Detailed • Modern scanning • Translucent • Subsurface scattering
Two Component Reflectance Model • Most materials use two components
Two Component Reflectance Model • Most materials use two components • Surface reflectance (specular)
Two Component Reflectance Model • Most materials use two components • Surface reflectance (specular) • Subsurface reflectance (diffuse)
Two Component Reflectance Model • Most materials use two components • Surface reflectance (specular) • Subsurface reflectance (diffuse) • Use Physically based models
Two Component Reflectance Model • Most materials use two components • Surface reflectance (specular) • Subsurface reflectance (diffuse) • Use Physically based models • Specular BRDF
Two Component Reflectance Model • Most materials use two components • Surface reflectance (specular) • Subsurface reflectance (diffuse) • Use Physically based models • Specular BRDF • Efficient subsurface scattering approximations
Skin Surface Reflectance • Start with a physically based model for skin [DJ2006]
Skin Surface Reflectance • Start with a physically based model for skin [DJ2006] • Consider top-most interaction
Skin Surface Reflectance • Start with a physically based model for skin [DJ2006] • Consider top-most interaction • How much light reflects?
Skin Surface Reflectance • Start with a physically based model for skin [DJ2006] • Consider top-most interaction • How much light reflects? • What direction(s)?
Skin Surface Reflectance • Only ~6% of the incident light (on average) reflects directly [Tuchin 2000]
Skin Surface Reflectance • Only ~6% of the incident light (on average) reflects directly [Tuchin 2000] • This is due to a Fresnel reflection • Not colored by the skin
Skin Surface Reflectance • Only ~6% of the incident light (on average) reflects directly [Tuchin 2000] • This is due to a Fresnel reflection • Not colored by the skin • The topmost skin surface is rough • Single incoming direction: many outgoing directions
Skin Surface Reflectance • Only ~6% of the incident light (on average) reflects directly [Tuchin 2000] • This is due to a Fresnel reflection • Not colored by the skin • The topmost skin surface is rough • Single incoming direction: many outgoing directions • Use a specular BRDF function
Skin Surface Reflectance • Which BRDF should we use?
Skin Surface Reflectance • Which BRDF should we use? • Phong and Blinn-Phong • Not physically based • We can do better
Skin Surface Reflectance • Which BRDF should we use? • Phong and Blinn-Phong • Not physically based • We can do better • Turn to more physically based models
Skin Subsurface Reflectance • What about the remaining 94%?
Skin Subsurface Reflectance • What about the remaining 94%? • We need to compute subsurface scattering
Skin Subsurface Reflectance • Subsurface scattering • Gives skin soft appearance and color
Skin Subsurface Reflectance • Subsurface scattering • Gives skin soft appearance and color • Expensive to compute
Skin Subsurface Reflectance • Subsurface scattering • Gives skin soft appearance and color • Expensive to compute • Essential for realistic appearance Subsurface scattering No Subsurface scattering *Scan data courtesy of XYZRGB Inc.
Overview • Two component reflectance • Specular BRDF • Subsurface scattering approximation
Overview • Two component reflectance • Specular BRDF • Subsurface scattering approximation • Specular • Kelemen Szirmay-Kalos 2001 BRDF • Schlick fast Fresnel • Weyrich et al. 2006 measured parameters
Overview • Two component reflectance • Specular BRDF • Subsurface scattering approximation • Specular • Kelemen Szirmay-Kalos 2001 BRDF • Schlick fast Fresnel • Weyrich et al. 2006 measured parameters • Subsurface • Advanced texture-space diffusion • Stretch map correction • Multiple Gaussian blurs mixed
Overview Diagram Start … blur blur blur Linear combination texture mapping Stretch maps Final pass: combine blurs + specular
Specular Surface Reflectance • Use a physically based BRDF
Specular Surface Reflectance • Use a physically based BRDF • Phong and Blinn-Phong can be improved upon
Specular Surface Reflectance • Use a physically based BRDF • Phong and Blinn-Phong can be improved upon • Torrance-Sparrow has proven realistic • Too lengthy to compute exactly
Specular Surface Reflectance • Use a physically based BRDF • Phong and Blinn-Phong can be improved upon • Torrance-Sparrow has proven realistic • Too lengthy to compute exactly • Kelemen Szirmay-Kalos 2001 • Faster than TS • Even faster with Schlick’s Fresnel term
Phong vs. physically-based BRDF * Phong KS BRDF Phong KS BRDF *[Kelemen and Szirmay-Kalos 2001]
Phong vs. physically-based BRDF • Increased specularity at grazing angles • Here we use Kelemen-Szirmay-Kalos 2001
Rendering with a BRDF • BRDFs • Several analytic terms • Fresnel
Rendering with a BRDF • BRDFs • Several analytic terms • Fresnel • Parameters • rho_s • Vectors N, V, L • Roughness (m) • Index of refraction (eta)
Rendering with a BRDF • BRDFs • Several analytic terms • Fresnel • Parameters • rho_s • Vectors N, V, L • Roughness (m) • Index of refraction (eta) specularLight += lightColor[i] * lightShadow[i] * rho_s * specBRDF( N, V, L[i], eta, m) * saturate( dot( N, L[i] ) );
Rendering with a BRDF • The dot( N, L ) is important • Only works for point/spot lights • Environment lights are expensive • Glossy reflections • See Kautz and McCool 2000 specularLight += lightColor[i] * lightShadow[i] * rho_s * specBRDF( N, V, L[i], eta, m ) * saturate( dot( N, L[i] ) );
Fresnel Reflectance for Rendering Skin • All physically based BRDFs have a Fresnel term, F
Fresnel Reflectance for Rendering Skin • All physically based BRDFs have a Fresnel term, F • Requires knowing index of refraction, eta • Look to skin research: use 1.4 [DJ2006]
Fresnel Reflectance for Rendering Skin • All physically based BRDFs have a Fresnel term, F • Requires knowing index of refraction, eta • Look to skin research: use 1.4 [DJ2006] • Dielectric, unpolarized Fresnel reflectance
Fresnel Reflectance for Rendering Skin • All physically based BRDFs have a Fresnel term, F • Requires knowing index of refraction, eta • Look to skin research: use 1.4 [DJ2006] • Dielectric, unpolarized Fresnel reflectance • Use Schlick’s fast Fresnel approximation: // H is the standard half-angle vector. F0 is reflectance at normal incidence (for skin use 0.028). float fresnelReflectance( float3 H, float3 V, float F0 ) { float base = 1.0 - dot( V, H ); float exponential = pow( base, 5.0 ); return exponential + F0 * ( 1.0 - exponential ); }
Fresnel Reflectance for Rendering Skin Using textbook Fresnel Formula Using Schlick’s Fresnel
Roughness parameter • How do we set roughness parameter m? *[Donner and Jensen 2005]