From 9ec24855584ce09397b298716bf27d48c444b7fc Mon Sep 17 00:00:00 2001 From: luboslenco Date: Wed, 8 Jun 2022 14:22:39 +0200 Subject: [PATCH] Add emission and subsurface viewport mode --- Sources/arm/Enums.hx | 14 ++++++++------ Sources/arm/node/MakeMesh.hx | 8 ++++++++ Sources/arm/ui/UIMenu.hx | 4 +++- Sources/arm/ui/UISidebar.hx | 6 ++++-- 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/Sources/arm/Enums.hx b/Sources/arm/Enums.hx index 394253c7..5b1aca16 100644 --- a/Sources/arm/Enums.hx +++ b/Sources/arm/Enums.hx @@ -77,12 +77,14 @@ package arm; var ViewMetallic = 5; var ViewOpacity = 6; var ViewHeight = 7; - var ViewTexCoord = 8; - var ViewObjectNormal = 9; - var ViewMaterialID = 10; - var ViewObjectID = 11; - var ViewMask = 12; - var ViewPathTrace = 13; + var ViewEmission = 8; + var ViewSubsurface = 9; + var ViewTexCoord = 10; + var ViewObjectNormal = 11; + var ViewMaterialID = 12; + var ViewObjectID = 13; + var ViewMask = 14; + var ViewPathTrace = 15; } @:enum abstract RenderMode(Int) from Int to Int { diff --git a/Sources/arm/node/MakeMesh.hx b/Sources/arm/node/MakeMesh.hx index 59a2a9d2..84f143d4 100644 --- a/Sources/arm/node/MakeMesh.hx +++ b/Sources/arm/node/MakeMesh.hx @@ -420,6 +420,14 @@ class MakeMesh { else if (Context.viewportMode == ViewHeight && Context.layer.paintHeight) { frag.write('fragColor[1] = vec4(vec3(height, height, height), 1.0);'); } + else if (Context.viewportMode == ViewEmission) { + frag.write('float emis = int(matid * 255.0) % 3 == 1 ? 1.0 : 0.0;'); + frag.write('fragColor[1] = vec4(vec3(emis, emis, emis), 1.0);'); + } + else if (Context.viewportMode == ViewSubsurface) { + frag.write('float subs = int(matid * 255.0) % 3 == 2 ? 1.0 : 0.0;'); + frag.write('fragColor[1] = vec4(vec3(subs, subs, subs), 1.0);'); + } else if (Context.viewportMode == ViewTexCoord) { frag.write('fragColor[1] = vec4(texCoord, 0.0, 1.0);'); } diff --git a/Sources/arm/ui/UIMenu.hx b/Sources/arm/ui/UIMenu.hx index 0b6bbde4..8b950365 100644 --- a/Sources/arm/ui/UIMenu.hx +++ b/Sources/arm/ui/UIMenu.hx @@ -256,13 +256,15 @@ class UIMenu { tr("Metallic"), tr("Opacity"), tr("Height"), + tr("Emission"), + tr("Subsurface"), tr("TexCoord"), tr("Object Normal"), tr("Material ID"), tr("Object ID"), tr("Mask") ]; - var shortcuts = ["l", "b", "n", "o", "r", "m", "a", "h", "t", "1", "2", "3", "4"]; + var shortcuts = ["l", "b", "n", "o", "r", "m", "a", "h", "e", "s", "t", "1", "2", "3", "4"]; #if (kha_direct3d12 || kha_vulkan) modes.push(tr("Path Traced")); shortcuts.push("p"); diff --git a/Sources/arm/ui/UISidebar.hx b/Sources/arm/ui/UISidebar.hx index fe659676..c528cf98 100644 --- a/Sources/arm/ui/UISidebar.hx +++ b/Sources/arm/ui/UISidebar.hx @@ -381,13 +381,15 @@ class UISidebar { tr("Metallic"), tr("Opacity"), tr("Height"), + tr("Emission"), + tr("Subsurface"), tr("TexCoord"), tr("Object Normal"), tr("Material ID"), tr("Object ID"), tr("Mask") ]; - var shortcuts = ["l", "b", "n", "o", "r", "m", "a", "h", "t", "1", "2", "3", "4"]; + var shortcuts = ["l", "b", "n", "o", "r", "m", "a", "h", "e", "s", "t", "1", "2", "3", "4"]; #if (kha_direct3d12 || kha_vulkan) modes.push(tr("Path Traced")); shortcuts.push("p"); @@ -406,7 +408,7 @@ class UISidebar { Context.setViewportMode(modeHandle.position); ui.changed = true; } - }, 14 #if (kha_direct3d12 || kha_vulkan) + 1 #end ); + }, 16 #if (kha_direct3d12 || kha_vulkan) + 1 #end ); } } }