Com extreure els plans del frustum d’una matriu modelview-projection

Extraient els plans del frustum de visió de la matriu modelview-projection

En aquesta publicació explicaré com extreure els paràmetres de cada pla del frustum de visió en l’espai local d’un objecte amb una certa matriu modelview-projection. Coxèixer els plans del frustum de visió pot ser útil en alguns casos. El primer en que penso és el d’efectuar la tècnica de frustum culling, a la que aviat dedicaré una publicació.

Continuar llegint

Línies amb anti-aliasing a OpenGL

Per dibuixar línies suaus (amb anti-aliasing) a OpenGL, s’han de tenir en compte alguns detalls:

  • El blending ha de romandre actiu a l’hora de pintar
  • S’ha d’haver definit una función esfecífica de blending
  • El suavitzat de línies ha d’estar actiu
  • En alguns casos, s’ha d’haver definit un hint de pintat de línies suaus explícitament

Les següents línies de codi son les crides a OpenGL necessàries per obtenir línies suaus:

1
2
3
4
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_LINE_SMOOTH);
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);

A la següent imatge es veu la diferència entre pintar línies sense anti-aliasing i amb anti-aliasing:

Comparison between non-antialiased lines and antialiased lines

Reconstrucció de la posició d’un pixel

De vegades podem necessitar conèixer la posició d’un pixel en espai de càmera des d’un fragment program. Això normalment és necessari en operacions de postprocés, on típicament (després de pintar tota l’escena a un FBO (frame buffer object)en un primer pas), s’envia a pintar un quad que omple tota la pantalla en un segon pas, junt amb informació de l’escena (normalment en forma de textures amb les normals, material, profunditat, etc) utilitzant un fragment program específic que s’encarrega dels càlculs de postprocés.

Aleshores, durant aquest postprocés, cada fragment d’aquest quad es correspon amb una petita porció de la superfície de l’escena pintada amb anterioritat,
tot i que en aquest moment només podem conèixer la seva posició dins el quad pintat.

La pregunta és: Quina era la seva posició dins l’escena original en espai de càmera?
Continuar llegint