2024-05-04 00:55:01 -04:00
|
|
|
struct LpvBlockData { // 12 x2000 =?
|
2024-05-02 16:33:55 -04:00
|
|
|
uint MaskWeight; // 4
|
2024-05-02 14:18:49 -04:00
|
|
|
uint ColorRange; // 4
|
2024-05-02 17:53:49 -04:00
|
|
|
uint Tint; // 4
|
2024-05-01 16:32:25 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
#ifdef RENDER_SETUP
|
|
|
|
layout(binding = 0) writeonly buffer lpvBlockData
|
|
|
|
#else
|
|
|
|
layout(binding = 0) readonly buffer lpvBlockData
|
|
|
|
#endif
|
|
|
|
{
|
|
|
|
LpvBlockData LpvBlockMap[];
|
|
|
|
};
|
|
|
|
|
2024-05-02 16:33:55 -04:00
|
|
|
|
2024-05-01 16:32:25 -04:00
|
|
|
uint BuildBlockLpvData(uint mixMask, float mixWeight) {
|
|
|
|
uint data = uint(saturate(mixWeight) * 255.0);
|
|
|
|
|
|
|
|
data = data | (mixMask << 8);
|
|
|
|
|
|
|
|
return data;
|
|
|
|
}
|
|
|
|
|
|
|
|
void ParseBlockLpvData(const in uint data, out uint mixMask, out float mixWeight) {
|
|
|
|
mixWeight = (data & 0xFF) / 255.0;
|
|
|
|
mixMask = (data >> 8) & 0xFF;
|
|
|
|
}
|