diff --git a/filament/src/details/InstanceBuffer.h b/filament/src/details/InstanceBuffer.h index 662682f3ad..4fb4a5e9aa 100644 --- a/filament/src/details/InstanceBuffer.h +++ b/filament/src/details/InstanceBuffer.h @@ -30,6 +30,7 @@ #include #include +#include namespace filament { @@ -54,6 +55,7 @@ public: utils::CString const& getName() const noexcept { return mName; } backend::BufferObjectHandle getHandle() const noexcept { return mHandle; } + uint32_t getOffset() const noexcept { return mOffset; } private: friend class RenderableManager; @@ -62,6 +64,7 @@ private: utils::CString mName; size_t mInstanceCount; backend::BufferObjectHandle mHandle; + uint32_t mOffset = 0; }; FILAMENT_DOWNCAST(InstanceBuffer) diff --git a/filament/src/details/View.cpp b/filament/src/details/View.cpp index aa80777c85..f590380e09 100644 --- a/filament/src/details/View.cpp +++ b/filament/src/details/View.cpp @@ -810,7 +810,8 @@ void FView::prepare(FEngine& engine, DriverApi& driver, RootArenaScope& rootAren descriptorSet.setBuffer(layout, +PerRenderableBindingPoints::OBJECT_UNIFORMS, instance.buffer ? instance.buffer->getHandle() : mRenderableUbh, - 0, sizeof(PerRenderableUib)); + instance.buffer ? instance.buffer->getOffset() : 0, + sizeof(PerRenderableUib)); descriptorSet.setBuffer(layout, +PerRenderableBindingPoints::BONES_UNIFORMS,