83 lines
2.0 KiB
GLSL
83 lines
2.0 KiB
GLSL
|
|
struct VertexData {
|
|
vec4 Normal;
|
|
vec2 TexCoord0;
|
|
vec2 TexCoord1;
|
|
vec4 Color;
|
|
};
|
|
|
|
struct Material
|
|
{
|
|
vec4 m_AlbedoFactor; // 16 16
|
|
vec3 m_EmissionFactor; // 12 28
|
|
float m_MetalFactor; // 04 32
|
|
float m_RoughFactor; // 04 36
|
|
uint m_AlbedoTex; // 04 40
|
|
uint m_NormalTex; // 04 44
|
|
uint m_MetalRoughTex; // 04 48
|
|
uint m_OcclusionTex; // 04 52
|
|
uint m_EmissionTex; // 04 56
|
|
// We might be able to go upto 64 without pains.
|
|
};
|
|
|
|
struct PointLight
|
|
{
|
|
vec3 m_Position;
|
|
float m_Range;
|
|
uint m_Color;
|
|
float m_Intensity;
|
|
};
|
|
|
|
struct DirectionalLight
|
|
{
|
|
vec3 m_Direction;
|
|
float m_Validity_;
|
|
uint m_Color;
|
|
float m_Intensity;
|
|
};
|
|
|
|
// ---------- Bindless Bindings ----------
|
|
#define INVALID_HANDLE 0xFFFFFFFF
|
|
|
|
layout (std430, set = 0, binding = 0) readonly buffer PointLightBuffer {
|
|
PointLight lights[];
|
|
} pointLightBuffers[];
|
|
|
|
layout (std430, set = 0, binding = 0) readonly buffer DirectionLightBuffer {
|
|
DirectionalLight lights[];
|
|
} directionalLightBuffers[];
|
|
|
|
layout (set = 0, binding = 1) uniform sampler2D textures[];
|
|
layout (set = 0, binding = 1) uniform samplerCube textureCubes[];
|
|
|
|
// ---------- Buffer References ----------
|
|
layout(std430, buffer_reference, buffer_reference_align=16) readonly buffer VPositionRef {
|
|
vec4 Positions[];
|
|
};
|
|
|
|
layout(std430, buffer_reference, buffer_reference_align=16) readonly buffer VDataRef {
|
|
VertexData Data[];
|
|
};
|
|
|
|
layout(std430, buffer_reference, buffer_reference_align=8) readonly buffer MaterialsRef {
|
|
Material materials[];
|
|
};
|
|
|
|
layout(std430, buffer_reference, buffer_reference_align=8) readonly buffer MaterialRef {
|
|
Material material;
|
|
};
|
|
|
|
// Node
|
|
|
|
struct Node
|
|
{
|
|
mat4 globalTransform; // 64 64
|
|
VPositionRef pVertexPosition; // 08 72
|
|
VDataRef pVertexData; // 08 80
|
|
MaterialRef pMaterial; // 08 88
|
|
// pad // 08 96
|
|
};
|
|
|
|
layout(std430, buffer_reference, buffer_reference_align=8) readonly buffer NodeRef {
|
|
Node nodes[];
|
|
}; |