53 lines
1.5 KiB
GLSL
53 lines
1.5 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.
|
|
};
|
|
|
|
// ---------- Bindless Bindings ----------
|
|
#define INVALID_HANDLE 0xFFFFFFFF
|
|
|
|
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 {
|
|
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
|
|
}; |