فهرست منبع

Support 4K param on SSR.

clementlandrin 1 سال پیش
والد
کامیت
16a39b0e02
1فایلهای تغییر یافته به همراه7 افزوده شده و 1 حذف شده
  1. 7 1
      hrt/prefab/rfx/SSR.hx

+ 7 - 1
hrt/prefab/rfx/SSR.hx

@@ -114,6 +114,7 @@ class SSR extends RendererFX {
 	@:s public var maxRoughness : Float = 0.75;
 	@:s public var minAngle : Float = 5.0;
 	@:s public var rayMarchingResolution : Float = 0.5;
+	@:s public var support4K : Bool = false;
 
 	function new(?parent) {
 		super(parent);
@@ -140,6 +141,10 @@ class SSR extends RendererFX {
 			ssrShader.maxRoughness = maxRoughness;
 			ssrShader.minCosAngle = Math.cos(hxd.Math.degToRad(minAngle));
 			ssrShader.rayMarchingResolution = rayMarchingResolution;
+			var resRescale = 1.0;
+			if ( !support4K )
+				resRescale = hxd.Math.max(1.0, hxd.Math.max(ssrShader.texSize.x / 2560, ssrShader.texSize.y / 1440));
+			ssrShader.rayMarchingResolution /= resRescale;
 
 			ssrShader.cameraView = r.ctx.camera.mcam;
 			ssrShader.cameraProj = r.ctx.camera.mproj;
@@ -148,7 +153,7 @@ class SSR extends RendererFX {
 
 			ssrPass.setGlobals(r.ctx);
 
-			ssr = r.allocTarget("ssr", false, textureSize, hdrMap.format);
+			ssr = r.allocTarget("ssr", false, textureSize / resRescale, hdrMap.format);
 			ssr.clear(0, 0);
 			r.ctx.engine.pushTarget(ssr);
 			ssrPass.render();
@@ -174,6 +179,7 @@ class SSR extends RendererFX {
 				<dt>Ray marching resolution</dt><dd><input type="range" min="0" max="1" field="rayMarchingResolution"/></dd>
 				<dt>Blur radius</dt><dd><input type="range" min="0" max="5" field="blurRadius"/></dd>
 				<dt>Texture size</dt><dd><input type="range" min="0" max="1" field="textureSize"/></dd>
+				<dt>Support 4K</dt><dd><input type="checkbox" field="support4K"/></dd>
 			</dl>
 		</div>
 		'),this);