mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-12-30 11:52:16 +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.mipMap = None;
|
||||
var shader = new NoiseTileMaterial(diffuseTex, normalTex, noiseTex, shininess, specular, 1);
|
||||
#if hl
|
||||
shader.useAccurateNoise = true;
|
||||
#end
|
||||
onFinish(shader);
|
||||
});
|
||||
worker.loadFile('textures/${baseTexture}');
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ class InstanceManager {
|
|||
minfo.transparencymeshbatch.material.blendMode = Alpha;
|
||||
// minfo.transparencymeshbatch.material.color.a = instance.gameObject.currentOpacity;
|
||||
// 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.depthWrite = false;
|
||||
// if (dtsShader != null) {
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@ class NoiseTileMaterial extends hxsl.Shader {
|
|||
var pixelColor:Vec4;
|
||||
var specColor:Vec3;
|
||||
var specPower:Float;
|
||||
var noiseUV:Vec2;
|
||||
@const var useAccurateNoise:Bool;
|
||||
@var var outLightVec:Vec4;
|
||||
@var var outPos: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);
|
||||
// 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 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.y = floor(calculatedUV.y - halfPixel.y) / 63.0 + 0.5 / 64.0;
|
||||
noiseColor1 = noiseMap.get(noiseIndex) * 1.0 - 0.5;
|
||||
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;
|
||||
noiseColor1 = noiseMap.get(noiseIndex) * 1.0 - 0.5;
|
||||
|
||||
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;
|
||||
noiseColor2 = noiseMap.get(noiseIndex) * 1.0 - 0.5;
|
||||
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;
|
||||
noiseColor2 = noiseMap.get(noiseIndex) * 1.0 - 0.5;
|
||||
|
||||
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;
|
||||
noiseColor3 = noiseMap.get(noiseIndex) * 1.0 - 0.5;
|
||||
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;
|
||||
noiseColor3 = noiseMap.get(noiseIndex) * 1.0 - 0.5;
|
||||
|
||||
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;
|
||||
noiseColor4 = noiseMap.get(noiseIndex) * 1.0 - 0.5;
|
||||
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;
|
||||
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 outCol = diffuse + noiseAdd;
|
||||
|
|
@ -106,9 +113,7 @@ class NoiseTileMaterial extends hxsl.Shader {
|
|||
// Gamma correction using our regression model
|
||||
var a = 1.00759;
|
||||
var b = 1.18764;
|
||||
outCol.x = a * pow(outCol.x, b);
|
||||
outCol.y = a * pow(outCol.y, b);
|
||||
outCol.z = a * pow(outCol.z, b);
|
||||
outCol.xyz = a * pow(outCol.xyz, vec3(b));
|
||||
|
||||
pixelColor = outCol;
|
||||
}
|
||||
|
|
@ -122,5 +127,6 @@ class NoiseTileMaterial extends hxsl.Shader {
|
|||
this.shininess = shininess;
|
||||
this.specularColor = specularColor;
|
||||
this.secondaryMapUvFactor = secondaryMapUvFactor;
|
||||
this.useAccurateNoise = false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue