21 [[nodiscard]]
const glm::vec3&
albedo() const noexcept {
return albedo_; }
25 [[nodiscard]]
float ambientUp() const noexcept {
return ambientUp_; }
27 [[nodiscard]]
float ambientDown() const noexcept {
return ambientDown_; }
29 [[nodiscard]]
float anisotropy() const noexcept {
return anisotropy_; }
35 [[nodiscard]]
Result<void> configure(
float extinctionPerDensity,
const glm::vec3&
albedo,
36 float ambientOcclusion,
float ambientUp,
float ambientDown,
40 [[nodiscard]]
float extinctionAt(
float density)
const noexcept;
43 [[nodiscard]] glm::vec3 scatteringAt(
float density)
const noexcept;
49 [[nodiscard]]
float phase(
float cosTheta)
const noexcept;
52 [[nodiscard]] glm::vec3 ambientRadiance(
const glm::vec3& skyUp,
const glm::vec3& groundDown,
53 float density)
const noexcept;
56 float extinctionPerDensity_ = 0.08f;
57 glm::vec3 albedo_{0.9f, 0.92f, 0.95f};
58 float ambientOcclusion_ = 0.15f;
59 float ambientUp_ = 1.f;
60 float ambientDown_ = 0.55f;
61 float anisotropy_ = 0.35f;
graphics::Texture * albedo
#define EVENGINE_API_WORLD
Move-only, checked operation results for the common layer.
Move-only operation result carrying either a value or Status.
Unit-density optical profile for participating media.
float ambientOcclusion() const noexcept
Ambient occlusion strength in [0,1].
float extinctionPerDensity() const noexcept
Extinction coefficient per unit density (σ_t), non-negative.
float anisotropy() const noexcept
Henyey–Greenstein anisotropy in [-0.99, 0.99].
float ambientDown() const noexcept
Downward ambient visibility scale in [0,1].
float ambientUp() const noexcept
Upward ambient visibility scale in [0,1].
const glm::vec3 & albedo() const noexcept
Single-scattering albedo in [0,1].