From 5960a845bda20bc3384a58d17302c58f3e07bd92 Mon Sep 17 00:00:00 2001 From: RandomityGuy <31925790+RandomityGuy@users.noreply.github.com> Date: Sun, 11 Jun 2023 20:58:28 +0530 Subject: [PATCH] more glow --- src/DtsObject.hx | 6 ++++ src/InstanceManager.hx | 12 ++++++- src/shapes/EndPad.hx | 18 +++++----- src/shapes/RoundBumper.hx | 72 +++++++++++++++++++++++++++++++++++++++ src/shapes/SignPlain.hx | 66 ++++++++++++++++++++++++++++++++++- src/shapes/StartPad.hx | 18 +++++----- 6 files changed, 174 insertions(+), 18 deletions(-) diff --git a/src/DtsObject.hx b/src/DtsObject.hx index e427b430..b90c85e8 100644 --- a/src/DtsObject.hx +++ b/src/DtsObject.hx @@ -816,6 +816,12 @@ class DtsObject extends GameObject { var dot1 = normal.dot(vertexNormals[i1]); var dot2 = normal.dot(vertexNormals[i2]); var dot3 = normal.dot(vertexNormals[i3]); + var matname = dts.matNames[materialIndex]; + // if (matname == 'blastwave') { + // var temp = i1; + // i1 = i3; + // i3 = temp; + // } // if (!StringTools.contains(this.dtsPath, 'helicopter.dts') && !StringTools.contains(this.dtsPath, 'tornado.dts')) // ^ temp hardcoded fix diff --git a/src/InstanceManager.hx b/src/InstanceManager.hx index 61c9ca30..a0358825 100644 --- a/src/InstanceManager.hx +++ b/src/InstanceManager.hx @@ -154,7 +154,17 @@ class InstanceManager { if (glowPass != null) { var gpass = glowPass.clone(); gpass.enableLights = false; - gpass.depthTest = LessEqual; + gpass.depthTest = glowPass.depthTest; + gpass.blendSrc = glowPass.blendSrc; + gpass.blendDst = glowPass.blendDst; + gpass.blendOp = glowPass.blendOp; + gpass.blendAlphaSrc = glowPass.blendAlphaSrc; + gpass.blendAlphaDst = glowPass.blendAlphaDst; + gpass.blendAlphaOp = glowPass.blendAlphaOp; + if (glowPass.culling == None) { + gpass.culling = glowPass.culling; + } + minfoshaders = []; for (shader in gpass.getShaders()) { diff --git a/src/shapes/EndPad.hx b/src/shapes/EndPad.hx index 2939f309..187fa909 100644 --- a/src/shapes/EndPad.hx +++ b/src/shapes/EndPad.hx @@ -169,25 +169,27 @@ class EndPad extends DtsObject { glowpass.removeShader(dtsshader); glowpass.setPassName("glow"); glowpass.depthTest = LessEqual; + glowpass.depthWrite = false; glowpass.enableLights = false; glowpass.blendSrc = SrcAlpha; glowpass.blendDst = OneMinusSrcAlpha; material.addPass(glowpass); - material.mainPass.setPassName("glowPre"); + material.mainPass.setPassName("glowPreNoRender"); material.mainPass.addShader(trivialShader); dtsshader = material.mainPass.getShader(shaders.DtsTexture); if (dtsshader != null) material.mainPass.removeShader(dtsshader); material.mainPass.enableLights = false; - var thisprops:Dynamic = material.getDefaultProps(); - thisprops.light = false; // We will calculate our own lighting - material.props = thisprops; - material.shadows = false; - material.blendMode = Alpha; - material.mainPass.blendSrc = SrcAlpha; - material.mainPass.blendDst = OneMinusSrcAlpha; + // var thisprops:Dynamic = material.getDefaultProps(); + // thisprops.light = false; // We will calculate our own lighting + // material.props = thisprops; + // material.shadows = false; + // material.blendMode = Alpha; + // material.mainPass.depthWrite = false; + // material.mainPass.blendSrc = SrcAlpha; + // material.mainPass.blendDst = OneMinusSrcAlpha; } } } diff --git a/src/shapes/RoundBumper.hx b/src/shapes/RoundBumper.hx index 66be662f..13fd4079 100644 --- a/src/shapes/RoundBumper.hx +++ b/src/shapes/RoundBumper.hx @@ -32,5 +32,77 @@ class RoundBumper extends AbstractBumper { material.shadows = false; material.receiveShadows = true; } + if (matName == "antigrav_glow") { + var diffuseTex = ResourceLoader.getTexture("data/shapes/items/antigrav_glow.png").resource; + diffuseTex.wrap = Repeat; + diffuseTex.mipMap = Nearest; + + var trivialShader = new shaders.TrivialMaterial(diffuseTex); + + var glowpass = material.mainPass.clone(); + glowpass.addShader(trivialShader); + var dtsshader = glowpass.getShader(shaders.DtsTexture); + if (dtsshader != null) + glowpass.removeShader(dtsshader); + glowpass.setPassName("glow"); + glowpass.depthTest = LessEqual; + glowpass.enableLights = false; + material.addPass(glowpass); + + material.mainPass.setPassName("glowPre"); + material.mainPass.addShader(trivialShader); + dtsshader = material.mainPass.getShader(shaders.DtsTexture); + if (dtsshader != null) + material.mainPass.removeShader(dtsshader); + material.mainPass.enableLights = false; + + var thisprops:Dynamic = material.getDefaultProps(); + thisprops.light = false; // We will calculate our own lighting + material.props = thisprops; + material.shadows = false; + } + + if (matName == "blastwave") { + var diffuseTex = ResourceLoader.getTexture("data/shapes/images/blastwave.png").resource; + diffuseTex.wrap = Repeat; + diffuseTex.mipMap = Nearest; + // aa + var trivialShader = new shaders.TrivialMaterial(diffuseTex); + material.mainPass.removeShader(material.textureShader); + var glowpass = material.mainPass.clone(); + + glowpass.addShader(trivialShader); + var dtsshader = glowpass.getShader(shaders.DtsTexture); + if (dtsshader != null) + glowpass.removeShader(dtsshader); + glowpass.setPassName("glow"); + glowpass.depthTest = LessEqual; + glowpass.depthWrite = false; + glowpass.enableLights = false; + glowpass.blendSrc = SrcAlpha; + glowpass.blendDst = One; + glowpass.blendOp = Add; + glowpass.blendAlphaSrc = SrcAlpha; + glowpass.blendAlphaDst = One; + glowpass.blendAlphaOp = Add; + // glowpass.blendSrc = SrcAlpha; + // glowpass.blendDst = OneMinusSrcAlpha; + material.addPass(glowpass); + + material.mainPass.setPassName("glowPreNoRender"); + material.mainPass.removeShader(material.textureShader); + material.mainPass.addShader(trivialShader); + dtsshader = material.mainPass.getShader(shaders.DtsTexture); + if (dtsshader != null) + material.mainPass.removeShader(dtsshader); + material.mainPass.enableLights = false; + + // var thisprops:Dynamic = material.getDefaultProps(); + // thisprops.light = false; // We will calculate our own lighting + // material.props = thisprops; + material.shadows = false; + // material.blendMode = Alpha; + material.mainPass.depthWrite = false; + } } } diff --git a/src/shapes/SignPlain.hx b/src/shapes/SignPlain.hx index 39f60ac7..6052aa01 100644 --- a/src/shapes/SignPlain.hx +++ b/src/shapes/SignPlain.hx @@ -43,6 +43,38 @@ class SignPlain extends DtsObject { material.receiveShadows = true; } + if (matName == "arrowsign_arrow_glow") { + var diffuseTex = ResourceLoader.getTexture('data/shapes/signs/arrowsign_arrow.png').resource; + diffuseTex.wrap = Repeat; + diffuseTex.mipMap = Nearest; + var shader = new shaders.DefaultNormalMaterial(diffuseTex, 32, new h3d.Vector(1, 1, 1, 1), 1); + shader.doGammaRamp = false; + var dtsTex = material.mainPass.getShader(shaders.DtsTexture); + dtsTex.passThrough = true; + material.mainPass.removeShader(material.textureShader); + material.mainPass.addShader(shader); + + var glowpass = material.mainPass.clone(); + var dtsshader = glowpass.getShader(shaders.DtsTexture); + if (dtsshader != null) + glowpass.removeShader(dtsshader); + glowpass.setPassName("glow"); + glowpass.depthTest = LessEqual; + glowpass.enableLights = false; + material.addPass(glowpass); + + material.mainPass.setPassName("glowPre"); + dtsshader = material.mainPass.getShader(shaders.DtsTexture); + if (dtsshader != null) + material.mainPass.removeShader(dtsshader); + material.mainPass.enableLights = false; + + var thisprops:Dynamic = material.getDefaultProps(); + thisprops.light = false; // We will calculate our own lighting + material.props = thisprops; + material.shadows = false; + } + if (matName == "ArrowPostUVW") { var diffuseTex = ResourceLoader.getTexture('data/shapes/signs/arrowpostUVW.png').resource; diffuseTex.wrap = Repeat; @@ -61,8 +93,40 @@ class SignPlain extends DtsObject { } if (matName == "arrowsign_chain") { - material.blendMode = Alpha; + var diffuseTex = ResourceLoader.getTexture("data/shapes/signs/arrowsign_chain.png").resource; + diffuseTex.wrap = Repeat; + diffuseTex.mipMap = Nearest; + + var trivialShader = new shaders.TrivialMaterial(diffuseTex); + + var glowpass = material.mainPass.clone(); + glowpass.addShader(trivialShader); + var dtsshader = glowpass.getShader(shaders.DtsTexture); + if (dtsshader != null) + glowpass.removeShader(dtsshader); + glowpass.setPassName("glow"); + glowpass.depthTest = LessEqual; + glowpass.depthWrite = false; + glowpass.enableLights = false; + glowpass.blendSrc = SrcAlpha; + glowpass.blendDst = OneMinusSrcAlpha; + material.addPass(glowpass); + + material.mainPass.setPassName("glowPreNoRender"); + material.mainPass.addShader(trivialShader); + dtsshader = material.mainPass.getShader(shaders.DtsTexture); + if (dtsshader != null) + material.mainPass.removeShader(dtsshader); material.mainPass.enableLights = false; + + var thisprops:Dynamic = material.getDefaultProps(); + thisprops.light = false; // We will calculate our own lighting + material.props = thisprops; + material.shadows = false; + material.blendMode = Alpha; + material.mainPass.depthWrite = false; + material.mainPass.blendSrc = SrcAlpha; + material.mainPass.blendDst = OneMinusSrcAlpha; } if (matName == "arrowsign_post") { diff --git a/src/shapes/StartPad.hx b/src/shapes/StartPad.hx index 52905d50..9e706cfa 100644 --- a/src/shapes/StartPad.hx +++ b/src/shapes/StartPad.hx @@ -106,25 +106,27 @@ class StartPad extends DtsObject { glowpass.removeShader(dtsshader); glowpass.setPassName("glow"); glowpass.depthTest = LessEqual; + glowpass.depthWrite = false; glowpass.enableLights = false; glowpass.blendSrc = SrcAlpha; glowpass.blendDst = OneMinusSrcAlpha; material.addPass(glowpass); - material.mainPass.setPassName("glowPre"); + material.mainPass.setPassName("glowPreNoRender"); material.mainPass.addShader(trivialShader); dtsshader = material.mainPass.getShader(shaders.DtsTexture); if (dtsshader != null) material.mainPass.removeShader(dtsshader); material.mainPass.enableLights = false; - var thisprops:Dynamic = material.getDefaultProps(); - thisprops.light = false; // We will calculate our own lighting - material.props = thisprops; - material.shadows = false; - material.blendMode = Alpha; - material.mainPass.blendSrc = SrcAlpha; - material.mainPass.blendDst = OneMinusSrcAlpha; + // var thisprops:Dynamic = material.getDefaultProps(); + // thisprops.light = false; // We will calculate our own lighting + // material.props = thisprops; + // material.shadows = false; + // material.blendMode = Alpha; + // material.mainPass.depthWrite = false; + // material.mainPass.blendSrc = SrcAlpha; + // material.mainPass.blendDst = OneMinusSrcAlpha; } } }