mirror of
https://github.com/X0nk/Bliss-Shader.git
synced 2025-06-20 07:57:55 +08:00
60 lines
1.7 KiB
Tcsh
60 lines
1.7 KiB
Tcsh
#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
|
|
}
|