191 lines
7.8 KiB
GLSL
191 lines
7.8 KiB
GLSL
#include "/lib/shaderSettings/water.glsl"
|
|
if (mat < 32008) {
|
|
if (mat < 30016) {
|
|
if (mat < 30008) {
|
|
if (mat == 30000) { //
|
|
|
|
} else if (mat == 30004) { //
|
|
|
|
}
|
|
} else {
|
|
if (mat == 30008) { // Tinted Glass
|
|
#ifdef CONNECTED_GLASS_EFFECT
|
|
uint voxelID = uint(254);
|
|
bool isPane = false;
|
|
DoConnectedGlass(colorP, color, noGeneratedNormals, playerPos, worldGeoNormal, voxelID, isPane);
|
|
#endif
|
|
color.a = pow(color.a, 1.0 - fresnelM);
|
|
reflectMult = 1.0;
|
|
|
|
#ifndef MIRROR_TINTED_GLASS
|
|
DoTranslucentTweaks(color, fresnelM, reflectMult, lViewPos);
|
|
#else
|
|
color.a = color.a * 0.3 + 0.7;
|
|
fresnelM = fresnelM * 0.5 + 0.5;
|
|
reflectMult /= color.a;
|
|
noGeneratedNormals = true;
|
|
#ifdef MIRROR_TINTED_GLASS_OPAQUE
|
|
color.a = 1.0;
|
|
#endif
|
|
#endif
|
|
overlayNoiseAlpha = 0.95;
|
|
sandNoiseIntensity = 0.5;
|
|
mossNoiseIntensity = 0.5;
|
|
} else /*if (mat == 30012)*/ { // Slime Block
|
|
translucentMultCalculated = true;
|
|
reflectMult = 0.7;
|
|
translucentMult.rgb = pow2(color.rgb) * 0.2;
|
|
|
|
smoothnessG = color.g * 0.7;
|
|
highlightMult = 2.5;
|
|
overlayNoiseAlpha = 0.6;
|
|
sandNoiseIntensity = 0.5;
|
|
mossNoiseIntensity = 0.5;
|
|
}
|
|
}
|
|
} else {
|
|
if (mat < 32000) {
|
|
if (mat < 31000) {
|
|
if (mat == 30016) { // Honey Block
|
|
translucentMultCalculated = true;
|
|
reflectMult = 1.0;
|
|
translucentMult.rgb = pow2(color.rgb) * 0.2;
|
|
|
|
smoothnessG = color.r * 0.7;
|
|
highlightMult = 2.5;
|
|
overlayNoiseAlpha = 0.4;
|
|
sandNoiseIntensity = 0.5;
|
|
mossNoiseIntensity = 0.5;
|
|
} else /*if (mat == 30020)*/ { // Nether Portal
|
|
#ifdef SPECIAL_PORTAL_EFFECTS
|
|
#include "/lib/materials/specificMaterials/translucents/netherPortal.glsl"
|
|
#endif
|
|
overlayNoiseIntensity = 0.0;
|
|
}
|
|
} else { // (31XXX)
|
|
if (mat % 2 == 0) { // Stained Glass
|
|
#ifdef CONNECTED_GLASS_EFFECT
|
|
uint voxelID = uint(200 + (mat - 31000) / 2);
|
|
bool isPane = false;
|
|
DoConnectedGlass(colorP, color, noGeneratedNormals, playerPos, worldGeoNormal, voxelID, isPane);
|
|
#endif
|
|
#include "/lib/materials/specificMaterials/translucents/stainedGlass.glsl"
|
|
overlayNoiseAlpha = 1.05;
|
|
mossNoiseIntensity = 0.8;
|
|
} else /*if (mat % 2 == 1)*/ { // Stained Glass Pane
|
|
#ifdef CONNECTED_GLASS_EFFECT
|
|
uint voxelID = uint(200 + (mat - 31000) / 2);
|
|
bool isPane = true;
|
|
DoConnectedGlass(colorP, color, noGeneratedNormals, playerPos, worldGeoNormal, voxelID, isPane);
|
|
#endif
|
|
#include "/lib/materials/specificMaterials/translucents/stainedGlass.glsl"
|
|
noSmoothLighting = true;
|
|
overlayNoiseAlpha = 1.05;
|
|
sandNoiseIntensity = 0.8;
|
|
mossNoiseIntensity = 0.8;
|
|
}
|
|
}
|
|
} else {
|
|
if (mat == 32000) { // Water
|
|
#ifdef SHADER_WATER
|
|
#include "/lib/materials/specificMaterials/translucents/water.glsl"
|
|
#endif
|
|
overlayNoiseIntensity = 0.0;
|
|
overlayNoiseFresnelMult = 0.0;
|
|
IPBRMult = 0.0;
|
|
overlayNoiseAlpha = 0.0;
|
|
} else /*if (mat == 32004)*/ { // Ice
|
|
smoothnessG = pow2(color.g) * color.g;
|
|
highlightMult = pow2(min1(pow2(color.g) * 1.5)) * 3.5;
|
|
|
|
reflectMult = 0.7;
|
|
overlayNoiseAlpha = 0.6;
|
|
sandNoiseIntensity = 0.7;
|
|
mossNoiseIntensity = 0.7;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (mat < 32024) {
|
|
if (mat < 32016) {
|
|
if (mat < 32012) { // Glass
|
|
if (mat == 32008){
|
|
#ifdef CONNECTED_GLASS_EFFECT
|
|
uint voxelID = uint(217);
|
|
bool isPane = false;
|
|
DoConnectedGlass(colorP, color, noGeneratedNormals, playerPos, worldGeoNormal, voxelID, isPane);
|
|
#endif
|
|
}
|
|
#include "/lib/materials/specificMaterials/translucents/glass.glsl"
|
|
overlayNoiseAlpha = 0.8;
|
|
sandNoiseIntensity = 0.8;
|
|
mossNoiseIntensity = 0.8;
|
|
} else /*if (mat == 32012)*/ { // Glass Pane
|
|
if (mat == 32012) {
|
|
#ifdef CONNECTED_GLASS_EFFECT
|
|
uint voxelID = uint(218);
|
|
bool isPane = true;
|
|
DoConnectedGlass(colorP, color, noGeneratedNormals, playerPos, worldGeoNormal, voxelID, isPane);
|
|
#endif
|
|
}
|
|
if (color.a < 0.001 && abs(NdotU) > 0.95) discard; // Fixing artifacts on CTM/Opti connected glass panes
|
|
#include "/lib/materials/specificMaterials/translucents/glass.glsl"
|
|
noSmoothLighting = true;
|
|
overlayNoiseAlpha = 0.8;
|
|
sandNoiseIntensity = 0.8;
|
|
mossNoiseIntensity = 0.8;
|
|
}
|
|
} else {
|
|
if (mat == 32016) { // Beacon
|
|
lmCoordM.x = 0.88;
|
|
|
|
translucentMultCalculated = true;
|
|
translucentMult = vec4(0.0, 0.0, 0.0, 1.0);
|
|
|
|
if (color.b > 0.5) {
|
|
if (color.g - color.b < 0.01 && color.g < 0.99) {
|
|
#include "/lib/materials/specificMaterials/translucents/glass.glsl"
|
|
} else { // Beacon:Center
|
|
lmCoordM = vec2(0.0);
|
|
noDirectionalShading = true;
|
|
|
|
float lColor = length(color.rgb);
|
|
vec3 baseColor = vec3(0.1, 1.0, 0.92);
|
|
if (lColor > 1.65) color.rgb = baseColor + 0.2;
|
|
else if (lColor > 1.5) color.rgb = baseColor + 0.15;
|
|
else if (lColor > 1.3) color.rgb = baseColor + 0.08;
|
|
else if (lColor > 1.15) color.rgb = baseColor + 0.035;
|
|
else color.rgb = baseColor;
|
|
emission = 3.5;
|
|
}
|
|
} else { // Beacon:Obsidian
|
|
float factor = color.r * 1.5;
|
|
|
|
smoothnessG = factor;
|
|
highlightMult = 2.0 + min1(smoothnessG * 2.0) * 1.5;
|
|
smoothnessG = min1(smoothnessG);
|
|
}
|
|
overlayNoiseAlpha = 0.8;
|
|
sandNoiseIntensity = 0.5;
|
|
mossNoiseIntensity = 0.5;
|
|
} else /*if (mat == 32020)*/ { //
|
|
|
|
}
|
|
}
|
|
} else {
|
|
if (mat < 32032) {
|
|
if (mat == 32024) { //
|
|
|
|
} else /*if (mat == 32028)*/ { //
|
|
|
|
}
|
|
} else {
|
|
if (mat == 32032) { //
|
|
|
|
} else /*if (mat == 32036)*/ { //
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|