Open3D (C++ API)  0.15.1
FilamentView.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// The MIT License (MIT)
5//
6// Copyright (c) 2018-2021 www.open3d.org
7//
8// Permission is hereby granted, free of charge, to any person obtaining a copy
9// of this software and associated documentation files (the "Software"), to deal
10// in the Software without restriction, including without limitation the rights
11// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12// copies of the Software, and to permit persons to whom the Software is
13// furnished to do so, subject to the following conditions:
14//
15// The above copyright notice and this permission notice shall be included in
16// all copies or substantial portions of the Software.
17//
18// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
24// IN THE SOFTWARE.
25// ----------------------------------------------------------------------------
26
27#pragma once
28
29#include <memory>
30#include <numeric>
31
33
35namespace filament {
36class Engine;
37class Scene;
38class View;
39class Viewport;
40class ColorGrading;
41} // namespace filament
43
44namespace open3d {
45namespace visualization {
46namespace rendering {
47
48class FilamentCamera;
49class FilamentResourceManager;
50class FilamentScene;
51
52class FilamentView : public View {
53public:
54 static constexpr std::uint8_t kAllLayersMask =
55 std::numeric_limits<std::uint8_t>::max();
56 static constexpr std::uint8_t kMainLayer = 1; // Default layer for objects
57
58 FilamentView(filament::Engine& engine,
59 FilamentResourceManager& resource_mgr);
60 FilamentView(filament::Engine& engine,
61 FilamentScene& scene,
62 FilamentResourceManager& resource_mgr);
63 ~FilamentView() override;
64
65 Mode GetMode() const override;
66 void SetMode(Mode mode) override;
67 void SetDiscardBuffers(const TargetBuffers& buffers) override;
68
69 void SetSampleCount(int n) override;
70 int GetSampleCount() const override;
71
75 std::uint32_t h) override;
76 std::array<int, 4> GetViewport() const override;
77
78 void SetPostProcessing(bool enabled) override;
79 void SetAmbientOcclusion(bool enabled, bool ssct_enabled = false) override;
80 void SetAntiAliasing(bool enabled, bool temporal = false) override;
81 void SetShadowing(bool enabled, ShadowType type) override;
82
83 void SetColorGrading(const ColorGradingParams& color_grading) override;
84
85 void ConfigureForColorPicking() override;
86
87 void EnableViewCaching(bool enable) override;
88 bool IsCached() const override;
90
91 Camera* GetCamera() const override;
92
93 // Copies available settings for view and camera
94 void CopySettingsFrom(const FilamentView& other);
95
96 void SetScene(FilamentScene& scene);
97
98 filament::View* GetNativeView() const { return view_; }
99
100 void PreRender();
101 void PostRender();
102
103private:
104 void SetRenderTarget(const RenderTargetHandle render_target);
105
106 std::unique_ptr<FilamentCamera> camera_;
107 Mode mode_ = Mode::Color;
108 TargetBuffers discard_buffers_;
109 bool caching_enabled_ = false;
110 bool configured_for_picking_ = false;
111 TextureHandle color_buffer_;
112 TextureHandle depth_buffer_;
113 RenderTargetHandle render_target_;
114
115 filament::Engine& engine_;
116 FilamentScene* scene_ = nullptr;
117 FilamentResourceManager& resource_mgr_;
118 filament::View* view_ = nullptr;
119 filament::ColorGrading* color_grading_ = nullptr;
120};
121
122} // namespace rendering
123} // namespace visualization
124} // namespace open3d
Manages.
Definition: ColorGrading.h:37
Definition: FilamentResourceManager.h:69
filament::View * GetNativeView() const
Definition: FilamentView.h:98
void CopySettingsFrom(const FilamentView &other)
Definition: FilamentView.cpp:342
int GetSampleCount() const override
Definition: FilamentView.cpp:155
TextureHandle GetColorBuffer() override
Definition: FilamentView.cpp:322
void SetSampleCount(int n) override
Definition: FilamentView.cpp:153
bool IsCached() const override
Definition: FilamentView.cpp:320
void PreRender()
Definition: FilamentView.cpp:369
void SetShadowing(bool enabled, ShadowType type) override
Definition: FilamentView.cpp:192
Mode GetMode() const override
Definition: FilamentView.cpp:116
void PostRender()
Definition: FilamentView.cpp:457
void ConfigureForColorPicking() override
Definition: FilamentView.cpp:283
void SetPostProcessing(bool enabled) override
Definition: FilamentView.cpp:169
void SetMode(Mode mode) override
Definition: FilamentView.cpp:118
~FilamentView() override
Definition: FilamentView.cpp:107
void SetViewport(std::int32_t x, std::int32_t y, std::uint32_t w, std::uint32_t h) override
Definition: FilamentView.cpp:157
FilamentView(filament::Engine &engine, FilamentResourceManager &resource_mgr)
Definition: FilamentView.cpp:75
std::array< int, 4 > GetViewport() const override
Definition: FilamentView.cpp:164
static constexpr std::uint8_t kMainLayer
Definition: FilamentView.h:56
void SetDiscardBuffers(const TargetBuffers &buffers) override
Definition: FilamentView.cpp:148
void SetColorGrading(const ColorGradingParams &color_grading) override
Definition: FilamentView.cpp:212
static constexpr std::uint8_t kAllLayersMask
Definition: FilamentView.h:54
void SetAntiAliasing(bool enabled, bool temporal=false) override
Definition: FilamentView.cpp:181
void SetAmbientOcclusion(bool enabled, bool ssct_enabled=false) override
Definition: FilamentView.cpp:173
void SetScene(FilamentScene &scene)
Definition: FilamentView.cpp:364
void EnableViewCaching(bool enable) override
Definition: FilamentView.cpp:291
Camera * GetCamera() const override
Definition: FilamentView.cpp:340
char type
Definition: FilePCD.cpp:60
Definition: FilamentEngine.h:31
const char const char value recording_handle imu_sample recording_handle uint8_t size_t data_size k4a_record_configuration_t config target_format k4a_capture_t capture_handle k4a_imu_sample_t imu_sample playback_handle k4a_logging_message_cb_t void min_level device_handle k4a_imu_sample_t timeout_in_ms capture_handle capture_handle capture_handle image_handle temperature_c k4a_image_t image_handle uint8_t image_handle image_handle image_handle image_handle uint32_t
Definition: K4aPlugin.cpp:567
const char const char value recording_handle imu_sample recording_handle uint8_t size_t data_size k4a_record_configuration_t config target_format k4a_capture_t capture_handle k4a_imu_sample_t imu_sample playback_handle k4a_logging_message_cb_t void min_level device_handle k4a_imu_sample_t timeout_in_ms capture_handle capture_handle capture_handle image_handle temperature_c k4a_image_t image_handle uint8_t image_handle image_handle image_handle image_handle image_handle timestamp_usec white_balance image_handle k4a_device_configuration_t config device_handle char size_t serial_number_size bool int32_t int32_t int32_t int32_t k4a_color_control_mode_t default_mode mode
Definition: K4aPlugin.cpp:697
const char const char value recording_handle imu_sample recording_handle uint8_t size_t data_size k4a_record_configuration_t config target_format k4a_capture_t capture_handle k4a_imu_sample_t imu_sample playback_handle k4a_logging_message_cb_t void min_level device_handle k4a_imu_sample_t int32_t
Definition: K4aPlugin.cpp:414
Definition: PinholeCameraIntrinsic.cpp:35