mirror of
https://github.com/X0nk/Bliss-Shader.git
synced 2025-06-22 00:37:35 +08:00
remap block ranges; add more lpv block mappings
This commit is contained in:
@ -427,7 +427,7 @@ void main() {
|
||||
|
||||
#ifdef AEROCHROME_MODE
|
||||
float gray = dot(Albedo.rgb, vec3(0.2, 1.0, 0.07));
|
||||
if(blockID == BLOCK_GROUND_WAVING || blockID == BLOCK_AIR_WAVING || blockID == BLOCK_SSS_STRONG || blockID == BLOCK_SSS_WEAK || blockID == BLOCK_GROUND_WAVING_VERTICAL) {
|
||||
if (blockID == BLOCK_GROUND_WAVING || blockID == BLOCK_AIR_WAVING || blockID == BLOCK_GRASS_SHORT || blockID == BLOCK_GRASS_TALL_UPPER || blockID == BLOCK_GRASS_TALL_LOWER || blockID == BLOCK_SSS_STRONG || blockID == BLOCK_SSS_WEAK || blockID == BLOCK_GROUND_WAVING_VERTICAL) {
|
||||
// IR Reflective (Pink-red)
|
||||
Albedo.rgb = mix(vec3(gray), aerochrome_color, 0.7);
|
||||
}
|
||||
@ -442,7 +442,7 @@ void main() {
|
||||
Albedo.rgb = mix(Albedo.rgb, aerochrome_color, 0.3);
|
||||
}
|
||||
#endif
|
||||
else if(blockID == BLOCK_WATER || (blockID >= 1200 && blockID < 1300))
|
||||
else if(blockID == BLOCK_WATER || (blockID >= 200 && blockID < 300))
|
||||
{
|
||||
// IR Absorbsive? Dark.
|
||||
Albedo.rgb = mix(Albedo.rgb, vec3(0.01, 0.08, 0.15), 0.5);
|
||||
|
@ -230,7 +230,7 @@ void main() {
|
||||
blockID = mc_Entity.x;
|
||||
// velocity = at_velocity;
|
||||
|
||||
if(mc_Entity.x == BLOCK_GROUND_WAVING_VERTICAL) normalMat.a = 0.60;
|
||||
if(mc_Entity.x == BLOCK_GROUND_WAVING_VERTICAL || mc_Entity.x == BLOCK_GRASS_SHORT) normalMat.a = 0.60;
|
||||
|
||||
|
||||
PORTAL = 0;
|
||||
@ -238,7 +238,7 @@ void main() {
|
||||
|
||||
#ifdef WORLD
|
||||
// disallow POM to work on signs.
|
||||
if(blockEntityId == BLOCK_NO_POM) SIGN = 1;
|
||||
if(blockEntityId == BLOCK_SIGN) SIGN = 1;
|
||||
|
||||
if(blockEntityId == BLOCK_END_PORTAL) PORTAL = 1;
|
||||
#endif
|
||||
@ -268,7 +268,7 @@ void main() {
|
||||
// if(NameTags > 0) EMISSIVE = 0.9;
|
||||
|
||||
// normal block lightsources
|
||||
if(mc_Entity.x >= 1000 && mc_Entity.x < 1200) EMISSIVE = 0.5;
|
||||
if(mc_Entity.x >= 100 && mc_Entity.x < 200) EMISSIVE = 0.5;
|
||||
|
||||
// special cases light lightning and beacon beams...
|
||||
#ifdef ENTITIES
|
||||
@ -293,7 +293,7 @@ void main() {
|
||||
|
||||
/////// ----- SSS ON BLOCKS ----- ///////
|
||||
// strong
|
||||
if(mc_Entity.x == BLOCK_GROUND_WAVING || mc_Entity.x == BLOCK_AIR_WAVING || mc_Entity.x == BLOCK_SSS_STRONG || mc_Entity.x == BLOCK_GROUND_WAVING_VERTICAL) SSSAMOUNT = 1.0;
|
||||
if(mc_Entity.x == BLOCK_GROUND_WAVING || mc_Entity.x == BLOCK_AIR_WAVING || mc_Entity.x == BLOCK_GRASS_SHORT || mc_Entity.x == BLOCK_GRASS_TALL_UPPER || mc_Entity.x == BLOCK_GRASS_TALL_LOWER || mc_Entity.x == BLOCK_SSS_STRONG || mc_Entity.x == BLOCK_GROUND_WAVING_VERTICAL) SSSAMOUNT = 1.0;
|
||||
|
||||
// medium
|
||||
if(mc_Entity.x == BLOCK_SSS_WEAK || mc_Entity.x == BLOCK_SSS_WEAK_2) SSSAMOUNT = 0.75;
|
||||
@ -331,7 +331,7 @@ void main() {
|
||||
#ifdef WAVY_PLANTS
|
||||
bool istopv = gl_MultiTexCoord0.t < mc_midTexCoord.t;
|
||||
|
||||
if ((mc_Entity.x == BLOCK_GROUND_WAVING || mc_Entity.x == BLOCK_GROUND_WAVING_VERTICAL) && istopv && abs(position.z) < 64.0) {
|
||||
if ((mc_Entity.x == BLOCK_GROUND_WAVING || mc_Entity.x == BLOCK_GROUND_WAVING_VERTICAL || mc_Entity.x == BLOCK_GRASS_SHORT || mc_Entity.x == BLOCK_GRASS_TALL_UPPER) && istopv && abs(position.z) < 64.0) {
|
||||
vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz + cameraPosition;
|
||||
worldpos.xyz += calcMovePlants(worldpos.xyz)*lmtexcoord.w - cameraPosition;
|
||||
position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz;
|
||||
|
@ -104,7 +104,7 @@ void main() {
|
||||
gl_Position.z -= 1e-4;
|
||||
}
|
||||
|
||||
if (mc_Entity.x >= 1200 && mc_Entity.x < 1300) mat = 0.2;
|
||||
if (mc_Entity.x >= 200 && mc_Entity.x < 300) mat = 0.2;
|
||||
if (mc_Entity.x == 72) mat = 0.5;
|
||||
|
||||
#if defined ENTITIES || defined BLOCKENTITIES
|
||||
|
@ -18,7 +18,7 @@ const ivec3 workGroups = ivec3(4, 5, 1);
|
||||
|
||||
void main() {
|
||||
#ifdef IS_LPV_ENABLED
|
||||
uint blockId = uint(gl_GlobalInvocationID.x + gl_GlobalInvocationID.y * 32 + LpvBlockMapOffset);
|
||||
uint blockId = uint(gl_GlobalInvocationID.x + gl_GlobalInvocationID.y * 32);
|
||||
//if (blockId >= 1280) return;
|
||||
|
||||
vec3 lightColor = vec3(0.0);
|
||||
@ -28,6 +28,23 @@ void main() {
|
||||
vec3 tintColor = vec3(1.0);
|
||||
|
||||
switch (blockId) {
|
||||
case BLOCK_WATER:
|
||||
mixWeight = 0.8;
|
||||
break;
|
||||
|
||||
case BLOCK_GRASS_SHORT:
|
||||
case BLOCK_GRASS_TALL_UPPER:
|
||||
case BLOCK_GRASS_TALL_LOWER:
|
||||
mixWeight = 0.85;
|
||||
break;
|
||||
|
||||
case BLOCK_GROUND_WAVING:
|
||||
case BLOCK_GROUND_WAVING_VERTICAL:
|
||||
case BLOCK_AIR_WAVING:
|
||||
mixWeight = 0.9;
|
||||
break;
|
||||
|
||||
|
||||
case BLOCK_AMETHYST_BUD_LARGE:
|
||||
lightColor = LightColor_Amethyst;
|
||||
lightRange = 4.0;
|
||||
@ -275,6 +292,7 @@ void main() {
|
||||
mixWeight = 1.0;
|
||||
break;
|
||||
|
||||
// Door
|
||||
|
||||
case BLOCK_DOOR_N:
|
||||
mixMask = BuildLpvMask(0u, 1u, 1u, 1u, 1u, 1u);
|
||||
@ -293,6 +311,15 @@ void main() {
|
||||
mixWeight = 0.8;
|
||||
break;
|
||||
|
||||
// Pressure Plate
|
||||
|
||||
case BLOCK_PRESSURE_PLATE:
|
||||
mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 1u, 0u);
|
||||
mixWeight = 0.9;
|
||||
break;
|
||||
|
||||
// Slab
|
||||
|
||||
case BLOCK_SLAB_TOP:
|
||||
mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 0u, 1u);
|
||||
mixWeight = 0.5;
|
||||
@ -326,6 +353,12 @@ void main() {
|
||||
mixMask = BuildLpvMask(1u, 1u, 1u, 0u, 1u, 1u);
|
||||
mixWeight = 0.8;
|
||||
break;
|
||||
|
||||
// Misc
|
||||
|
||||
case BLOCK_SIGN:
|
||||
mixWeight = 0.9;
|
||||
break;
|
||||
}
|
||||
|
||||
if (lightRange > 0.0) lightRange += 1.0;
|
||||
@ -334,6 +367,6 @@ void main() {
|
||||
block.ColorRange = packUnorm4x8(vec4(lightColor, lightRange/255.0));
|
||||
block.MaskWeight = BuildBlockLpvData(mixMask, mixWeight);
|
||||
block.Tint = packUnorm4x8(vec4(tintColor, 0.0));
|
||||
LpvBlockMap[blockId - LpvBlockMapOffset] = block;
|
||||
LpvBlockMap[blockId] = block;
|
||||
#endif
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ layout (local_size_x = 8, local_size_y = 8, local_size_z = 8) in;
|
||||
uint blockId = voxelSharedData[shared_index];
|
||||
|
||||
if (blockId > 0 && blockId != BLOCK_EMPTY)
|
||||
ParseBlockLpvData(LpvBlockMap[blockId - LpvBlockMapOffset].MaskWeight, mixMask, mixWeight);
|
||||
ParseBlockLpvData(LpvBlockMap[blockId].MaskWeight, mixMask, mixWeight);
|
||||
|
||||
return lpvSharedData[shared_index] * ((mixMask >> mask_index) & 1u);// * mixWeight;
|
||||
}
|
||||
@ -124,9 +124,9 @@ void main() {
|
||||
|
||||
if (blockId > 0u) {
|
||||
mixWeight = 0.0;
|
||||
ParseBlockLpvData(LpvBlockMap[blockId - LpvBlockMapOffset].MaskWeight, mixMask, mixWeight);
|
||||
ParseBlockLpvData(LpvBlockMap[blockId].MaskWeight, mixMask, mixWeight);
|
||||
|
||||
uint tintData = LpvBlockMap[blockId - LpvBlockMapOffset].Tint;
|
||||
uint tintData = LpvBlockMap[blockId].Tint;
|
||||
tintColor = unpackUnorm4x8(tintData).rgb;
|
||||
}
|
||||
|
||||
@ -140,7 +140,7 @@ void main() {
|
||||
lightValue.ba = log2(lightValue.ba + 1.0) / LpvBlockSkyRange;
|
||||
|
||||
if (blockId > 0u) {
|
||||
vec4 lightColorRange = unpackUnorm4x8(LpvBlockMap[blockId - LpvBlockMapOffset].ColorRange);
|
||||
vec4 lightColorRange = unpackUnorm4x8(LpvBlockMap[blockId].ColorRange);
|
||||
float lightRange = lightColorRange.a * 255.0;
|
||||
|
||||
if (lightRange > EPSILON) {
|
||||
|
Reference in New Issue
Block a user