mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-06 16:18:35 +01:00
Cull instances by compact records and draw them from a shader storage buffer
This commit is contained in:
15
gl/ubo.h
15
gl/ubo.h
@@ -104,17 +104,6 @@ namespace gl
|
||||
|
||||
static_assert(sizeof(model_ubs) == 208 + 16 * MAX_PARAMS, "bad size of ubs");
|
||||
|
||||
// maximum number of instances per single GPU-instanced draw call.
|
||||
// 256 mat4 = 16 KiB, the guaranteed minimum UBO size. Bigger batches must split.
|
||||
const size_t MAX_INSTANCES_PER_BATCH = 256;
|
||||
|
||||
struct instance_ubs
|
||||
{
|
||||
glm::mat4 instance_modelview[MAX_INSTANCES_PER_BATCH];
|
||||
};
|
||||
|
||||
static_assert(sizeof(instance_ubs) == 64 * MAX_INSTANCES_PER_BATCH, "bad size of instance_ubs");
|
||||
|
||||
// layout std430 (shader storage buffers)
|
||||
// structs must match with GLSL, offsets checked below
|
||||
|
||||
@@ -295,6 +284,10 @@ namespace gl
|
||||
const GLuint ATMOSPHERE_RESULT_SSBO_BINDING = 7;
|
||||
const GLuint ATMOSPHERE_UBO_BINDING = 4;
|
||||
|
||||
// binding point of the per-instance modelview matrices of instanced draws (glsl: instance_ssbo, mat4 per instance).
|
||||
// element 0 is identity, the matrix of every draw which isn't instanced
|
||||
const GLuint INSTANCE_SSBO_BINDING = 8;
|
||||
|
||||
// number of coefficients of the spherical harmonics of order 2 (bands 0..2)
|
||||
const size_t SKY_SH_COEFFICIENTS = 9;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user