94 lines
1.8 KiB
GLSL
94 lines
1.8 KiB
GLSL
|
|
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 = 0, std430) buffer SurfaceIndexBuffer { uint surfaceIndices[]; };
|
|
layout(set = 0, binding = 1, std430) buffer SurfaceBuffer { SurfaceInfo surfaces[]; };
|
|
layout(set = 0, binding = 2, std430) buffer LightBuffer { LightInfo lights[]; };
|
|
layout(set = 0, binding = 3, std430) buffer LightIndexBuffer { int lightIndexes[]; };
|
|
layout(set = 0, binding = 4, std430) buffer PortalBuffer { PortalInfo portals[]; };
|
|
|
|
#if defined(USE_RAYQUERY)
|
|
|
|
layout(set = 0, binding = 5) uniform accelerationStructureEXT acc;
|
|
|
|
#else
|
|
|
|
struct CollisionNode
|
|
{
|
|
vec3 center;
|
|
float padding1;
|
|
vec3 extents;
|
|
float padding2;
|
|
int left;
|
|
int right;
|
|
int element_index;
|
|
int padding3;
|
|
};
|
|
|
|
layout(set = 0, binding = 5, std430) buffer NodeBuffer
|
|
{
|
|
int nodesRoot;
|
|
int nodebufferPadding1;
|
|
int nodebufferPadding2;
|
|
int nodebufferPadding3;
|
|
CollisionNode nodes[];
|
|
};
|
|
|
|
#endif
|
|
|
|
struct SurfaceVertex // Note: this must always match the FFlatVertex struct
|
|
{
|
|
vec3 pos;
|
|
float lindex;
|
|
vec2 uv;
|
|
vec2 luv;
|
|
};
|
|
|
|
layout(set = 0, binding = 6, std430) buffer VertexBuffer { SurfaceVertex vertices[]; };
|
|
layout(set = 0, binding = 7, std430) buffer ElementBuffer { int elements[]; };
|
|
|
|
layout(set = 1, binding = 0) uniform sampler2D textures[];
|
|
|
|
layout(push_constant) uniform PushConstants
|
|
{
|
|
mat4 ViewToWorld;
|
|
vec3 CameraPos;
|
|
float ProjX;
|
|
vec3 SunDir;
|
|
float ProjY;
|
|
vec3 SunColor;
|
|
float SunIntensity;
|
|
};
|