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>)>
88 bool srgb =
false)
override;
90 bool srgb =
false)
override;
92 bool srgb =
false)
override;
94 const std::shared_ptr<geometry::Image>
image,
108 std::shared_ptr<visualization::rendering::RenderToBuffer>
121 return gaussian_splat_renderer_.get();
137 filament::Engine& engine_;
138 filament::Renderer* renderer_ =
nullptr;
139 filament::SwapChain* swap_chain_ =
nullptr;
140 filament::SwapChain* swap_chain_cached_ =
nullptr;
142 std::unordered_map<REHandle_abstract, std::unique_ptr<FilamentScene>>
144 std::unique_ptr<FilamentScene> gui_scene_;
146 std::unique_ptr<FilamentMaterialModifier> materials_modifier_;
147 std::unique_ptr<GaussianSplatRenderer> gaussian_splat_renderer_;
150 std::unordered_set<std::shared_ptr<FilamentRenderToBuffer>>
153 bool frame_started_ =
false;
154 std::function<void()> on_after_draw_;
155 std::function<void()> on_apple_gaussian_composite_complete_;
156 bool needs_wait_after_draw_ =
false;
157#if defined(__APPLE__)
159 std::vector<uint8_t> read_pixels_rgba_buffer_;
std::shared_ptr< core::Tensor > image
Definition FilamentRenderer.cpp:328
std::function< void(std::shared_ptr< core::Tensor >)> callback
Definition FilamentRenderer.cpp:327
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:159
SkyboxHandle AddSkybox(const ResourceLoadRequest &request) override
Definition FilamentRenderer.cpp:485
TextureHandle GetGaussianSplatColorTexture(const FilamentView &view) const
Definition FilamentRenderer.cpp:133
filament::Renderer * GetNative()
Definition FilamentRenderer.h:128
void InvalidateGaussianSplatOutput(FilamentView &view)
Definition FilamentRenderer.cpp:153
void SetOnAfterDraw(std::function< void()> callback) override
Definition FilamentRenderer.cpp:170
SceneHandle CreateScene() override
Definition FilamentRenderer.cpp:108
void RemoveSkybox(const SkyboxHandle &id) override
Definition FilamentRenderer.cpp:495
TextureHandle AddTexture(const ResourceLoadRequest &request, bool srgb=false) override
Definition FilamentRenderer.cpp:442
bool UpdateTexture(TextureHandle texture, const std::shared_ptr< geometry::Image > image, bool srgb) override
Definition FilamentRenderer.cpp:453
void BeginFrame() override
Definition FilamentRenderer.cpp:191
MaterialModifier & ModifyMaterial(const MaterialHandle &id) override
Definition FilamentRenderer.cpp:403
void UpdateSwapChain() override
Definition FilamentRenderer.cpp:179
void RequestReadPixels(int width, int height, std::function< void(std::shared_ptr< core::Tensor >)> callback) override
Definition FilamentRenderer.cpp:358
void UpdateBitmapSwapChain(int width, int height) override
Definition FilamentRenderer.cpp:185
TextureHandle GetGaussianSplatDepthTexture(const FilamentView &view) const
Definition FilamentRenderer.cpp:140
bool HasGaussianSplatOutput(const FilamentView &view) const
Definition FilamentRenderer.cpp:128
void ConvertToGuiScene(const SceneHandle &id)
Definition FilamentRenderer.cpp:508
MaterialInstanceHandle AddMaterialInstance(const MaterialHandle &material) override
Definition FilamentRenderer.cpp:398
std::shared_ptr< visualization::rendering::RenderToBuffer > CreateBufferRenderer() override
Definition FilamentRenderer.cpp:499
void RemoveTexture(const TextureHandle &id) override
Definition FilamentRenderer.cpp:466
void Draw() override
Definition FilamentRenderer.cpp:254
void EndFrame() override
Definition FilamentRenderer.cpp:292
FilamentScene * GetGuiScene() const
Definition FilamentRenderer.h:114
IndirectLightHandle AddIndirectLight(const ResourceLoadRequest &request) override
Definition FilamentRenderer.cpp:470
void SetOnAppleGaussianCompositeComplete(std::function< void()> callback)
Definition FilamentRenderer.cpp:174
int GetGaussianSplatMaxShDegree() const
Definition FilamentRenderer.cpp:147
bool LastBeginFrameSubmitted() const override
Definition FilamentRenderer.h:71
void RemoveIndirectLight(const IndirectLightHandle &id) override
Definition FilamentRenderer.cpp:481
GaussianSplatRenderer * GetGaussianSplatRenderer()
Definition FilamentRenderer.h:120
Scene * GetScene(const SceneHandle &id) const override
Definition FilamentRenderer.cpp:116
~FilamentRenderer() override
Definition FilamentRenderer.cpp:95
void RemoveMaterialInstance(const MaterialInstanceHandle &id) override
Definition FilamentRenderer.cpp:437
MaterialHandle AddMaterial(const ResourceLoadRequest &request) override
Definition FilamentRenderer.cpp:393
RenderingType GetBackendType() override
Return if the rendering backend is OpenGL, Vulkan or Metal.
Definition FilamentRenderer.h:130
void DestroyScene(const SceneHandle &id) override
Definition FilamentRenderer.cpp:124
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