.[ ČeskéHry.cz ].
DirectX 10/11 depth-stencil ako textura

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1827

PříspěvekZaslal: 22. červenec 2010, 15:46:49    Předmět: DirectX 10/11 depth-stencil ako textura Odpovědět s citátem

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 Sad

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 Sad

V pripade nejasnosti preformulujem otazky Very Happy
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
igor



Založen: 28. 07. 2007
Příspěvky: 196

PříspěvekZaslal: 23. červenec 2010, 15:27:14    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna