surface material physics for shader writers l.
Skip this Video
Loading SlideShow in 5 Seconds..
Surface Material Physics for Shader Writers PowerPoint Presentation
Download Presentation
Surface Material Physics for Shader Writers

Loading in 2 Seconds...

play fullscreen
1 / 68

Surface Material Physics for Shader Writers - PowerPoint PPT Presentation

  • Uploaded on

Surface Material Physics for Shader Writers. Chas. Boyd DirectX® Graphics Architect Windows® Gaming & Graphics Technology Microsoft® Corporation. Motivation. Lighting and surface effects are clearly discernable to end-users Enables novelty for them, and differentiation for you

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about 'Surface Material Physics for Shader Writers' - albert

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
surface material physics for shader writers

Surface Material Physicsfor Shader Writers

Chas. Boyd

DirectX® Graphics Architect

Windows® Gaming & Graphics Technology

Microsoft® Corporation

  • Lighting and surface effects are clearly discernable to end-users
    • Enables novelty for them, and differentiation for you
  • Enable a title to have a distinct “look”
  • See other talks on lighting models, this one focuses on surfaces
  • Surfaces vs. Lighting
  • Surface Types
    • Metal
    • Rough
    • Specular
    • Subsurface
    • Layered Materials
    • Maya, SOFTIMAGE, Renderman
  • For all surfaces:
  • Other effects such as shadows will be applied in the lighting model
  • These are independent of the surface effects described here
surfaces and lighting
Surfaces and Lighting
  • Key participant in visual “Look”
  • Interacts with lighting environment in various ways
  • Need to take both into account in any given situation
  • Design content to have surfaces that look best in the lighting environment they will be used in and vice versa
surface light interaction
Surface-Light Interaction
  • Light comes in
  • Surface modifies it
  • Light leaves towards camera/eye
  • Surface interactions include
    • Absorption, reflection, self-shadowing, self-occlusion, scattering
  • Subsurface effects
    • Absorption, scattering, re-emission
fundamentals of surfaces
Fundamentals of Surfaces
  • Surfaces often contain multiple constituents
    • Absorptive dies, reflective layers, scattering particles of various sizes
  • This talk proceeds from simplest to more complex surface structures
polished metal surface
Polished Metal Surface
  • Process
    • Light comes in
    • Some colors are absorbed
    • Remaining light reflects
  • Atomically smooth—mirror finish
  • Structured highlights
    • image of environment are visible in them
map based technique
Map-Based Technique
  • Apply environment map for reflection
  • Scale it by metal color
    • Accounts for some colors absorbed
  • That is the final color for the screen
  • C = envmap*base
    • Gamma Note: no effect
procedural technique
Procedural Technique
  • Use very high specular exponent
    • ~100 or higher
  • Accurate model for single constant color round light source
  • C = light*dot(N,H)^100 * base
    • Gamma Note: picking exponent
use in games
Use in Games
  • Works for gold, copper, bronze
    • some anodized effects
  • Ideal for weapons
    • “Gun metal blue”
  • Not appropriate for enameled metal
    • More metallic than any “metallic” auto-body enamel
  • Nor for oxidized e.g. verdigris
    • These are too rough for this model
rougher surfaces
Rougher Surfaces
  • Smudges, scuffs, dust, oxides
  • At high magnification we see:
rough surface
Rough Surface

Diffuse Scattering

Reduced Specular

map based technique17
Map-based Technique
  • Roughness varies per-pixel in “gloss” map e.g. alpha of base tex
  • Scale down environment map
  • c = gloss*envmap*base
  • Blur environment map in areas of low gloss
    • MIP LOD or post-process effect
    • MIP LOD is per-pixel in ps.2.0
  • Blur is partial integral of map
procedural technique18
Procedural Technique
  • Use procedural specular
  • spec = light*dot(N,H)**25
  • but with same gloss term
  • c = gloss*spec*base
  • Decrease exponent to achieve blur
both techniques
Both Techniques
  • Add diffuse scattering term
fully rough surface23
Fully Rough Surface

Diffuse Scattering

No Specular

rough surfaces
Rough Surfaces
  • Concrete
  • Sand
  • Cloth
  • Plaster
  • Marble, non-polished
  • Pavement
  • Stone
rough surfaces27
Rough Surfaces
  • Diffuse reflector
  • Lambertian or Oren-Nayar effects
map based technique28
Map-based Technique
  • Blur map across very large scale
  • Integrate entire hemisphere
procedural technique31
Procedural Technique
  • Model only Diffuse term
  • For directional light:
  • c = light * dot(N,L) * base
  • Or use hemisphere light
  • Gamma Note:
    • Correct using sqrt or 1-(1-x)**2
    • for non-CAD applications
layered surface
Layered Surface


Dye Layer

layered surface larger
Layered Surface Larger


Dye Particles

layered surface34
Layered Surface
  • Thin layer of smooth clear material
  • Over rough dye particles
  • Underlayer is rough because particles may be suspended
    • Plastics
    • Linoleum
    • Enameled metal –car finish
    • Varnished surface –wood
map based technique35
Map-Based Technique
  • Envt. map scaled by gloss term
  • spec = gloss*envmap
  • Added to diffuse term:
  • c = dot(N,L)*base + spec
  • Base color does not tint highlight
  • Gamma Note: add should be linear
    • Correct to linear, add, convert back
    • if have enough precision and time
procedural technique38
Procedural Technique
  • Base color does not modulate specular, only light color does
  • spec = light*dot(N,H)**100
  • c = dot(N,L)*base + spec*gloss
  • Top layer + bottom layer

Polished specular*gloss*base

Rough diffuse*base

Varnished spec*gloss

+ diffuse*base

fresnel effect
Fresnel Effect
  • At top layer interface
    • Some light is reflected,
    • Remainder is transmitted through
  • Depends on surface material
  • And on incident angle!
  • Fresnel term f is proportion reflection
    • grazing angles: 100% reflected
    • normal angles: 5% reflected
fresnel mid
Fresnel Mid

60% reflected



40% transmitted

fresnel normal
Fresnel Normal

10% reflected



90% transmitted

fresnel grazing
Fresnel Grazing

90% reflected



10% transmitted

fresnel profile
Fresnel Profile





fresnel term approximation
Fresnel Term Approximation
  • Use f = 1 - cosq = (1 - E dot N)
  • Raise to power for better approximation
  • f = (1 – cosq)4
    • [Schlick] used 5th power
  • Hack curve fit to Glassner
fresnel vertex shader
Fresnel Vertex Shader

m4x4 oPos,v0,c8; // xform pos. to output space

m4x4 r0,v0,cW // xform pos. to world space,

m3x3 r1,v3,cW // xform normal to world space

add r0,-r0,c14 // compute eye ray

dp3 r3.x,,


mul,, normalize it

dp3 r0,r0,r1; // dot eye ray with normal

add r0,c1111,-r0 // complement color

mul r1,r0,r0 // **2

mul r0,r1,r1 // **4

mul r0,r0,c1 // scale for fresnel

add oD0,r0,c0 // bias and emit as diffuse

fresnel pixel shader
Fresnel Pixel Shader


; def v0 // eye ray

def c0 // 5% bias

def c1 // 95% scale

tex t0 // normal map

dp3 r0,v0_bx2,t0_bx2; // dot eye ray with normal

mul r1,1-r0,1-r0 // complement and square

mul r0,r1,r1 // **4

mad r0,r0,c1,c0 // scale & bias

fresnel comparison
Fresnel Comparison

1- cosq

(1- cosq)4





fresnel affects diffuse layer
Fresnel Affects Diffuse Layer
  • Only light that was not reflected illuminates diffuse “dye” layer
  • In single light case, incident angle can be used to compute f
  • Then f is used to blend (lerp) between specular and diffuse
  • Not as useful for multi-light case
    • diffuse layer is illuminated by light from all directions in that case
metallic flake
Metallic Flake
  • Can used BEML with random Gaussian distribution of perturbation pixels
  • Can use similar trick for glass buildings
    • point sampled displacement map gives each window a separate normal
    • Or use filtering to get curved windows
    • then must mask seams with alphatest
  • Use procedural specular term with low exponent ~8
    • Feasible with DirectX 8.* pixel shader
  • Still need enviroment map for car finish enamel gloss coat
metallic flake finish
Metallic Flake Finish



Dye Layer

sub surface effects
Sub-Surface Effects
  • Absorption
    • Light has to get inside
  • Re-emission
    • Light has to get out again
subsurface absorption
Subsurface Absorption
  • Can be impacted by Fresnel effects
    • Only non-reflected light penetrates
  • Simple term to model
  • Can be impacted by structure of surface
  • “A layer of ketchup covered by tissue paper”
  • Probably more translucent than real ketchup
anisotropic effects
Anisotropic Effects
  • Most visible in specular case
  • Brushed metal
  • Cloth fabrics
  • Wire spools
anisotropic hair
Anisotropic Hair
  • Hair Tufts
    • snip a lock, put it in scanner
  • Eyelashes
    • use alpha channel mask
    • per-vertex anisotropic
      • no per-pixel direction variation
  • Anti-aliased lines are too thick
key references
Key References
  • Nelson Max
  • Christophe Schlick
  • Peter Shirley
  • Shading is not fully understood
  • Most efforts not based on pure physics
  • Equations are fit to measured data
  • Equations are chosen to ‘look good’
empirical process
Empirical Process
  • Discern an effect
  • Measure how it varies
  • Curve fit some equation to it
  • Tweak it until it looks good
empirical process62
Empirical Process



Fit Eqn




nelson max
Nelson Max
  • “Horizon mapping: shadows for bump-mapped surfaces”
    • Basis of last years GDC talk on real-time self-shadowing bump maps
    • Available as sample in DX8.1 SDK
  • Most work is applicable and accessible
christophe schlick
Christophe Schlick
  • “A Customizable Reflectance Model for Everyday Rendering”
    • Uses his procedurally generated BRDF
    • Generic Lighting Model
      • Single shader for specular vs diffuse, and isotropic vs anisotropic surfaces
    • Reduces state changes?
    • Requires 2.0 shaders
peter shirley
Peter Shirley
  • Real-time Ray-tracing
    • Hemisphere lighting model
  • A Practitioner’s Assessment of Light Reflection Models
    • Demonstrates process of identifying an effect and defining a technique to represent it
    • Includes good background material
  • Foley & Van Dam, Feiner, Hughes
    • Still lots of good background material
    • Fundamentals
  • Principles of Digital Image Synthesis by Andrew Glassner
    • Broad sampling of topics
    • Excellent detail in key areas
    • Concordance for much of literature
  • Graphics Gems
  • Game Programming Gems
  • Real-time Photorealistic Rendering
    • Eric Haines
call to action
Call to Action
  • Pick a unique “Look” and do it
  • Toon several methods
  • Cheesy unlit or flat shaded
  • Retro std FF pipelines
  • Radiosity soft lighting only
  • Shadows horror movie
  • Gritty ultra realistic
    • Uses photos for concept art