mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2026-04-27 05:01:38 +00:00
optimize shader stuff a bit
This commit is contained in:
parent
c3962091cd
commit
a975d3346b
3 changed files with 31 additions and 22 deletions
|
|
@ -294,6 +294,9 @@ class DifBuilder {
|
||||||
noiseTex.wrap = Repeat;
|
noiseTex.wrap = Repeat;
|
||||||
noiseTex.mipMap = None;
|
noiseTex.mipMap = None;
|
||||||
var shader = new NoiseTileMaterial(diffuseTex, normalTex, noiseTex, shininess, specular, 1);
|
var shader = new NoiseTileMaterial(diffuseTex, normalTex, noiseTex, shininess, specular, 1);
|
||||||
|
#if hl
|
||||||
|
shader.useAccurateNoise = true;
|
||||||
|
#end
|
||||||
onFinish(shader);
|
onFinish(shader);
|
||||||
});
|
});
|
||||||
worker.loadFile('textures/${baseTexture}');
|
worker.loadFile('textures/${baseTexture}');
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@ class InstanceManager {
|
||||||
minfo.transparencymeshbatch.material.blendMode = Alpha;
|
minfo.transparencymeshbatch.material.blendMode = Alpha;
|
||||||
// minfo.transparencymeshbatch.material.color.a = instance.gameObject.currentOpacity;
|
// minfo.transparencymeshbatch.material.color.a = instance.gameObject.currentOpacity;
|
||||||
// minfo.transparencymeshbatch.material.mainPass.setPassName(minfo.mesh.material.mainPass.name);
|
// minfo.transparencymeshbatch.material.mainPass.setPassName(minfo.mesh.material.mainPass.name);
|
||||||
minfo.transparencymeshbatch.shadersChanged = true;
|
// minfo.transparencymeshbatch.shadersChanged = true;
|
||||||
minfo.transparencymeshbatch.material.mainPass.enableLights = minfo.mesh.material.mainPass.enableLights;
|
minfo.transparencymeshbatch.material.mainPass.enableLights = minfo.mesh.material.mainPass.enableLights;
|
||||||
// minfo.transparencymeshbatch.material.mainPass.depthWrite = false;
|
// minfo.transparencymeshbatch.material.mainPass.depthWrite = false;
|
||||||
// if (dtsShader != null) {
|
// if (dtsShader != null) {
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,8 @@ class NoiseTileMaterial extends hxsl.Shader {
|
||||||
var pixelColor:Vec4;
|
var pixelColor:Vec4;
|
||||||
var specColor:Vec3;
|
var specColor:Vec3;
|
||||||
var specPower:Float;
|
var specPower:Float;
|
||||||
|
var noiseUV:Vec2;
|
||||||
|
@const var useAccurateNoise:Bool;
|
||||||
@var var outLightVec:Vec4;
|
@var var outLightVec:Vec4;
|
||||||
@var var outPos:Vec3;
|
@var var outPos:Vec3;
|
||||||
@var var outEyePos:Vec3;
|
@var var outEyePos:Vec3;
|
||||||
|
|
@ -65,30 +67,35 @@ class NoiseTileMaterial extends hxsl.Shader {
|
||||||
var ambient = vec4(0.472, 0.424, 0.475, 1.00);
|
var ambient = vec4(0.472, 0.424, 0.475, 1.00);
|
||||||
// noise
|
// noise
|
||||||
|
|
||||||
var noiseIndex:Vec2;
|
|
||||||
var noiseColor1:Vec4;
|
|
||||||
var noiseColor2:Vec4;
|
|
||||||
var noiseColor3:Vec4;
|
|
||||||
var noiseColor4:Vec4;
|
|
||||||
var halfPixel = vec2(1.0 / 64.0, 1.0 / 64.0);
|
var halfPixel = vec2(1.0 / 64.0, 1.0 / 64.0);
|
||||||
|
var finalNoiseCol:Vec4;
|
||||||
|
if (useAccurateNoise) {
|
||||||
|
var noiseIndex:Vec2;
|
||||||
|
var noiseColor1:Vec4;
|
||||||
|
var noiseColor2:Vec4;
|
||||||
|
var noiseColor3:Vec4;
|
||||||
|
var noiseColor4:Vec4;
|
||||||
|
|
||||||
noiseIndex.x = floor(calculatedUV.x - halfPixel.x) / 63.0 + 0.5 / 64.0;
|
noiseIndex.x = floor(calculatedUV.x - halfPixel.x) / 63.0 + 0.5 / 64.0;
|
||||||
noiseIndex.y = floor(calculatedUV.y - halfPixel.y) / 63.0 + 0.5 / 64.0;
|
noiseIndex.y = floor(calculatedUV.y - halfPixel.y) / 63.0 + 0.5 / 64.0;
|
||||||
noiseColor1 = noiseMap.get(noiseIndex) * 1.0 - 0.5;
|
noiseColor1 = noiseMap.get(noiseIndex) * 1.0 - 0.5;
|
||||||
|
|
||||||
noiseIndex.x = floor(calculatedUV.x - halfPixel.x) / 63.0 + 0.5 / 64.0;
|
noiseIndex.x = floor(calculatedUV.x - halfPixel.x) / 63.0 + 0.5 / 64.0;
|
||||||
noiseIndex.y = floor(calculatedUV.y + halfPixel.y) / 63.0 + 0.5 / 64.0;
|
noiseIndex.y = floor(calculatedUV.y + halfPixel.y) / 63.0 + 0.5 / 64.0;
|
||||||
noiseColor2 = noiseMap.get(noiseIndex) * 1.0 - 0.5;
|
noiseColor2 = noiseMap.get(noiseIndex) * 1.0 - 0.5;
|
||||||
|
|
||||||
noiseIndex.x = floor(calculatedUV.x + halfPixel.x) / 63.0 + 0.5 / 64.0;
|
noiseIndex.x = floor(calculatedUV.x + halfPixel.x) / 63.0 + 0.5 / 64.0;
|
||||||
noiseIndex.y = floor(calculatedUV.y + halfPixel.y) / 63.0 + 0.5 / 64.0;
|
noiseIndex.y = floor(calculatedUV.y + halfPixel.y) / 63.0 + 0.5 / 64.0;
|
||||||
noiseColor3 = noiseMap.get(noiseIndex) * 1.0 - 0.5;
|
noiseColor3 = noiseMap.get(noiseIndex) * 1.0 - 0.5;
|
||||||
|
|
||||||
noiseIndex.x = floor(calculatedUV.x + halfPixel.x) / 63.0 + 0.5 / 64.0;
|
noiseIndex.x = floor(calculatedUV.x + halfPixel.x) / 63.0 + 0.5 / 64.0;
|
||||||
noiseIndex.y = floor(calculatedUV.y - halfPixel.y) / 63.0 + 0.5 / 64.0;
|
noiseIndex.y = floor(calculatedUV.y - halfPixel.y) / 63.0 + 0.5 / 64.0;
|
||||||
noiseColor4 = noiseMap.get(noiseIndex) * 1.0 - 0.5;
|
noiseColor4 = noiseMap.get(noiseIndex) * 1.0 - 0.5;
|
||||||
|
|
||||||
var finalNoiseCol = (noiseColor1 + noiseColor2 + noiseColor3 + noiseColor4) / 4.0;
|
finalNoiseCol = (noiseColor1 + noiseColor2 + noiseColor3 + noiseColor4) / 4.0;
|
||||||
|
} else {
|
||||||
|
finalNoiseCol = noiseMap.get(floor(calculatedUV.xy) / 63.0 + 0.5 / 64.0) * 1.0 - 0.5;
|
||||||
|
}
|
||||||
var noiseAdd = finalNoiseCol * diffuse.a;
|
var noiseAdd = finalNoiseCol * diffuse.a;
|
||||||
|
|
||||||
var outCol = diffuse + noiseAdd;
|
var outCol = diffuse + noiseAdd;
|
||||||
|
|
@ -106,9 +113,7 @@ class NoiseTileMaterial extends hxsl.Shader {
|
||||||
// Gamma correction using our regression model
|
// Gamma correction using our regression model
|
||||||
var a = 1.00759;
|
var a = 1.00759;
|
||||||
var b = 1.18764;
|
var b = 1.18764;
|
||||||
outCol.x = a * pow(outCol.x, b);
|
outCol.xyz = a * pow(outCol.xyz, vec3(b));
|
||||||
outCol.y = a * pow(outCol.y, b);
|
|
||||||
outCol.z = a * pow(outCol.z, b);
|
|
||||||
|
|
||||||
pixelColor = outCol;
|
pixelColor = outCol;
|
||||||
}
|
}
|
||||||
|
|
@ -122,5 +127,6 @@ class NoiseTileMaterial extends hxsl.Shader {
|
||||||
this.shininess = shininess;
|
this.shininess = shininess;
|
||||||
this.specularColor = specularColor;
|
this.specularColor = specularColor;
|
||||||
this.secondaryMapUvFactor = secondaryMapUvFactor;
|
this.secondaryMapUvFactor = secondaryMapUvFactor;
|
||||||
|
this.useAccurateNoise = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue