载入中...
搜索中...
未找到
AnalyticalVolLight.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4#include "common/Result.h"
7
8#include <cstdint>
9#include <optional>
10
11#include <glm/vec3.hpp>
12
13namespace eve::graphics::fog {
14
18 enum class Shape : uint8_t { ConeFrustum = 0, PyramidFrustum = 1 };
19
21 glm::vec3 apex{0.f};
22 glm::vec3 direction{0.f, 0.f, -1.f};
23 float nearDistance = 0.25f;
24 float farDistance = 12.f;
25 float nearRadius = 0.1f;
26 float farRadius = 2.5f;
27 glm::vec3 color{1.f, 0.95f, 0.85f};
28 float intensity = 2.f;
29};
30
37public:
39 [[nodiscard]] static std::optional<FogRayInterval> intersectBeam(const glm::vec3& origin,
40 const glm::vec3& direction,
41 const AnalyticBeam& beam);
42
49 [[nodiscard]] Result<FogRayResult> integrate(const AnalyticBeam& beam, const FogProfile& profile,
50 const glm::vec3& origin, const glm::vec3& direction,
51 float sceneDepth, int segments,
52 float mediumDensity) const;
53};
54
55} // namespace eve::graphics::fog
#define EVENGINE_API_WORLD
Definition Export.h:109
Move-only, checked operation results for the common layer.
V3 origin
Definition RoadBake.cpp:138
RoadLaneDirection direction
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Analytic volumetric light: ray ∩ capped frustum, depth-clipped short integral.
Unit-density optical profile for participating media.
Definition FogProfile.h:16
Analytic beam volume: capped cone frustum or pyramidal spot.