remap block ranges; add more lpv block mappings

This commit is contained in:
NULL511
2024-05-03 17:50:37 -04:00
parent 8a3a43e28c
commit f577d2f4dd
9 changed files with 236 additions and 188 deletions

View File

@ -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);

View File

@ -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;

View File

@ -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

View File

@ -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
}

View File

@ -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) {