ShiroSmith 4 rokov pred
rodič
commit
5b6d882b43

+ 3 - 2
hide/Renderer.hx

@@ -159,14 +159,15 @@ class PbrRenderer extends h3d.scene.pbr.Renderer {
 	override function end() {
 	override function end() {
 		switch( currentStep ) {
 		switch( currentStep ) {
 		case MainDraw:
 		case MainDraw:
+		case AfterTonemapping:
 			var outlineTex = allocTarget("outline", false);
 			var outlineTex = allocTarget("outline", false);
-			setTarget(outlineTex);
+			ctx.engine.pushTarget(outlineTex);
 			clear(0);
 			clear(0);
 			draw("highlight");
 			draw("highlight");
+			ctx.engine.popTarget();
 			var outlineBlurTex = allocTarget("outlineBlur", false);
 			var outlineBlurTex = allocTarget("outlineBlur", false);
 			outlineBlur.apply(ctx, outlineTex, outlineBlurTex);
 			outlineBlur.apply(ctx, outlineTex, outlineBlurTex);
 			outline.shader.texture = outlineBlurTex;
 			outline.shader.texture = outlineBlurTex;
-		case AfterTonemapping:
 			outline.render();
 			outline.render();
 			renderPass(defaultPass, get("debuggeom"), backToFront);
 			renderPass(defaultPass, get("debuggeom"), backToFront);
 			renderPass(defaultPass, get("debuggeom_alpha"), backToFront);
 			renderPass(defaultPass, get("debuggeom_alpha"), backToFront);

+ 5 - 12
hrt/prefab/rfx/FrustumJitter.hx

@@ -98,11 +98,11 @@ class FrustumJitter {
 	];
 	];
 
 
 	public var points_Pentagram : Array<Float> = [
 	public var points_Pentagram : Array<Float> = [
-		0.000000*0.,  0.525731*0.,// head
-		-0.309017*0., -0.42532*0.,// lleg
-		0.500000*0.,  0.162460*0.,// rarm
-		-0.500000*0.,  0.162460*0.,// larm
-		0.309017*0., -0.42532*0.,// rleg
+		0.000000,  0.525731,// head
+		-0.309017, -0.42532,// lleg
+		0.500000,  0.162460,// rarm
+		-0.500000,  0.162460,// larm
+		0.309017, -0.42532,// rleg
 	];
 	];
 
 
 	public var points_Halton_2_3_x8 : Array<Float> = [];
 	public var points_Halton_2_3_x8 : Array<Float> = [];
@@ -151,13 +151,6 @@ class FrustumJitter {
 	public var curPattern : Pattern = Still;
 	public var curPattern : Pattern = Still;
 
 
 	public function new() {
 	public function new() {
-		
-		// points_Pentagram
-		var vh = new h3d.Vector(points_Pentagram[0] - points_Pentagram[2], points_Pentagram[1] - points_Pentagram[3]);
-		var vu = new h3d.Vector(0.0, 1.0);
-		transformPattern(points_Pentagram, hxd.Math.degToRad(0.5 * hxd.Math.atan2(vh.y - vu.y, vh.x - vu.x)), 1.0);
-
-		// points_Halton_2_3_xN
 		points_Halton_2_3_x8.resize(8);
 		points_Halton_2_3_x8.resize(8);
 		initializeHalton_2_3(points_Halton_2_3_x8);
 		initializeHalton_2_3(points_Halton_2_3_x8);
 		points_Halton_2_3_x16.resize(16);
 		points_Halton_2_3_x16.resize(16);

+ 7 - 4
hrt/prefab/rfx/TemporalFiltering.hx

@@ -164,16 +164,18 @@ class TemporalFiltering extends hrt.prefab.rfx.RendererFX {
 			curMatNoJitter.load(ctx.camera.m);
 			curMatNoJitter.load(ctx.camera.m);
 			ctx.camera.mproj.multiply(ctx.camera.mproj, jitterMat);
 			ctx.camera.mproj.multiply(ctx.camera.mproj, jitterMat);
 			ctx.camera.m.multiply(ctx.camera.mcam, ctx.camera.mproj);
 			ctx.camera.m.multiply(ctx.camera.mcam, ctx.camera.mproj);
+			@:privateAccess ctx.camera.needInv = true;
 			s.cameraInverseViewProj.initInverse(curMatNoJitter);
 			s.cameraInverseViewProj.initInverse(curMatNoJitter);
 		}
 		}
 	}
 	}
 
 
 	override function end( r:h3d.scene.Renderer, step:h3d.impl.RendererFX.Step ) {
 	override function end( r:h3d.scene.Renderer, step:h3d.impl.RendererFX.Step ) {
+		var ctx = r.ctx;
 		var p : TemporalFilteringProps = props;
 		var p : TemporalFilteringProps = props;
 		if( ( step == AfterTonemapping && p.renderMode == "AfterTonemapping") || (step == BeforeTonemapping && p.renderMode == "BeforeTonemapping" ) ) {
 		if( ( step == AfterTonemapping && p.renderMode == "AfterTonemapping") || (step == BeforeTonemapping && p.renderMode == "BeforeTonemapping" ) ) {
 			r.mark("TemporalFiltering");
 			r.mark("TemporalFiltering");
-			var output : h3d.mat.Texture = r.ctx.engine.getCurrentTarget();
-			var depthMap : Dynamic = r.ctx.getGlobal("depthMap");
+			var output : h3d.mat.Texture = ctx.engine.getCurrentTarget();
+			var depthMap : Dynamic = ctx.getGlobal("depthMap");
 			var prevFrame = r.allocTarget("prevFrame", false, 1.0, output.format);
 			var prevFrame = r.allocTarget("prevFrame", false, 1.0, output.format);
 			var curFrame = r.allocTarget("curFrame", false, 1.0, output.format);
 			var curFrame = r.allocTarget("curFrame", false, 1.0, output.format);
 			h3d.pass.Copy.run(output, curFrame);
 			h3d.pass.Copy.run(output, curFrame);
@@ -202,8 +204,9 @@ class TemporalFiltering extends hrt.prefab.rfx.RendererFX {
 
 
 			h3d.pass.Copy.run(output, prevFrame);
 			h3d.pass.Copy.run(output, prevFrame);
 			s.prevCamMat.load(curMatNoJitter);
 			s.prevCamMat.load(curMatNoJitter);
-			r.ctx.camera.m.load(curMatNoJitter);
-			@:privateAccess r.ctx.camera.needInv = true;
+
+			// Remove Jitter for effects post TAA
+			r.ctx.camera.update();
 		}
 		}
 	}
 	}