17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-10-31 22:49:05 +01:00

perf(sleepers): the instances of the sleepers and timbers of a track sent to the gpu once, as it's laid, and kept there in a buffer of their own; in each pass the runs of them in sight turned by the modelviews of their cells into the instance buffer of the frame by a compute pass, one dispatch and one barrier a pass, and drawn in one instanced draw for each model, part and level of detail, in place of the cpu turning every instance every frame

This commit is contained in:
maj00r
2026-10-24 01:40:34 +02:00
parent f155956669
commit 85b76acca5
12 changed files with 444 additions and 92 deletions

View File

@@ -34,6 +34,8 @@ namespace gl
// bigger one (generation() changes, buffer() tells which to bind); the old one stays until the frame is done with, so
// what was written to it can still be bound and drawn from later in the frame
GLintptr push(void const *Data, GLsizeiptr Size);
// the room for Size bytes in the buffer of the frame, as push() makes it, left for the gpu to write (a compute pass)
GLintptr reserve(GLsizeiptr Size);
GLuint buffer() const
{