Files
QuaternionEngine/shaders/input_structures.glsl

48 lines
1.4 KiB
GLSL

// Maximum number of shadow cascades supported in shaders
#define MAX_CASCADES 4
// Maximum number of punctual (point) lights
#define MAX_PUNCTUAL_LIGHTS 64
struct GPUPunctualLight {
vec4 position_radius;
vec4 color_intensity;
};
layout(set = 0, binding = 0) uniform SceneData{
mat4 view;
mat4 proj;
mat4 viewproj;
// Legacy single shadow matrix (used for near range in mixed mode)
mat4 lightViewProj;
vec4 ambientColor;
vec4 sunlightDirection; //w for sun power
vec4 sunlightColor;
// Cascaded shadow matrices (0 = near/simple map, 1..N-1 = CSM)
mat4 lightViewProjCascades[4];
// View-space split distances for selecting cascades (x,y,z,w)
vec4 cascadeSplitsView;
// Ray-query settings (packed)
// rtOptions.x = enabled (1/0)
// rtOptions.y = cascade bitmask (bit i => cascade i assisted)
uvec4 rtOptions;
// rtParams.x = N·L threshold; others reserved
vec4 rtParams;
GPUPunctualLight punctualLights[MAX_PUNCTUAL_LIGHTS];
uvec4 lightCounts;
} sceneData;
layout(set = 1, binding = 0) uniform GLTFMaterialData{
vec4 colorFactors;
vec4 metal_rough_factors;
vec4 extra[14];
} materialData;
layout(set = 1, binding = 1) uniform sampler2D colorTex;
layout(set = 1, binding = 2) uniform sampler2D metalRoughTex;
layout(set = 1, binding = 3) uniform sampler2D normalMap; // tangent-space normal, UNORM