Pixel-Lighting Problem
-
Hey,
Ich versuche gerade meine Shadows mit Licht zu kombinieren doch da gibt es leider Probleme.
Ich möchte die Wände dunkel färben, welche ohnehin von der Lichtquelle abgewandt sind. Das klappt auch gut doch in Kombination mit den Shadows leider nicht.
Da ich nur die Shadows in einer gewissen Kameraumgebung erzeuge, gibt es Probleme, wenn sich eine abgewandte Wand + Shadow überlagern.Kurz gesagt: Es wird zu dunkel.
Eine Abgewandte Wand wird dunkel gefärbt, Fläche, wo Schatten sind, werden auch dunkel gefärbt. Trifft beides zu, was ja öfters der Fall ist, habe ich eine schwarze Wand. Sieht nicht so schön aus.
Der diffuse_value "schaut" quasi, ob die Wand abgewandt ist oder eben nicht.
Die shadow Variable enthält die Informationen von der shadow2DProj (.r).float diffuse_value = max(dot(vertex_normal, vertex_light_position), 0.0); vec4 texel = texture2DProj(NormalMap, gl_TexCoord[0]); texel.rgb *= (shadow+0.25); gl_FragColor = texel * gl_Color;
Ich habe jetzt mal den diffuse Teil nicht integriert, da ja ohnehin nur falsche Sachen bei raus kommt.
Wie kann ich dieses Problem lösen?Falls noch Informationen/Code-Segmente fehlen einfach bescheid geben.
-
Du könntest auf eine maximale Abweichung gegen die Originalfarbe testen. Allerdings stellt sich mir die Frage warum du noch "manuell" nachdunkeln möchtest, lass doch einfach den Schatten sein Werk verrichten?
-
Hm ich werds probieren.
Eine Depth-Texture wird leider nie alle Bereiche abdecken, die abgedeckt werden sollen - vorallem wenn man mit Backface-Culling arbeitet
Stell dir die Sonne und ein Haus vor.
Wenn ich im Haus bin, in einem Zimmer, dann sehe ich oben vom Zimmer die Decke. Bin ich nun aber bei der Sichtweise der Sonne, so würde das Culling diese Decke entfernen.=> Decke ist hell.
Arbeitet man ohne Culling, so treten wiederrum andere Probleme auf. Es schattieren sich so z.B. Objekte, die garnicht schattiert werden sollen^^
Bei ShadowMapping ist alles nicht so einfach.
Es fehlt halt definitiv glEnable(GL_SHADOW) :p