Komisches Verhalten bei sampler2DShadow

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Mr.Betatester
Beiträge: 12
Registriert: 21.06.2010, 20:00
Kontaktdaten:

Komisches Verhalten bei sampler2DShadow

Beitrag von Mr.Betatester »

hi
ich habe mir jetzt endlich mal einen neuen rechner gegönnt und muss feststellen das alles irgendwie anders ist.
ich beschäftige mich zur zeit mit shadowmapping, was auf meinem laptop super geht, aber auf meinem rechner
bekomme ich immer -1, wenn ich die location der shadowmap haben will.
im laptop ist eine ATI Mobility Radeon HD3650 und im pc eine AMD Radeon HD 6800 verbaut.

der shader sieht wie folgt aus:

Code: Alles auswählen

#version 150
precision highp float;

uniform sampler2DShadow shadowMap;
uniform sampler2D texture;

in float ex_NdotL;
in vec2 ex_textureCoords;
in vec4 ex_shadowCoords;

out vec4 fragColor;

void main(void)
{
	vec3 texColor = texture2D(texture, ex_textureCoords).xyz;
	
	float shadow = 1.0;
	vec4 shadowCoords = ex_shadowCoords;
  
	if (ex_shadowCoords.w > 1.0)
	{
		float x, y;
		float shadowSize = 1.0 / 1024.0;
		float width = 1.5;
		float samples = 16.0;

		shadow = 0.0;
		for (y = -width; y <=width; y+=1.0) {
			for (x = -width; x <=width; x+=1.0) {
				shadow += shadow2DProj(shadowMap, shadowCoords + 
						vec4(x * shadowSize * shadowCoords.w, y * shadowSize * shadowCoords.w, 0, 0.0)).w;
			}
		}

		shadow /= samples;
	}

	float intensity = ex_NdotL * 0.7 + 0.3;
	fragColor = vec4(texColor, 1) * (shadow + 0.2);
}
und mit getUniformLocation will ich nun die map haben. Dass er sie eventuell raus nimmt glaube ich nicht,
da er statt der shadowmap meine fonttextur projiziert(er nimmt halt irgendeine , da ich ihm ja nicht sagen
kann wo er die richtige findet :-( ).

ich weiß einfach nicht weiter. muss man bei den neuen karten irgendwas anders machen, oder ist es vielleicht ein treiber bug?

vielen dank schon mal
mr.betatester
Antworten