From e7b4e3908308a3b538a33323683a1022ca48de3f Mon Sep 17 00:00:00 2001 From: luboslenco Date: Thu, 11 Oct 2018 13:30:10 +0200 Subject: [PATCH] Config --- Bundled/config.arm | 27 +++--- Sources/arm/App.hx | 6 +- Sources/arm/UINodes.hx | 190 ++++++++++++++++++++--------------------- Sources/arm/UITrait.hx | 63 ++++++++------ 4 files changed, 154 insertions(+), 132 deletions(-) diff --git a/Bundled/config.arm b/Bundled/config.arm index e036ae40..2915d744 100644 --- a/Bundled/config.arm +++ b/Bundled/config.arm @@ -1,11 +1,18 @@ -{ - "window_h": 900, - "window_maximizable": true, - "window_minimizable": true, - "window_mode": 0, - "window_msaa": 1, - "window_resizable": true, - "window_scale": 1.0, - "window_vsync": true, - "window_w": 1600 +{ + "rp_bloom": true, + "rp_gi": false, + "rp_motionblur": false, + "rp_shadowmap": 2048, + "rp_ssgi": true, + "rp_ssr": false, + "rp_supersample": 1.0, + "window_h": 900, + "window_maximizable": true, + "window_minimizable": true, + "window_mode": 0, + "window_msaa": 1, + "window_resizable": true, + "window_scale": 1.0, + "window_vsync": true, + "window_w": 1600 } \ No newline at end of file diff --git a/Sources/arm/App.hx b/Sources/arm/App.hx index 165c5381..41b0cc34 100644 --- a/Sources/arm/App.hx +++ b/Sources/arm/App.hx @@ -68,9 +68,9 @@ class App { uimodal = new Zui({ font: f, scaleFactor: armory.data.Config.raw.window_scale }); iron.App.notifyOnInit(function() { - // #if arm_debug - // iron.Scene.active.sceneParent.getTrait(armory.trait.internal.DebugConsole).visible = false; - // #end + #if arm_debug + iron.Scene.active.sceneParent.getTrait(armory.trait.internal.DebugConsole).visible = false; + #end iron.App.notifyOnUpdate(update); iron.Scene.active.root.addTrait(new UITrait()); iron.Scene.active.root.addTrait(new UINodes()); diff --git a/Sources/arm/UINodes.hx b/Sources/arm/UINodes.hx index f48bdb3e..e2124723 100644 --- a/Sources/arm/UINodes.hx +++ b/Sources/arm/UINodes.hx @@ -954,6 +954,8 @@ class UINodes extends iron.Trait { } public function parseMeshPreviewMaterial() { + if (!getMOut()) return; + #if arm_editor var m = UITrait.inst.htab.position == 0 ? UITrait.inst.selectedMaterial2.data : UITrait.inst.materials[0].data; #else @@ -1003,6 +1005,7 @@ class UINodes extends iron.Trait { public var materialParsed = false; public function parsePaintMaterial() { + if (!getMOut()) return; #if arm_editor if (UITrait.inst.htab.position == 0) { @@ -1013,112 +1016,109 @@ class UINodes extends iron.Trait { UITrait.inst.dirty = 2; - if (getMOut()) { + #if arm_editor + var m = UITrait.inst.materials[0].data; + sc = null; + _materialcontext = null; + #else + iron.data.Data.getMaterial("Scene", "Material", function(m:iron.data.MaterialData) { + #end + + var mat:TMaterial = { + name: "Material", + canvas: canvas + }; + var _sd = new ShaderData(mat); - #if arm_editor - var m = UITrait.inst.materials[0].data; - sc = null; - _materialcontext = null; - #else - iron.data.Data.getMaterial("Scene", "Material", function(m:iron.data.MaterialData) { - #end - - var mat:TMaterial = { - name: "Material", - canvas: canvas - }; - var _sd = new ShaderData(mat); - - if (sc == null) { - for (c in m.shader.contexts) { - if (c.raw.name == "paint") { - sc = c; - break; - } + if (sc == null) { + for (c in m.shader.contexts) { + if (c.raw.name == "paint") { + sc = c; + break; } } - if (_materialcontext == null) { - for (c in m.contexts) { - if (c.raw.name == "paint") { - _materialcontext = c; - _matcon = c.raw; - break; - } + } + if (_materialcontext == null) { + for (c in m.contexts) { + if (c.raw.name == "paint") { + _materialcontext = c; + _matcon = c.raw; + break; } } + } - if (sc != null) { - m.shader.raw.contexts.remove(sc.raw); - m.shader.contexts.remove(sc); + if (sc != null) { + m.shader.raw.contexts.remove(sc.raw); + m.shader.contexts.remove(sc); + } + if (_materialcontext != null) { + m.raw.contexts.remove(_matcon); + m.contexts.remove(_materialcontext); + } + + _matcon = { + name: "paint", + bind_textures: [] + } + + var con = make_paint(_sd, _matcon); + var cdata = con.data; + + // if (sc == null) { + // from_source is synchronous.. + sc = new iron.data.ShaderData.ShaderContext(cdata, function(sc:iron.data.ShaderData.ShaderContext){}); + m.shader.raw.contexts.push(sc.raw); + m.shader.contexts.push(sc); + m.raw.contexts.push(_matcon); + + new MaterialContext(_matcon, function(self:MaterialContext) { + _materialcontext = self; + m.contexts.push(self); + }); + + + + var dcon = make_depth(_sd, _matcon); + var dcdata = dcon.data; + // from_source is synchronous.. + var dsc = new iron.data.ShaderData.ShaderContext(dcdata, function(sc:iron.data.ShaderData.ShaderContext){}); + m.shader.contexts.push(dsc); + var dmatcon:TMaterialContext = { + name: "depth" } - if (_materialcontext != null) { - m.raw.contexts.remove(_matcon); - m.contexts.remove(_materialcontext); - } - - _matcon = { - name: "paint", - bind_textures: [] - } - - var con = make_paint(_sd, _matcon); - var cdata = con.data; - - // if (sc == null) { - // from_source is synchronous.. - sc = new iron.data.ShaderData.ShaderContext(cdata, function(sc:iron.data.ShaderData.ShaderContext){}); - m.shader.raw.contexts.push(sc.raw); - m.shader.contexts.push(sc); - m.raw.contexts.push(_matcon); - - new MaterialContext(_matcon, function(self:MaterialContext) { - _materialcontext = self; - m.contexts.push(self); - }); + m.raw.contexts.push(dmatcon); + new MaterialContext(dmatcon, function(self:MaterialContext) { + m.contexts.push(self); + }); - var dcon = make_depth(_sd, _matcon); - var dcdata = dcon.data; - // from_source is synchronous.. - var dsc = new iron.data.ShaderData.ShaderContext(dcdata, function(sc:iron.data.ShaderData.ShaderContext){}); - m.shader.contexts.push(dsc); - var dmatcon:TMaterialContext = { - name: "depth" - } - m.raw.contexts.push(dmatcon); - new MaterialContext(dmatcon, function(self:MaterialContext) { - m.contexts.push(self); - }); - - - - var smcon = make_depth(_sd, _matcon, true); - var smcdata = smcon.data; - // from_source is synchronous.. - var smsc = new iron.data.ShaderData.ShaderContext(smcdata, function(sc:iron.data.ShaderData.ShaderContext){}); - for (c in m.shader.contexts) if (c.raw.name == 'shadowmap') { m.shader.contexts.remove(c); break; } - m.shader.contexts.push(smsc); - // var smmatcon:TMaterialContext = { - // name: "shadowmap" - // } - // m.raw.contexts.push(smmatcon); - // for (c in m.contexts) if (c.raw.name == 'shadowmap') { m.contexts.remove(c); break; } - // new MaterialContext(smmatcon, function(self:MaterialContext) { - // m.contexts.push(self); - // }); - - materialParsed = true; + var smcon = make_depth(_sd, _matcon, true); + var smcdata = smcon.data; + // from_source is synchronous.. + var smsc = new iron.data.ShaderData.ShaderContext(smcdata, function(sc:iron.data.ShaderData.ShaderContext){}); + for (c in m.shader.contexts) if (c.raw.name == 'shadowmap') { m.shader.contexts.remove(c); break; } + m.shader.contexts.push(smsc); + // var smmatcon:TMaterialContext = { + // name: "shadowmap" // } - // else { - // sc.raw.vertex_shader = cdata.vertex_shader; - // sc.raw.fragment_shader = cdata.fragment_shader; - // sc.compile(); - // } - #if (!arm_editor) - }); - #end - } + // m.raw.contexts.push(smmatcon); + // for (c in m.contexts) if (c.raw.name == 'shadowmap') { m.contexts.remove(c); break; } + // new MaterialContext(smmatcon, function(self:MaterialContext) { + // m.contexts.push(self); + // }); + + materialParsed = true; + // } + // else { + // sc.raw.vertex_shader = cdata.vertex_shader; + // sc.raw.fragment_shader = cdata.fragment_shader; + // sc.compile(); + // } + #if (!arm_editor) + }); + #end } public function acceptDrag(assetIndex:Int) { diff --git a/Sources/arm/UITrait.hx b/Sources/arm/UITrait.hx index c4702f86..222da166 100644 --- a/Sources/arm/UITrait.hx +++ b/Sources/arm/UITrait.hx @@ -388,9 +388,6 @@ class UITrait extends iron.Trait { inst = this; - haxeTrace = haxe.Log.trace; - haxe.Log.trace = consoleTrace; - windowW = Std.int(defaultWindowW * armory.data.Config.raw.window_scale); iron.object.Uniforms.externalFloatLinks = [linkFloat]; @@ -462,13 +459,6 @@ class UITrait extends iron.Trait { loadBundled(['cursor.png', 'mat_slot.jpg', 'brush_draw.png', 'brush_erase.png', 'brush_fill.png', 'brush_bake.png', 'brush_colorid.png', 'env_thumb.jpg'], done); } - var haxeTrace:Dynamic->haxe.PosInfos->Void; - var lastTrace = ''; - function consoleTrace(v:Dynamic, ?inf:haxe.PosInfos) { - lastTrace = Std.string(v); - haxeTrace(v, inf); - } - function showMessage(s:String) { messageTimer = 3.0; message = s; @@ -2040,23 +2030,38 @@ class UITrait extends iron.Trait { worldColor = Ext.colorWheel(ui, hwheel); } undoEnabled = ui.check(Id.handle({selected: true}), "Undo"); - armory.data.Config.raw.window_vsync = ui.check(Id.handle({selected: armory.data.Config.raw.window_vsync}), "VSync"); + + #if arm_debug + iron.Scene.active.sceneParent.getTrait(armory.trait.internal.DebugConsole).visible = ui.check(Id.handle({selected: false}), "Debug Console"); + #end + + var hssgi = Id.handle({selected: armory.data.Config.raw.rp_ssgi}); + var hssr = Id.handle({selected: armory.data.Config.raw.rp_ssr}); + var hbloom = Id.handle({selected: armory.data.Config.raw.rp_bloom}); + var hshadowmap = Id.handle({position: getShadowQuality(armory.data.Config.raw.rp_shadowmap)}); + if (ui.panel(Id.handle({selected: false}), "Viewport")) { + armory.data.Config.raw.window_vsync = ui.check(Id.handle({selected: armory.data.Config.raw.window_vsync}), "VSync"); + ui.check(hssgi, "SSAO"); + ui.check(hssr, "SSR"); + ui.check(hbloom, "Bloom"); + ui.combo(hshadowmap, ["High", "Medium", "Low"], "Shadows", true); + } + if (ui.button("Save")) { - #if kha_krom - Krom.fileSaveBytes("data/config.arm", haxe.io.Bytes.ofString(haxe.Json.stringify(armory.data.Config.raw)).getData()); - #end + armory.data.Config.raw.rp_ssgi = hssgi.selected; + armory.data.Config.raw.rp_ssr = hssr.selected; + armory.data.Config.raw.rp_bloom = hbloom.selected; + armory.data.Config.raw.rp_shadowmap = getShadowMapSize(hshadowmap.position); + armory.data.Config.save(); + armory.renderpath.RenderPathCreator.applyConfig(); } if (ui.panel(Id.handle({selected: false}), "About")) { ui.text("v0.5"); - ui.text(Macro.buildSha()); - ui.text(Macro.buildDate()); + // ui.text(Macro.buildSha()); + // ui.text(Macro.buildDate()); ui.text("armorpaint.org"); } - - if (ui.panel(Id.handle({selected: true}), "Console")) { - ui.text(lastTrace); - } } } ui.end(); @@ -2071,6 +2076,15 @@ class UITrait extends iron.Trait { } } + inline function getShadowQuality(i:Int):Int { + // 0 - High, 1 - Medium, 2 - Low + return i == 4096 ? 0 : i == 2048 ? 1 : 2; + } + + inline function getShadowMapSize(i:Int):Int { + return i == 0 ? 4096 : i == 1 ? 2048 : 1024; + } + public function getImage(asset:TAsset):kha.Image { return Canvas.assetMap.get(asset.id); } @@ -2216,7 +2230,7 @@ class UITrait extends iron.Trait { typedef TAPConfig = { @:optional var debug_console:Null; - @:optional var window_mode:Null; // window, borderless, fullscreen + @:optional var window_mode:Null; // window, fullscreen @:optional var window_w:Null; @:optional var window_h:Null; @:optional var window_resizable:Null; @@ -2225,12 +2239,13 @@ typedef TAPConfig = { @:optional var window_vsync:Null; @:optional var window_msaa:Null; @:optional var window_scale:Null; - @:optional var rp_supersample:Null; - @:optional var rp_shadowmap:Null; - @:optional var rp_voxelgi:Null; // off, ao, ao_revox, gi, gi_revox + // @:optional var rp_supersample:Null; + @:optional var rp_shadowmap:Null; // size @:optional var rp_ssgi:Null; @:optional var rp_ssr:Null; @:optional var rp_bloom:Null; @:optional var rp_motionblur:Null; + @:optional var rp_gi:Null; + // Ext @:optional var plugins:Array; }