11#include <unordered_map>
12#include <unordered_set>
31namespace visualization {
34class FilamentMaterialModifier;
35class FilamentRenderToBuffer;
36class FilamentResourceManager;
37class GaussianSplatRenderer;
44 void* native_drawable,
65 std::function<
void(std::shared_ptr<core::Tensor>)>
86 bool srgb =
false)
override;
88 bool srgb =
false)
override;
90 bool srgb =
false)
override;
92 const std::shared_ptr<geometry::Image>
image,
106 std::shared_ptr<visualization::rendering::RenderToBuffer>
119 return gaussian_splat_renderer_.get();
135 filament::Engine& engine_;
136 filament::Renderer* renderer_ =
nullptr;
137 filament::SwapChain* swap_chain_ =
nullptr;
138 filament::SwapChain* swap_chain_cached_ =
nullptr;
140 std::unordered_map<REHandle_abstract, std::unique_ptr<FilamentScene>>
142 std::unique_ptr<FilamentScene> gui_scene_;
144 std::unique_ptr<FilamentMaterialModifier> materials_modifier_;
145 std::unique_ptr<GaussianSplatRenderer> gaussian_splat_renderer_;
148 std::unordered_set<std::shared_ptr<FilamentRenderToBuffer>>
150 std::vector<FilamentView*> rendered_views_;
152 bool frame_started_ =
false;
153 std::function<void()> on_after_draw_;
154 std::function<void()> on_gaussian_composite_complete_;
155 bool needs_wait_after_draw_ =
false;
156#if defined(__APPLE__)
158 std::vector<uint8_t> read_pixels_rgba_buffer_;
std::shared_ptr< core::Tensor > image
Definition FilamentRenderer.cpp:347
std::function< void(std::shared_ptr< core::Tensor >)> callback
Definition FilamentRenderer.cpp:346
math::float4 color
Definition LineSetBuffers.cpp:45
The Image class stores image with customizable rows, cols, channels, dtype and device.
Definition Image.h:29
static RenderingType GetBackendType()
Definition FilamentEngine.h:46
Definition FilamentRenderToBuffer.h:30
Definition FilamentRenderer.h:41
void SetClearColor(const Eigen::Vector4f &color) override
Definition FilamentRenderer.cpp:163
SkyboxHandle AddSkybox(const ResourceLoadRequest &request) override
Definition FilamentRenderer.cpp:504
TextureHandle GetGaussianSplatColorTexture(const FilamentView &view) const
Definition FilamentRenderer.cpp:137
filament::Renderer * GetNative()
Definition FilamentRenderer.h:126
void InvalidateGaussianSplatOutput(FilamentView &view)
Definition FilamentRenderer.cpp:157
void SetOnAfterDraw(std::function< void()> callback) override
Definition FilamentRenderer.cpp:174
SceneHandle CreateScene() override
Definition FilamentRenderer.cpp:112
void RemoveSkybox(const SkyboxHandle &id) override
Definition FilamentRenderer.cpp:514
TextureHandle AddTexture(const ResourceLoadRequest &request, bool srgb=false) override
Definition FilamentRenderer.cpp:461
bool UpdateTexture(TextureHandle texture, const std::shared_ptr< geometry::Image > image, bool srgb) override
Definition FilamentRenderer.cpp:472
void BeginFrame() override
Definition FilamentRenderer.cpp:195
MaterialModifier & ModifyMaterial(const MaterialHandle &id) override
Definition FilamentRenderer.cpp:422
void SetOnGaussianCompositeComplete(std::function< void()> callback)
Definition FilamentRenderer.cpp:178
void UpdateSwapChain() override
Definition FilamentRenderer.cpp:183
void RequestReadPixels(int width, int height, std::function< void(std::shared_ptr< core::Tensor >)> callback) override
Definition FilamentRenderer.cpp:377
void UpdateBitmapSwapChain(int width, int height) override
Definition FilamentRenderer.cpp:189
TextureHandle GetGaussianSplatDepthTexture(const FilamentView &view) const
Definition FilamentRenderer.cpp:144
bool HasGaussianSplatOutput(const FilamentView &view) const
Definition FilamentRenderer.cpp:132
void ConvertToGuiScene(const SceneHandle &id)
Definition FilamentRenderer.cpp:527
MaterialInstanceHandle AddMaterialInstance(const MaterialHandle &material) override
Definition FilamentRenderer.cpp:417
std::shared_ptr< visualization::rendering::RenderToBuffer > CreateBufferRenderer() override
Definition FilamentRenderer.cpp:518
void RemoveTexture(const TextureHandle &id) override
Definition FilamentRenderer.cpp:485
void Draw() override
Definition FilamentRenderer.cpp:251
void EndFrame() override
Definition FilamentRenderer.cpp:296
FilamentScene * GetGuiScene() const
Definition FilamentRenderer.h:112
IndirectLightHandle AddIndirectLight(const ResourceLoadRequest &request) override
Definition FilamentRenderer.cpp:489
int GetGaussianSplatMaxShDegree() const
Definition FilamentRenderer.cpp:151
bool LastBeginFrameSubmitted() const override
Definition FilamentRenderer.h:71
void RemoveIndirectLight(const IndirectLightHandle &id) override
Definition FilamentRenderer.cpp:500
GaussianSplatRenderer * GetGaussianSplatRenderer()
Definition FilamentRenderer.h:118
Scene * GetScene(const SceneHandle &id) const override
Definition FilamentRenderer.cpp:120
~FilamentRenderer() override
Definition FilamentRenderer.cpp:99
void RemoveMaterialInstance(const MaterialInstanceHandle &id) override
Definition FilamentRenderer.cpp:456
MaterialHandle AddMaterial(const ResourceLoadRequest &request) override
Definition FilamentRenderer.cpp:412
RenderingType GetBackendType() override
Return if the rendering backend is OpenGL, Vulkan or Metal.
Definition FilamentRenderer.h:128
void DestroyScene(const SceneHandle &id) override
Definition FilamentRenderer.cpp:128
Definition FilamentResourceManager.h:50
Definition FilamentScene.h:70
Definition FilamentView.h:33
Definition GaussianSplatRenderer.h:38
Definition MaterialModifier.h:107
Definition FilamentEngine.h:15
RenderingType
Definition Renderer.h:57
Definition PinholeCameraIntrinsic.cpp:16