From affd74e781e2d0d7e529b3f19ef4e7af5306bc10 Mon Sep 17 00:00:00 2001 From: LunaTheFoxgirl Date: Wed, 2 Oct 2024 07:17:35 +0200 Subject: [PATCH] Inochi2D 0.8.7 support --- dub.sdl | 2 +- res/shaders/batch.frag | 8 ++++++-- source/session/animation/package.d | 4 ++-- source/session/panels/scene.d | 26 +++++++++++++++++++++++--- source/session/render/spritebatch.d | 2 +- source/session/scene/package.d | 6 ++++++ source/session/tracking/package.d | 4 ++-- source/session/tracking/vspace.d | 20 ++++++++++---------- 8 files changed, 51 insertions(+), 21 deletions(-) diff --git a/dub.sdl b/dub.sdl index 6bc0942..0827679 100644 --- a/dub.sdl +++ b/dub.sdl @@ -10,7 +10,7 @@ dependency "inui" version="~>1.2.2" dependency "lumars" version="~>1.6.1" dependency "bindbc-sdl" version="~>1.1.2" dependency "i18n-d" version="~>1.0.2" -dependency "inochi2d" version="~>0.8.6" +dependency "inochi2d" version="~>0.8.7" dependency "inmath" version="~>1.3.0" targetPath "out/" workingDirectory "out/" diff --git a/res/shaders/batch.frag b/res/shaders/batch.frag index e863b0a..855f4ec 100644 --- a/res/shaders/batch.frag +++ b/res/shaders/batch.frag @@ -1,11 +1,15 @@ #version 330 in vec2 texUVs; in vec4 exColor; -out vec4 outColor; +layout(location = 0) out vec4 outAlbedo; +layout(location = 1) out vec4 outEmission; +layout(location = 2) out vec4 outBump; uniform sampler2D tex; void main() { vec2 texSize = vec2(textureSize(tex, 0)); - outColor = texture(tex, texUVs/texSize) * exColor; + outAlbedo = texture(tex, texUVs/texSize) * exColor; + outEmission = texture(tex, texUVs/texSize) * 0.5; + outBump = vec4(0.5, 0.5, 1, 1); } \ No newline at end of file diff --git a/source/session/animation/package.d b/source/session/animation/package.d index d3737ac..665c346 100644 --- a/source/session/animation/package.d +++ b/source/session/animation/package.d @@ -265,7 +265,7 @@ public: } void serialize(S)(ref S serializer) { - auto state = serializer.objectBegin; + auto state = serializer.structBegin; serializer.putKey("name"); serializer.putValue(name); serializer.putKey("loop"); @@ -317,7 +317,7 @@ public: default: break; } - serializer.objectEnd(state); + serializer.structEnd(state); } SerdeException deserializeFromFghj(Fghj data) { diff --git a/source/session/panels/scene.d b/source/session/panels/scene.d index 2944d8a..0556f9c 100644 --- a/source/session/panels/scene.d +++ b/source/session/panels/scene.d @@ -69,10 +69,30 @@ protected: uiImSeperator(); + + uiImLabelColored(_("Ambient Color"), vec4(0.8, 0.3, 0.3, 1)); uiImIndent(); - if (uiImColorButton3("###LIGHT_COLOR", &inSceneAmbientLight.vector)) { - inSettingsSet!(float[3])("ambientLight", inSceneAmbientLight.vector); - } + uiImIndent(); + if (uiImColorButton3("###AMBIENTLIGHT_COLOR", &inSceneAmbientLight.vector)) { + inSettingsSet!(float[3])("ambientLight", inSceneAmbientLight.vector); + } + uiImUnindent(); + uiImUnindent(); + + uiImLabelColored(_("Scene Lighting"), vec4(0.8, 0.3, 0.3, 1)); + uiImIndent(); + uiImIndent(); + if (uiImColorButton3("###LIGHT_COLOR", &inSceneLightColor.vector)) { + inSettingsSet!(float[3])("lightColor", inSceneLightColor.vector); + } + uiImUnindent(); + + uiImIndent(); + const(char)* lightDirName = "###LIGHT_DIR"; + if (igSliderFloat3(lightDirName, &inSceneLightDirection.vector, -1, 1)) { + inSettingsSet!(float[3])("lightDir", inSceneLightDirection.vector); + } + uiImUnindent(); uiImUnindent(); uiImLabelColored(_("Background Color"), vec4(0.8, 0.3, 0.3, 1)); diff --git a/source/session/render/spritebatch.d b/source/session/render/spritebatch.d index 05da179..a20b9aa 100644 --- a/source/session/render/spritebatch.d +++ b/source/session/render/spritebatch.d @@ -90,7 +90,7 @@ public: glBindBuffer(GL_ARRAY_BUFFER, buffer); glBufferData(GL_ARRAY_BUFFER, float.sizeof*data.length, data.ptr, GL_DYNAMIC_DRAW); - spriteBatchShader = new Shader(import("shaders/batch.vert"), import("shaders/batch.frag")); + spriteBatchShader = new Shader("batch", import("shaders/batch.vert"), import("shaders/batch.frag")); vp = spriteBatchShader.getUniformLocation("vp"); updateVP(); } diff --git a/source/session/scene/package.d b/source/session/scene/package.d index ce0c519..d274b25 100644 --- a/source/session/scene/package.d +++ b/source/session/scene/package.d @@ -221,6 +221,12 @@ void insSceneInit() { float[3] ambientLight = inSettingsGet!(float[3])("ambientLight", [1, 1, 1]); inSceneAmbientLight.vector = ambientLight; + float[3] lightColor = inSettingsGet!(float[3])("lightColor", [1, 1, 1]); + inSceneLightColor.vector = lightColor; + + float[3] lightDir = inSettingsGet!(float[3])("lightDir", [1, 1, 1]); + inSceneLightDirection.vector = lightDir; + float[4] bgColor = inSettingsGet!(float[4])("bgColor", [0, 0, 0, 0]); inSetClearColor(bgColor[0], bgColor[1], bgColor[2], bgColor[3]); } diff --git a/source/session/tracking/package.d b/source/session/tracking/package.d index e7f20a2..0314b01 100644 --- a/source/session/tracking/package.d +++ b/source/session/tracking/package.d @@ -180,7 +180,7 @@ public: bool inverse; void serialize(S)(ref S serializer) { - auto state = serializer.objectBegin; + auto state = serializer.structBegin; serializer.putKey("name"); serializer.putValue(name); serializer.putKey("sourceName"); @@ -215,7 +215,7 @@ public: default: break; } - serializer.objectEnd(state); + serializer.structEnd(state); } SerdeException deserializeFromFghj(Fghj data) { diff --git a/source/session/tracking/vspace.d b/source/session/tracking/vspace.d index 78d732c..d64bf3c 100644 --- a/source/session/tracking/vspace.d +++ b/source/session/tracking/vspace.d @@ -76,16 +76,16 @@ public: void serialize(S)(ref S serializer) { insLogInfo("Saving Virtual Space..."); - auto state = serializer.objectBegin; + auto state = serializer.structBegin; serializer.putKey("zones"); - auto arrstate = serializer.arrayBegin(); + auto arrstate = serializer.listBegin(); foreach(ref zone; zones) { insLogInfo("Saving Zone %s...", zone.name); serializer.elemBegin(); serializer.serializeValue(zone); } - serializer.arrayEnd(arrstate); - serializer.objectEnd(state); + serializer.listEnd(arrstate); + serializer.structEnd(state); } SerdeException deserializeFromFghj(Fghj data) { @@ -227,27 +227,27 @@ public: void serialize(S)(ref S serializer) { - auto state = serializer.objectBegin; + auto state = serializer.structBegin; serializer.putKey("name"); serializer.putValue(name); serializer.putKey("sources"); - auto arrstate = serializer.arrayBegin(); + auto arrstate = serializer.listBegin(); foreach(ref Adaptor source; sources) { if (!source) continue; serializer.elemBegin(); - auto sstate = serializer.objectBegin; + auto sstate = serializer.structBegin; serializer.putKey("type"); serializer.putValue(source.getAdaptorName()); if (source.getOptions !is null) { serializer.putKey("options"); serializer.serializeValue(source.getOptions()); } - serializer.objectEnd(sstate); + serializer.structEnd(sstate); } - serializer.arrayEnd(arrstate); - serializer.objectEnd(state); + serializer.listEnd(arrstate); + serializer.structEnd(state); } SerdeException deserializeFromFghj(Fghj data) {