88 lines
1.5 KiB
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
|