Overte C++ Documentation
AmbientOcclusion.h
1 //
2 // AmbientOcclusion.h
3 // libraries/graphics/src/graphics
4 //
5 // Created by HifiExperiments 6/24/24
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 #ifndef hifi_model_AmbientOcclusion_h
12 #define hifi_model_AmbientOcclusion_h
13 
14 #include <memory>
15 
16 #include <AmbientOcclusionTechnique.h>
17 
18 namespace graphics {
19  class AmbientOcclusion {
20  public:
21  AmbientOcclusion() {}
22 
23  void setTechnique(const AmbientOcclusionTechnique technique) { _technique = technique; }
24  void setJitter(const bool jitter) { _jitter = jitter; }
25  void setResolutionLevel(const uint8_t resolutionLevel) { _resolutionLevel = resolutionLevel; }
26  void setEdgeSharpness(const float edgeSharpness) { _edgeSharpness = edgeSharpness; }
27  void setBlurRadius(const uint8_t blurRadius) { _blurRadius = blurRadius; }
28  void setAORadius(const float aoRadius) { _aoRadius = aoRadius; }
29  void setAOObscuranceLevel(const float aoObscuranceLevel) { _aoObscuranceLevel = aoObscuranceLevel; }
30  void setAOFalloffAngle(const float aoFalloffAngle) { _aoFalloffAngle = aoFalloffAngle; }
31  void setAOSamplingAmount(const float aoSamplingAmount) { _aoSamplingAmount = aoSamplingAmount; }
32  void setSSAONumSpiralTurns(const float ssaoNumSpiralTurns) { _ssaoNumSpiralTurns = ssaoNumSpiralTurns; }
33 
34  AmbientOcclusionTechnique getTechnique() const { return _technique; }
35  bool getJitter() const { return _jitter; }
36  uint8_t getResolutionLevel() const { return _resolutionLevel; }
37  float getEdgeSharpness() const { return _edgeSharpness; }
38  uint8_t getBlurRadius() const { return _blurRadius; }
39  float getAORadius() const { return _aoRadius; }
40  float getAOObscuranceLevel() const { return _aoObscuranceLevel; }
41  float getAOFalloffAngle() const { return _aoFalloffAngle; }
42  float getAOSamplingAmount() const { return _aoSamplingAmount; }
43  float getSSAONumSpiralTurns() const { return _ssaoNumSpiralTurns; }
44 
45  private:
46  AmbientOcclusionTechnique _technique { AmbientOcclusionTechnique::SSAO };
47  bool _jitter { false };
48  uint8_t _resolutionLevel { 2 };
49  float _edgeSharpness { 1.0f };
50  uint8_t _blurRadius { 4 };
51  float _aoRadius { 1.0f };
52  float _aoObscuranceLevel { 0.5f };
53  float _aoFalloffAngle { 0.25f };
54  float _aoSamplingAmount { 0.5f };
55  float _ssaoNumSpiralTurns { 7.0f };
56  };
57  using AmbientOcclusionPointer = std::shared_ptr<AmbientOcclusion>;
58 }
59 #endif // hifi_model_AmbientOcclusion_h