Bonjour,
Je poste ici un nouveau topic car je n'ai pas trouvé de solution à mon problème dans les autres messages déjà postés sur le sujet.
Je programme en C++/HLSL et j'ai commencé mon shader de type "Shadow Map" à partir du tutoriel de M. Eric Cannet.
http://eric.cannet.pagesperso-orange...w-mapping.html
L'ombre portée est bonne mais mes objets géométriques restent ombrés.
Je n'arrive pas à trouver si c'est mon shader qui est faux ou ma matrice LightWorldViewProjetion.
Pour ne pas encombrer mon message, j'ai uploadé mes shaders sur Mediafire :
ShadowDepthMap3.fx
ShadowSceneMap.3.2.fx
Voici comment je calcule ma matrice
Pour le shader, j'ai divisé mon problème en deux. Je possède deux shaders, l'un pour la depth map, l'autre pour le rendu de la scène. Pour créer ma shadow map, je place ma caméra à la place de ma lumière (-4,0.0,0.0,1.0), j'applique mon shader "ShadowDepthMap3.fx" sur la scène avec un FarClip de 10. J'enregistre la depth map grâce à un screenshot et je l'enregistre dans un PNG.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 //Calcule du Point de visée de la lumière ADVVECTOR3 front(1., 0., 0.); AdvVec3TransformNormal(&front, &front, &it->m_mat_world); D3DXVECTOR3 vEyePt (x, y, z); D3DXVECTOR3 vLookatPt (front.x, front.y, front.z); D3DXVECTOR3 vUpVec (0.0f, 0.0f, 1.0f ); // Get D3DX to fill in the matrix values D3DXMATRIX mLightView; D3DXMatrixLookAtRH( &mLightView, &vEyePt, &vLookatPt, &vUpVec ); D3DXMATRIX mViewToLightProj = m_matWorld * mLightView * m_matProj;
Ensuite, je charge la shadow Map dans mon shader "ShadowSceneMap3.2.fx" que j'applique sur ma scène.
Voici le résultat :
On peut voir que la traînée laissé par la sphère et le cube sur le plan est bon. Mais Les 3 géométries sont ombrées alors que la sphère devrait être partiellement éclairée et que les coins supérieures du cube devraient l'être également.
Quand j'ai zoomé sur la tache blanche à la base de la lumière (encadré en rouge). J'ai pu me rendre compte que l'éclairage manquant y apparaissait comme on peut le voir ici:
En effet, on voit bien la sphère et les coins supérieurs du cube.
Malheureusement, je ne sais pas vraiment quoi faire de cette information et si c'est vraiment la solution de mon problème.
J'espère que certains d'entre vous on déjà développé cette technique et qu'ils pourront "m'éclairer" sur le sujet.
D'avance, je vous en remercie.
InSomNia
PS : Le PCF ne marche pas, ce n'est pas ma priorité, mais si quelqu'un peut m'aider également. Je ne dis pas non.
Partager