POGL: Second class

Frame buffer object

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

Quand on veut faire un rendu de l'offscreen rendering:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

Calcul final au dernier moment

  • Avantage: ce calcul n'est pas faut pour les points qui ne sont pas visibles

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

On va faire un rendu par buffer qui n'est pas visible

  • un pour la couleur
  • un pour la profondeur
  • etc

En tout les points du quadrilateres du rendu on a les couleurs, normales, etc. et on peut en deduire les combinaisons pour le calcul effectif de l'illumination

Les combinaisons sont calculees une seule fois pour les points visibles sur un quadrilatere

C'est utilise dans les jeux videos pour economiser du temps

Off-screen rendering

On a besoin de pouvoir ecrire pour notre premier rendu similutanement la profondeur, couleur, etc. Pour cela on defini plusieurs variables out dans notre shader (Multi-Render target)

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

Depth shadow maps

  1. Avant de faire le rendu final, pour savoir quels sont les objets visibles, on fait le rendu depuis la source lumineuse
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More โ†’
  2. Faire le rendu en tenant compte de parties visibles ou pas depuis la source lumineuse

Initialise FBO

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

Rendu depuis la source lumineuse

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

Rendu depuis la camera

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

Vertex shader

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

Fragment shader

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

Resultats

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

On a le z-buffer depuis la source lumineuse

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

On s'attendait a un super resultat mais la partie pas a l'ombre a mal rendue

Pourquoi ?

Quand on fait le rendu, on discretise la scene: peut-etre que quand on verifie un pixel on est trop a droite ou trop a gauche, donc des pixels sont consideres a l'ombre alors qui ne le sont pas.

Solution: ajout d'un biais

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

Ce biais n'est pas facile a fixer car depend de notre scene, sa taille, la taille des objets, etc.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

Le lapin profite du soleil avant d'avoir trop chaud

Second depth shadow map

Faire le rendu de la scene depuis la lumiere en regardant les faces arrieres des objets

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

On inverse le backface culling

On n'a plus besoin du biais

Le biais est toutefois plus facile a mettre

Resultats

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

Il n'y a ni anti-aliasing, ni ombres douces

On n'a plus d'artefacts et on a un rendu temps reel qui fonctionne tres bien.

Pour aller plus loin:

  • sampler2DShadow/textureProj()
  • soft shadow map
  • etc.

Rendu final

Frame buffer objects

On a plusieurs images, a t-1, t et t+1 (par exemple)

  • Rendu d'une position dans une texture/un render buffer
  • Accumulation dans une texutre (Type float sinon les valeurs sont clampees)
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More โ†’
  • Copies dans l'image finale

Nous en train de courir vers le lapin, ca donne :

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

Au lieu de faire un rendu, on en fait 3

Post processing

On a un quadrilatere affiche dont on peut modifier la texture comme on souhaite.

Rendu dans une texture

On deforme l'image

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

Notre lapin a trouve des champignons, les a mange mais c'etait des champignons hallucinogenes

OpenGL

Object Picking

L'idee: on va faire un rendu intermediaire off-screen, on associe a chaque objet un identificateurs dans les FBOs

Le brouillard

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

Objectif
Modifier la couleur en fonction de la distance

  • choisir la fonction

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

On retrouve notre lapin perdu dans le brouillard

Moteur de particules

Systemes a base de particules

  • Permet de modeliser des elements difficiles a modeliser avec des solides classiques ou des surfaces
    • feu
    • fumee
    • etc

Fonctionnement

  • Caracteristiques
    • position
    • couleur
    • taille
    • forme
    • โ€ฆ
  • Lois
    • creation
    • destruction
  • Regles (Evolution)
    • Modifications des caracteristiques

Le feu

Utilisation de particules

  • Creation
    • Plusieurs centaines
    • Apparaissent dans une zone precise
    • Avec une couleur proche du blanc
  • Forme
    • Point
    • Sphere
  • Evolution
    • Changement de couleur
    • Deplacement vers le haut avec perturbations
  • Destruction
    • Atteint la couleur noir

Evolution: changement de couleur

Resultat:

Si on est flemmards:

  • utilisation d'un billboard
  • Affichage d'un feu en 2D

Etinceles/feu d'artifice/explosion

Resultat:

C'est les memes regles que pour le feu

On fait des bulles qui grossissent de plus en plus

Billboard

Utilisation d'un Billboard

Conclusion

Les effets intermediares qu'on peut faire pour le rendu final.