mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-01 23:59:12 +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:
@@ -125,11 +125,15 @@ std::pair<double, double> shared_zone( TTrack const &Track, int const Path ) {
|
||||
|
||||
namespace {
|
||||
|
||||
// the instances made so far, of all the tracks
|
||||
std::uint64_t makings { 0 };
|
||||
|
||||
// the beams as instances of the parts of the model of the track: those of the fastenings with them, or left for later and the beams
|
||||
// kept for them meanwhile
|
||||
void instance( TTrack &Track, std::vector<beam> &&Beams, bool const Fastened ) {
|
||||
|
||||
auto &laid { Track.m_sleepers3d };
|
||||
laid.made = ++makings;
|
||||
for( auto &instances : laid.instances ) {
|
||||
instances.clear();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user