Browse Source

Improve display of non-lit viewport modes

luboslenco 2 năm trước cách đây
mục cha
commit
0d0c1cddc3

+ 4 - 1
armorpaint/Sources/arm/Context.hx

@@ -38,7 +38,7 @@ class Context {
 		if (mode == raw.viewportMode) return;
 		if (mode == raw.viewportMode) return;
 
 
 		raw.viewportMode = mode;
 		raw.viewportMode = mode;
-		var deferred = raw.renderMode != RenderForward && (raw.viewportMode == ViewLit || raw.viewportMode == ViewPathTrace);
+		var deferred = raw.renderMode != RenderForward && (raw.viewportMode == ViewLit || raw.viewportMode == ViewPathTrace) && raw.tool != ToolColorId;
 		if (deferred) {
 		if (deferred) {
 			RenderPath.active.commands = RenderPathDeferred.commands;
 			RenderPath.active.commands = RenderPathDeferred.commands;
 		}
 		}
@@ -141,6 +141,9 @@ class Context {
 		UIToolbar.inst.toolbarHandle.redraws = 2;
 		UIToolbar.inst.toolbarHandle.redraws = 2;
 		raw.ddirty = 3;
 		raw.ddirty = 3;
 		initTool();
 		initTool();
+		var _viewportMode = raw.viewportMode;
+		raw.viewportMode = -1;
+		setViewportMode(_viewportMode);
 	}
 	}
 
 
 	public static function initTool() {
 	public static function initTool() {

+ 1 - 6
armorpaint/Sources/arm/render/RenderPathForward.hx

@@ -23,12 +23,7 @@ class RenderPathForward {
 
 
 		path.setTarget("buf");
 		path.setTarget("buf");
 		path.bindTarget("gbuffer1", "tex");
 		path.bindTarget("gbuffer1", "tex");
-		if (Context.raw.viewportMode == ViewLit) {
-			path.drawShader("shader_datas/compositor_pass/compositor_pass");
-		}
-		else {
-			path.drawShader("shader_datas/copy_pass/copy_pass");
-		}
+		path.drawShader("shader_datas/compositor_pass/compositor_pass");
 
 
 		path.setTarget("buf");
 		path.setTarget("buf");
 		RenderPathBase.drawCompass(path.currentG);
 		RenderPathBase.drawCompass(path.currentG);

+ 4 - 1
armorpaint/Sources/arm/shader/MakeMesh.hx

@@ -338,7 +338,6 @@ class MakeMesh {
 			frag.write('n = normalize(mul(n, TBN));');
 			frag.write('n = normalize(mul(n, TBN));');
 
 
 			if (Context.raw.viewportMode == ViewLit || Context.raw.viewportMode == ViewPathTrace) {
 			if (Context.raw.viewportMode == ViewLit || Context.raw.viewportMode == ViewPathTrace) {
-
 				frag.write('basecol = pow(basecol, vec3(2.2, 2.2, 2.2));');
 				frag.write('basecol = pow(basecol, vec3(2.2, 2.2, 2.2));');
 
 
 				if (Context.raw.viewportShader != null) {
 				if (Context.raw.viewportShader != null) {
@@ -467,6 +466,10 @@ class MakeMesh {
 				frag.write('fragColor[1] = vec4(1.0, 0.0, 1.0, 1.0);'); // Pink
 				frag.write('fragColor[1] = vec4(1.0, 0.0, 1.0, 1.0);'); // Pink
 			}
 			}
 
 
+			if (Context.raw.viewportMode != ViewLit && Context.raw.viewportMode != ViewPathTrace) {
+				frag.write('fragColor[1].rgb = pow(fragColor[1].rgb, vec3(2.2, 2.2, 2.2));');
+			}
+
 			frag.write('n /= (abs(n.x) + abs(n.y) + abs(n.z));');
 			frag.write('n /= (abs(n.x) + abs(n.y) + abs(n.z));');
 			frag.write('n.xy = n.z >= 0.0 ? n.xy : octahedronWrap(n.xy);');
 			frag.write('n.xy = n.z >= 0.0 ? n.xy : octahedronWrap(n.xy);');
 			frag.write('fragColor[0] = vec4(n.xy, roughness, packFloatInt16(metallic, uint(int(matid * 255.0) % 3)));');
 			frag.write('fragColor[0] = vec4(n.xy, roughness, packFloatInt16(metallic, uint(int(matid * 255.0) % 3)));');