This commit is contained in:
luboslenco
2018-10-11 13:30:10 +02:00
parent bede391c8f
commit e7b4e39083
4 changed files with 154 additions and 132 deletions
+3 -3
View File
@@ -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());
+95 -95
View File
@@ -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) {
+39 -24
View File
@@ -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<Bool>;
@:optional var window_mode:Null<Int>; // window, borderless, fullscreen
@:optional var window_mode:Null<Int>; // window, fullscreen
@:optional var window_w:Null<Int>;
@:optional var window_h:Null<Int>;
@:optional var window_resizable:Null<Bool>;
@@ -2225,12 +2239,13 @@ typedef TAPConfig = {
@:optional var window_vsync:Null<Bool>;
@:optional var window_msaa:Null<Int>;
@:optional var window_scale:Null<Float>;
@:optional var rp_supersample:Null<Float>;
@:optional var rp_shadowmap:Null<Int>;
@:optional var rp_voxelgi:Null<Int>; // off, ao, ao_revox, gi, gi_revox
// @:optional var rp_supersample:Null<Float>;
@:optional var rp_shadowmap:Null<Int>; // size
@:optional var rp_ssgi:Null<Bool>;
@:optional var rp_ssr:Null<Bool>;
@:optional var rp_bloom:Null<Bool>;
@:optional var rp_motionblur:Null<Bool>;
@:optional var rp_gi:Null<Bool>;
// Ext
@:optional var plugins:Array<String>;
}