eecs 487: interactive computer...

8
EECS 487: Interactive Computer Graphics Lecture 30: Environment mapping Radiance map Accumulation buffer Environment Mapping The key to depicting a shiny-looking material is to provide something for it to reflect proper reflection requires ray tracing, expensive can be simulated with a pre-rendered environment, stored as a texture imagine object is enclosed in an infinitely large sphere or cube rays are bounced off object into environment to determine color EM*surface color = reflection mapping Hanrahan Environment Mapping Steps: load environment map for each reflective pixel, compute its normal compute the reflection vector from the normal and view vectors use the reflection vector to compute an index into the environment map in the reflection direction note: we’re not computing ray intersection between the reflection vector and the environment! use the texel at the index to color the pixel Shortcomings: no inter-object reflection works well when there’s just a single object no self-reflection Jensen et al. Environment Mapping Model: environment is infinitely far away all reflections as seen from the same, far away view point: object approximated as an infinitely small, perfectly mirroring ball concentric with the object reflected color computed only from the direction of reflection not from the position on surface determined by surface normal no ray-environment intersection computation

Upload: others

Post on 15-Mar-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: EECS 487: Interactive Computer Graphicsweb.eecs.umich.edu/~sugih/courses/eecs487/lectures/30-EM+Accumulation.pdf · EECS 487: Interactive Computer Graphics Lecture 30: • Environment

EECS487:InteractiveComputerGraphicsLecture30:•  Environmentmapping•  Radiancemap•  Accumulationbuffer

EnvironmentMapping

Thekeytodepictingashiny-lookingmaterialistoprovidesomethingforittoreflect•  properreflectionrequiresraytracing,expensive•  canbesimulatedwithapre-renderedenvironment,storedasatexture•  imagineobjectisenclosedinaninfinitelylargesphereorcube•  raysarebouncedoffobjectintoenvironmenttodeterminecolor

EM*surfacecolor=reflectionmapping

Hanrahan

EnvironmentMappingSteps:•  loadenvironmentmap•  foreachreflectivepixel,computeitsnormal•  computethereflectionvectorfromthenormalandviewvectors•  usethereflectionvectortocomputeanindexintotheenvironmentmapinthereflectiondirection•  note:we’renotcomputingrayintersectionbetweenthereflectionvectorandtheenvironment!

•  usethetexelattheindextocolorthepixel

Shortcomings:•  nointer-objectreflection�workswellwhenthere’sjustasingleobject•  noself-reflection

Jensenetal.

EnvironmentMappingModel:•  environmentisinfinitelyfaraway

•  allreflectionsasseenfromthesame,farawayviewpoint:•  objectapproximatedasaninfinitelysmall,perfectlymirroringballconcentricwiththeobject

•  reflectedcolorcomputedonlyfromthedirectionofreflection•  notfromthepositiononsurface

•  determinedbysurfacenormal

•  noray-environmentintersectioncomputation

Page 2: EECS 487: Interactive Computer Graphicsweb.eecs.umich.edu/~sugih/courses/eecs487/lectures/30-EM+Accumulation.pdf · EECS 487: Interactive Computer Graphics Lecture 30: • Environment

CubeMapMostpopularandfastest:easytoproducewithrenderingsystemorbyphotographyfromcenterofobject,onceforeachsideofcube

Simpletexture-coordinatescalculation

Texturecreationfromscene:•  viewindependent•  uniformsampling/resolution

Supportsbilinearfilteringandmipmapping

TP3

t

s

ts

t

s

y ComputingReflectionSteps:1. computereflectionvector,r•  efromeyetovertex•  nnormalineyecoordinates•  r = e – 2n(n•e)

2. reflectionisafunctionofonedirection:largestabsolutevalueofr’scomponentsdeterminesthecubefacetoreflect•  example:r = (5, −1, 2)gives+xasthereflectedface

3. dividerbythevalueofthe“reflection”coordinate(5)andmapto[0,1]�(s, t) = ((y + x)/2x, (z + x)/2x)�

= ((−1/5 + 1)/2, (2/5 + 1)/2)�= (0.4, 0.7)

+z +x -x -z

+y

-y

x

y

z

ne

r

CubeMap:DisadvantagesAngularsizeoftexelvariesacrossacubefaceUsuallydoesn’tinterpolateacrosscubefaces�cubeedgesarereflectedonobject

ToolssuchasAMD’sCubeMapGencanfixtheseproblems

RTR3

θθ

MethodstoCreateEM• Cubemap

•  Latitude/longitudeprojectionsmap•  createdbypainting•  oversamplingofpolescomparedtotheequator

•  Sphericalmap•  gazingball•  fisheyelens

• Parabolicmap

Page 3: EECS 487: Interactive Computer Graphicsweb.eecs.umich.edu/~sugih/courses/eecs487/lectures/30-EM+Accumulation.pdf · EECS 487: Interactive Computer Graphics Lecture 30: • Environment

GazingBall(LightProbe)Createdbyphotographingareflectivesphere

Mapsalldirectionstoacircle

Reflectionindexedbynormal

Texturecreationfromscene:•  resolutionfunctionoforientation•  viewdependent:mustregenerateEMwhencameramovesorwillseethesamething

Hanrahan09

SphereMappingUseatexturemapofasphereviewedfrominfinityusertolookuptexel•  theeyevectorsareparallel•  rdeterminedonlybysurfacenormal

Want:computetexturecoordinates(s, t)fromr•  textureisnotreallypastedtotheinsideoftheenvironmentsphere,butprojected(nextslide)•  objectcanbeapproximatedasaninfinitelysmall,perfectlymirroringballconcentricwiththeobject• mapthenormalsofanobjecttothecorrespondingnormalsofasphere

ne r = (x, y, z)

environmentmaponasphere

viewpoint

object

h

Zhang08

Computing(s, t)fromrObservation:ncanbeexpressedintermsofrande:

r = e − 2n(n i e)r − e =αn

-e

s

RTR3Zhang08

αn = r − e =

xyz0

⎢⎢⎢⎢

⎥⎥⎥⎥

00−10

⎢⎢⎢⎢

⎥⎥⎥⎥

! where! αn = p = x 2 + y2 + (z +1)2

αnαn

=

x / py / p

(z +1) / p0

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

!since! r = 1,!p = 2(z +1)

texture

Computing(s, t)fromr

(1, 1)

(–1, –1)

h =

hx

hy

1− hx2 − hy

2

0

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

hx = x p hy = y p

s = x2p

+ 12

t = y2p

+ 12

!

αnαn

=

x / py / p

(z +1) / p0

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

where!p = 2(z +1)

Zhang08

!

scaled!to!texture!space![0,1]:

s = 12hx +

12!!!!!!!t = 1

2hy +

12

unitsphereineyespace,gazingdown–z:

-e

s

RTR3h

hx

hy

texture

Page 4: EECS 487: Interactive Computer Graphicsweb.eecs.umich.edu/~sugih/courses/eecs487/lectures/30-EM+Accumulation.pdf · EECS 487: Interactive Computer Graphics Lecture 30: • Environment

ParabolicMap

RTR3

Usesz-componentofreflectedvectortodeterminetexel

Texturecreationfromscene:• viewindependent• uniformsampling• mapshardtocreate

Heidrich&Seidel

OpenGL2.1Spheremap: // insert where the texture is created glTexGeni(GL_S,GL_TEXTURE_GEN_MODE,GL_SPHERE_MAP); glTexGeni(GL_T,GL_TEXTURE_GEN_MODE,GL_SPHERE_MAP); glEnable(GL_TEXTURE_GEN_S); glEnable(GL_TEXTURE_GEN_T); Cubemap:•  loadsiximages,oneforeachfacewith:glTexImage2D(target)

•  texturecoordinatesgeneratedusingglTexGen*(…,GL_TEXTURE_GEN_MODE,GL_REFLECTION_MAP); glEnable(GL_TEXTURE_CUBE_MAP);

Functionsdeprecated

CubeMappingwithGLSL==== OpenGL app: initialize texture sampler to texture unit 0 ==== GLuint cubeid = glGetUniformLocation(myprog, “mycube”); glUniform1i(cubeid,0); // assign texure unit 0 to cubeid ==================== // vertex shader: compute r ================= varying vec3 r; void main() { gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; vec3 n = normalize(gl_NormalMatrix * gl_Normal); vec4 e = gl_ModelViewMatrix * gl_Vertex; r = reflect(-e,n); } ==================== // fragment shader =========================== varying vec3 r; uniform samplerCube mycube; void main() { gl_FragColor = textureCube(mycube, r); }

Angel09

LimitationofEM

Environmentmapassumesobjectinfinitesimallysmallandreflectionsinfinitelyfaraway

EMerrorshardtonoticeonnon-flatobjects,butdoesn’tworkwellforflat/planarsurfaces,•  reflectedraysusuallydonotvarybymorethanafewdegrees�asmallpartoftheEMisappliedtoalargearea• worsewithorthographicprojection:allorthographicreflectedvectorsareparallel

Page 5: EECS 487: Interactive Computer Graphicsweb.eecs.umich.edu/~sugih/courses/eecs487/lectures/30-EM+Accumulation.pdf · EECS 487: Interactive Computer Graphics Lecture 30: • Environment

CansimulatereflectionfromstillwaterButnotwavywater(viabumpmap)

1.  reflectiondoesn’tmeetboat2.  reflectionbehindtheboat3.  environmentmapmagnified

LimitationsofEM

env.map

Hart08

BoatreflectedinwavywaterrenderedusinganenvironmentmapCanyoufindthreethingswrongwiththispicture?

DiffuseReflectanceWithEM,eachtexelisadirectionallightsource:•  forperfectlyspecularsurfaces,onlylightinginthereflecteddirectioncontributestolighting•  inthediffusecase,lightingisintegratedoverthehemisphereaboveapoint•  costofcomputingdiffusecolorofapoint(c)isontheorderofthenumberoftexelsintheEM!

•  kdirectionallights(texels)•  l(j): directionoflightj•  s(j):intensityoflightj•  n:surfacenormal•  m:materialreflectance

Schulze

c = m s( j ) max((l( j )in),0)j=1...k∑

IrradianceMapPrecomputationofdiffusereflection

Observations:•  irradianceatvariouspointsdiffersonlyonincomingdirectionsandthesurfacenormal•  allpointswiththesamenormalreflectthesameirradiance•  (methodlimitedtolightingcontributionfromadistantenvironment!)

Idea:•  precomputesumforallpossiblenormals•  storeresultsinasecondenvironmentmapcalledthediffuse(irradianceenvironment)map•  radiancemapindexedbysurfacenormal

r

n

IlluminationmapIrradiancemap

Schulze,Ramamoorthi

Moregenerally,giventheBRDFofthesurface,theReflectanceEquationis:needto(pre-)computeirradiance*BRDF

GlossySurfaces lv

ρωi

ωo

Ramamoorthi,Kautz

L(ωo ) = L(−π 2

π 2

∫ ωi )ρ(ωi ,ωo )dωi

Reflected Light (ρ)

Page 6: EECS 487: Interactive Computer Graphicsweb.eecs.umich.edu/~sugih/courses/eecs487/lectures/30-EM+Accumulation.pdf · EECS 487: Interactive Computer Graphics Lecture 30: • Environment

InteractiveVisualFXAnti-aliasing:• accumulationbufferCameraeffects:• motionblur•  depthoffield•  accumulationbuffer

Shadows:• projected(soft)shadows•  stencilbuffer• depthbufferasshadowmap

Otherglobalilluminationeffects:•  reflection•  refraction•  colorbleed(onebounce)•  caustics

Environmentaleffects:•  participatingmediumandvolumerendering•  particlesystems•  fluiddynamics

LimitationsofGL_MULTISAMPLE

Nocontrolof:•  numberofsamples,can’thaveadaptivequality/performancetrade-off•  samplelocations:can’tdostochasticsamplingoradaptivesamplingorusedifferentsamplingpatterns(perhapsdifferentperpixel)•  averagingfunction(filtershapesandextents)WecanusetheaccumulationbuffertoaddressmostoftheshortcomingsofGL_MULTISAMPLE(exceptforper-pixelsamplingpattern,andatthecostofslowerperformance)

TheAccumulationBuffer

Samesizeasthecolorbuffer,usedtohold(accumulate)resultsfrompartialcomputationDeprecatedsinceOpenGL3.1

Instead,useframebufferobjectwithfloating-pointpixelformat• sameconceptasaccumulationbuffer

MultisamplingwiththeAccumulationBuffer

Akeley07

glutInitDisplayMode(… | GLUT_ACCUM); // set up desired rendering modes glAccum(GL_LOAD, 0.0); // or glClear(GL_ACCUM_BUFFER_BIT); for (int i=0; i<n; ++i) {

// specify sampling location for the i-th pass // by offsetting the frustrum // (google accpersp.c for the redbook source samples) render(scene); // to color buffer // accumulate the color buffer (multiplied by // a weight) to the accumulation buffer glAccum(GL_ACCUM, sampleweight[i]);

} // copy the accumulation buffer to color buffer glAccum(GL_RETURN, 1.0);

Page 7: EECS 487: Interactive Computer Graphicsweb.eecs.umich.edu/~sugih/courses/eecs487/lectures/30-EM+Accumulation.pdf · EECS 487: Interactive Computer Graphics Lecture 30: • Environment

Hart,RTR3

Samplethescenektimes,placethemovingobject(s)atanewlocationeachtime

Eachsamplecontributes1/k-thofthefinalcolor:glAccum(GL_ACCUM, 1/k)

MotionBlurSamplethescenektimes,eachtimewithaslightlydifferenteyeposition,butsuchthatthefocalplaneboundedbythefrustrumisthesameineachsample

Eachsamplecontributes1/k-thofthefinalcolor:glAccum(GL_ACCUM, 1/k)

focalplaneHart

DepthofField

ShadowsforInteractiveRenderingLet’sstartwithhardshadowsPhongilluminationmodelwithhardshadows:(k:lightnumber,notexponentiation!)•  includesvisibilityterm(v(k) = 1),ifalightcan“see”thepoint•  ifpointisinshadow,onlyambienttermappliesHowtodetermineifpointisinshadow?

ct = cg + me + sspot(k )

k=1

n

∑ (ca(k ) + v(k ) f (d (k ) )(cd

(k ) + cs(k ) ))

Merrell

ComputingShadows

Planarreceiver•  projectedshadows

Non-planarreceiver•  shadowmaps•  projectivetexture•  shadowvolumes

Allperformedinreal-time/interactive(sortof)

Page 8: EECS 487: Interactive Computer Graphicsweb.eecs.umich.edu/~sugih/courses/eecs487/lectures/30-EM+Accumulation.pdf · EECS 487: Interactive Computer Graphics Lecture 30: • Environment

ProjectedShadowsWaystothinkaboutshadows:• asadarkvolumeofspace• asplacesnotseenfromalightsourcelookingatthescene• asaseparateobject•  projectobjecttothereceiveranddrawitasecondtime

Akenine-Möller02,Durand

Worksonlywithpointlights Forprojectionontoy = 0:andplanarreceivers•  projectoccludersontoreceivers•  usingshadowprojectionmatrix

What’stheprojectionmatrixforplanarreceiveringeneral,otherthanfory = 0?

ProjectedShadows

x

y

l

v

p lx vx

p =Mv

pxpypzpw

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

=

ly −lx 0 0

0 0 0 00 −lz ly 0

0 −1 0 ly

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

vxvyvz1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

lylx − px

=vy

vx − pxlyvx − ly px = lxvy − pxvylyvx − lxvy = px (ly − vy )

px =lyvx − lxvyly − vy

Pointpisattheintersectionofrayandplaneif(mixingnotation):nip + D = 0, D = −niani L + t(v −L)( )+ D = 0

t = − D + niLni(v −L)

p = L − D + niLni(v −L)

⎛⎝⎜

⎞⎠⎟(v −L)

Shadowprojectionmatrix(M)cannowbecomputed:p =Mv

M =

niL + D − Lxnx −Lxny −Lxnz −LxD

−Lynx niL + D − Lyny −Lynz −LyD

−Lznx −Lzny niL + D − Lznz −LzD

−nx −ny −nz niL

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

ProjectedShadows

L

vp

plane:n•p + D = 0, D = −n•a

ray:L + t(v − L)

Yu Hart

Samplethescenektimes,withobjectprojectedontothereceiver,eachtimewithaslightlydifferentlightposition

Eachsamplecontributes1/k-thofthefinalshadowcolor:glAccum(GL_ACCUM, 1/k)

SoftShadows