From c4604d497aaeb8e0da2e0c5a301c622b8634f529 Mon Sep 17 00:00:00 2001 From: RandomityGuy <31925790+RandomityGuy@users.noreply.github.com> Date: Sun, 11 Jun 2023 14:59:52 +0530 Subject: [PATCH] more glow --- data/skies/env_DN.png | Bin 0 -> 136 bytes data/skies/env_EA.png | Bin 0 -> 322 bytes data/skies/env_NO.png | Bin 0 -> 240 bytes data/skies/env_SO.png | Bin 0 -> 323 bytes data/skies/env_UP.png | Bin 0 -> 135 bytes data/skies/env_WE.png | Bin 0 -> 257 bytes src/InstanceManager.hx | 19 +++- src/shaders/DefaultCubemapMaterial.hx | 14 +-- src/shapes/AntiGravity.hx | 18 +++- src/shapes/Blast.hx | 29 +++++++ src/shapes/EndPad.hx | 72 +++++++++++++++- src/shapes/MegaMarble.hx | 29 +++++++ src/shapes/StartPad.hx | 119 +++++++++++++++++++++++++- src/shapes/SuperSpeed.hx | 29 +++++++ 14 files changed, 319 insertions(+), 10 deletions(-) create mode 100644 data/skies/env_DN.png create mode 100644 data/skies/env_EA.png create mode 100644 data/skies/env_NO.png create mode 100644 data/skies/env_SO.png create mode 100644 data/skies/env_UP.png create mode 100644 data/skies/env_WE.png diff --git a/data/skies/env_DN.png b/data/skies/env_DN.png new file mode 100644 index 0000000000000000000000000000000000000000..7ab65df056cb2d4cc004f794735d7758fca1b4cd GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGH$e@_?3kcwMx&l~bGFmNz$khPdw q&%fe0003ANklM3Z0OSqa25<(V0oYU` zYG%qd%JxH>IeCDn{|4;1Wc#602^j$P0(%~{Xdz?YTol01DzOXz3vtxQ@opXX044t2 UB$5^l>;M1&07*qoM6N<$g6)ffSpWb4 literal 0 HcmV?d00001 diff --git a/data/skies/env_NO.png b/data/skies/env_NO.png new file mode 100644 index 0000000000000000000000000000000000000000..dac1f1099d3f93397f0ccf1271da051f14714ae9 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM?Vc`vf=#B1V{cWKw6PJ0Dy zdp!B)xlKCBJ)dpf|F-K}JZ01S>g?RxX2!FNpLOkiUgdHn>T})yBX?D8&rd%5^YQn+ r*Q5j^pK5v*pDX?O8R!O*!T$5yi_fjqbq>213DWE7>gTe~DWM4f$lp`M literal 0 HcmV?d00001 diff --git a/data/skies/env_SO.png b/data/skies/env_SO.png new file mode 100644 index 0000000000000000000000000000000000000000..a4cd138896955310c0a242936b7b4a4fe807777e GIT binary patch literal 323 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLH@YFmidiIEGZ*dV9;atHnTo^}&^R ztp~DuCzyYjvCewq!g~g*Z}K(UzF+GT#33)ZIPm`WyLXijX$el8DR{B^e_o&Ah0L_u z+y35|Kl6qA8YQK*TP@Sm;;xs<9Iu=wxbfPd39DvBzPB~5ejoR8@8dHkB$%BA4Uctj ztgn&X(%#O%#G&vYvElc=(5rXP^7sn=Jbc?wUlAzS&~Tq|&DJwMp{^-wO`n&Puk~PU zEoVJChY>8t&$L1-jCl`3!sPVOcU)Xco085kFtP|Zz=#?S2I>D57v_uB{LO`Gsb>@r x%=xqZ+L|U-#@){AuXES4FXZt>)n=oezwddJV4KMO*TBGG@O1TaS?83{1ONrTdk6pk literal 0 HcmV?d00001 diff --git a/data/skies/env_UP.png b/data/skies/env_UP.png new file mode 100644 index 0000000000000000000000000000000000000000..6d8d163ea76d2569091253c0f38f9dbb9830312f GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGH$KTj9OkcwMx&l~bGFmNz$kgb@X q8&WV~3!hc)=bKL~8A$<+)!ZBhnWp)kV#oxV%;4$j=d#Wzp$P!Y0T|2x literal 0 HcmV?d00001 diff --git a/data/skies/env_WE.png b/data/skies/env_WE.png new file mode 100644 index 0000000000000000000000000000000000000000..6128e62ca852972b612d5be9adbb4f00cdee019c GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM6P_-PAr-gY&OFJ>qA0*@dsuUk zilUK%hf;!BN9_WkcRXHs-zBTxE4lM1ZeUF6$!Yjr`&7h=b3#xO^OdMn))ZmyZw#Uf zrW|5BVJYqKtwAr0A>QpHgWlpIu9tbNZyGN%{8-I$???szgJ6#R!jBn0Ot-W-@Vz#N z;b8Oq6W5}08VuQ_6V9DvJ7B(P@AfqZJQ-@#k1+$)@;BT+@xj`#ZpLBxZIk{V+0Void) { @@ -120,6 +120,76 @@ class EndPad extends DtsObject { // We can safely remove the firework } } + + override function postProcessMaterial(matName:String, material:h3d.mat.Material) { + if (matName == "abyss2") { + var glowpass = material.mainPass.clone(); + glowpass.setPassName("glow"); + glowpass.depthTest = LessEqual; + glowpass.enableLights = false; + material.addPass(glowpass); + + material.mainPass.setPassName("glowPre"); + 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 == "ringtex") { + var diffuseTex = ResourceLoader.getTexture("data/shapes/pads/ringtex.png").resource; + diffuseTex.wrap = Repeat; + diffuseTex.mipMap = Nearest; + var shader = new shaders.DefaultNormalMaterial(diffuseTex, 14, new h3d.Vector(0.3, 0.3, 0.3, 7), 1); + shader.doGammaRamp = false; + var dtsTex = material.mainPass.getShader(shaders.DtsTexture); + dtsTex.passThrough = true; + material.mainPass.removeShader(material.textureShader); + material.mainPass.addShader(shader); + var thisprops:Dynamic = material.getDefaultProps(); + thisprops.light = false; // We will calculate our own lighting + material.props = thisprops; + material.shadows = false; + material.receiveShadows = true; + } + + if (matName == "misty") { + var diffuseTex = ResourceLoader.getTexture("data/shapes/pads/misty.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; + glowpass.blendSrc = SrcAlpha; + glowpass.blendDst = OneMinusSrcAlpha; + 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; + material.blendMode = Alpha; + material.mainPass.blendSrc = SrcAlpha; + material.mainPass.blendDst = OneMinusSrcAlpha; + } + } } final fireworkSmoke:ParticleEmitterOptions = { diff --git a/src/shapes/MegaMarble.hx b/src/shapes/MegaMarble.hx index d9ec633d..432f1d24 100644 --- a/src/shapes/MegaMarble.hx +++ b/src/shapes/MegaMarble.hx @@ -64,5 +64,34 @@ class MegaMarble extends PowerUp { material.shadows = false; material.receiveShadows = true; } + if (matName == "item_glow") { + var diffuseTex = ResourceLoader.getTexture("data/shapes/images/grow_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; + } } } diff --git a/src/shapes/StartPad.hx b/src/shapes/StartPad.hx index 1dc2f2b5..52905d50 100644 --- a/src/shapes/StartPad.hx +++ b/src/shapes/StartPad.hx @@ -1,6 +1,7 @@ package shapes; import src.DtsObject; +import src.ResourceLoader; class StartPad extends DtsObject { public function new() { @@ -8,6 +9,122 @@ class StartPad extends DtsObject { dtsPath = "data/shapes/pads/startarea.dts"; isCollideable = true; identifier = "StartPad"; - useInstancing = false; + useInstancing = true; + } + + override function postProcessMaterial(matName:String, material:h3d.mat.Material) { + if (matName == "ringglass") { + var diffuseTex = ResourceLoader.getTexture("data/shapes/pads/ringglass.png").resource; + diffuseTex.wrap = Repeat; + diffuseTex.mipMap = Nearest; + var normalTex = ResourceLoader.getTexture("data/shapes/pads/ringnormal.png").resource; + normalTex.wrap = Repeat; + normalTex.mipMap = Nearest; + + var cubemapTex = new h3d.mat.Texture(64, 64, [Cube]); + var cubemapFace1 = ResourceLoader.getImage('data/skies/env_SO.png').resource; + var cubemapFace2 = ResourceLoader.getImage('data/skies/env_NO.png').resource; + var cubemapFace3 = ResourceLoader.getImage('data/skies/env_EA.png').resource; + var cubemapFace4 = ResourceLoader.getImage('data/skies/env_WE.png').resource; + var cubemapFace5 = ResourceLoader.getImage('data/skies/env_UP.png').resource; + var cubemapFace6 = ResourceLoader.getImage('data/skies/env_DN.png').resource; + cubemapTex.uploadPixels(cubemapFace1.getPixels(), 0, 0); + cubemapTex.uploadPixels(cubemapFace2.getPixels(), 0, 1); + cubemapTex.uploadPixels(cubemapFace3.getPixels(), 0, 2); + cubemapTex.uploadPixels(cubemapFace4.getPixels(), 0, 3); + cubemapTex.uploadPixels(cubemapFace5.getPixels(), 0, 4); + cubemapTex.uploadPixels(cubemapFace6.getPixels(), 0, 5); + + var shader = new shaders.DefaultCubemapMaterial(diffuseTex, normalTex, 12, new h3d.Vector(0.8, 0.8, 0.8, 1), 1, cubemapTex); + shader.doGammaRamp = false; + var dtsTex = material.mainPass.getShader(shaders.DtsTexture); + dtsTex.passThrough = true; + material.mainPass.removeShader(material.textureShader); + material.mainPass.addShader(shader); + var thisprops:Dynamic = material.getDefaultProps(); + thisprops.light = false; // We will calculate our own lighting + material.props = thisprops; + material.shadows = false; + material.receiveShadows = true; + material.blendMode = Alpha; + material.mainPass.culling = None; + // material.blendMode = Alpha; + } + + if (matName == "ringtex") { + var diffuseTex = ResourceLoader.getTexture("data/shapes/pads/ringtex.png").resource; + diffuseTex.wrap = Repeat; + diffuseTex.mipMap = Nearest; + var shader = new shaders.DefaultNormalMaterial(diffuseTex, 14, new h3d.Vector(0.3, 0.3, 0.3, 7), 1); + shader.doGammaRamp = false; + var dtsTex = material.mainPass.getShader(shaders.DtsTexture); + dtsTex.passThrough = true; + material.mainPass.removeShader(material.textureShader); + material.mainPass.addShader(shader); + var thisprops:Dynamic = material.getDefaultProps(); + thisprops.light = false; // We will calculate our own lighting + material.props = thisprops; + material.shadows = false; + material.receiveShadows = true; + } + + if (matName == "abyss") { + var thisprops:Dynamic = material.getDefaultProps(); + thisprops.light = false; // We will calculate our own lighting + material.props = thisprops; + material.shadows = false; + material.receiveShadows = true; + } + + if (matName == "abyss2") { + var glowpass = material.mainPass.clone(); + glowpass.setPassName("glow"); + glowpass.depthTest = LessEqual; + glowpass.enableLights = false; + material.addPass(glowpass); + + material.mainPass.setPassName("glowPre"); + 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 == "misty") { + var diffuseTex = ResourceLoader.getTexture("data/shapes/pads/misty.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; + glowpass.blendSrc = SrcAlpha; + glowpass.blendDst = OneMinusSrcAlpha; + 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; + material.blendMode = Alpha; + material.mainPass.blendSrc = SrcAlpha; + material.mainPass.blendDst = OneMinusSrcAlpha; + } } } diff --git a/src/shapes/SuperSpeed.hx b/src/shapes/SuperSpeed.hx index 52f28c75..55f182d6 100644 --- a/src/shapes/SuperSpeed.hx +++ b/src/shapes/SuperSpeed.hx @@ -107,5 +107,34 @@ class SuperSpeed extends PowerUp { material.shadows = false; material.receiveShadows = true; } + if (matName == "superSpeed_star") { + var diffuseTex = ResourceLoader.getTexture("data/shapes/items/superSpeed_star.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; + } } }