Overte C++ Documentation
HazeStage.h
1 //
2 // HazeStage.h
3 
4 // Created by Nissim Hadar on 9/26/2017.
5 // Copyright 2015 High Fidelity, Inc.
6 // Copyright 2024 Overte e.V.
7 //
8 // Distributed under the Apache License, Version 2.0.
9 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10 //
11 
12 #ifndef hifi_render_utils_HazeStage_h
13 #define hifi_render_utils_HazeStage_h
14 
15 #include <graphics/Haze.h>
16 #include <render/Stage.h>
17 #include <render/StageSetup.h>
18 
19 // Haze stage to set up haze-related rendering tasks
20 class HazeStage : public render::PointerStage<graphics::Haze, graphics::HazePointer> {};
21 using HazeStagePointer = std::shared_ptr<HazeStage>;
22 
23 class HazeStageSetup : public render::StageSetup<HazeStage> {
24 public:
25  using JobModel = render::Job::Model<HazeStageSetup>;
26 };
27 
28 class FetchHazeConfig : public render::Job::Config {
29  Q_OBJECT
30 
31  Q_PROPERTY(glm::vec3 hazeColor MEMBER hazeColor WRITE setHazeColor NOTIFY dirty);
32  Q_PROPERTY(float hazeGlareAngle MEMBER hazeGlareAngle WRITE setHazeGlareAngle NOTIFY dirty);
33 
34  Q_PROPERTY(glm::vec3 hazeGlareColor MEMBER hazeGlareColor WRITE setHazeGlareColor NOTIFY dirty);
35  Q_PROPERTY(float hazeBaseReference MEMBER hazeBaseReference WRITE setHazeBaseReference NOTIFY dirty);
36 
37  Q_PROPERTY(bool isHazeActive MEMBER isHazeActive WRITE setHazeActive NOTIFY dirty);
38  Q_PROPERTY(bool isAltitudeBased MEMBER isAltitudeBased WRITE setAltitudeBased NOTIFY dirty);
39  Q_PROPERTY(bool isHazeAttenuateKeyLight MEMBER isHazeAttenuateKeyLight WRITE setHazeAttenuateKeyLight NOTIFY dirty);
40  Q_PROPERTY(bool isModulateColorActive MEMBER isModulateColorActive WRITE setModulateColorActive NOTIFY dirty);
41  Q_PROPERTY(bool isHazeEnableGlare MEMBER isHazeEnableGlare WRITE setHazeEnableGlare NOTIFY dirty);
42 
43  Q_PROPERTY(float hazeRange MEMBER hazeRange WRITE setHazeRange NOTIFY dirty);
44  Q_PROPERTY(float hazeHeight MEMBER hazeHeight WRITE setHazeAltitude NOTIFY dirty);
45 
46  Q_PROPERTY(float hazeKeyLightRange MEMBER hazeKeyLightRange WRITE setHazeKeyLightRange NOTIFY dirty);
47  Q_PROPERTY(float hazeKeyLightAltitude MEMBER hazeKeyLightAltitude WRITE setHazeKeyLightAltitude NOTIFY dirty);
48 
49  Q_PROPERTY(float hazeBackgroundBlend MEMBER hazeBackgroundBlend WRITE setHazeBackgroundBlend NOTIFY dirty);
50 
51 public:
52  FetchHazeConfig() : render::Job::Config() {}
53 
54  glm::vec3 hazeColor{ graphics::Haze::INITIAL_HAZE_COLOR };
55  float hazeGlareAngle{ graphics::Haze::INITIAL_HAZE_GLARE_ANGLE };
56 
57  glm::vec3 hazeGlareColor{ graphics::Haze::INITIAL_HAZE_GLARE_COLOR };
58  float hazeBaseReference{ graphics::Haze::INITIAL_HAZE_BASE_REFERENCE };
59 
60  bool isHazeActive{ false };
61  bool isAltitudeBased{ false };
62  bool isHazeAttenuateKeyLight{ false };
63  bool isModulateColorActive{ false };
64  bool isHazeEnableGlare{ false };
65 
66  float hazeRange{ graphics::Haze::INITIAL_HAZE_RANGE };
67  float hazeHeight{ graphics::Haze::INITIAL_HAZE_HEIGHT };
68 
69  float hazeKeyLightRange{ graphics::Haze::INITIAL_KEY_LIGHT_RANGE };
70  float hazeKeyLightAltitude{ graphics::Haze::INITIAL_KEY_LIGHT_ALTITUDE };
71 
72  float hazeBackgroundBlend{ graphics::Haze::INITIAL_HAZE_BACKGROUND_BLEND };
73 
74 public slots:
75  void setHazeColor(const glm::vec3 value) { hazeColor = value; emit dirty(); }
76  void setHazeGlareAngle(const float value) { hazeGlareAngle = value; emit dirty(); }
77 
78  void setHazeGlareColor(const glm::vec3 value) { hazeGlareColor = value; emit dirty(); }
79  void setHazeBaseReference(const float value) { hazeBaseReference = value; ; emit dirty(); }
80 
81  void setHazeActive(const bool active) { isHazeActive = active; emit dirty(); }
82  void setAltitudeBased(const bool active) { isAltitudeBased = active; emit dirty(); }
83  void setHazeAttenuateKeyLight(const bool active) { isHazeAttenuateKeyLight = active; emit dirty(); }
84  void setModulateColorActive(const bool active) { isModulateColorActive = active; emit dirty(); }
85  void setHazeEnableGlare(const bool active) { isHazeEnableGlare = active; emit dirty(); }
86 
87  void setHazeRange(const float value) { hazeRange = value; emit dirty(); }
88  void setHazeAltitude(const float value) { hazeHeight = value; emit dirty(); }
89 
90  void setHazeKeyLightRange(const float value) { hazeKeyLightRange = value; emit dirty(); }
91  void setHazeKeyLightAltitude(const float value) { hazeKeyLightAltitude = value; emit dirty(); }
92 
93  void setHazeBackgroundBlend(const float value) { hazeBackgroundBlend = value; ; emit dirty(); }
94 
95 signals:
96  void dirty();
97 };
98 #endif