WebGL
Eclairage WebGL
Généralités
L'éclairage constitue un point majeur pour rendre une scène réaliste. Le modèle WebGL s'appuie sur un coefficient d'intendité I qui, multiplié par la couleur, donne sa valeur au pixel.
Modèle d'éclairage de Phong
L'éclairement d'un objet par des sources lumineuses est un facteur de "réalisme" très important. Parmi les sources de lumière éventuelles, on distingue la lumière ambiante, caractérisée par une distribution uniforme de l'éclairement, les sources ponctuelles à distance finie de l'objet qui provoquent un clairement radial et les sources à l'infini qui éclairent l'objet avec des rayons lumineux parallèles :

Il existe de nombreux modèles d'éclairages différents mais on s'intéressera ici en particulier au modèle de Phong. Il est adapté à la simulation d'éclairage pour tout ce qui est matière plastique, bois ou encore pour les terrains.
Le modèle de Phong peut être résumé en une seule équation exprimant l'intensité lumineuse :
où la lumière I reçue par un objet se décompose en lumière ambiante Ia, en lumière diffusée à la surface de l'objet Id et en lumière réfléchie vers l'observateur Is ( encore appelée reflet ou lumière spéculaire). Suivant les objets, les deux derniers termes peuvent être très différents : un objet mat aura un Id fort, un objet réfléchissant aura un Is fort.
3 types d'éclairage
- Ambiant (lumière dispersée et renvoyée par l’Environnement = pas de source identifiée)
- Diffus (lumière venant d’une direction particulière et plus brillante si elle arrive perpendiculairement mais renvoyée uniformément)
- Spéculaire (lumière venant d’une direction particulière et renvoyée par la surface dans une direction particulière)
Lightmapping
Idéal pour des objets statiques avec des sources lumineuses statiquesDéfinition : C'est un éclairage précalculé dans un logiciel de modélisation 3D (comme Blender) et stocké dans une texture. Un objet a deux textures alors :
- Coloration
- Lightmapping
Ombrage
Il existe différentes techniques pour réaliser un ombrage :- Ombrage trivial
- Ombrage Projeté
- Shadowmapping
-
- Normal
- Avec PCF (contre l'aliasing)
- Volumetric Shadows (difficile en WebGL car manque l'accès à certains shaders
Ce mécanisme est très coûteux mais utile pour le réalisme de la scène.
La technique la plus utilisée est celle du Shadowmapping. Elle consiste à se placer dans le référentiel de la lampe. On utilise le depth-buffer( profondeur ) et on le rend en textureshadowmap.
Au moment du rendu de la scène, on calcule chaque pixel de la scène dans le référentiel de la lampe et On compare la profondeur de chaque pixel de la scène avec la shadowmap. On détermine ainsi ce qui est visible ou non.
