diff --git a/manul/renderer/include/nvrenderer/nvrenderer.h b/manul/renderer/include/nvrenderer/nvrenderer.h index 7c37ae2f..d9058cb7 100644 --- a/manul/renderer/include/nvrenderer/nvrenderer.h +++ b/manul/renderer/include/nvrenderer/nvrenderer.h @@ -80,21 +80,27 @@ class NvRenderer : public gfx_renderer, public MaResourceRegistry { virtual gfx::geometrybank_handle Create_Bank() override; virtual gfx::geometry_handle Insert(gfx::index_array &Indices, gfx::vertex_array &Vertices, + gfx::userdata_array &Userdata, gfx::geometrybank_handle const &Geometry, int const Type) override; virtual gfx::geometry_handle Insert(gfx::vertex_array &Vertices, + gfx::userdata_array &Userdata, gfx::geometrybank_handle const &Geometry, int const Type) override; virtual bool Replace(gfx::vertex_array &Vertices, + gfx::userdata_array &Userdata, gfx::geometry_handle const &Geometry, int const Type, std::size_t const Offset = 0) override; virtual bool Append(gfx::vertex_array &Vertices, + gfx::userdata_array &Userdata, gfx::geometry_handle const &Geometry, int const Type) override; virtual gfx::index_array const &Indices( gfx::geometry_handle const &Geometry) const override; virtual gfx::vertex_array const &Vertices( gfx::geometry_handle const &Geometry) const override; + const gfx::userdata_array &UserData( + const gfx::geometry_handle &Geometry) const override; virtual material_handle Fetch_Material(std::string const &Filename, bool const Loadnow = true) override; virtual void Bind_Material(material_handle const Material, diff --git a/manul/renderer/source/nvrenderer.cpp b/manul/renderer/source/nvrenderer.cpp index 173d87d8..2c7e659f 100644 --- a/manul/renderer/source/nvrenderer.cpp +++ b/manul/renderer/source/nvrenderer.cpp @@ -736,7 +736,8 @@ gfx::geometrybank_handle NvRenderer::Create_Bank() { gfx::geometry_handle NvRenderer::Insert( gfx::index_array &Indices, gfx::vertex_array &Vertices, - gfx::geometrybank_handle const &Geometry, int const Type) { + gfx::userdata_array &Userdata, gfx::geometrybank_handle const &Geometry, + int const Type) { if (!Type || Type >= TP_ROTATOR) return {}; auto &bank = m_geometry_banks[Geometry.bank - 1]; @@ -765,8 +766,8 @@ gfx::geometry_handle NvRenderer::Insert( } gfx::geometry_handle NvRenderer::Insert( - gfx::vertex_array &Vertices, gfx::geometrybank_handle const &Geometry, - int const Type) { + gfx::vertex_array &Vertices, gfx::userdata_array &Userdata, + gfx::geometrybank_handle const &Geometry, int const Type) { if (!Type || Type >= TP_ROTATOR) return {}; auto &bank = m_geometry_banks[Geometry.bank - 1]; @@ -834,6 +835,7 @@ gfx::geometry_handle NvRenderer::Insert( } bool NvRenderer::Replace(gfx::vertex_array &Vertices, + gfx::userdata_array &Userdata, gfx::geometry_handle const &Geometry, int const Type, std::size_t const Offset) { if (!Type || Type >= TP_ROTATOR) return false; @@ -879,6 +881,7 @@ bool NvRenderer::Replace(gfx::vertex_array &Vertices, } bool NvRenderer::Append(gfx::vertex_array &Vertices, + gfx::userdata_array &Userdata, gfx::geometry_handle const &Geometry, int const Type) { return false; } @@ -903,6 +906,12 @@ gfx::vertex_array const &NvRenderer::Vertices( .m_vertices; } +const gfx::userdata_array &NvRenderer::UserData( + const gfx::geometry_handle &Geometry) const { + const static gfx::userdata_array array{}; + return array; +} + material_handle NvRenderer::Fetch_Material(std::string const &Filename, bool const Loadnow) { auto filename{Filename}; diff --git a/manul/renderer/source/track_batching.cpp b/manul/renderer/source/track_batching.cpp index 988f1a5a..65317a4f 100644 --- a/manul/renderer/source/track_batching.cpp +++ b/manul/renderer/source/track_batching.cpp @@ -316,6 +316,7 @@ void NvRenderer::GatherTracksForBatching() { track_batch.m_material = batch.m_material; track_batch.m_geometry_origin = batch.m_geometry_origin; std::vector vertices{}; + std::vector userdatas{}; std::vector indices{}; for (int j = 0; j < batch.m_tracks.size(); ++j) { const auto& track = batch.m_tracks[j]; @@ -344,7 +345,8 @@ void NvRenderer::GatherTracksForBatching() { track_batch.m_regions_need_update.resize( track_batch.m_draw_commands.size()); auto bank = Create_Bank(); - track_batch.m_geometry = Insert(indices, vertices, bank, GL_TRIANGLES); + track_batch.m_geometry = + Insert(indices, vertices, userdatas, bank, GL_TRIANGLES); } m_track_quadtree.Build(builder); }