69 lines
1.3 KiB
GLSL
69 lines
1.3 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 Padding0;
|
|
uint LightStart;
|
|
uint LightEnd;
|
|
uint Padding1;
|
|
uint Padding2;
|
|
};
|
|
|
|
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 SoftShadowRadius;
|
|
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 LightIndexBuffer { int lightIndexes[]; };
|
|
layout(set = 0, binding = 5) buffer PortalBuffer { PortalInfo portals[]; };
|
|
|
|
struct LightmapRaytracePC
|
|
{
|
|
int SurfaceIndex;
|
|
int Padding0;
|
|
int Padding1;
|
|
int Padding2;
|
|
vec3 WorldToLocal;
|
|
float TextureSize;
|
|
vec3 ProjLocalToU;
|
|
float Padding3;
|
|
vec3 ProjLocalToV;
|
|
float Padding4;
|
|
float TileX;
|
|
float TileY;
|
|
float TileWidth;
|
|
float TileHeight;
|
|
};
|
|
|
|
layout(std430, set = 0, binding = 6) buffer ConstantsBuffer { LightmapRaytracePC constants[]; };
|