fix tornado

This commit is contained in:
RandomityGuy 2022-12-24 19:44:29 +05:30
parent b1d103e3d1
commit b72f7e8193
2 changed files with 11 additions and 3 deletions

View file

@ -387,6 +387,8 @@ class DtsObject extends GameObject {
var dtsshader = new DtsTexture(); var dtsshader = new DtsTexture();
dtsshader.texture = texture; dtsshader.texture = texture;
dtsshader.currentOpacity = 1; dtsshader.currentOpacity = 1;
if (this.identifier == "Tornado")
dtsshader.normalizeNormals = false; // These arent normalized
material.mainPass.removeShader(material.textureShader); material.mainPass.removeShader(material.textureShader);
material.mainPass.addShader(dtsshader); material.mainPass.addShader(dtsshader);
} }
@ -398,6 +400,8 @@ class DtsObject extends GameObject {
if (material.texture == null && !iflMaterial) { if (material.texture == null && !iflMaterial) {
var dtsshader = new DtsTexture(); var dtsshader = new DtsTexture();
dtsshader.currentOpacity = 1; dtsshader.currentOpacity = 1;
if (this.identifier == "Tornado")
dtsshader.normalizeNormals = false; // These arent normalized
// Make a 1x1 white texture // Make a 1x1 white texture
#if hl #if hl
var bitmap = new hxd.BitmapData(1, 1); var bitmap = new hxd.BitmapData(1, 1);

View file

@ -15,6 +15,7 @@ class DtsTexture extends hxsl.Shader {
@const var specularAlpha:Bool; @const var specularAlpha:Bool;
@range(0, 1) @param var killAlphaThreshold:Float; @range(0, 1) @param var killAlphaThreshold:Float;
@param var texture:Sampler2D; @param var texture:Sampler2D;
@const var normalizeNormals:Bool;
@perInstance @param var currentOpacity:Float; @perInstance @param var currentOpacity:Float;
var calculatedUV:Vec2; var calculatedUV:Vec2;
var pixelColor:Vec4; var pixelColor:Vec4;
@ -23,9 +24,11 @@ class DtsTexture extends hxsl.Shader {
function vertex() { function vertex() {
calculatedUV = input.uv; calculatedUV = input.uv;
transformedNormal = (input.normal * global.modelView.mat3()); transformedNormal = (input.normal * global.modelView.mat3());
var normalizednorm = transformedNormal.normalize(); if (normalizeNormals) {
transformedNormal = transformedNormal / (transformedNormal.x * transformedNormal.x + transformedNormal.y * transformedNormal.y var normalizednorm = transformedNormal.normalize();
+ transformedNormal.z * transformedNormal.z); transformedNormal = transformedNormal / (transformedNormal.x * transformedNormal.x + transformedNormal.y * transformedNormal.y
+ transformedNormal.z * transformedNormal.z);
}
} }
function fragment() { function fragment() {
var c = texture.get(calculatedUV); var c = texture.get(calculatedUV);
@ -45,5 +48,6 @@ class DtsTexture extends hxsl.Shader {
super(); super();
this.texture = tex; this.texture = tex;
killAlphaThreshold = h3d.mat.Defaults.defaultKillAlphaThreshold; killAlphaThreshold = h3d.mat.Defaults.defaultKillAlphaThreshold;
normalizeNormals = true;
} }
} }