LybOutlines/shaders/lib/materials/materialHandling/terrainMaterials.glsl
2024-06-25 14:45:54 +02:00

2548 lines
No EOL
144 KiB
GLSL

if (mat >= 10000) {
if (mat < 11024) {
if (mat < 10512) {
if (mat < 10256) {
if (mat < 10128) {
if (mat < 10064) {
if (mat < 10032) {
if (mat < 10016) {
if (mat < 10008) {
if (mat < 10004) { // No directional shading
noDirectionalShading = true;
}
else /*if (mat < 10008)*/ { // Grounded Waving Foliage
subsurfaceMode = 1, noSmoothLighting = true, noDirectionalShading = true;
#ifdef GBUFFERS_TERRAIN
DoFoliageColorTweaks(color.rgb, shadowMult, snowMinNdotU, lViewPos);
#ifdef COATED_TEXTURES
doTileRandomisation = false;
#endif
#endif
#if SHADOW_QUALITY == -1
shadowMult *= 1.0 - 0.3 * (signMidCoordPos.y + 1.0) * (1.0 - abs(signMidCoordPos.x))
+ 0.5 * (1.0 - signMidCoordPos.y) * invNoonFactor; // consistency357381
#endif
}
} else {
if (mat < 10012) { // Leaves
#include "/lib/materials/specificMaterials/terrain/leaves.glsl"
}
else /*if (mat < 10016)*/ { // Vine
subsurfaceMode = 3, centerShadowBias = true; noSmoothLighting = true;
#if defined COATED_TEXTURES && defined GBUFFERS_TERRAIN
doTileRandomisation = false;
#endif
float factor = color.g;
smoothnessG = factor * 0.5;
highlightMult = factor * 4.0 + 2.0;
float fresnel = clamp(1.0 + dot(normalM, normalize(viewPos)), 0.0, 1.0);
highlightMult *= 1.0 - pow2(pow2(fresnel));
}
}
} else {
if (mat < 10024) {
if (mat < 10020) { // Non-waving Foliage
subsurfaceMode = 1, noSmoothLighting = true, noDirectionalShading = true;
}
else /*if (mat < 10024)*/ { // Upper Waving Foliage
subsurfaceMode = 1, noSmoothLighting = true, noDirectionalShading = true;
#ifdef GBUFFERS_TERRAIN
DoFoliageColorTweaks(color.rgb, shadowMult, snowMinNdotU, lViewPos);
#ifdef COATED_TEXTURES
doTileRandomisation = false;
#endif
#endif
#if SHADOW_QUALITY == -1
shadowMult *= 1.0 + invNoonFactor; // consistency357381
#endif
}
} else {
if (mat < 10028) { // Modded Ores
#ifdef GLOWING_ORE_MODDED
float epsilon = 0.00001;
vec2 absMidCoordPosM = absMidCoordPos - epsilon;
vec3 avgBorderColor = vec3(0.0);
avgBorderColor += texture2D(tex, midCoord + vec2( absMidCoordPosM.x, absMidCoordPosM.y)).rgb;
avgBorderColor += texture2D(tex, midCoord + vec2(-absMidCoordPosM.x, absMidCoordPosM.y)).rgb;
avgBorderColor += texture2D(tex, midCoord + vec2( absMidCoordPosM.x,-absMidCoordPosM.y)).rgb;
avgBorderColor += texture2D(tex, midCoord + vec2(-absMidCoordPosM.x,-absMidCoordPosM.y)).rgb;
avgBorderColor += texture2D(tex, midCoord + vec2(epsilon, absMidCoordPosM.y)).rgb;
avgBorderColor += texture2D(tex, midCoord + vec2(epsilon,-absMidCoordPosM.y)).rgb;
avgBorderColor += texture2D(tex, midCoord + vec2( absMidCoordPosM.x, epsilon)).rgb;
avgBorderColor += texture2D(tex, midCoord + vec2(-absMidCoordPosM.x, epsilon)).rgb;
avgBorderColor *= 0.125;
vec3 colorDif = abs(avgBorderColor - color.rgb);
emission = max(colorDif.r, max(colorDif.g, colorDif.b));
emission = pow2(emission * 2.5 - 0.15);
emission *= GLOWING_ORE_MULT;
//color.rgb = avgBorderColor;
#endif
}
else /*if (mat < 10032)*/ { // Modded Light Sources
noSmoothLighting = true; noDirectionalShading = true;
emission = GetLuminance(color.rgb) * 2.5;
}
}
}
} else {
if (mat < 10048) {
if (mat < 10040) {
if (mat < 10036) { // Stone Bricks++
smoothnessG = pow2(pow2(color.g)) * 2.0;
smoothnessG = min1(smoothnessG);
smoothnessD = smoothnessG;
#ifdef COATED_TEXTURES
noiseFactor = 0.66;
#endif
}
else /*if (mat < 10040)*/ { // Anvil+
#include "/lib/materials/specificMaterials/terrain/anvil.glsl"
}
} else {
if (mat < 10044) { // Rails
#if ANISOTROPIC_FILTER == 0
color = texture2DLod(tex, texCoord, 0);
#endif
noSmoothLighting = true;
if (color.r > 0.1 && color.g + color.b < 0.1) { // Redstone Parts
noSmoothLighting = true; noDirectionalShading = true;
lmCoordM.x = min(lmCoordM.x * 0.9, 0.77);
if (color.r > 0.5) {
color.rgb *= color.rgb;
emission = 8.0 * color.r;
} else if (color.r > color.g * 2.0) {
materialMask = OSIEBCA * 5.0; // Redstone Fresnel
float factor = pow2(color.r);
smoothnessG = 0.4;
highlightMult = factor + 0.4;
smoothnessD = factor * 0.7 + 0.3;
}
} else if (abs(color.r - color.b) < 0.15) { // Iron Parts
#include "/lib/materials/specificMaterials/terrain/ironBlock.glsl"
} else if (color.g > color.b * 2.0) { // Gold Parts
#include "/lib/materials/specificMaterials/terrain/goldBlock.glsl"
} else { // Wood Parts
#include "/lib/materials/specificMaterials/planks/oakPlanks.glsl"
}
}
else /*if (mat < 10048)*/ { // Empty Cauldron, Hopper
noSmoothLighting = true;
lmCoordM.x = min(lmCoordM.x, 0.9333);
#include "/lib/materials/specificMaterials/terrain/anvil.glsl"
}
}
} else {
if (mat < 10056) {
if (mat < 10052) { // Water Cauldron
noSmoothLighting = true;
lmCoordM.x = min(lmCoordM.x, 0.9333);
vec3 worldPos = playerPos + cameraPosition;
vec3 fractPos = fract(worldPos.xyz);
vec2 coordM = abs(fractPos.xz - 0.5);
if (max(coordM.x, coordM.y) < 0.375 && fractPos.y > 0.3 && NdotU > 0.9) {
#if WATER_STYLE < 3
vec3 colorP = color.rgb / glColor.rgb;
smoothnessG = min(pow2(pow2(dot(colorP.rgb, colorP.rgb) * 0.4)), 1.0);
highlightMult = 3.25;
smoothnessD = 0.8;
#else
smoothnessG = 0.3;
smoothnessD = 1.0;
#endif
#include "/lib/materials/specificMaterials/translucents/water.glsl"
#ifdef COATED_TEXTURES
noiseFactor = 0.0;
#endif
} else {
#include "/lib/materials/specificMaterials/terrain/anvil.glsl"
}
}
else /*if (mat < 10056)*/ { // Powder Snow Cauldron
noSmoothLighting = true;
lmCoordM.x = min(lmCoordM.x, 0.9333);
vec3 worldPos = playerPos + cameraPosition;
vec3 fractPos = fract(worldPos.xyz);
vec2 coordM = abs(fractPos.xz - 0.5);
if (max(coordM.x, coordM.y) < 0.375 &&
fractPos.y > 0.3 &&
NdotU > 0.9) {
#include "/lib/materials/specificMaterials/terrain/snow.glsl"
} else {
#include "/lib/materials/specificMaterials/terrain/anvil.glsl"
}
}
} else {
if (mat < 10060) { // Lava Cauldron
noSmoothLighting = true;
lmCoordM.x = min(lmCoordM.x, 0.9333);
vec3 worldPos = playerPos + cameraPosition;
vec3 fractPos = fract(worldPos.xyz);
vec2 coordM = abs(fractPos.xz - 0.5);
if (max(coordM.x, coordM.y) < 0.375 &&
fractPos.y > 0.3 &&
NdotU > 0.9) {
#include "/lib/materials/specificMaterials/terrain/lava.glsl"
} else {
#include "/lib/materials/specificMaterials/terrain/anvil.glsl"
}
}
else /*if (mat < 10064)*/ { // Lever
if (color.r > color.g + color.b) {
color.rgb *= color.rgb;
emission = 4.0;
} else {
#include "/lib/materials/specificMaterials/terrain/cobblestone.glsl"
}
}
}
}
}
} else {
if (mat < 10096) {
if (mat < 10080) {
if (mat < 10072) {
if (mat < 10068) { // Lectern
#include "/lib/materials/specificMaterials/planks/oakPlanks.glsl"
}
else /*if (mat < 10072)*/ { // Lava
#include "/lib/materials/specificMaterials/terrain/lava.glsl"
#if defined COATED_TEXTURES && defined GBUFFERS_TERRAIN
doTileRandomisation = false;
#endif
}
} else {
if (mat < 10076) { // Fire
noSmoothLighting = true, noDirectionalShading = true;
emission = 2.35;
color.rgb *= sqrt1(GetLuminance(color.rgb));
}
else /*if (mat < 10080)*/ { // Soul Fire
noSmoothLighting = true, noDirectionalShading = true;
emission = 1.5;
color.rgb = pow1_5(color.rgb);
}
}
} else {
if (mat < 10088) {
if (mat < 10084) { // Stone+, Coal Ore, Smooth Stone+, Grindstone, Stonecutter
#include "/lib/materials/specificMaterials/terrain/stone.glsl"
}
else /*if (mat < 10088)*/ { // Granite+
smoothnessG = pow2(pow2(color.r)) * 0.5;
smoothnessD = smoothnessG;
}
} else {
if (mat < 10092) { // Diorite+
smoothnessG = pow2(color.g) * 0.5;
smoothnessD = smoothnessG;
#ifdef GBUFFERS_TERRAIN
DoBrightBlockTweaks(color.rgb, 0.75, shadowMult, highlightMult);
#endif
}
else /*if (mat < 10096)*/ { // Andesite+
smoothnessG = pow2(pow2(color.g));
smoothnessD = smoothnessG;
}
}
}
} else {
if (mat < 10112) {
if (mat < 10104) {
if (mat < 10100) { // Polished Granite+
smoothnessG = 0.1 + color.r * 0.4;
smoothnessD = smoothnessG;
#ifdef COATED_TEXTURES
noiseFactor = 0.77;
#endif
}
else /*if (mat < 10104)*/ { // Polished Diorite+
smoothnessG = pow2(color.g) * 0.7;
smoothnessD = smoothnessG;
#ifdef GBUFFERS_TERRAIN
DoBrightBlockTweaks(color.rgb, 0.75, shadowMult, highlightMult);
#endif
#ifdef COATED_TEXTURES
noiseFactor = 0.77;
#endif
}
} else {
if (mat < 10108) { // Polished Andesite+, Packed Mud, Mud Bricks+, Bricks+
smoothnessG = pow2(color.g);
smoothnessD = smoothnessG;
#ifdef COATED_TEXTURES
noiseFactor = 0.77;
#endif
}
else /*if (mat < 10112)*/ { // Deepslate:Non-polished Variants, Deepslate Coal Ore
#include "/lib/materials/specificMaterials/terrain/deepslate.glsl"
}
}
} else {
if (mat < 10120) {
if (mat < 10116) { // Deepslate:Polished Variants, Mud, Mangrove Roots, Muddy Mangrove Roots
smoothnessG = pow2(color.g) * 2.0;
smoothnessG = min1(smoothnessG);
smoothnessD = smoothnessG;
#ifdef COATED_TEXTURES
noiseFactor = 0.77;
#endif
}
else /*if (mat < 10120)*/ { // Calcite
highlightMult = pow2(color.g) + 1.0;
smoothnessG = 1.0 - color.g * 0.5;
smoothnessD = smoothnessG;
#ifdef GBUFFERS_TERRAIN
DoBrightBlockTweaks(color.rgb, 0.75, shadowMult, highlightMult);
#endif
}
} else {
if (mat < 10124) { // Dripstone+, Daylight Detector
smoothnessG = color.r * 0.35 + 0.2;
smoothnessD = smoothnessG;
#ifdef COATED_TEXTURES
noiseFactor = 0.66;
#endif
}
else /*if (mat < 10128)*/ { // Snowy Variants of Grass Block, Podzol, Mycelium
float dotColor = dot(color.rgb, color.rgb);
if (dotColor > 1.5) { // Snowy Variants:Snowy Part
#include "/lib/materials/specificMaterials/terrain/snow.glsl"
} else { // Snowy Variants:Dirt Part
#include "/lib/materials/specificMaterials/terrain/dirt.glsl"
}
}
}
}
}
}
} else {
if (mat < 10192) {
if (mat < 10160) {
if (mat < 10144) {
if (mat < 10136) {
if (mat < 10132) { // Dirt, Coarse Dirt, Rooted Dirt, Podzol:Normal, Mycelium:Normal, Farmland:Dry
#include "/lib/materials/specificMaterials/terrain/dirt.glsl"
}
else /*if (mat < 10136)*/ { // Grass Block:Normal
if (glColor.b < 0.999) { // Grass Block:Normal:Grass Part
smoothnessG = pow2(color.g);
#ifdef SNOWY_WORLD
snowMinNdotU = min(pow2(pow2(color.g)) * 1.9, 0.1);
color.rgb = color.rgb * 0.5 + 0.5 * (color.rgb / glColor.rgb);
#endif
} else { //Grass Block:Normal:Dirt Part
#include "/lib/materials/specificMaterials/terrain/dirt.glsl"
}
}
} else {
if (mat < 10140) { // Farmland:Wet
if (NdotU > 0.99) { // Farmland:Wet:Top Part
#if MC_VERSION >= 11300
smoothnessG = clamp(pow2(pow2(1.0 - color.r)) * 2.5, 0.5, 1.0);
highlightMult = 0.5 + smoothnessG * smoothnessG * 2.0;
smoothnessD = smoothnessG * 0.75;
#else
smoothnessG = 0.5 * (1.0 + abs(color.r - color.b) + color.b);
smoothnessD = smoothnessG * 0.5;
#endif
} else { // Farmland:Wet:Dirt Part
#include "/lib/materials/specificMaterials/terrain/dirt.glsl"
}
}
else /*if (mat < 10144)*/ { // Netherrack
#include "/lib/materials/specificMaterials/terrain/netherrack.glsl"
}
}
} else {
if (mat < 10152) {
if (mat < 10148) { // Warped Nylium, Warped Wart Block
if (color.g == color.b && color.g > 0.0001) { // Warped Nylium:Netherrack Part
#include "/lib/materials/specificMaterials/terrain/netherrack.glsl"
} else { // Warped Nylium:Nylium Part, Warped Wart Block
smoothnessG = color.g * 0.5;
smoothnessD = smoothnessG;
#ifdef COATED_TEXTURES
noiseFactor = 0.77;
#endif
}
}
else /*if (mat < 10152)*/ { // Crimson Nylium, Nether Wart Block
if (color.g == color.b && color.g > 0.0001 && color.r < 0.522) { // Crimson Nylium:Netherrack Part
#include "/lib/materials/specificMaterials/terrain/netherrack.glsl"
} else { // Crimson Nylium:Nylium Part, Nether Wart Block
smoothnessG = color.r * 0.5;
smoothnessD = smoothnessG;
#ifdef COATED_TEXTURES
noiseFactor = 0.77;
#endif
}
}
} else {
if (mat < 10156) { // Cobblestone+, Mossy Cobblestone+, Furnace:Unlit, Smoker:Unlit, Blast Furnace:Unlit, Moss Block+, Lodestone, Piston, Sticky Piston, Dispenser, Dropper
#include "/lib/materials/specificMaterials/terrain/cobblestone.glsl"
}
else /*if (mat < 10160)*/ { // Oak Planks++:Clean Variants, Bookshelf, Crafting Table, Tripwire Hook
#include "/lib/materials/specificMaterials/planks/oakPlanks.glsl"
}
}
}
} else {
if (mat < 10176) {
if (mat < 10168) {
if (mat < 10164) { // Oak Log, Oak Wood
if (color.g > 0.48 ||
CheckForColor(color.rgb, vec3(126, 98, 55)) ||
CheckForColor(color.rgb, vec3(150, 116, 65))) { // Oak Log:Clean Part
#include "/lib/materials/specificMaterials/planks/oakPlanks.glsl"
} else { // Oak Log:Wood Part, Oak Wood
#include "/lib/materials/specificMaterials/terrain/oakWood.glsl"
}
}
else /*if (mat < 10168)*/ { // Spruce Planks++:Clean Variants
#include "/lib/materials/specificMaterials/planks/sprucePlanks.glsl"
}
} else {
if (mat < 10172) { // Spruce Log, Spruce Wood
if (color.g > 0.25) { // Spruce Log:Clean Part
#include "/lib/materials/specificMaterials/planks/sprucePlanks.glsl"
} else { // Spruce Log:Wood Part, Spruce Wood
smoothnessG = pow2(color.g) * 2.5;
smoothnessG = min1(smoothnessG);
smoothnessD = smoothnessG;
}
}
else /*if (mat < 10176)*/ { // Birch Planks++:Clean Variants, Scaffolding, Loom
#include "/lib/materials/specificMaterials/planks/birchPlanks.glsl"
}
}
} else {
if (mat < 10184) {
if (mat < 10180) { // Birch Log, Birch Wood
if (color.r - color.b > 0.15) { // Birch Log:Clean Part
#include "/lib/materials/specificMaterials/planks/birchPlanks.glsl"
} else { // Birch Log:Wood Part, Birch Wood
smoothnessG = pow2(color.g) * 0.25;
smoothnessD = smoothnessG;
#ifdef COATED_TEXTURES
noiseFactor = 1.25;
#endif
}
}
else /*if (mat < 10184)*/ { // Jungle Planks++:Clean Variants, Composter
#include "/lib/materials/specificMaterials/planks/junglePlanks.glsl"
}
} else {
if (mat < 10188) { // Jungle Log, Jungle Wood
if (color.g > 0.405) { // Jungle Log:Clean Part
#include "/lib/materials/specificMaterials/planks/junglePlanks.glsl"
} else { // Jungle Log:Wood Part, Jungle Wood
smoothnessG = pow2(pow2(color.g)) * 5.0;
smoothnessG = min1(smoothnessG);
smoothnessD = smoothnessG;
#ifdef COATED_TEXTURES
noiseFactor = 0.77;
#endif
}
}
else /*if (mat < 10192)*/ { // Acacia Planks++:Clean Variants
#include "/lib/materials/specificMaterials/planks/acaciaPlanks.glsl"
}
}
}
}
} else {
if (mat < 10224) {
if (mat < 10208) {
if (mat < 10200) {
if (mat < 10196) { // Acacia Log, Acacia Wood
if (color.r - color.b > 0.2) { // Acacia Log:Clean Part
#include "/lib/materials/specificMaterials/planks/acaciaPlanks.glsl"
} else { // Acacia Log:Wood Part, Acacia Wood
smoothnessG = pow2(color.b) * 1.3;
smoothnessG = min1(smoothnessG);
smoothnessD = smoothnessG;
#ifdef COATED_TEXTURES
noiseFactor = 0.66;
#endif
}
}
else /*if (mat < 10200)*/ { // Dark Oak Planks++:Clean Variants
#include "/lib/materials/specificMaterials/planks/darkOakPlanks.glsl"
}
} else {
if (mat < 10204) { // Dark Oak Log, Dark Oak Wood
if (color.r - color.g > 0.08 ||
CheckForColor(color.rgb, vec3(48, 30, 14))) { // Dark Oak Log:Clean Part
#include "/lib/materials/specificMaterials/planks/darkOakPlanks.glsl"
} else { // Dark Oak Log:Wood Part, Dark Oak Wood
smoothnessG = color.r * 0.4;
smoothnessD = smoothnessG;
}
}
else /*if (mat < 10208)*/ { // Mangrove Planks++:Clean Variants
#include "/lib/materials/specificMaterials/planks/mangrovePlanks.glsl"
}
}
} else {
if (mat < 10216) {
if (mat < 10212) { // Mangrove Log, Mangrove Wood
if (color.r - color.g > 0.2) { // Mangrove Log:Clean Part
#include "/lib/materials/specificMaterials/planks/mangrovePlanks.glsl"
} else { // Mangrove Log:Wood Part, Mangrove Wood
smoothnessG = pow2(color.r) * 0.6;
smoothnessD = smoothnessG;
}
}
else /*if (mat < 10216)*/ { // Crimson Planks++:Clean Variants
#include "/lib/materials/specificMaterials/planks/crimsonPlanks.glsl"
}
} else {
if (mat < 10220) { // Crimson Stem, Crimson Hyphae
if (color.r / color.b > 2.5) { // Emissive Part
emission = pow2(color.r) * 6.5;
color.gb *= 0.5;
} else { // Flat Part
#include "/lib/materials/specificMaterials/planks/crimsonPlanks.glsl"
}
}
else /*if (mat < 10224)*/ { // Warped Planks++:Clean Variants
#include "/lib/materials/specificMaterials/planks/warpedPlanks.glsl"
}
}
}
} else {
if (mat < 10240) {
if (mat < 10232) {
if (mat < 10228) { // Warped Stem, Warped Hyphae
//if (color.r < 0.12 || color.r + color.g * 3.0 < 3.4 * color.b) { // Emissive Part
if (color.r < 0.37 * color.b || color.r + color.g * 3.0 < 3.4 * color.b) { // Emissive Part
emission = pow2(color.g + 0.2 * color.b) * 4.5 + 0.15;
} else { // Flat Part
#include "/lib/materials/specificMaterials/planks/warpedPlanks.glsl"
}
}
else /*if (mat < 10232)*/ { // Bedrock
smoothnessG = color.b * 0.2 + 0.1;
smoothnessD = smoothnessG;
#ifdef COATED_TEXTURES
noiseFactor = 1.5;
#endif
}
} else {
if (mat < 10236) { // Sand, Suspicious Sand
smoothnessG = pow(color.g, 16.0) * 2.0;
smoothnessG = min1(smoothnessG);
smoothnessD = smoothnessG * 0.7;
highlightMult = 2.0;
#ifdef GBUFFERS_TERRAIN
DoBrightBlockTweaks(color.rgb, 0.5, shadowMult, highlightMult);
DoOceanBlockTweaks(smoothnessD);
#endif
#if RAIN_PUDDLES >= 1
noPuddles = 1.0;
#endif
}
else /*if (mat < 10240)*/ { // Red Sand
smoothnessG = pow(color.r * 1.08, 16.0) * 2.0;
smoothnessG = min1(smoothnessG);
smoothnessD = smoothnessG * 0.7;
highlightMult = 2.0;
#ifdef COATED_TEXTURES
noiseFactor = 0.77;
#endif
#if RAIN_PUDDLES >= 1
noPuddles = 1.0;
#endif
}
}
} else {
if (mat < 10248) {
if (mat < 10244) { // Sandstone+
highlightMult = 2.0;
smoothnessG = pow2(pow2(color.g)) * 0.5;
smoothnessG = min1(smoothnessG);
smoothnessD = smoothnessG * 0.7;
#ifdef GBUFFERS_TERRAIN
DoBrightBlockTweaks(color.rgb, 0.5, shadowMult, highlightMult);
#endif
#ifdef COATED_TEXTURES
noiseFactor = 0.77;
#endif
}
else /*if (mat < 10248)*/ { // Red Sandstone+
highlightMult = 2.0;
smoothnessG = pow2(pow2(color.r * 1.05)) * 0.5;
smoothnessG = min1(smoothnessG);
smoothnessD = smoothnessG * 0.7;
#ifdef COATED_TEXTURES
noiseFactor = 0.5;
#endif
}
} else {
if (mat < 10252) { // Netherite Block
#include "/lib/materials/specificMaterials/terrain/netheriteBlock.glsl"
}
else /*if (mat < 10256)*/ { // Ancient Debris
smoothnessG = pow2(color.r);
smoothnessG = min1(smoothnessG);
smoothnessD = smoothnessG;
#ifdef COATED_TEXTURES
noiseFactor = 1.5;
#endif
#ifdef GLOWING_ORE_ANCIENTDEBRIS
emission = min(pow2(color.g * 6.0), 8.0);
color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT)));
emission *= GLOWING_ORE_MULT;
#endif
}
}
}
}
}
}
} else {
if (mat < 10384) {
if (mat < 10320) {
if (mat < 10288) {
if (mat < 10272) {
if (mat < 10264) {
if (mat < 10260) { // Iron Bars
noSmoothLighting = true;
#include "/lib/materials/specificMaterials/terrain/ironBlock.glsl"
}
else /*if (mat < 10264)*/ { // Iron Door, Iron Trapdoor
noSmoothLighting = true;
#include "/lib/materials/specificMaterials/terrain/ironBlock.glsl"
}
} else {
if (mat < 10268) { // Iron Block, Heavy Weighted Pressure Plate
#include "/lib/materials/specificMaterials/terrain/ironBlock.glsl"
color.rgb *= max(color.r, 0.85) * 0.9;
}
else /*if (mat < 10272)*/ { // Raw Iron Block
#include "/lib/materials/specificMaterials/terrain/rawIronBlock.glsl"
}
}
} else {
if (mat < 10280) {
if (mat < 10276) { // Iron Ore
if (color.r != color.g) { // Iron Ore:Raw Iron Part
#include "/lib/materials/specificMaterials/terrain/rawIronBlock.glsl"
#ifdef GLOWING_ORE_IRON
if (color.r - color.b > 0.15) {
emission = pow1_5(color.r) * 1.5;
color.rgb *= pow(color.rgb, vec3(0.5 * min1(GLOWING_ORE_MULT)));
emission *= GLOWING_ORE_MULT;
}
#endif
} else { // Iron Ore:Stone Part
#include "/lib/materials/specificMaterials/terrain/stone.glsl"
}
}
else /*if (mat < 10280)*/ { // Deepslate Iron Ore
if (color.r != color.g) { // Deepslate Iron Ore:Raw Iron Part
#include "/lib/materials/specificMaterials/terrain/rawIronBlock.glsl"
#ifdef GLOWING_ORE_IRON
if (color.r - color.b > 0.15) {
emission = pow1_5(color.r) * 1.5;
color.rgb *= pow(color.rgb, vec3(0.5 * min1(GLOWING_ORE_MULT)));
emission *= GLOWING_ORE_MULT;
}
#endif
} else { // Deepslate Iron Ore:Deepslate Part
#include "/lib/materials/specificMaterials/terrain/deepslate.glsl"
}
}
} else {
if (mat < 10284) { // Raw Copper Block
#include "/lib/materials/specificMaterials/terrain/rawCopperBlock.glsl"
}
else /*if (mat < 10288)*/ { // Copper Ore
if (color.r != color.g) { // Copper Ore:Raw Copper Part
#include "/lib/materials/specificMaterials/terrain/rawCopperBlock.glsl"
#ifdef GLOWING_ORE_COPPER
if (max(color.r * 0.5, color.g) - color.b > 0.05) {
emission = color.r * 2.0 + 0.7;
color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT)));
emission *= GLOWING_ORE_MULT;
}
#endif
} else { // Copper Ore:Stone Part
#include "/lib/materials/specificMaterials/terrain/stone.glsl"
}
}
}
}
} else {
if (mat < 10304) {
if (mat < 10296) {
if (mat < 10292) { // Deepslate Copper Ore
if (color.r != color.g) { // Deepslate Copper Ore:Raw Copper Part
#include "/lib/materials/specificMaterials/terrain/rawCopperBlock.glsl"
#ifdef GLOWING_ORE_COPPER
if (max(color.r * 0.5, color.g) - color.b > 0.05) {
emission = color.r * 2.0 + 0.7;
color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT)));
emission *= GLOWING_ORE_MULT;
}
#endif
} else { // Deepslate Copper Ore:Deepslate Part
#include "/lib/materials/specificMaterials/terrain/deepslate.glsl"
}
}
else /*if (mat < 10296)*/ { // Copper Block++:All Non-raw Variants
#include "/lib/materials/specificMaterials/terrain/copperBlock.glsl"
}
} else {
if (mat < 10300) { // Raw Gold Block
#include "/lib/materials/specificMaterials/terrain/rawGoldBlock.glsl"
}
else /*if (mat < 10304)*/ { // Gold Ore
if (color.r != color.g || color.r > 0.99) { // Gold Ore:Raw Gold Part
#include "/lib/materials/specificMaterials/terrain/rawGoldBlock.glsl"
#ifdef GLOWING_ORE_GOLD
if (color.g - color.b > 0.15) {
emission = color.r + 1.0;
color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT)));
emission *= GLOWING_ORE_MULT;
}
#endif
} else { // Gold Ore:Stone Part
#include "/lib/materials/specificMaterials/terrain/stone.glsl"
}
}
}
} else {
if (mat < 10312) {
if (mat < 10308) { // Deepslate Gold Ore
if (color.r != color.g || color.r > 0.99) { // Deepslate Gold Ore:Raw Gold Part
#include "/lib/materials/specificMaterials/terrain/rawGoldBlock.glsl"
#ifdef GLOWING_ORE_GOLD
if (color.g - color.b > 0.15) {
emission = color.r + 1.0;
color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT)));
emission *= GLOWING_ORE_MULT;
}
#endif
} else { // Deepslate Gold Ore:Deepslate Part
#include "/lib/materials/specificMaterials/terrain/deepslate.glsl"
}
}
else /*if (mat < 10312)*/ { // Nether Gold Ore
if (color.g != color.b) { // Nether Gold Ore:Raw Gold Part
#include "/lib/materials/specificMaterials/terrain/rawGoldBlock.glsl"
#ifdef GLOWING_ORE_NETHERGOLD
emission = color.g * 1.5;
emission *= GLOWING_ORE_MULT;
#endif
} else { // Nether Gold Ore:Netherrack Part
#include "/lib/materials/specificMaterials/terrain/netherrack.glsl"
}
}
} else {
if (mat < 10316) { // Gold Block, Light Weighted Pressure Plate
#include "/lib/materials/specificMaterials/terrain/goldBlock.glsl"
}
else /*if (mat < 10320)*/ { // Diamond Block
#include "/lib/materials/specificMaterials/terrain/diamondBlock.glsl"
}
}
}
}
} else {
if (mat < 10352) {
if (mat < 10336) {
if (mat < 10328) {
if (mat < 10324) { // Diamond Ore
if (color.b / color.r > 1.5 || color.b > 0.8) { // Diamond Ore:Diamond Part
#include "/lib/materials/specificMaterials/terrain/diamondBlock.glsl"
#ifdef GLOWING_ORE_DIAMOND
emission = color.g + 1.5;
color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT)));
emission *= GLOWING_ORE_MULT;
#endif
} else { // Diamond Ore:Stone Part, Diamond Ore:StoneToDiamond part
#include "/lib/materials/specificMaterials/terrain/stone.glsl"
}
}
else /*if (mat < 10328)*/ { // Deepslate Diamond Ore
if (color.b / color.r > 1.5 || color.b > 0.8) { // Deepslate Diamond Ore:Diamond Part
#include "/lib/materials/specificMaterials/terrain/diamondBlock.glsl"
#ifdef GLOWING_ORE_DIAMOND
emission = color.g + 1.5;
color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT)));
emission *= GLOWING_ORE_MULT;
#endif
} else { // Deepslate Diamond Ore:Deepslate Part, Deepslate Diamond Ore:DeepslateToDiamond part
#include "/lib/materials/specificMaterials/terrain/deepslate.glsl"
}
}
} else {
if (mat < 10332) { // Amethyst Block, Budding Amethyst
materialMask = OSIEBCA; // Intense Fresnel
float factor = pow2(color.r);
smoothnessG = 0.8 - factor * 0.3;
highlightMult = factor * 3.0;
smoothnessD = factor;
#if GLOWING_AMETHYST >= 2
emission = dot(color.rgb, color.rgb) * 0.3;
#endif
color.rgb *= 0.7 + 0.3 * GetLuminance(color.rgb);
#ifdef COATED_TEXTURES
noiseFactor = 0.66;
#endif
}
else /*if (mat < 10336)*/ { // Amethyst Cluster, Amethyst Buds
materialMask = OSIEBCA; // Intense Fresnel
float factor = pow2(color.r);
smoothnessG = 0.8 - factor * 0.3;
highlightMult = factor * 3.0;
smoothnessD = factor;
noSmoothLighting = true;
lmCoordM.x *= 0.85;
#if GLOWING_AMETHYST >= 1 && defined GBUFFERS_TERRAIN
vec3 worldPos = playerPos.xyz + cameraPosition.xyz;
vec3 blockPos = abs(fract(worldPos) - vec3(0.5));
float maxBlockPos = max(blockPos.x, max(blockPos.y, blockPos.z));
emission = pow2(max0(1.0 - maxBlockPos * 1.85) * color.g) * 7.0;
if (CheckForColor(color.rgb, vec3(254, 203, 230)))
emission = pow(emission, max0(1.0 - 0.2 * max0(emission - 1.0)));
color.g *= 1.0 - emission * 0.07;
emission *= 1.3;
#endif
#ifdef COATED_TEXTURES
noiseFactor = 0.66;
#endif
}
}
} else {
if (mat < 10344) {
if (mat < 10340) { // Emerald Block
#include "/lib/materials/specificMaterials/terrain/emeraldBlock.glsl"
}
else /*if (mat < 10344)*/ { // Emerald Ore
float dif = GetMaxColorDif(color.rgb);
if (dif > 0.4 || color.b > 0.85) { // Emerald Ore:Emerald Part
#include "/lib/materials/specificMaterials/terrain/emeraldBlock.glsl"
#ifdef GLOWING_ORE_EMERALD
emission = 2.0;
color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT)));
emission *= GLOWING_ORE_MULT;
#endif
} else { // Emerald Ore:Stone Part
#include "/lib/materials/specificMaterials/terrain/stone.glsl"
}
}
} else {
if (mat < 10348) { // Deepslate Emerald Ore
float dif = GetMaxColorDif(color.rgb);
if (dif > 0.4 || color.b > 0.85) { // Deepslate Emerald Ore:Emerald Part
#include "/lib/materials/specificMaterials/terrain/emeraldBlock.glsl"
#ifdef GLOWING_ORE_EMERALD
emission = 2.0;
color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT)));
emission *= GLOWING_ORE_MULT;
#endif
} else { // Deepslate Emerald Ore:Deepslate Part
#include "/lib/materials/specificMaterials/terrain/deepslate.glsl"
}
}
else /*if (mat < 10352)*/ { // Azalea, Flowering Azalea
subsurfaceMode = 2;
shadowMult = vec3(0.85);
}
}
}
} else {
if (mat < 10368) {
if (mat < 10360) {
if (mat < 10356) { // Lapis Block
#include "/lib/materials/specificMaterials/terrain/lapisBlock.glsl"
#ifdef EMISSIVE_LAPIS_BLOCK
emission = pow2(dot(color.rgb, color.rgb)) * 10.0;
#endif
}
else /*if (mat < 10360)*/ { // Lapis Ore
if (color.r != color.g) { // Lapis Ore:Lapis Part
#include "/lib/materials/specificMaterials/terrain/lapisBlock.glsl"
smoothnessG *= 0.5;
smoothnessD *= 0.5;
#ifdef GLOWING_ORE_LAPIS
if (color.b - color.r > 0.2) {
emission = 2.0;
color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT)));
emission *= GLOWING_ORE_MULT;
}
#endif
} else { // Lapis Ore:Stone Part
#include "/lib/materials/specificMaterials/terrain/stone.glsl"
}
}
} else {
if (mat < 10364) { // Deepslate Lapis Ore
if (color.r != color.g) { // Deepslate Lapis Ore:Lapis Part
#include "/lib/materials/specificMaterials/terrain/lapisBlock.glsl"
smoothnessG *= 0.5;
smoothnessD *= 0.5;
#ifdef GLOWING_ORE_LAPIS
if (color.b - color.r > 0.2) {
emission = 2.0;
color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT)));
emission *= GLOWING_ORE_MULT;
}
#endif
} else { // Deepslate Lapis Ore:Deepslate Part
#include "/lib/materials/specificMaterials/terrain/deepslate.glsl"
}
}
else /*if (mat < 10368)*/ { // Quartz Block++
#include "/lib/materials/specificMaterials/terrain/quartzBlock.glsl"
}
}
} else {
if (mat < 10376) {
if (mat < 10372) { // Nether Quartz Ore
if (color.g != color.b) { // Nether Quartz Ore:Quartz Part
#include "/lib/materials/specificMaterials/terrain/quartzBlock.glsl"
#ifdef GLOWING_ORE_NETHERQUARTZ
emission = pow2(color.b * 1.6);
emission *= GLOWING_ORE_MULT;
#endif
} else { // Nether Quartz Ore:Netherrack Part
#include "/lib/materials/specificMaterials/terrain/netherrack.glsl"
}
}
else /*if (mat < 10376)*/ { // Obsidian
#include "/lib/materials/specificMaterials/terrain/obsidian.glsl"
}
} else {
if (mat < 10380) { // Purpur Block+
highlightMult = 2.0;
smoothnessG = pow2(color.r) * 0.6;
smoothnessG = min1(smoothnessG);
smoothnessD = smoothnessG;
#ifdef COATED_TEXTURES
noiseFactor = 0.5;
#endif
}
else /*if (mat < 10384)*/ { // Snow, Snow Block, Powder Snow
#include "/lib/materials/specificMaterials/terrain/snow.glsl"
}
}
}
}
}
} else {
if (mat < 10448) {
if (mat < 10416) {
if (mat < 10400) {
if (mat < 10392) {
if (mat < 10388) { // Packed Ice
materialMask = OSIEBCA; // Intense Fresnel
float factor = pow2(color.g);
float factor2 = pow2(factor);
smoothnessG = 1.0 - 0.5 * factor;
highlightMult = factor2 * 3.5;
smoothnessD = factor;
#ifdef COATED_TEXTURES
noiseFactor = 0.33;
#endif
}
else /*if (mat < 10392)*/ { // Blue Ice
materialMask = OSIEBCA; // Intense Fresnel
float factor = min1(pow2(color.g) * 1.38);
float factor2 = pow2(factor);
smoothnessG = 1.0 - 0.5 * factor;
highlightMult = factor2 * 3.5;
smoothnessD = pow1_5(color.g);
#ifdef COATED_TEXTURES
noiseFactor = 0.33;
#endif
}
} else {
if (mat < 10396) { // Pumpkin, Carved Pumpkin
#include "/lib/materials/specificMaterials/terrain/pumpkin.glsl"
}
else /*if (mat < 10400)*/ { // Jack o'Lantern
#include "/lib/materials/specificMaterials/terrain/pumpkin.glsl"
noSmoothLighting = true, noDirectionalShading = true;
lmCoordM.y = 0.0;
lmCoordM.x = 1.0;
#if MC_VERSION >= 11300
if (color.b > 0.28 && color.r > 0.9) {
float factor = pow2(color.g);
emission = pow2(factor) * factor * 5.0;
}
#else
if (color.b < 0.4)
emission = clamp01(color.g * 1.3 - color.r) * 5.0;
#endif
}
}
} else {
if (mat < 10408) {
if (mat < 10404) { // Sea Pickle:Not Waterlogged
noSmoothLighting = true;
}
else /*if (mat < 10408)*/ { // Sea Pickle:Waterlogged
noSmoothLighting = true;
if (color.b > 0.5) { // Sea Pickle:Emissive Part
#ifdef GBUFFERS_TERRAIN
color.g *= 1.1;
emission = 5.0;
#endif
}
}
} else {
if (mat < 10412) { // Basalt+
smoothnessG = color.r * 0.35;
smoothnessD = smoothnessG;
#ifdef COATED_TEXTURES
noiseFactor = 0.77;
#endif
}
else /*if (mat < 10416)*/ { // Glowstone
noSmoothLighting = true; noDirectionalShading = true;
lmCoordM = vec2(0.9, 0.0);
emission = max0(color.g - 0.3) * 4.6;
color.rg += emission * vec2(0.15, 0.05);
}
}
}
} else {
if (mat < 10432) {
if (mat < 10424) {
if (mat < 10420) { // Nether Bricks+
float factor = smoothstep1(min1(color.r * 1.5));
factor = factor > 0.12 ? factor : factor * 0.5;
smoothnessG = factor;
smoothnessD = factor;
}
else /*if (mat < 10424)*/ { // Red Nether Bricks+
float factor = color.r * 0.9;
factor = color.r > 0.215 ? factor : factor * 0.25;
smoothnessG = factor;
smoothnessD = factor;
#ifdef COATED_TEXTURES
noiseFactor = 0.77;
#endif
}
} else {
if (mat < 10428) { // Melon
smoothnessG = color.r * 0.75;
smoothnessD = color.r * 0.5;
#ifdef COATED_TEXTURES
noiseFactor = 0.66;
#endif
}
else /*if (mat < 10432)*/ { // End Stone++,
#include "/lib/materials/specificMaterials/terrain/endStone.glsl"
}
}
} else {
if (mat < 10440) {
if (mat < 10436) { // Terracotta+
smoothnessG = 0.25;
highlightMult = 1.5;
smoothnessD = 0.17;
#ifdef COATED_TEXTURES
noiseFactor = 0.33;
#endif
}
else /*if (mat < 10440)*/ { // Glazed Terracotta+
smoothnessG = 0.75;
smoothnessD = 0.35;
#ifdef COATED_TEXTURES
noiseFactor = 0.5;
#endif
}
} else {
if (mat < 10444) { // Prismarine+, Prismarine Bricks+
smoothnessG = pow2(color.g) * 0.8;
highlightMult = 1.5;
smoothnessD = smoothnessG;
#ifdef COATED_TEXTURES
noiseFactor = 0.66;
#endif
}
else /*if (mat < 10448)*/ { // Dark Prismarine+
smoothnessG = min1(pow2(color.g) * 2.0);
highlightMult = 1.5;
smoothnessD = smoothnessG;
#ifdef COATED_TEXTURES
noiseFactor = 0.77;
#endif
}
}
}
}
} else {
if (mat < 10480) {
if (mat < 10464) {
if (mat < 10456) {
if (mat < 10452) { // Sea Lantern
noSmoothLighting = true; noDirectionalShading = true;
lmCoordM.x = 0.85;
smoothnessD = min1(max0(0.5 - color.r) * 2.0);
smoothnessG = color.g;
float blockRes = absMidCoordPos.x * atlasSize.x;
vec2 signMidCoordPosM = (floor((signMidCoordPos + 1.0) * blockRes) + 0.5) / blockRes - 1.0;
float dotsignMidCoordPos = dot(signMidCoordPosM, signMidCoordPosM);
float lBlockPosM = pow2(max0(1.0 - 1.7 * pow2(pow2(dotsignMidCoordPos))));
emission = pow2(color.b) * 1.6 + 2.2 * lBlockPosM;
emission *= 0.4 + max0(0.6 - 0.006 * lViewPos);
color.rb *= vec2(1.13, 1.1);
#ifdef COATED_TEXTURES
noiseFactor = 0.5;
#endif
}
else /*if (mat < 10456)*/ { // Magma Block
noSmoothLighting = true; noDirectionalShading = true;
lmCoordM = vec2(0.75, 0.0);
if (color.g > 0.22) { // Emissive Part
emission = pow2(pow2(color.r)) * 4.0;
#if RAIN_PUDDLES >= 1
noPuddles = color.g * 4.0;
#endif
color.gb *= max(2.0 - 11.0 * pow2(color.g), 0.5);
maRecolor = vec3(emission * 0.075);
} else { // Netherrack Part
#include "/lib/materials/specificMaterials/terrain/netherrack.glsl"
emission = 0.2;
}
}
} else {
if (mat < 10460) { // Command Block+
color = texture2DLod(tex, texCoord, 0);
vec2 coord = signMidCoordPos;
float blockRes = absMidCoordPos.x * atlasSize.x;
vec2 absCoord = abs(coord);
float maxCoord = max(absCoord.x, absCoord.y);
float dif = GetMaxColorDif(color.rgb);
if ( // This mess exists because Iris' midCoord is slightly inaccurate
dif > 0.1 && maxCoord < 0.375 &&
!CheckForColor(color.rgb, vec3(111, 73, 43)) &&
!CheckForColor(color.rgb, vec3(207, 166, 139)) &&
!CheckForColor(color.rgb, vec3(155, 139, 207)) &&
!CheckForColor(color.rgb, vec3(161, 195, 180)) &&
!CheckForColor(color.rgb, vec3(201, 143, 107)) &&
!CheckForColor(color.rgb, vec3(135, 121, 181)) &&
!CheckForColor(color.rgb, vec3(131, 181, 145))
) {
emission = 6.0;
color.rgb *= color.rgb;
highlightMult = 2.0;
maRecolor = vec3(0.5);
} else {
smoothnessG = dot(color.rgb, color.rgb) * 0.33;
smoothnessD = smoothnessG;
}
}
else /*if (mat < 10464)*/ { // Concrete+ except Lime
smoothnessG = 0.4;
highlightMult = 1.5;
smoothnessD = 0.3;
#ifdef COATED_TEXTURES
noiseFactor = 0.2;
#endif
}
}
} else {
if (mat < 10472) {
if (mat < 10468) { // Concrete Powder+
smoothnessG = 0.2;
smoothnessD = 0.1;
#ifdef COATED_TEXTURES
noiseFactor = 0.5;
#endif
}
else /*if (mat < 10472)*/ { // Coral Block+
#include "/lib/materials/specificMaterials/terrain/coral.glsl"
}
} else {
if (mat < 10476) { // Coral Fan+, Coral+
noSmoothLighting = true;
#include "/lib/materials/specificMaterials/terrain/coral.glsl"
}
else /*if (mat < 10480)*/ { // Crying Obsidian
#include "/lib/materials/specificMaterials/terrain/cryingObsidian.glsl"
#ifdef SNOWY_WORLD
snowFactor = 0.0;
#endif
}
}
}
} else {
if (mat < 10496) {
if (mat < 10488) {
if (mat < 10484) { // Blackstone++
#include "/lib/materials/specificMaterials/terrain/blackstone.glsl"
}
else /*if (mat < 10488)*/ { // Gilded Blackstone
if (color.r > color.b * 3.0) { // Gilded Blackstone:Gilded Part
#include "/lib/materials/specificMaterials/terrain/rawGoldBlock.glsl"
#ifdef GLOWING_ORE_GILDEDBLACKSTONE
emission = color.g * 1.5;
emission *= GLOWING_ORE_MULT;
#endif
} else { // Gilded Blackstone:Blackstone Part
#include "/lib/materials/specificMaterials/terrain/blackstone.glsl"
}
}
} else {
if (mat < 10492) { // Lily Pad
noSmoothLighting = true;
subsurfaceMode = 2;
#if defined COATED_TEXTURES && defined GBUFFERS_TERRAIN
doTileRandomisation = false;
#endif
#ifdef IPBR
float factor = min1(color.g * 2.0);
smoothnessG = factor * 0.5;
highlightMult = factor;
#endif
}
else /*if (mat < 10496)*/ { // Dirt Path
#include "/lib/materials/specificMaterials/terrain/dirt.glsl"
#ifdef GBUFFERS_TERRAIN
glColor.a = sqrt(glColor.a);
#endif
}
}
} else {
if (mat < 10504) {
if (mat < 10500) { // Torch
noDirectionalShading = true;
if (color.r > 0.95) {
noSmoothLighting = true;
lmCoordM.x = 1.0;
emission = GetLuminance(color.rgb) * 4.1;
color.r *= 1.4;
color.b *= 0.5;
} else
#ifdef GBUFFERS_TERRAIN
if (abs(NdotU) < 0.5) {
lmCoordM.x = min1(0.7 + 0.3 * pow2(1.0 - signMidCoordPos.y));
}
#else
noSmoothLighting = false;
lmCoordM.x = 0.9;
#endif
emission += 0.0001; // No light reducing during noon
}
else /*if (mat < 10504)*/ { // End Rod
noDirectionalShading = true;
#ifdef GBUFFERS_TERRAIN
vec3 fractPos = abs(fract(playerPos + cameraPosition) - 0.5);
float maxCoord = max(fractPos.x, max(fractPos.y, fractPos.z));
lmCoordM.x = maxCoord < 0.4376 ? 0.97 : 0.8;
#else
lmCoordM.x = 0.9;
#endif
float dotColor = dot(color.rgb, color.rgb);
if (dotColor > 2.0) {
emission = 2.8;
emission *= 0.4 + max0(0.6 - 0.006 * lViewPos);
color.rgb = pow2(color.rgb);
color.g *= 0.95;
}
}
} else {
if (mat < 10508) { // Chorus Plant
}
else /*if (mat < 10512)*/ { // Chorus Flower:Alive
float dotColor = dot(color.rgb, color.rgb);
if (dotColor > 1.0)
emission = pow2(pow2(pow2(dotColor * 0.33))) + 0.2 * dotColor;
}
}
}
}
}
}
}
} else {
if (mat < 10768) {
if (mat < 10640) {
if (mat < 10576) {
if (mat < 10544) {
if (mat < 10528) {
if (mat < 10520) {
if (mat < 10516) { // Chorus Flower:Dead
if (color.b < color.g) {
emission = 10.7;
color.rgb *= color.rgb * dot(color.rgb, color.rgb) * vec3(0.4, 0.35, 0.4);
}
}
else /*if (mat < 10520)*/ { // Furnace:Lit
lmCoordM.x *= 0.95;
#include "/lib/materials/specificMaterials/terrain/cobblestone.glsl"
float dotColor = dot(color.rgb, color.rgb);
emission = 2.5 * dotColor * max0(pow2(pow2(pow2(color.r))) - color.b) + pow(dotColor * 0.35, 32.0);
color.r *= 1.0 + 0.1 * emission;
}
} else {
if (mat < 10524) { // Cactus
float factor = sqrt1(color.r);
smoothnessG = factor * 0.5;
highlightMult = factor;
}
else /*if (mat < 10528)*/ { // Note Block, Jukebox
float factor = color.r * 0.5;
smoothnessG = factor;
smoothnessD = factor;
#ifdef COATED_TEXTURES
noiseFactor = 0.66;
#endif
}
}
} else {
if (mat < 10536) {
if (mat < 10532) { // Soul Torch
noSmoothLighting = true; noDirectionalShading = true;
lmCoordM.x = min(lmCoordM.x * 0.9, 0.77);
if (color.b > 0.6) {
emission = 2.7;
color.rgb = pow1_5(color.rgb);
color.r = min1(color.r + 0.1);
}
emission += 0.0001; // No light reducing during noon
#ifdef SNOWY_WORLD
snowFactor = 0.0;
#endif
}
else /*if (mat < 10536)*/ { // Brown Mushroom Block
if (color.r > color.g && color.g > color.b && color.b > 0.37) {
#include "/lib/materials/specificMaterials/terrain/cobblestone.glsl"
} else {
float factor = pow2(color.r) * color.r * 0.8;
highlightMult = 1.5;
smoothnessG = factor;
smoothnessD = factor * 0.9;
#ifdef COATED_TEXTURES
noiseFactor = 0.33;
#endif
}
}
} else {
if (mat < 10540) { // Red Mushroom Block
if (color.r > color.g && color.g > color.b && color.b > 0.37) {
#include "/lib/materials/specificMaterials/terrain/cobblestone.glsl"
} else {
float factor = min1(pow2(color.g) + 0.25);
highlightMult = 1.5;
smoothnessG = factor;
smoothnessD = factor * 0.7;
#ifdef COATED_TEXTURES
noiseFactor = 0.33;
#endif
}
}
else /*if (mat < 10544)*/ { // Mushroom Stem,
if (color.r > color.g && color.g > color.b && color.b < 0.6) {
#include "/lib/materials/specificMaterials/terrain/cobblestone.glsl"
} else {
float factor = pow2(pow2(color.g));
highlightMult = 1.5;
smoothnessG = factor;
smoothnessD = factor * 0.5;
#ifdef COATED_TEXTURES
noiseFactor = 0.33;
#endif
}
}
}
}
} else {
if (mat < 10560) {
if (mat < 10552) {
if (mat < 10548) { // Glow Lichen
noSmoothLighting = true;
#if GLOWING_LICHEN > 0
float dotColor = dot(color.rgb, color.rgb);
emission = min(pow2(pow2(dotColor) * dotColor) * 1.4 + dotColor * 0.9, 6.0);
emission = mix(emission, dotColor * 1.5, min1(lViewPos / 96.0)); // Less noise in the distance
#if GLOWING_LICHEN == 1
float skyLightFactor = pow2(1.0 - min1(lmCoord.y * 2.9));
emission *= skyLightFactor;
color.r *= 1.0 + 0.15 * skyLightFactor;
#else
color.r *= 1.15;
#endif
#endif
}
else /*if (mat < 10552)*/ { // Enchanting Table:Base
float dotColor = dot(color.rgb, color.rgb);
if (dotColor < 0.19 && color.r < color.b) {
#include "/lib/materials/specificMaterials/terrain/obsidian.glsl"
} else if (color.g >= color.r) {
#include "/lib/materials/specificMaterials/terrain/diamondBlock.glsl"
} else {
smoothnessG = color.r * 0.3 + 0.1;
}
#ifdef SNOWY_WORLD
snowFactor = 0.0;
#endif
}
} else {
if (mat < 10556) { // End Portal Frame:Inactive
noSmoothLighting = true;
if (abs(color.r - color.g - 0.05) < 0.10) {
#include "/lib/materials/specificMaterials/terrain/endStone.glsl"
} else {
#include "/lib/materials/specificMaterials/terrain/endPortalFrame.glsl"
}
#ifdef SNOWY_WORLD
snowFactor = 0.0;
#endif
}
else /*if (mat < 10560)*/ { // End Portal Frame:Active
noSmoothLighting = true;
if (abs(color.r - color.g - 0.05) < 0.10) {
#include "/lib/materials/specificMaterials/terrain/endStone.glsl"
} else {
#include "/lib/materials/specificMaterials/terrain/endPortalFrame.glsl"
vec2 absCoord = abs(fract(playerPos.xz + cameraPosition.xz) - 0.5);
float maxCoord = max(absCoord.x, absCoord.y);
if (maxCoord < 0.2505) { // End Portal Frame:Eye of Ender
smoothnessG = 0.5;
smoothnessD = 0.5;
emission = pow2(min(color.g, 0.25)) * 170.0 * (0.28 - maxCoord);
} else {
float minCoord = min(absCoord.x, absCoord.y);
if (CheckForColor(color.rgb, vec3(153, 198, 147))
&& minCoord > 0.25) { // End Portal Frame:Emissive Corner Bits
emission = 1.4;
color.rgb = vec3(0.45, 1.0, 0.6);
}
}
}
#ifdef SNOWY_WORLD
snowFactor = 0.0;
#endif
}
}
} else {
if (mat < 10568) {
if (mat < 10564) { // Lantern
noSmoothLighting = true;
lmCoordM.x = 0.77;
#include "/lib/materials/specificMaterials/terrain/lanternMetal.glsl"
emission = 4.3 * max0(color.r - color.b);
emission += min(pow2(pow2(0.75 * dot(color.rgb, color.rgb))), 5.0);
color.gb *= pow(vec2(0.8, 0.7), vec2(sqrt(emission) * 0.5));
#ifdef SNOWY_WORLD
snowFactor = 0.0;
#endif
}
else /*if (mat < 10568)*/ { // Soul Lantern
noSmoothLighting = true;
lmCoordM.x = min(lmCoordM.x, 0.77); // consistency748523
#include "/lib/materials/specificMaterials/terrain/lanternMetal.glsl"
emission = 1.45 * max0(color.g - color.r * 2.0);
emission += 1.17 * min(pow2(pow2(0.55 * dot(color.rgb, color.rgb))), 3.5);
#ifdef SNOWY_WORLD
snowFactor = 0.0;
#endif
}
} else {
if (mat < 10572) { // Turtle Egg, Sniffer Egg
smoothnessG = (color.r + color.g) * 0.35;
smoothnessD = (color.r + color.g) * 0.25;
}
else /*if (mat < 10576)*/ { // Dragon Egg
emission = float(color.b > 0.1) * 10.0 + 1.25;
}
}
}
}
} else {
if (mat < 10608) {
if (mat < 10592) {
if (mat < 10584) {
if (mat < 10580) { // Smoker:Lit
lmCoordM.x *= 0.95;
float dotColor = dot(color.rgb, color.rgb);
if (color.r > color.b * 2.0 && dotColor > 0.7) {
emission = 2.5 * dotColor;
color.r *= 1.5;
} else {
#include "/lib/materials/specificMaterials/terrain/cobblestone.glsl"
}
}
else /*if (mat < 10584)*/ { // Blast Furnace:Lit
lmCoordM.x *= 0.95;
float dotColor = dot(color.rgb, color.rgb);
if (color.r > color.b * 2.0 && dotColor > 0.7) {
emission = pow2(color.g) * (20.0 - 13.7 * float(color.b > 0.25));
color.r *= 1.5;
} else {
#include "/lib/materials/specificMaterials/terrain/cobblestone.glsl"
}
}
} else {
if (mat < 10588) { // Candles:Lit
noSmoothLighting = true;
color.rgb *= 1.0 + pow2(max(-signMidCoordPos.y, float(NdotU > 0.9) * 1.2));
#ifdef SNOWY_WORLD
snowFactor = 0.0;
#endif
}
else /*if (mat < 10592)*/ { // Respawn Anchor:Unlit
noSmoothLighting = true;
#include "/lib/materials/specificMaterials/terrain/cryingObsidian.glsl"
emission += 0.2;
#ifdef SNOWY_WORLD
snowFactor = 0.0;
#endif
}
}
} else {
if (mat < 10600) {
if (mat < 10596) { // Respawn Anchor:Lit
noSmoothLighting = true;
#include "/lib/materials/specificMaterials/terrain/cryingObsidian.glsl"
vec2 absCoord = abs(signMidCoordPos);
if (NdotU > 0.9 && max(absCoord.x, absCoord.y) < 0.754) { // Portal
highlightMult = 0.0;
smoothnessD = 0.0;
emission = pow2(color.r) * color.r * 16.0;
maRecolor = vec3(0.0);
} else if (color.r + color.g > 1.3) { // Respawn Anchor:Glowstone Part
emission = 4.5 * sqrt3(max0(color.r + color.g - 1.3));
}
emission += 0.3;
#ifdef SNOWY_WORLD
snowFactor = 0.0;
#endif
}
else /*if (mat < 10600)*/ { // Redstone Wire:Lit
#include "/lib/materials/specificMaterials/terrain/redstoneBlock.glsl"
#if COLORED_LIGHTING == 0
emission = pow2(min(color.r, 0.9)) * 4.0;
#else
vec3 colorP = color.rgb / glColor.rgb;
emission = pow2((colorP.r + color.r) * 0.5) * 3.5;
#endif
color.gb *= 0.25;
}
} else {
if (mat < 10604) { // Redstone Wire:Unlit
#include "/lib/materials/specificMaterials/terrain/redstoneBlock.glsl"
}
else /*if (mat < 10608)*/ { // Redstone Torch
#include "/lib/materials/specificMaterials/terrain/redstoneTorch.glsl"
emission += 0.0001; // No light reducing during noon
}
}
}
} else {
if (mat < 10624) {
if (mat < 10616) {
if (mat < 10612) { // Redstone Block
#include "/lib/materials/specificMaterials/terrain/redstoneBlock.glsl"
#ifdef EMISSIVE_REDSTONE_BLOCK
emission = 0.75 + 3.0 * pow2(pow2(color.r));
color.gb *= 0.65;
#ifdef SNOWY_WORLD
snowFactor = 0.0;
#endif
#endif
}
else /*if (mat < 10616)*/ { // Redstone Ore:Unlit
if (color.r - color.g > 0.2) { // Redstone Ore:Unlit:Redstone Part
#include "/lib/materials/specificMaterials/terrain/redstoneBlock.glsl"
#ifdef GLOWING_ORE_REDSTONE
emission = color.r * pow1_5(color.r) * 4.0;
color.gb *= 1.0 - 0.9 * min1(GLOWING_ORE_MULT);
emission *= GLOWING_ORE_MULT;
#endif
} else { // Redstone Ore:Unlit:Stone Part
#include "/lib/materials/specificMaterials/terrain/stone.glsl"
}
}
} else {
if (mat < 10620) { // Redstone Ore:Lit
if (color.r - color.g > 0.2) { // Redstone Ore:Lit:Redstone Part
#include "/lib/materials/specificMaterials/terrain/redstoneBlock.glsl"
emission = pow2(color.r) * color.r * 5.5;
color.gb *= 0.1;
} else { // Redstone Ore:Lit:Stone Part
#include "/lib/materials/specificMaterials/terrain/stone.glsl"
}
noSmoothLighting = true;
}
else /*if (mat < 10624)*/ { // Deepslate Redstone Ore:Unlit
if (color.r - color.g > 0.2) { // Deepslate Redstone Ore:Unlit:Redstone Part
#include "/lib/materials/specificMaterials/terrain/redstoneBlock.glsl"
#ifdef GLOWING_ORE_REDSTONE
emission = color.r * pow1_5(color.r) * 4.0;
color.gb *= 1.0 - 0.9 * min1(GLOWING_ORE_MULT);
emission *= GLOWING_ORE_MULT;
#endif
} else { // Deepslate Redstone Ore:Unlit:Deepslate Part
#include "/lib/materials/specificMaterials/terrain/deepslate.glsl"
}
}
}
} else {
if (mat < 10632) {
if (mat < 10628) { // Deepslate Redstone Ore:Lit
if (color.r - color.g > 0.2) { // Deepslate Redstone Ore:Lit:Redstone Part
#include "/lib/materials/specificMaterials/terrain/redstoneBlock.glsl"
emission = pow2(color.r) * color.r * 6.0;
color.gb *= 0.05;
} else { // Deepslate Redstone Ore:Lit:Deepslate Part
#include "/lib/materials/specificMaterials/terrain/deepslate.glsl"
}
noSmoothLighting = true;
}
else /*if (mat < 10632)*/ { // Cave Vines:No Glow Berries
subsurfaceMode = 1;
lmCoordM.x *= 0.875;
}
} else {
if (mat < 10636) { // Cave Vines:With Glow Berries
subsurfaceMode = 1;
lmCoordM.x *= 0.875;
if (color.r > 0.64) {
emission = color.r < 0.75 ? 2.5 : 8.0;
color.rgb = color.rgb * vec3(1.0, 0.8, 0.6);
}
}
else /*if (mat < 10640)*/ { // Redstone Lamp:Unlit
materialMask = OSIEBCA; // Intense Fresnel
smoothnessG = color.r * 0.5 + 0.2;
float factor = pow2(smoothnessG);
highlightMult = factor * 2.0 + 1.0;
smoothnessD = min1(factor * 2.0);
}
}
}
}
}
} else {
if (mat < 10704) {
if (mat < 10672) {
if (mat < 10656) {
if (mat < 10648) {
if (mat < 10644) { // Redstone Lamp:Lit
noDirectionalShading = true;
lmCoordM.x = 0.89;
materialMask = OSIEBCA; // Intense Fresnel
smoothnessG = color.r * 0.35 + 0.2;
float factor = pow2(smoothnessG);
highlightMult = factor * 2.0 + 1.0;
smoothnessD = min1(factor * 2.0);
if (color.b > 0.1) {
float dotColor = dot(color.rgb, color.rgb);
#if MC_VERSION >= 11300
emission = pow2(dotColor) * 1.0;
#else
emission = dotColor * 1.2;
#endif
color.rgb = pow1_5(color.rgb);
maRecolor = vec3(emission * 0.2);
}
}
else /*if (mat < 10648)*/ { // Repeater, Comparator
#if ANISOTROPIC_FILTER > 0
color = texture2D(tex, texCoord); // Fixes artifacts
color.rgb *= glColor.rgb;
#endif
vec3 absDif = abs(vec3(color.r - color.g, color.g - color.b, color.r - color.b));
float maxDif = max(absDif.r, max(absDif.g, absDif.b));
if (maxDif > 0.125 || color.b > 0.99) { // Redstone Parts
if (color.r < 0.999 && color.b > 0.4) color.gb *= 0.5; // Comparator:Emissive Wire
#include "/lib/materials/specificMaterials/terrain/redstoneTorch.glsl"
} else { // Quartz Base
float factor = pow2(color.g) * 0.6;
smoothnessG = factor;
highlightMult = 1.0 + 2.5 * factor;
smoothnessD = factor;
}
}
} else {
if (mat < 10652) { // Shroomlight
noSmoothLighting = true; noDirectionalShading = true;
lmCoordM = vec2(1.0, 0.0);
float dotColor = dot(color.rgb, color.rgb);
emission = min(pow2(pow2(pow2(dotColor * 0.6))), 6.0) * 0.8 + 0.5;
}
else /*if (mat < 10656)*/ { // Campfire:Lit
#ifdef GBUFFERS_TERRAIN
vec3 fractPos = fract(playerPos + cameraPosition) - 0.5;
lmCoordM.x = pow2(pow2(smoothstep1(1.0 - 0.4 * dot(fractPos.xz, fractPos.xz))));
#endif
float dotColor = dot(color.rgb, color.rgb);
if (color.r > color.b && color.r - color.g < 0.15 && dotColor < 1.4) {
#include "/lib/materials/specificMaterials/terrain/oakWood.glsl"
} else if (color.r > color.b || dotColor > 2.9) {
noDirectionalShading = true;
emission = 3.5;
color.rgb *= sqrt1(GetLuminance(color.rgb));
}
}
}
} else {
if (mat < 10664) {
if (mat < 10660) { // Soul Campfire:Lit
noSmoothLighting = true;
float dotColor = dot(color.rgb, color.rgb);
if (color.r > color.b) {
#include "/lib/materials/specificMaterials/terrain/oakWood.glsl"
} else if (color.g - color.r > 0.1 || dotColor > 2.9) {
noDirectionalShading = true;
emission = 2.1;
color.rgb *= sqrt1(GetLuminance(color.rgb));
}
#ifdef SNOWY_WORLD
snowFactor = 0.0;
#endif
}
else /*if (mat < 10664)*/ { // Campfire:Unlit, Soul Campfire:Unlit
noSmoothLighting = true;
if (color.r > color.b) {
#include "/lib/materials/specificMaterials/terrain/oakWood.glsl"
}
}
} else {
if (mat < 10668) { // Observer
if (color.r > 0.1 && color.g + color.b < 0.1) {
#include "/lib/materials/specificMaterials/terrain/redstoneTorch.glsl"
} else {
#include "/lib/materials/specificMaterials/terrain/cobblestone.glsl"
}
}
else /*if (mat < 10672)*/ { // Wool+, Carpet+ except Lime
#ifdef COATED_TEXTURES
noiseFactor = 0.77;
#endif
}
}
}
} else {
if (mat < 10688) {
if (mat < 10680) {
if (mat < 10676) { // Bone Block
smoothnessG = color.r * 0.2;
smoothnessD = smoothnessG;
#ifdef GBUFFERS_TERRAIN
DoBrightBlockTweaks(color.rgb, 0.5, shadowMult, highlightMult);
#endif
#ifdef COATED_TEXTURES
noiseFactor = 0.33;
#endif
}
else /*if (mat < 10680)*/ { // Barrel, Beehive, Bee Nest, Honeycomb Block
#include "/lib/materials/specificMaterials/terrain/cobblestone.glsl"
#ifdef COATED_TEXTURES
noiseFactor = 0.66;
#endif
}
} else {
if (mat < 10684) { // Ochre Froglight
float frogPow = 8.0;
#include "/lib/materials/specificMaterials/terrain/froglights.glsl"
}
else /*if (mat < 10688)*/ { // Verdant Froglight
float frogPow = 16.0;
#include "/lib/materials/specificMaterials/terrain/froglights.glsl"
}
}
} else {
if (mat < 10696) {
if (mat < 10692) { // Pearlescent Froglight
float frogPow = 24.0;
#include "/lib/materials/specificMaterials/terrain/froglights.glsl"
}
else /*if (mat < 10696)*/ { // Reinforced Deepslate
if (abs(color.r - color.g) < 0.01) { // Reinforced Deepslate:Deepslate Part
#include "/lib/materials/specificMaterials/terrain/deepslate.glsl"
} else { // Reinforced Deepslate:Sculk
float boneFactor = max0(color.r * 1.25 - color.b);
if (boneFactor < 0.0001) emission = 0.15;
smoothnessG = min1(boneFactor * 1.7);
smoothnessD = smoothnessG;
}
}
} else {
if (mat < 10700) { // Sculk, Sculk Catalyst, Sculk Vein, Sculk Sensor:Unlit
float boneFactor = max0(color.r * 1.25 - color.b);
if (boneFactor < 0.0001) {
emission = pow2(max0(color.g - color.r)) * 1.7;
#ifdef GBUFFERS_TERRAIN
vec2 bpos = floor(playerPos.xz + cameraPosition.xz + 0.501)
+ floor(playerPos.y + cameraPosition.y + 0.501);
bpos = bpos * 0.01 + 0.003 * frameTimeCounter;
emission *= pow2(texture2D(noisetex, bpos).r * pow1_5(texture2D(noisetex, bpos * 0.5).r));
emission *= 6.0;
#endif
}
smoothnessG = min1(boneFactor * 1.7);
smoothnessD = smoothnessG;
#ifdef SNOWY_WORLD
snowFactor = 0.0;
#endif
}
else /*if (mat < 10704)*/ { // Sculk Shrieker
float boneFactor = max0(color.r * 1.25 - color.b);
if (boneFactor < 0.0001) {
emission = pow2(max0(color.g - color.r)) * 2.0;
#ifdef GBUFFERS_TERRAIN
vec2 coordFactor = abs(fract(playerPos.xz + cameraPosition.xz) - 0.5);
float coordFactorM = max(coordFactor.x, coordFactor.y);
if (coordFactorM < 0.43) emission += color.g * 7.0;
#endif
}
smoothnessG = min1(boneFactor * 1.7);
smoothnessD = smoothnessG;
#ifdef SNOWY_WORLD
snowFactor = 0.0;
#endif
}
}
}
}
} else {
if (mat < 10736) {
if (mat < 10720) {
if (mat < 10712) {
if (mat < 10708) { // Sculk Sensor:Lit
lmCoordM = vec2(0.0, 0.0);
emission = pow2(max0(color.g - color.r)) * 7.0 + 0.7;
}
else /*if (mat < 10712)*/ { // Spawner
smoothnessG = color.b + 0.2;
smoothnessD = smoothnessG;
emission = 7.0 * float(CheckForColor(color.rgb, vec3(110, 4, 83)));
}
} else {
if (mat < 10716) { // Tuff++
smoothnessG = color.r * 0.3;
smoothnessD = smoothnessG;
#if COLORED_LIGHTING == 0
/* Tweak to make caves with Glow Lichen look better lit and closer to vanilla Minecraft. */
lmCoordM = pow(lmCoordM + 0.0001, vec2(0.65));
#endif
}
else /*if (mat < 10720)*/ { // Clay
highlightMult = 2.0;
smoothnessG = pow2(pow2(color.g)) * 0.5;
smoothnessG = min1(smoothnessG);
smoothnessD = smoothnessG * 0.7;
#ifdef GBUFFERS_TERRAIN
DoOceanBlockTweaks(smoothnessD);
#endif
#ifdef COATED_TEXTURES
noiseFactor = 0.77;
#endif
}
}
} else {
if (mat < 10728) {
if (mat < 10724) { // Ladder
noSmoothLighting = true;
}
else /*if (mat < 10728)*/ { // Gravel, Suspicious Gravel
#include "/lib/materials/specificMaterials/terrain/stone.glsl"
#ifdef GBUFFERS_TERRAIN
DoOceanBlockTweaks(smoothnessD);
#endif
#ifdef COATED_TEXTURES
noiseFactor = 1.25;
#endif
}
} else {
if (mat < 10732) { // Flower Pot, Potted Stuff:Without Subsurface
noSmoothLighting = true;
}
else /*if (mat < 10736)*/ { // Potted Stuff:With Subsurface
noSmoothLighting = true;
float NdotE = dot(normalM, eastVec);
if (abs(abs(NdotE) - 0.5) < 0.4) {
subsurfaceMode = 1, noDirectionalShading = true;
}
}
}
}
} else {
if (mat < 10752) {
if (mat < 10744) {
if (mat < 10740) { // Structure Block, Jigsaw Block
float blockRes = absMidCoordPos.x * atlasSize.x;
vec2 signMidCoordPosM = (floor((signMidCoordPos + 1.0) * blockRes) + 0.5) / blockRes - 1.0;
float dotsignMidCoordPos = dot(signMidCoordPosM, signMidCoordPosM);
float lBlockPosM = pow2(max0(1.0 - 1.125 * pow2(dotsignMidCoordPos)));
emission = 4.5 * lBlockPosM;
color.rgb = pow2(color.rgb);
}
else /*if (mat < 10744)*/ { // Chain
noSmoothLighting = true;
lmCoordM.x = min(lmCoordM.x, 0.77); // consistency748523
#include "/lib/materials/specificMaterials/terrain/lanternMetal.glsl"
}
} else {
if (mat < 10748) { // Soul Sand, Soul Soil
smoothnessG = color.r * 0.4;
smoothnessD = color.r * 0.25;
}
else /*if (mat < 10752)*/ { // Dried Kelp Block
smoothnessG = pow2(color.b) * 0.8;
smoothnessD = smoothnessG;
#ifdef COATED_TEXTURES
noiseFactor = 0.5;
#endif
}
}
} else {
if (mat < 10760) {
if (mat < 10756) { // Bamboo
if (absMidCoordPos.x > 0.005)
subsurfaceMode = 1, noSmoothLighting = true, noDirectionalShading = true;
// No further material properties as bamboo jungles are already slow
}
else /*if (mat < 10760)*/ { // Block of Bamboo, Bamboo Planks++
#include "/lib/materials/specificMaterials/planks/bambooPlanks.glsl"
}
} else {
if (mat < 10764) { // Cherry Planks++
#include "/lib/materials/specificMaterials/planks/cherryPlanks.glsl"
}
else /*if (mat < 10768)*/ { // Cherry Log, Cherry Wood
if (color.g > 0.33) { // Cherry Log:Clean Part
#include "/lib/materials/specificMaterials/planks/cherryPlanks.glsl"
} else { // Cherry Log:Wood Part, Cherry Wood
smoothnessG = pow2(color.r);
smoothnessD = smoothnessG;
}
}
}
}
}
}
}
} else {
if (mat < 10896) {
if (mat < 10832) {
if (mat < 10800) {
if (mat < 10784) {
if (mat < 10776) {
if (mat < 10772) { // Torchflower
subsurfaceMode = 1, noSmoothLighting = true, noDirectionalShading = true;
#ifdef GBUFFERS_TERRAIN
DoFoliageColorTweaks(color.rgb, shadowMult, snowMinNdotU, lViewPos);
emission = (1.0 - abs(signMidCoordPos.x)) * max0(0.7 - abs(signMidCoordPos.y + 0.7));
emission = pow1_5(emission) * 2.5;
#endif
#if SHADOW_QUALITY == -1
shadowMult *= 1.0 - 0.3 * (signMidCoordPos.y + 1.0) * (1.0 - abs(signMidCoordPos.x))
+ 0.5 * (1.0 - signMidCoordPos.y) * invNoonFactor; // consistency357381
#endif
}
else /*if (mat < 10776)*/ { // Potted Torchflower
noSmoothLighting = true;
float NdotE = dot(normalM, eastVec);
if (abs(abs(NdotE) - 0.5) < 0.4) {
subsurfaceMode = 1, noDirectionalShading = true;
#ifdef GBUFFERS_TERRAIN
emission = (1.0 - abs(signMidCoordPos.x)) * max0(0.7 - abs(signMidCoordPos.y + 0.7));
emission = pow1_5(emission) * 2.5;
#endif
}
}
} else {
if (mat < 10780) { // Crimson Fungus, Warped Fungus
noSmoothLighting = true;
if (color.r > 0.91) {
emission = 3.0 * color.g;
color.r *= 1.2;
maRecolor = vec3(0.1);
}
}
else /*if (mat < 10784)*/ { // Potted Crimson Fungus, Potted Warped Fungus
noSmoothLighting = true;
float NdotE = dot(normalM, eastVec);
if (abs(abs(NdotE) - 0.5) < 0.4) {
if (color.r > 0.91) {
emission = 3.0 * color.g;
color.r *= 1.2;
maRecolor = vec3(0.1);
}
}
}
}
} else {
if (mat < 10792) {
if (mat < 10788) { // Calibrated Sculk Sensor:Unlit
#if ANISOTROPIC_FILTER == 0
vec4 checkColor = color;
#else
vec4 checkColor = texture2D(tex, texCoord); // Fixes artifacts
#endif
if (checkColor.r + checkColor.b > checkColor.g * 2.2 || checkColor.r > 0.99) { // Amethyst Part
#if GLOWING_AMETHYST >= 1 && defined GBUFFERS_TERRAIN
vec2 absCoord = abs(signMidCoordPos);
float maxBlockPos = max(absCoord.x, absCoord.y);
emission = pow2(max0(1.0 - maxBlockPos) * color.g) * 5.4 + 1.2 * color.g;
color.g *= 1.0 - emission * 0.07;
color.rgb *= color.g;
#endif
#ifdef COATED_TEXTURES
noiseFactor = 0.66;
#endif
} else { // Sculk Part
float boneFactor = max0(color.r * 1.25 - color.b);
if (boneFactor < 0.0001) emission = pow2(max0(color.g - color.r));
smoothnessG = min1(boneFactor * 1.7);
smoothnessD = smoothnessG;
}
#ifdef SNOWY_WORLD
snowFactor = 0.0;
#endif
}
else /*if (mat < 10792)*/ { // Calibrated Sculk Sensor:Lit
lmCoordM = vec2(0.0, 0.0);
#if ANISOTROPIC_FILTER == 0
vec4 checkColor = color;
#else
vec4 checkColor = texture2D(tex, texCoord); // Fixes artifacts
#endif
if (checkColor.r + checkColor.b > checkColor.g * 2.2 || checkColor.r > 0.99) { // Amethyst Part
lmCoordM.x = 1.0;
#if GLOWING_AMETHYST >= 1 && defined GBUFFERS_TERRAIN
vec2 absCoord = abs(signMidCoordPos);
float maxBlockPos = max(absCoord.x, absCoord.y);
emission = pow2(max0(1.0 - maxBlockPos) * color.g) * 5.4 + 1.2 * color.g;
color.g *= 1.0 - emission * 0.07;
color.rgb *= color.g;
#endif
#ifdef COATED_TEXTURES
noiseFactor = 0.66;
#endif
} else { // Sculk Part
emission = pow2(max0(color.g - color.r)) * 7.0 + 0.7;
}
}
} else {
if (mat < 10796) { // Oak Door, Oak Trapdoor
noSmoothLighting = true;
#include "/lib/materials/specificMaterials/planks/oakPlanks.glsl"
}
else /*if (mat < 10800)*/ { // Spruce Door, Spruce Trapdoor
noSmoothLighting = true;
#include "/lib/materials/specificMaterials/planks/sprucePlanks.glsl"
}
}
}
} else {
if (mat < 10816) {
if (mat < 10808) {
if (mat < 10804) { // Birch Door, Birch Trapdoor
noSmoothLighting = true;
#include "/lib/materials/specificMaterials/planks/birchPlanks.glsl"
}
else /*if (mat < 10808)*/ { // Jungle Door, Jungle Trapdoor
noSmoothLighting = true;
#include "/lib/materials/specificMaterials/planks/junglePlanks.glsl"
}
} else {
if (mat < 10812) { // Acacia Door, Acacia Trapdoor
noSmoothLighting = true;
#include "/lib/materials/specificMaterials/planks/acaciaPlanks.glsl"
}
else /*if (mat < 10816)*/ { // Dark Oak Door, Dark Oak Trapdoor
noSmoothLighting = true;
#include "/lib/materials/specificMaterials/planks/darkOakPlanks.glsl"
}
}
} else {
if (mat < 10824) {
if (mat < 10820) { // Mangrove Door, Mangrove Trapdoor
noSmoothLighting = true;
#include "/lib/materials/specificMaterials/planks/mangrovePlanks.glsl"
}
else /*if (mat < 10824)*/ { // Crimson Door, Crimson Trapdoor
noSmoothLighting = true;
#include "/lib/materials/specificMaterials/planks/crimsonPlanks.glsl"
}
} else {
if (mat < 10828) { // Warped Door, Warped Trapdoor
noSmoothLighting = true;
#include "/lib/materials/specificMaterials/planks/warpedPlanks.glsl"
}
else /*if (mat < 10832)*/ { // Bamboo Door, Bamboo Trapdoor
noSmoothLighting = true;
#include "/lib/materials/specificMaterials/planks/bambooPlanks.glsl"
}
}
}
}
} else {
if (mat < 10864) {
if (mat < 10848) {
if (mat < 10840) {
if (mat < 10836) { // Cherry Door, Cherry Trapdoor
noSmoothLighting = true;
#include "/lib/materials/specificMaterials/planks/cherryPlanks.glsl"
}
else /*if (mat < 10840)*/ { // Brewing Stand
#ifdef GBUFFERS_TERRAIN
vec3 worldPos = playerPos + cameraPosition;
vec3 fractPos = fract(worldPos.xyz);
vec3 coordM = abs(fractPos.xyz - 0.5);
float cLength = dot(coordM, coordM) * 1.3333333;
cLength = pow2(1.0 - cLength);
if (color.r + color.g > color.b * 3.0 && max(coordM.x, coordM.z) < 0.07) {
emission = 2.5 * pow1_5(cLength);
} else {
lmCoordM.x = max(lmCoordM.x * 0.9, cLength);
#include "/lib/materials/specificMaterials/terrain/cobblestone.glsl"
}
#else
emission = max0(color.r + color.g - color.b * 1.8 - 0.3) * 2.2;
#endif
}
} else {
if (mat < 10844) { // Lime Concrete
smoothnessG = 0.4;
highlightMult = 1.5;
smoothnessD = 0.3;
#ifdef COATED_TEXTURES
noiseFactor = 0.2;
#endif
#ifdef GREEN_SCREEN_LIME
materialMask = OSIEBCA * 240.0; // Green Screen Lime Blocks
#endif
}
else /*if (mat < 10848)*/ { // Lime Carpet, Lime Wool
#ifdef COATED_TEXTURES
noiseFactor = 0.77;
#endif
#ifdef GREEN_SCREEN_LIME
materialMask = OSIEBCA * 240.0; // Green Screen Lime Blocks
#endif
}
}
} else {
if (mat < 10856) {
if (mat < 10852) { // Crafter
smoothnessG = pow2(color.b);
smoothnessD = max(smoothnessG, 0.2);
if (color.r > 2.5 * (color.g + color.b)) {
emission = 4.0;
color.rgb *= color.rgb;
}
}
else /*if (mat < 10856)*/ { // Copper Bulb:BrighterOnes
#include "/lib/materials/specificMaterials/terrain/copperBulb.glsl"
}
} else {
if (mat < 10860) { // Copper Bulb:DimmerOnes
#include "/lib/materials/specificMaterials/terrain/copperBulb.glsl"
emission *= 0.85;
}
else /*if (mat < 10864)*/ { // Copper Door+, Copper Trapdoor+
noSmoothLighting = true;
#include "/lib/materials/specificMaterials/terrain/copperBlock.glsl"
}
}
}
} else {
if (mat < 10880) {
if (mat < 10872) {
if (mat < 10868) { // Candles:Unlit
}
else /*if (mat < 10872)*/ { // Trial Spawner:NotOminous:Active, Vault:NotOminous:Active
smoothnessG = max0(color.b - color.r * 0.5);
smoothnessD = smoothnessG;
emission = max0(color.r - color.b) * 3.0;
color.rgb = pow(color.rgb, vec3(1.0 + 0.5 * sqrt(emission)));
}
} else {
if (mat < 10876) { // Trial Spawner:Inactive, Vault:Inactive
smoothnessG = max0(color.b - color.r * 0.5);
smoothnessD = smoothnessG;
}
else /*if (mat < 10880)*/ { // Trial Spawner:Ominous:Active, Vault:Ominous:Active
float maxComponent = max(max(color.r, color.g), color.b);
float minComponent = min(min(color.r, color.g), color.b);
float saturation = (maxComponent - minComponent) / (1.0 - abs(maxComponent + minComponent - 1.0));
smoothnessG = max0(color.b - pow2(saturation) * 0.5) * 0.5 + 0.1;
smoothnessD = smoothnessG;
emission = saturation > 0.5 ? 4.0 : 0.0;
color.rgb = pow(color.rgb, vec3(1.0 + (0.3 + 0.5 * color.r) * emission));
}
}
} else {
if (mat < 10888) {
if (mat < 10884) { // Several Non-solid Blocks
}
else /*if (mat < 10888)*/ { // Weeping Vines, Twisting Vines
noSmoothLighting = true;
#if defined COATED_TEXTURES && defined GBUFFERS_TERRAIN
doTileRandomisation = false;
#endif
if (color.r > 0.91) {
emission = 3.0 * color.g;
color.r *= 1.2;
maRecolor = vec3(0.1);
}
}
} else {
if (mat < 10892) { // Hay Block
smoothnessG = pow2(color.r) * 0.5;
highlightMult *= 1.5;
smoothnessD = float(color.r > color.g * 2.0) * 0.3;
}
else /*if (mat < 10896)*/ { //
}
}
}
}
}
} else {
if (mat < 10960) {
if (mat < 10928) {
if (mat < 10912) {
if (mat < 10904) {
if (mat < 10900) { //
}
else /*if (mat < 10904)*/ { //
}
} else {
if (mat < 10908) { //
}
else /*if (mat < 10912)*/ { //
}
}
} else {
if (mat < 10920) {
if (mat < 10916) { //
}
else /*if (mat < 10920)*/ { //
}
} else {
if (mat < 10924) { //
}
else /*if (mat < 10928)*/ { //
}
}
}
} else {
if (mat < 10944) {
if (mat < 10936) {
if (mat < 10932) { //
}
else /*if (mat < 10936)*/ { //
}
} else {
if (mat < 10940) { //
}
else /*if (mat < 10944)*/ { //
}
}
} else {
if (mat < 10952) {
if (mat < 10948) { //
}
else /*if (mat < 10952)*/ { //
}
} else {
if (mat < 10956) { //
}
else /*if (mat < 10960)*/ { //
}
}
}
}
} else {
if (mat < 10992) {
if (mat < 10976) {
if (mat < 10968) {
if (mat < 10964) { //
}
else /*if (mat < 10968)*/ { //
}
} else {
if (mat < 10972) { //
}
else /*if (mat < 10976)*/ { //
}
}
} else {
if (mat < 10984) {
if (mat < 10980) { //
}
else /*if (mat < 10984)*/ { //
}
} else {
if (mat < 10988) { //
}
else /*if (mat < 10992)*/ { //
}
}
}
} else {
if (mat < 11008) {
if (mat < 11000) {
if (mat < 10996) { //
}
else /*if (mat < 11000)*/ { //
}
} else {
if (mat < 11004) { //
}
else /*if (mat < 11008)*/ { //
}
}
} else {
if (mat < 11016) {
if (mat < 11012) { //
}
else /*if (mat < 11016)*/ { //
}
} else {
if (mat < 11020) { //
}
else /*if (mat < 11024)*/ { //
}
}
}
}
}
}
}
}
}
}