18
Shading Computação Gráfica - LM

Shading 2006

Embed Size (px)

DESCRIPTION

shading computação gráfica

Citation preview

  • ShadingComputao Grfica - LM

  • Iluminao, Sombras, Shading e Textura

    IluminaoSombreamentoRemoo de faces ocultasTextura

  • ShadingDada uma equao para calcular a radincia da superfcie, ainda necessrio aplic-la ao modelo real.

    Pode-se determinar ela em alguns pixels e interpolar ou espalhar para aos outros (Shading)shading geralmente executado durante a rasterizaoh modelos eficientes para fazer isso (Flat, Gouraud, Phong shading)

  • More Common Shading StylesFaceted shading: no interpolationcolor constant within polygonleast expensiveGouraud shading: interpolate colorsshade each vertexlinearly interpolate color across polygoncost: three integer adds per pixelPhong shading: interpolate normalscalculate vertex normalslinearly interpolate normals across polygonuse interpolated normal to shade each pixel (expensive!)cost: tens of floating point computations per pixelTexture Mapping: interpolate texture coordinatesuse those coordinates to do texture lookup for each pixel

  • Faceted (Flat) ShadingCalcula valor da normal e determina o valor de de iluminao (shading) para o centro do polgono (I(x,y)=) que ser o mesmo para todos os pixels dentro do polgono

  • Gouraud ShadingEspecificar um valor de sombra diferente para cada vrtice de polgono (polgonos adjacentes com o mesmo valor na borda em comum)Interpolar na hora de fazer o renderingPode tambm ser usado para obscurecer regies distantes do observador, fazendo a cena parecer mais real

  • GouraudP2,S2P1,S1P3,S3

  • Rasterizando Calcular o valor de iluminao (sombreamento) em A e B, interpolando os valores de S1, S2, e S3Seja u1 = d(P1,A)/d(P1,P3)Seja u2 = d(P1,B)/d(P1,P2)As = u1S3 + (1-u1)S1Bs = u2S2 + (1-u2)S1Obs: para calcular o valor exato de sombreamento em C:Cs = As + (1-frac(Ax))*Gradient

  • RasterizandoCalcular o gradiente de sombreamento ao longo da linha:Gradient = (Bs - As) / d(A,B)Obs: d(A,B) = (Bx-Ax), onde Ax,Bx = valor da coordenada em X de A,BCalcular o valor de cada pixel e pintar tela:Shade = Csloop X from Cx to Dx plot pixel at (X,Y) with colour Shade Shade = Shade + GradientEnd of X loop

  • Gouraud Shading We can do shading during scan conversionHow? Simply adjust the fill color on a pixel-by-pixel basis Compute illumination at each of the vertices Linearly interpolate vertex colors to get colors along each edge Interpolate edge colors to get pixel colors along each spanMuch faster than computing illumination at each pixel.A great trick!

    Pronounced goo-ro

  • There is an Ambiguity This only happens for quadrilaterals and higher, butWhen a square rotates on screen, the scan lines cross it differently.That means the X interpolation connects two different Y interpolation points.That means the color at a given pixel changes!(A good reason for preferring triangles).Barycentric coords (coming soon) dont have this problem.CCC is blueC is red

  • Phong ShadingCalcular normal em cada vrticePara determinar cor de cada pixel:Interpolar normais linearmente, usando mesma idia acimaCalcular valor de shading usando normal interpolada (usando equao de shading)Resultado melhor que interpolar shading diretamente

  • Shading Stytes

    Faceted Gouraud Phong

  • Shading StylesGouraud and Phong are examples of smooth shadingtrick to make polygon meshes look smoothKeep in mind that this is not physically correct!Why?1. How should the color vary over a plane under diffuse illumination?2. Normal interpolation does not make sense for a polygon!But it works great in practice

  • Shading StylesWhat is the advantage of Phong over Gouraud?specular highlights look much betterPhong shading is NOT the same as Phong Illumination!Phong illumination tells you how to compute radiance given normalPhong shading is a trick for interpolating normals in image spaceOpenGL does Gouraud shading (or flat shading)

  • SombrasSombras ocorrem quando objetos so protegidos da luzobjeto no influi na iluminao da cena (no h reflexo direta da luz do objeto ao observador)Calcular o que est oculto um problema de visibilidadea luz consegue ver o objeto?

  • SombrasPode-se usar um algoritmo z-buffer para sombreamentoexecutar o algoritmo do ponto de visualizao da fonte de luzsalvar o z-buffer como shadow-bufferexecutar o algoritmo z-buffer real, mapeando cada ponto nas coordenadas da fonte de luz e comparando o valor contra o shadow-buffer(OK, felizmente j estudamos z-buffer :-)...

  • Shadow-buffer