2
0
Эх сурвалжийг харах

Add applyTonemapping() for pbr renderer

ShiroSmith 5 жил өмнө
parent
commit
2d540d3c4e
1 өөрчлөгдсөн 29 нэмэгдсэн , 23 устгасан
  1. 29 23
      h3d/scene/pbr/Renderer.hx

+ 29 - 23
h3d/scene/pbr/Renderer.hx

@@ -205,6 +205,33 @@ class Renderer extends h3d.scene.Renderer {
 		draw("afterTonemapping");
 	}
 
+	function applyTonemapping() {
+		mark("ToneMapping");
+		// Bloom Params
+		var bloom = ctx.getGlobal("bloom");
+		tonemap.shader.bloom = bloom;
+		tonemap.shader.hasBloom = bloom != null;
+		// Distortion Params
+		var distortion = ctx.getGlobal("distortion");
+		tonemap.shader.distortion = distortion;
+		tonemap.shader.hasDistortion = distortion != null;
+		// Color Grading Params
+		tonemap.shader.pixelSize = new Vector(1.0/ctx.engine.width, 1.0/ctx.engine.height);
+		tonemap.shader.hasColorGrading = enableColorGrading && colorGradingLUT != null;
+		if( colorGradingLUT != null ) {
+			tonemap.shader.colorGradingLUT = colorGradingLUT;
+			tonemap.shader.lutSize = colorGradingLUTSize;
+		}
+		tonemap.shader.mode =	switch( toneMode ) {
+									case Linear: 0;
+									case Reinhard: 1;
+									default: 0;
+								};
+		var hdr = ctx.getGlobal("hdr");
+		tonemap.shader.hdrTexture = hdr;
+		tonemap.render();
+	}
+
 	function postDraw() {
 		mark("PostDraw");
 		draw("overlay");
@@ -398,6 +425,7 @@ class Renderer extends h3d.scene.Renderer {
 
 		mark("Distortion");
 		var distortion = allocTarget("distortion", true, 1.0, RG16F);
+		ctx.setGlobal("distortion", distortion);
 		setTarget(distortion);
 		clear(0);
 		draw("distortion");
@@ -406,29 +434,7 @@ class Renderer extends h3d.scene.Renderer {
 		setTarget(ldr);
 		ctx.setGlobal("ldr", ldr);
 
-
-		mark("ToneMapping");
-		// Bloom Params
-		var bloom = ctx.getGlobal("bloom");
-		tonemap.shader.bloom = bloom;
-		tonemap.shader.hasBloom = bloom != null;
-		// Distortion Params
-		tonemap.shader.distortion = distortion;
-		tonemap.shader.hasDistortion = distortion != null;
-		// Color Grading Params
-		tonemap.shader.pixelSize = new Vector(1.0/ctx.engine.width, 1.0/ctx.engine.height);
-		tonemap.shader.hasColorGrading = enableColorGrading && colorGradingLUT != null;
-		if( colorGradingLUT != null ) {
-			tonemap.shader.colorGradingLUT = colorGradingLUT;
-			tonemap.shader.lutSize = colorGradingLUTSize;
-		}
-		tonemap.shader.mode =	switch( toneMode ) {
-									case Linear: 0;
-									case Reinhard: 1;
-									default: 0;
-								};
-		tonemap.shader.hdrTexture = hdr;
-		tonemap.render();
+		applyTonemapping();
 
 		drawAfterTonemapping();
 		apply(AfterTonemapping);