diff --git a/src/DtsObject.hx b/src/DtsObject.hx index c362b38a..fca3e181 100644 --- a/src/DtsObject.hx +++ b/src/DtsObject.hx @@ -387,6 +387,8 @@ class DtsObject extends GameObject { var dtsshader = new DtsTexture(); dtsshader.texture = texture; dtsshader.currentOpacity = 1; + if (this.identifier == "Tornado") + dtsshader.normalizeNormals = false; // These arent normalized material.mainPass.removeShader(material.textureShader); material.mainPass.addShader(dtsshader); } @@ -398,6 +400,8 @@ class DtsObject extends GameObject { if (material.texture == null && !iflMaterial) { var dtsshader = new DtsTexture(); dtsshader.currentOpacity = 1; + if (this.identifier == "Tornado") + dtsshader.normalizeNormals = false; // These arent normalized // Make a 1x1 white texture #if hl var bitmap = new hxd.BitmapData(1, 1); diff --git a/src/shaders/DtsTexture.hx b/src/shaders/DtsTexture.hx index b1dc030b..0fdd7e92 100644 --- a/src/shaders/DtsTexture.hx +++ b/src/shaders/DtsTexture.hx @@ -15,6 +15,7 @@ class DtsTexture extends hxsl.Shader { @const var specularAlpha:Bool; @range(0, 1) @param var killAlphaThreshold:Float; @param var texture:Sampler2D; + @const var normalizeNormals:Bool; @perInstance @param var currentOpacity:Float; var calculatedUV:Vec2; var pixelColor:Vec4; @@ -23,9 +24,11 @@ class DtsTexture extends hxsl.Shader { function vertex() { calculatedUV = input.uv; transformedNormal = (input.normal * global.modelView.mat3()); - var normalizednorm = transformedNormal.normalize(); - transformedNormal = transformedNormal / (transformedNormal.x * transformedNormal.x + transformedNormal.y * transformedNormal.y - + transformedNormal.z * transformedNormal.z); + if (normalizeNormals) { + var normalizednorm = transformedNormal.normalize(); + transformedNormal = transformedNormal / (transformedNormal.x * transformedNormal.x + transformedNormal.y * transformedNormal.y + + transformedNormal.z * transformedNormal.z); + } } function fragment() { var c = texture.get(calculatedUV); @@ -45,5 +48,6 @@ class DtsTexture extends hxsl.Shader { super(); this.texture = tex; killAlphaThreshold = h3d.mat.Defaults.defaultKillAlphaThreshold; + normalizeNormals = true; } }