.[ ČeskéHry.cz ].
Stíny
Jdi na stránku Předchozí  1, 2
 
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
Vilem Otte



Založen: 18. 09. 2007
Příspěvky: 462
Bydliště: Znojmo - Sedlesovice, Kravi Hora

PříspěvekZaslal: 3. březen 2010, 23:32:47    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 4. březen 2010, 07:40:07    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 4. březen 2010, 08:32:52    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 4. březen 2010, 17:38:21    Předmět: Odpovědět s citátem

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
Evil or Very Mad Question

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])Wink, tak to jde... jakmile udělám 1 texturu a uložím stínové mapy do kanálů ARGB, tak se to pokazí... Idea
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
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
Jdi na stránku Předchozí  1, 2
Strana 2 z 2

 
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