Forráskód Böngészése

Fix for shadow on DX

ShiroSmith 5 éve
szülő
commit
21856202b9
3 módosított fájl, 9 hozzáadás és 9 törlés
  1. 3 3
      h3d/shader/DirShadow.hx
  2. 3 3
      h3d/shader/PointShadow.hx
  3. 3 3
      h3d/shader/SpotShadow.hx

+ 3 - 3
h3d/shader/DirShadow.hx

@@ -48,7 +48,7 @@ class DirShadow extends hxsl.Shader {
 							for( i in 0 ... 4 ) {
 								var offset = poissonDiskLow[i].xy * texelSize * pcfScale;
 								offset = vec2(cos(rot) * offset.x - sin(rot) * offset.y, cos(rot) * offset.y + sin(rot) * offset.x);
-								var depth = shadowMap.get(shadowUv + offset);
+								var depth = shadowMap.getLod(shadowUv + offset, 0);
 								if( zMax - shadowBias > depth )
 									shadow -= sampleStrength;
 							}
@@ -57,7 +57,7 @@ class DirShadow extends hxsl.Shader {
 							for( i in 0 ... 12 ) {
 								var offset = poissonDiskHigh[i].xy * texelSize * pcfScale;
 								offset = vec2(cos(rot) * offset.x - sin(rot) * offset.y, cos(rot) * offset.y + sin(rot) * offset.x);
-								var depth = shadowMap.get(shadowUv + offset);
+								var depth = shadowMap.getLod(shadowUv + offset, 0);
 								if( zMax - shadowBias > depth )
 									shadow -= sampleStrength;
 							}
@@ -66,7 +66,7 @@ class DirShadow extends hxsl.Shader {
 							for( i in 0 ... 64 ) {
 								var offset = poissonDiskVeryHigh[i].xy * texelSize * pcfScale;
 								offset = vec2(cos(rot) * offset.x - sin(rot) * offset.y, cos(rot) * offset.y + sin(rot) * offset.x);
-								var depth = shadowMap.get(shadowUv + offset);
+								var depth = shadowMap.getLod(shadowUv + offset, 0);
 								if( zMax - shadowBias > depth )
 									shadow -= sampleStrength;
 							}

+ 3 - 3
h3d/shader/PointShadow.hx

@@ -47,7 +47,7 @@ class PointShadow extends hxsl.Shader {
 							for( j in -sampleCount ... sampleCount + 1 ) {
 								for( k in -sampleCount ... sampleCount + 1 ) {
 									var offset = vec3(i, j, k) * pcfScale;
-									var depth = shadowMap.get(dir + offset).r * zFar;
+									var depth = shadowMap.getLod(dir + offset, 0).r * zFar;
 									if( zMax - shadowBias > depth )
 										shadow -= sampleStrength;
 								}
@@ -58,7 +58,7 @@ class PointShadow extends hxsl.Shader {
 				else if ( USE_ESM ) {
 					var posToLight = transformedPosition.xyz - lightPos;
 					var dir = normalize(posToLight.xyz);
-					var depth = shadowMap.get(dir).r * zFar;
+					var depth = shadowMap.getLod(dir, 0).r * zFar;
 					var zMax = length(posToLight);
 					var delta = (depth + shadowBias).min(zMax) - zMax;
 					shadow = exp(shadowPower * delta).saturate();
@@ -66,7 +66,7 @@ class PointShadow extends hxsl.Shader {
 				else {
 					var posToLight = transformedPosition.xyz - lightPos;
 					var dir = normalize(posToLight.xyz);
-					var depth = shadowMap.get(dir).r * zFar;
+					var depth = shadowMap.getLod(dir, 0).r * zFar;
 					var zMax = length(posToLight);
 					shadow = zMax - shadowBias > depth ? 0 : 1;
 				}

+ 3 - 3
h3d/shader/SpotShadow.hx

@@ -48,7 +48,7 @@ class SpotShadow extends hxsl.Shader {
 							for( i in 0 ... 4 ) {
 								var offset = poissonDiskLow[i].xy * texelSize * pcfScale;
 								offset = vec2(cos(rot) * offset.x - sin(rot) * offset.y, cos(rot) * offset.y + sin(rot) * offset.x);
-								var depth = shadowMap.get(shadowUv + offset);
+								var depth = shadowMap.getLod(shadowUv + offset, 0);
 								if( zMax - shadowBias > depth )
 									shadow -= sampleStrength;
 							}
@@ -57,7 +57,7 @@ class SpotShadow extends hxsl.Shader {
 							for( i in 0 ... 12 ) {
 								var offset = poissonDiskHigh[i].xy * texelSize * pcfScale;
 								offset = vec2(cos(rot) * offset.x - sin(rot) * offset.y, cos(rot) * offset.y + sin(rot) * offset.x);
-								var depth = shadowMap.get(shadowUv + offset);
+								var depth = shadowMap.getLod(shadowUv + offset, 0);
 								if( zMax - shadowBias > depth )
 									shadow -= sampleStrength;
 							}
@@ -66,7 +66,7 @@ class SpotShadow extends hxsl.Shader {
 							for( i in 0 ... 64 ) {
 								var offset = poissonDiskHigh[i].xy * texelSize * pcfScale;
 								offset = vec2(cos(rot) * offset.x - sin(rot) * offset.y, cos(rot) * offset.y + sin(rot) * offset.x);
-								var depth = shadowMap.get(shadowUv + offset);
+								var depth = shadowMap.getLod(shadowUv + offset, 0);
 								if( zMax - shadowBias > depth )
 									shadow -= sampleStrength;
 							}