Major reorg
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
// Unified backdrop blur vertex shader.
|
||||
// Handles both the 1D separable blur passes (fullscreen triangle, mode 0; used for
|
||||
// BOTH the H-pass and V-pass) and the composite pass (instanced unit-quad over
|
||||
// Backdrop_Primitive storage buffer, mode 1) for the second PSO of the backdrop bracket.
|
||||
// Gaussian_Blur_Primitive storage buffer, mode 1) for the second PSO of the backdrop bracket.
|
||||
// The first PSO (downsample) uses backdrop_fullscreen.vert.
|
||||
//
|
||||
// No vertex buffer for either mode. Mode 0 uses gl_VertexIndex 0..2 for a single
|
||||
@@ -33,7 +33,7 @@ layout(location = 4) flat out float f_half_feather;
|
||||
|
||||
// --- Uniforms (set 1) ---
|
||||
// Backdrop pipeline's own uniform block — distinct from the main pipeline's
|
||||
// Vertex_Uniforms. `mode` selects between H-blur (0) and V-composite (1).
|
||||
// Vertex_Uniforms_2D. `mode` selects between H-blur (0) and V-composite (1).
|
||||
layout(set = 1, binding = 0) uniform Uniforms {
|
||||
mat4 projection;
|
||||
float dpi_scale;
|
||||
@@ -41,18 +41,18 @@ layout(set = 1, binding = 0) uniform Uniforms {
|
||||
vec2 _pad0;
|
||||
};
|
||||
|
||||
// --- Backdrop primitive storage buffer (set 0) ---
|
||||
// --- Gaussian blur primitive storage buffer (set 0) ---
|
||||
// 48 bytes, std430-natural layout (no implicit padding). vec4 members are
|
||||
// front-loaded so their 16-byte alignment is satisfied without holes; the
|
||||
// vec2 and scalar tail packs tight to land the struct at a clean 48-byte
|
||||
// stride (a multiple of 16, so the array stride needs no rounding either).
|
||||
// Field semantics match the CPU-side Backdrop_Primitive declared in
|
||||
// Field semantics match the CPU-side Gaussian_Blur_Primitive declared in
|
||||
// levlib/draw/backdrop.odin; keep both in sync.
|
||||
//
|
||||
// Backdrop primitives are tint-only: outline is intentionally absent. Specialized
|
||||
// Gaussian blur primitives are tint-only: outline is intentionally absent. Specialized
|
||||
// edge effects (e.g. liquid-glass-style refraction outlines) would be a dedicated
|
||||
// primitive type with its own pipeline rather than a flag bit here.
|
||||
struct Backdrop_Primitive {
|
||||
struct Gaussian_Blur_Primitive {
|
||||
vec4 bounds; // 0-15: min_xy, max_xy (world-space)
|
||||
vec4 radii; // 16-31: per-corner radii (physical px)
|
||||
vec2 half_size; // 32-39: RRect half extents (physical px)
|
||||
@@ -60,8 +60,8 @@ struct Backdrop_Primitive {
|
||||
uint color; // 44-47: tint, packed RGBA u8x4
|
||||
};
|
||||
|
||||
layout(std430, set = 0, binding = 0) readonly buffer Backdrop_Primitives {
|
||||
Backdrop_Primitive primitives[];
|
||||
layout(std430, set = 0, binding = 0) readonly buffer Gaussian_Blur_Primitives {
|
||||
Gaussian_Blur_Primitive primitives[];
|
||||
};
|
||||
|
||||
void main() {
|
||||
@@ -82,8 +82,8 @@ void main() {
|
||||
f_radii = vec4(0.0);
|
||||
f_half_feather = 0.0;
|
||||
} else {
|
||||
// ---- Mode 1: V-composite instanced unit-quad over Backdrop_Primitive ----
|
||||
Backdrop_Primitive p = primitives[gl_InstanceIndex];
|
||||
// ---- Mode 1: V-composite instanced unit-quad over Gaussian_Blur_Primitive ----
|
||||
Gaussian_Blur_Primitive p = primitives[gl_InstanceIndex];
|
||||
|
||||
// Unit-quad corners for TRIANGLELIST (2 triangles, 6 vertices):
|
||||
// index 0 -> (0,0) index 3 -> (0,1)
|
||||
|
||||
Reference in New Issue
Block a user