Autor Wątek: Shadow Mapping problemy po implementacji :)  (Przeczytany 1027 razy)

Offline .:NOXY:.

  • Użytkownik
    • Profil

# Maj 11, 2009, 08:46:06
Nie jest to z pewnością pytanie z serii: jak to zaimplementowac ani pomozcie bo nie dziala shadow mapy zaimplementowalem i dzialaja ale pojawia sie problem ktorego po niekat nie rozumiem choc w teorii działać powinno lecz tak nie jest, o co chodzi:

mam shadow mape na widoku Ortogonalnym (tak to sie chyba pisze ;p) czyli macierz textury wyglada tak oto

TextureMatrix = BiasMatrix * LightProjectionMatrix * LightViewMatrix;

gdzie LightProj = glOrto(-width,height,-width,heigh,0.01,1000);
a LightWiev    = glLookAt(...);


no i do tego shader:

Vertex:

varying vec4 ShadowCoord;

void main()
{     
                //jakies tam obliczenia dodatkowe...

                gl_TexCoord[0]    = gl_MultiTexCoord0;
ShadowCoord       = gl_TextureMatrix[1] * gl_Vertex;
gl_FrontColor       = gl_Color;
gl_Position          = ftransform();
}


no i Fragment:


uniform sampler2DShadow shadow;
uniform sampler2D tex1;
 
void main()
{


vec3 OutColor = vec3(texture2D(tex1,gl_TexCoord[0].st));

float mshadow = 1.0;

 
vec4 shadowCoordinateWdivide = ShadowCoord / ShadowCoord.w ;
shadowCoordinateWdivide.z += 0.0005;

float distanceFromLight = shadow2D(shadow,shadowCoordinateWdivide).z;

  if (ShadowCoord.w > 0.0)
  mshadow = distanceFromLight < shadowCoordinateWdivide.z ? 0.5 : 1.0 ;
 
 
OutColor *=  mshadow;

               gl_FragColor  = vec4(OutColor,1.0);
}


kod dziala cien na mapie jest, FBO jest dobrze ustawione generuje depth mape ale....
gdy owy kod dodam do shadera auta i dopne te sama texture cienia pod auto ktora generuje dla mapy to cienia nie ma :/
wiem ze textura tam jest robilem testy na zwyklych coordach no ale wlaśnie czy potrzeba dodatkowego przeksztalcenia jakas zmiana odleglosći? czemu cien nie jest rzucany prawidlowo pojawia sie z kosmosu i tak samo znika....

Jeżeli ktoś może mi zasugerować gdzie robię coś źle i jaka modyfikacje trzba przeprowadzic to naprawde byłbym wdzięczny. Wystarczy że ktoś mnie tylko nakieruje ;p

I błagam nie piszcie rzeczy w stylu "w Cg" albo "w HLSL" wiem ze sa podobne ale jednak podobne nie te same ;)

Z góry dziekuje za pomoc.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Maj 11, 2009, 09:17:15
Nie wczytywałem się za bardzo w to, co kombinujesz, ale strzelam, że zapomniałeś uwzględnić fakt, że przy tworzeniu shadowmapy musisz używać innej macierzy przekształceń, niż przy jej odczytywaniu. Przy renderowaniu masz zakres współrzędnych [-1..1], a przy czytaniu [0..1].

Offline .:NOXY:.

  • Użytkownik
    • Profil

# Maj 11, 2009, 11:01:10
nie no dodalem Bias co by zakres przeniesc z -1,1 na 0,1
chodzi o to ze shader działa z mapą cien jest dobrze nalozony wzgledem obiektow ale gdy dodaje ta texture do auta i dolaczam kod shadera to cien na auto nie pada gdy np podjade pod cien drzewa :/ a powinno