Open3D (C++ API)  0.19.0
Loading...
Searching...
No Matches
Renderer.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// Copyright (c) 2018-2024 www.open3d.org
5// SPDX-License-Identifier: MIT
6// ----------------------------------------------------------------------------
7
8#pragma once
9
10#include <memory>
11
14
15namespace open3d {
16
17namespace t {
18namespace geometry {
19class Image;
20}
21} // namespace t
22
23namespace geometry {
24class Image;
25}
26
27namespace core {
28class Tensor;
29}
30
31namespace visualization {
32namespace rendering {
33
34class RenderToBuffer;
35class Scene;
36class View;
37
39public:
40 using ErrorCallback = std::function<void(
41 const ResourceLoadRequest&, const uint8_t, const std::string&)>;
42
43 ResourceLoadRequest(const void* data, size_t data_size);
44 explicit ResourceLoadRequest(const char* path);
45
46 ResourceLoadRequest(const void* data,
47 size_t data_size,
48 ErrorCallback error_callback);
49 ResourceLoadRequest(const char* path, ErrorCallback error_callback);
50
51 const void* data_;
52 const size_t data_size_;
53 const std::string path_;
55};
56
58
59class Renderer {
60public:
61 virtual ~Renderer() = default;
62
63 virtual SceneHandle CreateScene() = 0;
64 virtual Scene* GetScene(const SceneHandle& id) const = 0;
65 virtual void DestroyScene(const SceneHandle& id) = 0;
66
67 virtual void SetClearColor(const Eigen::Vector4f& color) = 0;
68 virtual void UpdateSwapChain() = 0;
69 virtual void UpdateBitmapSwapChain(int width, int height) = 0;
70
71 virtual void BeginFrame() = 0;
72 virtual void Draw() = 0;
73 // If using the Filament renderer this must be called *before* EndFrame()!
74 virtual void RequestReadPixels(
75 int width,
76 int height,
77 std::function<void(std::shared_ptr<core::Tensor>)> callback) = 0;
78 virtual void EndFrame() = 0;
79
80 virtual void SetOnAfterDraw(std::function<void()> callback) = 0;
81
85 virtual bool LastBeginFrameSubmitted() const { return false; }
86
87 virtual MaterialHandle AddMaterial(const ResourceLoadRequest& request) = 0;
89 const MaterialHandle& material) = 0;
92 const MaterialInstanceHandle& id) = 0;
94
96 bool srgb = false) = 0;
98 const std::shared_ptr<geometry::Image> image,
99 bool srgb = false) = 0;
101 bool srgb = false) = 0;
102 virtual bool UpdateTexture(TextureHandle texture,
103 const std::shared_ptr<geometry::Image> image,
104 bool srgb) = 0;
105 virtual bool UpdateTexture(TextureHandle texture,
107 bool srgb) = 0;
108
109 virtual void RemoveTexture(const TextureHandle& id) = 0;
110
112 const ResourceLoadRequest& request) = 0;
113 virtual void RemoveIndirectLight(const IndirectLightHandle& id) = 0;
114
115 virtual SkyboxHandle AddSkybox(const ResourceLoadRequest& request) = 0;
116 virtual void RemoveSkybox(const SkyboxHandle& id) = 0;
117
118 virtual std::shared_ptr<RenderToBuffer> CreateBufferRenderer() = 0;
119
122
123 void RenderToImage(
124 View* view,
125 Scene* scene,
126 std::function<void(std::shared_ptr<geometry::Image>)> cb);
127
128 // Returns a float image ranging from 0 (near plane) to 1 (far plane)
130 View* view,
131 Scene* scene,
132 std::function<void(std::shared_ptr<geometry::Image>)> cb,
133 bool z_in_view_space = false);
134};
135
136} // namespace rendering
137} // namespace visualization
138} // namespace open3d
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
double t
Definition SurfaceReconstructionPoisson.cpp:172
The Image class stores image with customizable rows, cols, channels, dtype and device.
Definition Image.h:29
virtual void RemoveMaterialInstance(const MaterialInstanceHandle &id)=0
virtual void RemoveTexture(const TextureHandle &id)=0
virtual void RemoveIndirectLight(const IndirectLightHandle &id)=0
virtual TextureHandle AddTexture(const ResourceLoadRequest &request, bool srgb=false)=0
virtual void RequestReadPixels(int width, int height, std::function< void(std::shared_ptr< core::Tensor >)> callback)=0
virtual bool UpdateTexture(TextureHandle texture, const t::geometry::Image &image, bool srgb)=0
virtual void SetClearColor(const Eigen::Vector4f &color)=0
virtual MaterialModifier & ModifyMaterial(const MaterialInstanceHandle &id)=0
virtual SkyboxHandle AddSkybox(const ResourceLoadRequest &request)=0
virtual void RemoveSkybox(const SkyboxHandle &id)=0
virtual IndirectLightHandle AddIndirectLight(const ResourceLoadRequest &request)=0
void RenderToDepthImage(View *view, Scene *scene, std::function< void(std::shared_ptr< geometry::Image >)> cb, bool z_in_view_space=false)
Definition Renderer.cpp:94
virtual TextureHandle AddTexture(const t::geometry::Image &image, bool srgb=false)=0
virtual MaterialModifier & ModifyMaterial(const MaterialHandle &id)=0
virtual bool UpdateTexture(TextureHandle texture, const std::shared_ptr< geometry::Image > image, bool srgb)=0
virtual void DestroyScene(const SceneHandle &id)=0
virtual bool LastBeginFrameSubmitted() const
Definition Renderer.h:85
virtual void UpdateBitmapSwapChain(int width, int height)=0
virtual MaterialInstanceHandle AddMaterialInstance(const MaterialHandle &material)=0
virtual MaterialHandle AddMaterial(const ResourceLoadRequest &request)=0
virtual Scene * GetScene(const SceneHandle &id) const =0
virtual RenderingType GetBackendType()=0
Return if the rendering backend is OpenGL, Vulkan or Metal.
virtual TextureHandle AddTexture(const std::shared_ptr< geometry::Image > image, bool srgb=false)=0
void RenderToImage(View *view, Scene *scene, std::function< void(std::shared_ptr< geometry::Image >)> cb)
Definition Renderer.cpp:67
virtual std::shared_ptr< RenderToBuffer > CreateBufferRenderer()=0
virtual void SetOnAfterDraw(std::function< void()> callback)=0
const void * data_
Definition Renderer.h:51
const size_t data_size_
Definition Renderer.h:52
std::function< void(const ResourceLoadRequest &, const uint8_t, const std::string &)> ErrorCallback
Definition Renderer.h:41
ErrorCallback error_callback_
Definition Renderer.h:54
const std::string path_
Definition Renderer.h:53
int width
Definition FilePCD.cpp:53
int height
Definition FilePCD.cpp:54
RenderingType
Definition Renderer.h:57
Definition PinholeCameraIntrinsic.cpp:16