Selaa lähdekoodia

fixed pbr screen/uv convert

ncannasse 7 vuotta sitten
vanhempi
commit
40a891d80c
3 muutettua tiedostoa jossa 3 lisäystä ja 7 poistoa
  1. 2 2
      h3d/shader/DirShadow.hx
  2. 0 3
      h3d/shader/pbr/Light.hx
  3. 1 2
      h3d/shader/pbr/PropsImport.hx

+ 2 - 2
h3d/shader/DirShadow.hx

@@ -13,8 +13,8 @@ class DirShadow extends hxsl.Shader {
 		var shadow : Float;
 
 		function fragment() {
-			var shadowPos = transformedPosition * shadowProj * vec3(0.5, -0.5, 1) + vec3(0.5, 0.5, 0);
-			var depth = shadowMap.get(shadowPos.xy);
+			var shadowPos = transformedPosition * shadowProj;
+			var depth = shadowMap.get(screenToUv(shadowPos.xy));
 			var zMax = shadowPos.z.saturate();
 			var delta = (depth + shadowBias).min(zMax) - zMax;
 			shadow = exp( shadowPower * delta ).saturate();

+ 0 - 3
h3d/shader/pbr/Light.hx

@@ -7,9 +7,6 @@ class Light extends hxsl.Shader {
 		var transformedPosition : Vec3;
 		var occlusion : Float;
 
-		/**
-			Tells that we need to keep occlusion / shadow map.
-		**/
 		@param var lightColor = vec3(0.5, 0.5, 0.5);
 
 	};

+ 1 - 2
h3d/shader/pbr/PropsImport.hx

@@ -37,8 +37,7 @@ class PropsImport extends hxsl.Shader {
 			pbrSpecularColor = mix(vec3(0.04),albedo,metalness);
 
 			// this is the original object transformed position, not our current drawing object one
-			var uv2 = (uv - 0.5) * vec2(2, -2);
-			var temp = vec4(uv2, depth, 1) * cameraInverseViewProj;
+			var temp = vec4(uvToScreen(uv), depth, 1) * cameraInverseViewProj;
 			var originWS = temp.xyz / temp.w;
 			transformedPosition = originWS;
 		}