载入中...
搜索中...
未找到
FogProfile.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4#include "common/Result.h"
6
7#include <glm/vec3.hpp>
8
9namespace eve::graphics::fog {
10
17public:
19 [[nodiscard]] float extinctionPerDensity() const noexcept { return extinctionPerDensity_; }
21 [[nodiscard]] const glm::vec3& albedo() const noexcept { return albedo_; }
23 [[nodiscard]] float ambientOcclusion() const noexcept { return ambientOcclusion_; }
25 [[nodiscard]] float ambientUp() const noexcept { return ambientUp_; }
27 [[nodiscard]] float ambientDown() const noexcept { return ambientDown_; }
29 [[nodiscard]] float anisotropy() const noexcept { return anisotropy_; }
30
35 [[nodiscard]] Result<void> configure(float extinctionPerDensity, const glm::vec3& albedo,
36 float ambientOcclusion, float ambientUp, float ambientDown,
37 float anisotropy);
38
40 [[nodiscard]] float extinctionAt(float density) const noexcept;
41
43 [[nodiscard]] glm::vec3 scatteringAt(float density) const noexcept;
44
49 [[nodiscard]] float phase(float cosTheta) const noexcept;
50
52 [[nodiscard]] glm::vec3 ambientRadiance(const glm::vec3& skyUp, const glm::vec3& groundDown,
53 float density) const noexcept;
54
55private:
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;
62};
63
64} // namespace eve::graphics::fog
float phase
Definition CaveMesh.cpp:58
graphics::Texture * albedo
#define EVENGINE_API_WORLD
Definition Export.h:109
Move-only, checked operation results for the common layer.
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Unit-density optical profile for participating media.
Definition FogProfile.h:16
float ambientOcclusion() const noexcept
Ambient occlusion strength in [0,1].
Definition FogProfile.h:23
float extinctionPerDensity() const noexcept
Extinction coefficient per unit density (σ_t), non-negative.
Definition FogProfile.h:19
float anisotropy() const noexcept
Henyey–Greenstein anisotropy in [-0.99, 0.99].
Definition FogProfile.h:29
float ambientDown() const noexcept
Downward ambient visibility scale in [0,1].
Definition FogProfile.h:27
float ambientUp() const noexcept
Upward ambient visibility scale in [0,1].
Definition FogProfile.h:25
const glm::vec3 & albedo() const noexcept
Single-scattering albedo in [0,1].
Definition FogProfile.h:21