34 lines
1.5 KiB
GLSL
34 lines
1.5 KiB
GLSL
#define ENTITY_GN_AND_CT
|
|
#define COATED_TEXTURE_MULT 100 //[25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200]
|
|
#define COATED_TEXTURE_RES 64 //[16 32 64 80 96 112 128 144 160 176 192 208 224 240 256 320 384 448 512]
|
|
const float packSizeNT = COATED_TEXTURE_RES;
|
|
|
|
void CoatTextures(inout vec3 color, float noiseFactor, vec3 playerPos, bool doTileRandomisation) {
|
|
#ifndef ENTITY_GN_AND_CT
|
|
#if defined GBUFFERS_ENTITIES || defined GBUFFERS_HAND
|
|
return;
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef SAFER_GENERATED_NORMALS
|
|
vec2 noiseCoord = floor(midCoordPos / 16.0 * packSizeNT * atlasSizeM) / packSizeNT / 3.0;
|
|
#else
|
|
vec2 offsetR = max(absMidCoordPos.x, absMidCoordPos.y) * vec2(float(atlasSizeM.y) / float(atlasSizeM.x), 1.0);
|
|
vec2 noiseCoord = floor(midCoordPos / 2.0 * packSizeNT / offsetR) / packSizeNT / 3.0;
|
|
#endif
|
|
|
|
if (doTileRandomisation) {
|
|
vec3 floorWorldPos = floor(playerPos + cameraPosition + 0.001);
|
|
noiseCoord += 0.84 * (floorWorldPos.xz + floorWorldPos.y);
|
|
}
|
|
|
|
float noiseTexture = texture2DLod(noisetex, noiseCoord, 0.0).r;
|
|
noiseTexture = noiseTexture + 0.6;
|
|
float colorBrightness = dot(color, color) * 0.3;
|
|
#define COATED_TEXTURE_MULT_M COATED_TEXTURE_MULT * 0.0027
|
|
noiseFactor *= COATED_TEXTURE_MULT_M * max0(1.0 - colorBrightness);
|
|
noiseFactor *= max(1.0 - miplevel * 0.25, 0.0);
|
|
noiseTexture = pow(noiseTexture, noiseFactor);
|
|
color *= noiseTexture;
|
|
}
|