Bläddra i källkod

Revert renderer not having depth texture from heaps.

clementlandrin 2 år sedan
förälder
incheckning
287ae91f3c
3 ändrade filer med 13 tillägg och 10 borttagningar
  1. 1 1
      hrt/prefab/l3d/Layers2D.hx
  2. 1 3
      hrt/prefab/rfx/Sharpen.hx
  3. 11 6
      hrt/prefab/rfx/TemporalFiltering.hx

+ 1 - 1
hrt/prefab/l3d/Layers2D.hx

@@ -127,7 +127,7 @@ class Layer2DRFX extends hrt.prefab.rfx.RendererFX {
 				s.depthChannelChannel = depthMap.channel == null ? hxsl.Channel.R : depthMap.channel;
 			}
 
-			r.setTarget(output, ReadOnly);
+			r.setTarget(output);
 			pass.render();
 		}
 	}

+ 1 - 3
hrt/prefab/rfx/Sharpen.hx

@@ -33,7 +33,6 @@ class Sharpen extends RendererFX {
 			r.mark("Sharpen");
 			var sharpen = r.allocTarget("sharpen", true, 1.0, RGBA);
 			var ctx = r.ctx;
-			var prevDepthBinding = @:privateAccess ctx.engine.currentDepthBinding;
 			ctx.engine.pushTarget(sharpen);
 			sharpenPass.shader.source = ctx.getGlobal("ldrMap");
 			sharpenPass.shader.intensity = intensity;
@@ -41,8 +40,7 @@ class Sharpen extends RendererFX {
 			sharpenPass.render();
 			ctx.engine.popTarget();
 			ctx.setGlobal("ldrMap", sharpen);
-			@:privateAccess cast(r, h3d.scene.pbr.Renderer).textures.ldr = sharpen;
-			r.setTarget(sharpen, prevDepthBinding);
+			r.setTarget(sharpen);
 		}
 	}
 

+ 11 - 6
hrt/prefab/rfx/TemporalFiltering.hx

@@ -18,6 +18,7 @@ class TemporalFilteringShader extends h3d.shader.ScreenShader {
 		@param var prevCamMat : Mat4;
 		@param var cameraInverseViewProj : Mat4;
 
+		@const var PACKED_DEPTH : Bool;
 		@param var depthChannel : Channel;
 		@param var depthTexture : Sampler2D;
 
@@ -70,7 +71,7 @@ class TemporalFilteringShader extends h3d.shader.ScreenShader {
 		var isSky : Bool;
 
 		function getPixelPosition( uv : Vec2 ) : Vec3 {
-			var d = depthChannel.get(uv).r;
+			var d = PACKED_DEPTH ? unpack(depthTexture.get(uv)) : depthChannel.get(uv).r;
 			var tmp = vec4(uvToScreen(uv), d, 1) * cameraInverseViewProj;
 			tmp.xyz /= tmp.w;
 			isSky = d == 1.0;
@@ -178,12 +179,16 @@ class TemporalFiltering extends hrt.prefab.rfx.RendererFX {
 			s.depthChannel = depthMap.texture;
 			s.depthChannelChannel = depthMap.channel == null ? hxsl.Channel.R : depthMap.channel;
 
-			s.resolution.set(output.width, output.height);
-			s.VARIANCE_CLIPPING = varianceClipping;
-			s.YCOCG = ycocg;
-			s.UNJITTER = unjitter;
+			s.PACKED_DEPTH = depthMap.packed != null && depthMap.packed == true;
+			if( s.PACKED_DEPTH ) {
+				s.depthTexture = depthMap.texture;
+			}
+			else {
+				s.depthChannel = depthMap.texture;
+				s.depthChannelChannel = depthMap.channel == null ? hxsl.Channel.R : depthMap.channel;
+			}
 
-			r.setTarget(output, ReadOnly);
+			r.setTarget(output);
 			pass.render();
 
 			h3d.pass.Copy.run(output, prevFrame);