RepoFIBtori

Procés de visualitzación projectiu

Esquema

Screenshot from 2018-12-12 16-31-30

Object Space

MODELLING TRANSFORM

Es situa cada instància d’un objecte en relació a l’escena, sol ser la identitat, una composicio de translacions, rotacions i escalats.

Matrius de transformació de Modelat

Screenshot from 2018-12-12 16-30-26

World Space

VIEWING TRANSFORM

Transformació de visualització.

Eye Space

PROJECTION TRANSFORM

​ Càmara perspectiva

Clip Space

Sistema de coordenades de retallat

PERSPECTIVE DIVISION

El pas de coordenades homogènies a 3D, es divideix cada coordenada per la coordenada homogènia.

(xc , yc , zc , wc) :arrow_right: (xc /wc , yc /wc , zc /wc )

Normalized Device Space

VIEWPORT TRANSFORM & DEPTH TRANSFORM

Window space

Coordenades de finestra/dispositiu

Pipeline OpenGL

  1. Dibuix de primitives
  2. Per-vertex operations
    1. Es transformen els vèrtexs (modelview i projection)
    2. Es transformen les normals
      1. Amb la transposta de l’inversa de la submatriu 3x3 de la modelView
    3. Es calcula la il·luminació del vèrtex
  3. Primitive Assembly
    1. Els vèrtex s’agrupen en primitives
    2. Cada primitiva té un clipping diferent
  4. Primitive Processing
    1. Clipping de la piràmide de visió
    2. Divisió de perspectiva: es divideix (x,y,z) per w
    3. Viewport & Depth transform :arrow_right: window coordinates
    4. Backface culling
      1. les normals estan en una altra direcció i no les pinto
  5. Rasterització
    1. Es generen els fragments de les primitives
    2. Cada fragment té diversos atributs:
      1. Coordenades (window space)
      2. Color
      3. Coordenades de textura
  6. Fragment processing (“shading”)
    1. Càlcul del color del fragment (i.e. texture mapping)
  7. Per-fragment operations (“raster operations”)
    1. Stencil test, Pixel ownership test, Scissor test, Alpha test, Stencil test, Depth test (test Z-buffer), Blending, Dithering, Logical Ops (glLogicOp)
  8. Frame buffer operations
    1. Es modifiquen els buffers que s’hagin escollit amb glDrawBuffers, afectada per glColorMask, glDepthMask…

Ray Tracing

Ray Tracing classic (LS*E o LDS*E)

Comença amb la càmara (E), i va rebotant a cada especular fins trobar una difusa

Path Tracing (L(S|D)*E)

Tira a saco de raigs per píxel i va pillant els reflexos de la especular i de la difusa n’agafa un qualsevol. Això provoca soroll.

Two-path Ray Tracing (L\S*E o LS*DS*E)

Comença amb la càmara (E), i va rebotant a cada especular fins trobar una difusa i llavors pot continuar a rebotar en moltes especulars fins que arriba a a la llum