vkdoom_m/wadsrc/static/shaders/lightmap/binding_lightmapper.glsl

88 lines
1.5 KiB
GLSL

layout(set = 0, binding = 0) uniform Uniforms
{
vec3 SunDir;
float Padding1;
vec3 SunColor;
float SunIntensity;
};
struct SurfaceInfo
{
vec3 Normal;
float Sky;
uint PortalIndex;
int TextureIndex;
float Alpha;
float Padding;
};
struct PortalInfo
{
mat4 Transformation;
};
struct LightInfo
{
vec3 Origin;
float Padding0;
vec3 RelativeOrigin;
float Padding1;
float Radius;
float Intensity;
float InnerAngleCos;
float OuterAngleCos;
vec3 SpotDir;
float Padding2;
vec3 Color;
float Padding3;
};
layout(set = 0, binding = 1) buffer SurfaceIndexBuffer { uint surfaceIndices[]; };
layout(set = 0, binding = 2) buffer SurfaceBuffer { SurfaceInfo surfaces[]; };
layout(set = 0, binding = 3) buffer LightBuffer { LightInfo lights[]; };
layout(set = 0, binding = 4) buffer PortalBuffer { PortalInfo portals[]; };
#if defined(USE_DRAWINDIRECT)
struct LightmapRaytracePC
{
uint LightStart;
uint LightEnd;
int SurfaceIndex;
int PushPadding1;
vec3 WorldToLocal;
float TextureSize;
vec3 ProjLocalToU;
float PushPadding2;
vec3 ProjLocalToV;
float PushPadding3;
float TileX;
float TileY;
float TileWidth;
float TileHeight;
};
layout(std430, set = 0, binding = 5) buffer ConstantsBuffer { LightmapRaytracePC constants[]; };
#else
layout(push_constant) uniform LightmapRaytracePC
{
uint LightStart;
uint LightEnd;
int SurfaceIndex;
int PushPadding1;
vec3 WorldToLocal;
float TextureSize;
vec3 ProjLocalToU;
float PushPadding2;
vec3 ProjLocalToV;
float PushPadding3;
float TileX;
float TileY;
float TileWidth;
float TileHeight;
};
#endif