mirror of
https://github.com/X0nk/Bliss-Shader.git
synced 2025-06-22 08:42:50 +08:00
floodfill static block/light data
This commit is contained in:
59
shaders/world0/setup.csh
Normal file
59
shaders/world0/setup.csh
Normal file
@ -0,0 +1,59 @@
|
||||
#version 430 compatibility
|
||||
|
||||
#define RENDER_SETUP
|
||||
|
||||
#include "/lib/settings.glsl"
|
||||
|
||||
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/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
|
||||
|
||||
|
||||
void main() {
|
||||
#ifdef IS_LPV_ENABLED
|
||||
uint blockId = uint(gl_GlobalInvocationID.x + gl_GlobalInvocationID.y * 32);
|
||||
//if (blockId >= 1280) return;
|
||||
|
||||
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;
|
||||
|
||||
LpvBlockMap[blockId] = block;
|
||||
#endif
|
||||
}
|
Reference in New Issue
Block a user