Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
pcmaster

Založen: 28. 07. 2007 Příspěvky: 1827
|
Zaslal: 22. červenec 2010, 15:46:49 Předmět: DirectX 10/11 depth-stencil ako textura |
|
|
Zdarec,
jedna sa o multiple render targets. Potreboval som depth-stencil view (DSV) namapovat ako shader resource view (SRV), cize texturu, rovnako ako to vyborne funguje pre colour buffer. Funguje to ale len pre formaty ako DXGI_FORMAT_D32_FLOAT (DXGI_FORMAT_R32_TYPELESS), no ked mam standardny 24:8 depth:stencil (DXGI_FORMAT_R24G8_TYPELESS / DXGI_FORMAT_D24_UNORM_S8_UINT), tak neviem vytvorit shader resource view. Podporovane to tym padom asi nie je, ze?
Ano, workaround je kreslit depth (ci stencil?) rucne do dalsieho render targetu, ale pre niektore algoritmy sa mi to vobec nehodi
Dalsia otazka je, ci je vobec nejako mozne (nejakou kombinaciou fullscreen-quad shaderov?) vykopirovat stencil (ci depth, ci oboje...) z existujuceho 24:8 D:S bufferu, ktory ma ale ako bonus zapnuty multisampling (jitter), tj v shaderi sa pridruzeny colour buffer mapuje nie ako Texture2D<float4>, ale ako Texture2DMS<float4, 8> (tato nevie Sample, len Load, co je pribeh na inokedy). To potrebujem preto, pretoze niektore 'vrstvy' musim kreslit multisamplovane, no pre niektore staci obyc rozlisenie, akurat sa zda, ze MRT nepodporuje nabindovanie RTs s roznym rozlisenim a multisamplingom
V pripade nejasnosti preformulujem otazky  _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
 |
igor

Založen: 28. 07. 2007 Příspěvky: 196
|
Zaslal: 23. červenec 2010, 15:27:14 Předmět: |
|
|
Tak jsem se na to zkusil podívat, nevím, jestli něco chytrého řeknu:
24:8 buffer se mi do view dostat podařilo, samplovat taky, a to tak, že jsem texturu udělal jako DXGI_FORMAT_R24G8_TYPELESS, depth-stencil view jako DXGI_FORMAT_D24_UNORM_S8_UINT a shader resource view jako DXGI_FORMAT_R24_UNORM_X8_TYPELESS.
V DXGI dokumentaci D3D10 je ten DXGI_FORMAT_R24_UNORM_X8_TYPELESS uveden úplně mimo ty první 2 typy a jeho použití jako shader resource view je jako optional - pokud jsem to stručné značení pochopil dobře; osobně mi to na GF 8800 funguje (i když jsem na nějakých nvidia stránkách zahlédl, že se ten formát moc nedoporučuje kvůli výkonu, měla by tam probíhat nějaká konverze mezi 24bit a 32bit nebo něco takového). U dokumentace D3D11 už to hierarchicky sedí a podpora shader resource view je zaručena.
S tím druhým asi nepomůžu, všude mi to vyhazovalo varování, že to s multisamplingem a D3D10_BIND_DEPTH_STENCIL minimálně na D3D10 feature úrovni nejde (všemožné pokusy o udělání shader resource view, CopyResource do nedepthnabindované textury, ResolveSubresource apod., ostatně je asi pravda, že minimálně u ResolveSubresource ten požadavek na filtrování hloubek nedává moc smysl).
Nevím, jak je to v D3D11 na D3D11 hardware. Každopádně docela by mě zajímalo, jak to chceš použít, protože já si nedokážu moc představit, jak korektně spolu použít colour buffer a depth buffer různých rozměrů (podle toho multisamplingu předpokládám, že to tak má být použíto). Možná jsem to ale pochopil celé blbě. |
|
Návrat nahoru |
|
 |
|