kinda working

This commit is contained in:
NULL511
2024-05-02 12:43:30 -04:00
parent 2c4eea5b26
commit 3ab6b68165
16 changed files with 306 additions and 201 deletions

View File

@ -9,23 +9,8 @@ layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
const ivec3 workGroups = ivec3(4, 5, 1);
#ifdef IS_LPV_ENABLED
#include "/lib/blocks.glsl"
#include "/lib/lpv_blocks.glsl"
vec3 GetSceneLightColor(const in uint blockId) {
if (blockId == 10005) return vec3(1.0);
return vec3(0.0);
}
float GetSceneLightRange(const in uint blockId) {
if (blockId == 10005) return 12.0;
return 0.0;
}
void GetLpvBlockMask(const in uint blockId, out float mixWeight, out uint mixMask) {
mixWeight = 0.0;
mixMask = 0xFFFF;
}
#endif
@ -34,25 +19,38 @@ void main() {
uint blockId = uint(gl_GlobalInvocationID.x + gl_GlobalInvocationID.y * 32);
//if (blockId >= 1280) return;
vec3 lightColor = vec3(0.0);
float lightRange = 0.0;
float mixWeight = 0.0;
uint mixMask = 0xFFFF;
switch (blockId) {
case BLOCK_GLOWSTONE:
lightColor = vec3(0.8, 0.7, 0.1);
lightRange = 15.0;
break;
case BLOCK_REDSTONE_TORCH:
lightColor = vec3(1.0, 0.1, 0.1);
lightRange = 7.0;
break;
case BLOCK_SEA_LANTERN:
lightColor = vec3(1.0);
lightRange = 15.0;
break;
case BLOCK_SOUL_TORCH:
lightColor = vec3(0.1, 0.6, 1.0);
lightRange = 10.0;
break;
case BLOCK_TORCH:
lightColor = vec3(1.0, 0.6, 0.1);
lightRange = 14.0;
break;
}
LpvBlockData block;
uint mixMask;
float mixWeight;
GetLpvBlockMask(blockId, mixWeight, mixMask);
block.data = BuildBlockLpvData(mixMask, mixWeight);
// vec3 lightOffset = GetSceneLightOffset(lightType);
vec3 lightColor = GetSceneLightColor(blockId);
float lightRange = GetSceneLightRange(blockId);
float lightSize = 0.0;//GetSceneLightSize(lightType);
// bool lightTraced = GetLightTraced(lightType);
// bool lightSelfTraced = GetLightSelfTraced(lightType);
// light.Offset = packSnorm4x8(vec4(lightOffset, 0.0));
block.LightColor = packUnorm4x8(vec4(lightColor, 0.0));
block.LightRangeSize = packUnorm4x8(vec4(lightRange/255.0, lightSize, 0.0, 0.0));
// light.LightMetadata = (lightTraced ? 1u : 0u);
// light.LightMetadata |= (lightSelfTraced ? 1u : 0u) << 1u;
block.LightRangeSize = packUnorm4x8(vec4(lightRange/255.0, 0.0, 0.0, 0.0));
LpvBlockMap[blockId] = block;
#endif