concinnity-device 0.19.1

GPU backends (Metal, Vulkan, DirectX) behind a device facade for Concinnity
Documentation
// object_common.glsl
//
// The bindless per-object record. The main pass, the G-buffer prepass, the
// shadow pass and the cull kernel all stride the same per-frame SSBO, so this
// declaration is shared rather than repeated: one drifting copy would misindex
// every other consumer at once. Mirrors `GpuObjectData` in
// concinnity-core/src/gfx/render_types.rs (176 bytes) alongside
// directx/shaders/object_common.hlsl and metal/shaders/object_common.msl.
//
// shaderc has no #include resolver, so this file is substituted into the
// consuming shader at its OBJECT_DATA marker (builtins::GlslProgram::source).
//
// std430 aligns vec3 and mat4 to 16 bytes. Every vec3 below sits on a 16-byte
// boundary and is followed by a scalar that fills the trailing gap, so the
// packing matches the Rust record with no implicit padding.

struct GpuObjectData {
    mat4  model;
    vec3  tint;      float roughness;
    vec3  emissive;  float metallic;
    uint  albedo_index;
    uint  normal_index;
    float macro_variation;
    float terrain_blend;
    vec3  bb_min;    float cull_distance;
    vec3  bb_max;    float secondary_blend_sharpness;
    uint  albedo_secondary_index;
    uint  normal_secondary_index;
    uint  emissive_map_index;
    uint  orm_map_index;
    float alpha_cutoff;
    float _pad0;
    float _pad1;
    float _pad2;
};