diff --git a/armorlab/Sources/Main.hx b/armorlab/Sources/Main.hx index 0bed3386..b8099267 100644 --- a/armorlab/Sources/Main.hx +++ b/armorlab/Sources/Main.hx @@ -1,142 +1,18 @@ package; -import kha.Window; -import kha.System; -import iron.object.Object; -import iron.Scene; -import iron.RenderPath; -import arm.render.RenderPathBase; -import arm.render.RenderPathForward; -import arm.render.RenderPathDeferred; -import arm.render.Uniforms; -import arm.sys.BuildMacros; -import arm.Config; -import arm.Context; -import arm.Res; - class Main { public static inline var title = "ArmorLab"; public static var version = "0.1"; - public static var sha = BuildMacros.sha().substr(1, 7); - public static var date = BuildMacros.date().split(" ")[0]; - static var tasks: Int; public static function main() { #if arm_snapshot - - var global = js.Syntax.code("globalThis"); - global.kickstart = kickstart; - - Res.embedRaw("Scene", "Scene.arm", untyped global['data/Scene.arm']); - untyped global['data/Scene.arm'] = null; - - Res.embedRaw("shader_datas", "shader_datas.arm", untyped global['data/shader_datas.arm']); - untyped global['data/shader_datas.arm'] = null; - - Res.embedFont("font.ttf", untyped global['data/font.ttf']); - untyped global['data/font.ttf'] = null; - - Res.embedFont("font_mono.ttf", untyped global['data/font_mono.ttf']); - untyped global['data/font_mono.ttf'] = null; - - var files = [ - "font13.bin", - "ltc_mag.arm", - "ltc_mat.arm", - "default_brush.arm", - "World_irradiance.arm", - "World_radiance.k", - "World_radiance_0.k", - "World_radiance_1.k", - "World_radiance_2.k", - "World_radiance_3.k", - "World_radiance_4.k", - "World_radiance_5.k", - "World_radiance_6.k", - "World_radiance_7.k", - "World_radiance_8.k", - "brdf.k", - "color_wheel.k", - "color_wheel_gradient.k", - "cursor.k", - "icons.k", - "icons2x.k", - "placeholder.k", - "noise256.k", - "smaa_search.k", - "smaa_area.k" - ]; - - for (file in files) { - Res.embedBlob(file, untyped global['data/' + file]); - untyped global['data/' + file] = null; - } - + MainBase.embed(["placeholder.k"]); #if (kha_direct3d12 || kha_vulkan) - - var ext = #if kha_direct3d12 ".cso" #else ".spirv" #end ; - - var files_renderlib = [ - "bnoise_rank.k", - "bnoise_scramble.k", - "bnoise_sobol.k", - "raytrace_brute_core" + ext, - "raytrace_brute_full" + ext - ]; - - for (file in files_renderlib) { - Res.embedBlob(file, untyped global['data/' + file]); - untyped global['data/' + file] = null; - } - + MainBase.embedRaytrace(); #end - - #end // arm_snapshot - - #if (!arm_snapshot) - iron.data.ShaderData.shaderPath = ""; // Use arm_data_dir - kickstart(); + #else + MainBase.kickstart(); #end } - - @:keep - public static function kickstart() { - // Used to locate external application data folder - Krom.setApplicationName(Main.title); - - tasks = 1; - tasks++; Config.load(function() { tasks--; start(); }); - tasks--; start(); - } - - static function start() { - if (tasks > 0) return; - - Config.init(); - System.start(Config.getOptions(), function(window: Window) { - if (Config.raw.layout == null) arm.App.initLayout(); - Krom.setApplicationName(Main.title); - iron.App.init(function() { - Scene.setActive("Scene", function(o: Object) { - Uniforms.init(); - var path = new RenderPath(); - RenderPathBase.init(path); - - if (Context.renderMode == RenderForward) { - RenderPathDeferred.init(path); // Allocate gbuffer - RenderPathForward.init(path); - path.commands = RenderPathForward.commands; - } - else { - RenderPathDeferred.init(path); - path.commands = RenderPathDeferred.commands; - } - - RenderPath.setActive(path); - new arm.App(); - }); - }); - }); - } } diff --git a/armorlab/Sources/arm/ui/UIMenu.hx b/armorlab/Sources/arm/ui/UIMenu.hx index 6c20a0a0..0d4cda93 100644 --- a/armorlab/Sources/arm/ui/UIMenu.hx +++ b/armorlab/Sources/arm/ui/UIMenu.hx @@ -344,11 +344,11 @@ class UIMenu { File.loadUrl("https://github.com/armory3d/armortools/issues"); } if (menuButton(ui, tr("Report Bug"))) { - var url = "https://github.com/armory3d/armortools/issues/new?labels=bug&template=bug_report.md&body=*ArmorLab%20" + Main.version + "-" + Main.sha + ",%20" + System.systemId + "*%0A%0A**Issue description:**%0A%0A**Steps to reproduce:**%0A%0A"; + var url = "https://github.com/armory3d/armortools/issues/new?labels=bug&template=bug_report.md&body=*ArmorLab%20" + Main.version + "-" + MainBase.sha + ",%20" + System.systemId + "*%0A%0A**Issue description:**%0A%0A**Steps to reproduce:**%0A%0A"; File.loadUrl(url); } if (menuButton(ui, tr("Request Feature"))) { - var url = "https://github.com/armory3d/armortools/issues/new?labels=feature%20request&template=feature_request.md&body=*ArmorLab%20" + Main.version + "-" + Main.sha + ",%20" + System.systemId + "*%0A%0A**Feature description:**%0A%0A"; + var url = "https://github.com/armory3d/armortools/issues/new?labels=feature%20request&template=feature_request.md&body=*ArmorLab%20" + Main.version + "-" + MainBase.sha + ",%20" + System.systemId + "*%0A%0A**Feature description:**%0A%0A"; File.loadUrl(url); } menuSeparator(ui); @@ -396,7 +396,7 @@ class UIMenu { #else var gapi = "OpenGL"; #end - var msg = "ArmorLab.org - v" + Main.version + " (" + Main.date + ") - " + Main.sha + "\n"; + var msg = "ArmorLab.org - v" + Main.version + " (" + MainBase.date + ") - " + MainBase.sha + "\n"; msg += System.systemId + " - " + gapi; #if krom_windows diff --git a/armorpaint/Sources/Main.hx b/armorpaint/Sources/Main.hx index 4285aa2e..e4e60db3 100644 --- a/armorpaint/Sources/Main.hx +++ b/armorpaint/Sources/Main.hx @@ -1,146 +1,19 @@ package; -import kha.Window; -import kha.System; -import iron.object.Object; -import iron.Scene; -import iron.RenderPath; -import arm.render.RenderPathBase; -import arm.render.RenderPathForward; -import arm.render.RenderPathDeferred; -import arm.render.Uniforms; -import arm.sys.BuildMacros; -import arm.Config; -import arm.Context; -import arm.Res; - class Main { public static inline var title = "ArmorPaint"; public static var version = "0.9"; - public static var sha = BuildMacros.sha().substr(1, 7); - public static var date = BuildMacros.date().split(" ")[0]; - static var tasks: Int; public static function main() { #if arm_snapshot - - var global = js.Syntax.code("globalThis"); - global.kickstart = kickstart; - - Res.embedRaw("Scene", "Scene.arm", untyped global['data/Scene.arm']); - untyped global['data/Scene.arm'] = null; - - Res.embedRaw("shader_datas", "shader_datas.arm", untyped global['data/shader_datas.arm']); - untyped global['data/shader_datas.arm'] = null; - - Res.embedFont("font.ttf", untyped global['data/font.ttf']); - untyped global['data/font.ttf'] = null; - - Res.embedFont("font_mono.ttf", untyped global['data/font_mono.ttf']); - untyped global['data/font_mono.ttf'] = null; - - var files = [ - "font13.bin", - "ltc_mag.arm", - "ltc_mat.arm", - "default_brush.arm", - "default_material.arm", - "World_irradiance.arm", - "World_radiance.k", - "World_radiance_0.k", - "World_radiance_1.k", - "World_radiance_2.k", - "World_radiance_3.k", - "World_radiance_4.k", - "World_radiance_5.k", - "World_radiance_6.k", - "World_radiance_7.k", - "World_radiance_8.k", - "brdf.k", - "color_wheel.k", - "color_wheel_gradient.k", - "cursor.k", - "icons.k", - "icons2x.k", - "noise256.k", - "smaa_search.k", - "smaa_area.k" - ]; - - for (file in files) { - Res.embedBlob(file, untyped global['data/' + file]); - untyped global['data/' + file] = null; - } - + MainBase.embed(["default_material.arm"]); #if (kha_direct3d12 || kha_vulkan) - - var ext = #if kha_direct3d12 ".cso" #else ".spirv" #end ; - - var files_renderlib = [ - "bnoise_rank.k", - "bnoise_scramble.k", - "bnoise_sobol.k", - "raytrace_bake_ao" + ext, - "raytrace_bake_bent" + ext, - "raytrace_bake_light" + ext, - "raytrace_bake_thick" + ext, - "raytrace_brute_core" + ext, - "raytrace_brute_full" + ext - ]; - - for (file in files_renderlib) { - Res.embedBlob(file, untyped global['data/' + file]); - untyped global['data/' + file] = null; - } - + MainBase.embedRaytrace(); + MainBase.embedRaytraceBake(); #end - - #end // arm_snapshot - - #if (!arm_snapshot) - iron.data.ShaderData.shaderPath = ""; // Use arm_data_dir - kickstart(); + #else + MainBase.kickstart(); #end } - - @:keep - public static function kickstart() { - // Used to locate external application data folder - Krom.setApplicationName(Main.title); - - tasks = 1; - tasks++; Config.load(function() { tasks--; start(); }); - tasks--; start(); - } - - static function start() { - if (tasks > 0) return; - - Config.init(); - System.start(Config.getOptions(), function(window: Window) { - if (Config.raw.layout == null) arm.App.initLayout(); - Krom.setApplicationName(Main.title); - iron.App.init(function() { - Scene.setActive("Scene", function(o: Object) { - Uniforms.init(); - var path = new RenderPath(); - RenderPathBase.init(path); - - if (Context.renderMode == RenderForward) { - RenderPathDeferred.init(path); // Allocate gbuffer - RenderPathForward.init(path); - path.commands = RenderPathForward.commands; - } - else { - RenderPathDeferred.init(path); - path.commands = RenderPathDeferred.commands; - } - - RenderPath.setActive(path); - new arm.App(); - }); - }); - }); - } } diff --git a/armorpaint/Sources/arm/ui/UIMenu.hx b/armorpaint/Sources/arm/ui/UIMenu.hx index 2ed1aaa3..0fbff516 100644 --- a/armorpaint/Sources/arm/ui/UIMenu.hx +++ b/armorpaint/Sources/arm/ui/UIMenu.hx @@ -366,17 +366,17 @@ class UIMenu { } if (menuButton(ui, tr("Report Bug"))) { #if (krom_darwin || krom_ios) // Limited url length - var url = "https://github.com/armory3d/armortools/issues/new?labels=bug&template=bug_report.md&body=*ArmorPaint%20" + Main.version + "-" + Main.sha + ",%20" + System.systemId; + var url = "https://github.com/armory3d/armortools/issues/new?labels=bug&template=bug_report.md&body=*ArmorPaint%20" + Main.version + "-" + MainBase.sha + ",%20" + System.systemId; #else - var url = "https://github.com/armory3d/armortools/issues/new?labels=bug&template=bug_report.md&body=*ArmorPaint%20" + Main.version + "-" + Main.sha + ",%20" + System.systemId + "*%0A%0A**Issue description:**%0A%0A**Steps to reproduce:**%0A%0A"; + var url = "https://github.com/armory3d/armortools/issues/new?labels=bug&template=bug_report.md&body=*ArmorPaint%20" + Main.version + "-" + MainBase.sha + ",%20" + System.systemId + "*%0A%0A**Issue description:**%0A%0A**Steps to reproduce:**%0A%0A"; #end File.loadUrl(url); } if (menuButton(ui, tr("Request Feature"))) { #if (krom_darwin || krom_ios) // Limited url length - var url = "https://github.com/armory3d/armortools/issues/new?labels=feature%20request&template=feature_request.md&body=*ArmorPaint%20" + Main.version + "-" + Main.sha + ",%20" + System.systemId; + var url = "https://github.com/armory3d/armortools/issues/new?labels=feature%20request&template=feature_request.md&body=*ArmorPaint%20" + Main.version + "-" + MainBase.sha + ",%20" + System.systemId; #else - var url = "https://github.com/armory3d/armortools/issues/new?labels=feature%20request&template=feature_request.md&body=*ArmorPaint%20" + Main.version + "-" + Main.sha + ",%20" + System.systemId + "*%0A%0A**Feature description:**%0A%0A"; + var url = "https://github.com/armory3d/armortools/issues/new?labels=feature%20request&template=feature_request.md&body=*ArmorPaint%20" + Main.version + "-" + MainBase.sha + ",%20" + System.systemId + "*%0A%0A**Feature description:**%0A%0A"; #end File.loadUrl(url); } @@ -425,7 +425,7 @@ class UIMenu { #else var gapi = "OpenGL"; #end - var msg = "ArmorPaint.org - v" + Main.version + " (" + Main.date + ") - " + Main.sha + "\n"; + var msg = "ArmorPaint.org - v" + Main.version + " (" + MainBase.date + ") - " + MainBase.sha + "\n"; msg += System.systemId + " - " + gapi; #if krom_windows diff --git a/base/Sources/MainBase.hx b/base/Sources/MainBase.hx new file mode 100644 index 00000000..6a64fef8 --- /dev/null +++ b/base/Sources/MainBase.hx @@ -0,0 +1,146 @@ +package; + +import kha.Window; +import kha.System; +import iron.object.Object; +import iron.Scene; +import iron.RenderPath; +import arm.render.RenderPathBase; +import arm.render.RenderPathForward; +import arm.render.RenderPathDeferred; +import arm.render.Uniforms; +import arm.sys.BuildMacros; +import arm.Config; +import arm.Context; +import arm.Res; + +class MainBase { + + public static var sha = BuildMacros.sha().substr(1, 7); + public static var date = BuildMacros.date().split(" ")[0]; + public static var tasks: Int; + + @:keep + public static function kickstart() { + #if (!arm_snapshot) + iron.data.ShaderData.shaderPath = ""; // Use arm_data_dir + #end + + // Used to locate external application data folder + Krom.setApplicationName(Main.title); + + tasks = 1; + tasks++; Config.load(function() { tasks--; start(); }); + tasks--; start(); + } + + public static function start() { + if (tasks > 0) return; + + Config.init(); + System.start(Config.getOptions(), function(window: Window) { + if (Config.raw.layout == null) arm.App.initLayout(); + Krom.setApplicationName(Main.title); + iron.App.init(function() { + Scene.setActive("Scene", function(o: Object) { + Uniforms.init(); + var path = new RenderPath(); + RenderPathBase.init(path); + + if (Context.renderMode == RenderForward) { + RenderPathDeferred.init(path); // Allocate gbuffer + RenderPathForward.init(path); + path.commands = RenderPathForward.commands; + } + else { + RenderPathDeferred.init(path); + path.commands = RenderPathDeferred.commands; + } + + RenderPath.setActive(path); + new arm.App(); + }); + }); + }); + } + + #if arm_snapshot + + public static function embed(additional: Array) { + var global = js.Syntax.code("globalThis"); + global.kickstart = MainBase.kickstart; + + Res.embedRaw("Scene", "Scene.arm", untyped global["data/Scene.arm"]); + untyped global["data/Scene.arm"] = null; + + Res.embedRaw("shader_datas", "shader_datas.arm", untyped global["data/shader_datas.arm"]); + untyped global["data/shader_datas.arm"] = null; + + Res.embedFont("font.ttf", untyped global["data/font.ttf"]); + untyped global["data/font.ttf"] = null; + + Res.embedFont("font_mono.ttf", untyped global["data/font_mono.ttf"]); + untyped global["data/font_mono.ttf"] = null; + + var files = [ + "font13.bin", + "ltc_mag.arm", + "ltc_mat.arm", + "default_brush.arm", + "World_irradiance.arm", + "World_radiance.k", + "World_radiance_0.k", + "World_radiance_1.k", + "World_radiance_2.k", + "World_radiance_3.k", + "World_radiance_4.k", + "World_radiance_5.k", + "World_radiance_6.k", + "World_radiance_7.k", + "World_radiance_8.k", + "brdf.k", + "color_wheel.k", + "color_wheel_gradient.k", + "cursor.k", + "icons.k", + "icons2x.k", + "noise256.k", + "smaa_search.k", + "smaa_area.k" + ]; + for (add in additional) files.push(add); + for (file in files) { + Res.embedBlob(file, untyped global["data/" + file]); + untyped global["data/" + file] = null; + } + } + + public static function embedRaytrace() { + var files = [ + "bnoise_rank.k", + "bnoise_scramble.k", + "bnoise_sobol.k", + "raytrace_brute_core" + RenderPathRaytrace.ext, + "raytrace_brute_full" + RenderPathRaytrace.ext + ]; + for (file in files) { + Res.embedBlob(file, untyped global["data/" + file]); + untyped global["data/" + file] = null; + } + } + + public static function embedRaytraceBake() { + var files = [ + "raytrace_bake_ao" + RenderPathRaytrace.ext, + "raytrace_bake_bent" + RenderPathRaytrace.ext, + "raytrace_bake_light" + RenderPathRaytrace.ext, + "raytrace_bake_thick" + RenderPathRaytrace.ext + ]; + for (file in files) { + Res.embedBlob(file, untyped global["data/" + file]); + untyped global["data/" + file] = null; + } + } + + #end +} diff --git a/base/Sources/arm/Config.hx b/base/Sources/arm/Config.hx index 5eacc76e..a016fb6f 100644 --- a/base/Sources/arm/Config.hx +++ b/base/Sources/arm/Config.hx @@ -101,7 +101,7 @@ class Config { raw.rp_ssr = false; raw.rp_supersample = 1.0; raw.version = Main.version; - raw.sha = Main.sha; + raw.sha = MainBase.sha; App.initConfig(); } else { @@ -110,7 +110,7 @@ class Config { // raw.version = Main.version; // save(); // } - if (raw.sha != Main.sha) { + if (raw.sha != MainBase.sha) { configLoaded = false; init(); return; diff --git a/base/Sources/arm/render/RenderPathRaytrace.hx b/base/Sources/arm/render/RenderPathRaytrace.hx index fbc29193..14b6de64 100644 --- a/base/Sources/arm/render/RenderPathRaytrace.hx +++ b/base/Sources/arm/render/RenderPathRaytrace.hx @@ -23,9 +23,9 @@ class RenderPathRaytrace { static var isBake = false; #if kha_direct3d12 - static inline var ext = ".cso"; + public static inline var ext = ".cso"; #else - static inline var ext = ".spirv"; + public static inline var ext = ".spirv"; #end public static function init(_path: RenderPath) {