ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
View.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 #include <Eigen.h>
11 
12 #include <Eigen/Geometry>
13 
15 
16 namespace cloudViewer {
17 namespace visualization {
18 namespace rendering {
19 
20 class Scene;
21 class Camera;
22 class ColorGradingParams;
23 
24 class View {
25 public:
26  enum class TargetBuffers : std::uint8_t {
27  None = 0u,
28  Color = 1u,
29  Depth = 2u,
30  Stencil = 4u,
31 
35  All = Color | Depth | Stencil
36  };
37 
38  enum class Mode : std::uint8_t {
39  Color = 0u,
40  Depth,
41  Normals,
42  // This three modes always stay at end
43  ColorMapX,
44  ColorMapY,
45  ColorMapZ
46  };
47 
48  enum class ShadowType : std::uint8_t {
49  kPCF, /* Percentage closer filter, the default */
50  kVSM /* Variance shadow map */
51  };
52 
53  virtual ~View() {}
54 
55  virtual void SetDiscardBuffers(const TargetBuffers& buffers) = 0;
56  virtual Mode GetMode() const = 0;
57  virtual void SetMode(Mode mode) = 0;
58  virtual void SetWireframe(bool enable) = 0;
59 
60  virtual void SetSampleCount(int n) = 0;
61  virtual int GetSampleCount() const = 0;
62 
63  virtual void SetViewport(std::int32_t x,
64  std::int32_t y,
65  std::uint32_t w,
66  std::uint32_t h) = 0;
67  virtual std::array<int, 4> GetViewport() const = 0;
68 
69  virtual void SetPostProcessing(bool enabled) = 0;
70  virtual void SetAmbientOcclusion(bool enabled,
71  bool ssct_enabled = false) = 0;
72  virtual void SetBloom(bool enabled,
73  float strength = 0.5f,
74  int spread = 6) = 0;
75  virtual void SetAntiAliasing(bool enabled, bool temporal = false) = 0;
76  virtual void SetShadowing(bool enabled, ShadowType type) = 0;
77 
78  virtual void SetColorGrading(const ColorGradingParams& color_grading) = 0;
79 
80  virtual void ConfigureForColorPicking() = 0;
81 
82  virtual void EnableViewCaching(bool enable) = 0;
83  virtual bool IsCached() const = 0;
85 
86  virtual Camera* GetCamera() const = 0;
87 };
88 
89 } // namespace rendering
90 } // namespace visualization
91 } // namespace cloudViewer
char type
virtual TextureHandle GetColorBuffer()=0
virtual void EnableViewCaching(bool enable)=0
virtual void SetColorGrading(const ColorGradingParams &color_grading)=0
virtual void SetWireframe(bool enable)=0
virtual Camera * GetCamera() const =0
virtual void SetBloom(bool enabled, float strength=0.5f, int spread=6)=0
virtual void SetShadowing(bool enabled, ShadowType type)=0
virtual void SetDiscardBuffers(const TargetBuffers &buffers)=0
virtual void SetViewport(std::int32_t x, std::int32_t y, std::uint32_t w, std::uint32_t h)=0
virtual void SetAmbientOcclusion(bool enabled, bool ssct_enabled=false)=0
virtual std::array< int, 4 > GetViewport() const =0
virtual void SetPostProcessing(bool enabled)=0
virtual void SetAntiAliasing(bool enabled, bool temporal=false)=0
Generic file read and write utility for python interface.