J'initialise une texture qui devra contenir mon z buffer :
Ensuite, je l'utilise pendant le rendu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 V( DXUTGetD3DDevice()->CreateTexture( back_buffer_surface->Width, back_buffer_surface->Height, 1, D3DUSAGE_DEPTHSTENCIL, D3DFMT_D24S8, D3DPOOL_DEFAULT, &z_buffer_texture, NULL ) ); z_buffer_texture->GetSurfaceLevel(0,&z_buffer_surface);
En post traitement, je souhaite l'exploiter dans un pixel shader :
Code : Sélectionner tout - Visualiser dans une fenêtre à part V( DXUTGetD3DDevice()->SetDepthStencilSurface( z_buffer_surface ) );
Et à ce moment là, la valeur de depth est bloqué à 1.0f ou supérieure.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 V( _deferred2_effect->SetTexture( texture_depth, z_buffer_texture ) ); sampler sampler_depth = sampler_state { texture = <texture_depth>; AddressU = CLAMP; AddressV = CLAMP; }; [...] float depth = tex2D( sampler_depth, tex );
Comment récupère t on correctement la valeur depth dans un pixel shader ?
Merci d'avance.
Xter.
Partager