فهرست منبع

Fix ssao init

luboslenco 2 سال پیش
والد
کامیت
3a18f2457e

+ 4 - 0
armorlab/Sources/arm/render/RenderPathDeferred.hx

@@ -120,6 +120,10 @@ class RenderPathDeferred {
 			path.renderTargets.set(t.name, rt);
 		}
 
+		if (Config.raw.rp_ssao) {
+			RenderPathBase.initSSAO();
+		}
+
 		path.loadShader("shader_datas/world_pass/world_pass");
 		path.loadShader("shader_datas/deferred_light/deferred_light");
 		path.loadShader("shader_datas/compositor_pass/compositor_pass");

+ 1 - 1
armorpaint/Sources/arm/App.hx

@@ -610,7 +610,7 @@ class App {
 			}
 		}
 		else if (Context.raw.frame == 3) {
-			Context.raw.ddirty = Context.raw.renderMode == RenderForward ? 3 : 1;
+			Context.raw.ddirty = 3;
 		}
 		Context.raw.frame++;
 

+ 4 - 0
armorpaint/Sources/arm/render/RenderPathDeferred.hx

@@ -120,6 +120,10 @@ class RenderPathDeferred {
 			path.renderTargets.set(t.name, rt);
 		}
 
+		if (Config.raw.rp_ssao) {
+			RenderPathBase.initSSAO();
+		}
+
 		path.loadShader("shader_datas/world_pass/world_pass");
 		path.loadShader("shader_datas/deferred_light/deferred_light");
 		path.loadShader("shader_datas/compositor_pass/compositor_pass");

+ 25 - 21
base/Sources/arm/render/RenderPathBase.hx

@@ -303,31 +303,35 @@ class RenderPathBase {
 	}
 	#end
 
+	public static function initSSAO() {
+		{
+			var t = new RenderTargetRaw();
+			t.name = "singlea";
+			t.width = 0;
+			t.height = 0;
+			t.format = "R8";
+			t.scale = getSuperSampling();
+			path.createRenderTarget(t);
+		}
+		{
+			var t = new RenderTargetRaw();
+			t.name = "singleb";
+			t.width = 0;
+			t.height = 0;
+			t.format = "R8";
+			t.scale = getSuperSampling();
+			path.createRenderTarget(t);
+		}
+		path.loadShader("shader_datas/ssao_pass/ssao_pass");
+		path.loadShader("shader_datas/ssao_blur_pass/ssao_blur_pass_x");
+		path.loadShader("shader_datas/ssao_blur_pass/ssao_blur_pass_y");
+	}
+
 	public static function drawSSAO() {
 		var ssao = Config.raw.rp_ssao != false && Context.raw.cameraType == CameraPerspective;
 		if (ssao && Context.raw.ddirty > 0 && taaFrame > 0) {
 			if (path.renderTargets.get("singlea") == null) {
-				{
-					var t = new RenderTargetRaw();
-					t.name = "singlea";
-					t.width = 0;
-					t.height = 0;
-					t.format = "R8";
-					t.scale = getSuperSampling();
-					path.createRenderTarget(t);
-				}
-				{
-					var t = new RenderTargetRaw();
-					t.name = "singleb";
-					t.width = 0;
-					t.height = 0;
-					t.format = "R8";
-					t.scale = getSuperSampling();
-					path.createRenderTarget(t);
-				}
-				path.loadShader("shader_datas/ssao_pass/ssao_pass");
-				path.loadShader("shader_datas/ssao_blur_pass/ssao_blur_pass_x");
-				path.loadShader("shader_datas/ssao_blur_pass/ssao_blur_pass_y");
+				initSSAO();
 			}
 
 			path.setTarget("singlea");