Intro :
La technique du back-face culling permet d’ignorer le rendu des triangles qui ne sont pas visible par l’observateur ou la caméra.
Prérequis :
– Savoir ce qu’est un produit scalaire
Explications :
Par exemple, les triangles de l’intérieur d’un modèle ou personnage ne seront pas rendu si l’on rentre et se positionne dedans !
Dans DirectX, les vertices d’un triangle sont définis dans un certain ordre (il existe deux sens : le sens « counter clockwise » et le sens « closewise»). Cet ordre va définir dans quel sens est orienté la normale du triangle en question (voir l’article sur la normale).
Comment ça fonctionne ?
Soit le vecteur représentant la position de la caméra ; et le vecteur représentant la position du centre du polygone à tester
.
On calcule donc le vecteur
On a aussi le vecteur normal à ce même polygone
Mathématiquement :
Si le produit scalaire est positif (en fait cela dépend du type de culling) alors cela signifie que le triangle est orienté dans le même sens que la vue (il nous tourne le dos), et il peut donc être éliminé du rendu.
Voilà c’est tout simple !
Il faut savoir aussi que cet algorithme est géré automatiquement par DirectX et la carte graphique.
On peut le configurer comme suit :
D3D10_RASTERIZER_DESC rasterizerState; rasterizerState.CullMode = D3D10_CULL_NONE; rasterizerState.FillMode = D3D10_FILL_SOLID; rasterizerState.FrontCounterClockwise = true; m_pd3dDevice->CreateRasterizerState(&rasterizerState, &m_pRasterizerState); m_pd3dDevice->RSSetState(m_pRasterizerState);
Résumé :
Pour conclure, le backface culling est l’élimination des faces qui « tournent le dos » à la caméra et que l’on ne voit donc pas.
Références :
– http://jeux.developpez.com/faq/3d/?page=culling
– http://stackoverflow.com/questions/3595087/opengl-newbie-question-what-is-back-face-culling
– http://www.gamedev.net/page/resources/_/technical/graphics-programming-and-theory/3d-backface-culling-r1088
– https://en.wikipedia.org/wiki/Back-face_culling
– https://fr.wikipedia.org/wiki/D%C3%A9termination_des_surfaces_cach%C3%A9es



