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

Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 3. březen 2010, 23:32:47 Předmět: |
|
|
Jestli používáš frame buffery na toto, ujisti se, zda k němu přiřazuješ i depth buffer (přes render buffer) - v opačném případě nemá frame buffer svůj depth buffer a není v čem provádět depth test. _________________ Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. |
|
Návrat nahoru |
|
 |
Augi

Založen: 28. 07. 2007 Příspěvky: 782 Bydliště: Čerčany
|
Zaslal: 4. březen 2010, 07:40:07 Předmět: |
|
|
Přesně tak. Nestačí mít zapnutý Z-test a Z-write, ale také mít přiřazený depth-buffer o dostatečné velikosti. |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 4. březen 2010, 08:32:52 Předmět: |
|
|
kód: |
device.SetRenderState(RenderState.ZEnable, ZBufferType.UseZBuffer);
device.SetRenderState(RenderState.ZWriteEnable, true);
device.SetRenderState(RenderState.ZFunc, Compare.LessEqual);
device.DepthStencilSurface = stiny.depthStencil.GetSurfaceLevel(0);
...
stiny.depthStencil = new Texture(device, shadowMapSize, shadowMapSize, 1, Usage.DepthStencil, Format.D24S8, Pool.Default); //D24S8 is supported by GPU .. i also tried D16
|
Ee... to neudělá žádnou změnu |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 4. březen 2010, 17:38:21 Předmět: |
|
|
Ještě jsem se v tom "trochu" vrtal a přišel jsem na tzv. WTF error...
kód: |
for(half i = 0; i < 3; i++)
{
if(distance < xSplitPlanes[i])
{
lightingFactor = tex2D(ShadowSampler[0], PSIn.TexShadowCoords[i].xy);
return lightingFactor;
}
|
Tento kus kodu funguje OK
ALE
kód: |
float4 fTest = distance > xSplitPlanes;
half index = dot(fTest, fTest);
lightingFactor = tex2D(ShadowSampler[0], PSIn.TexShadowCoords[index].xy); //ta nula je tam proto, ze testuji pouze na 0. kaskade
return lightingFactor;
|
TOHLE NEJDE... ????? wtf
Nicméně index je vypočten správně... zkoušel jsem si barevně vykreslit kaskády podle výsledku indexu (if (index == 0) return .. atd). A to všechno funguje... co to je sakra za bug
Pokud navíc zapíšu textury do depth stencilu a uložím je jako pole samplerů (přes device.SetTexture(i, stiny.ShadowMaps[i]) , tak to jde... jakmile udělám 1 texturu a uložím stínové mapy do kanálů ARGB, tak se to pokazí...  |
|
Návrat nahoru |
|
 |
|
|
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