载入中...
搜索中...
未找到
ReflectionProbeRegistry.h
浏览该文件的文档.
1#pragma once
2
3#include "common/Result.h"
4
5#include <cstdint>
6#include <vector>
7
8namespace eve::graphics {
9
10class Camera3D;
11class ReflectionProbeCapture;
12
15public:
19 void add(ReflectionProbeCapture *probe);
21 void remove(ReflectionProbeCapture *probe);
23 void clear();
25 int getCount() const { return static_cast<int>(entries_.size()); }
27 int getLastSelectedCount() const { return lastSelectedCount_; }
29 int getLastCapturedFaceCount() const { return lastCapturedFaceCount_; }
31 int getLastPublishedCount() const { return lastPublishedCount_; }
33 void setSelectionHysteresis(float distance);
35 float getSelectionHysteresis() const { return selectionHysteresis_; }
37 int getLastCandidateCount() const { return lastCandidateCount_; }
39 void setDistanceCullingEnabled(bool enabled) { distanceCullingEnabled_ = enabled; }
41 bool getDistanceCullingEnabled() const { return distanceCullingEnabled_; }
43 [[nodiscard]] Result<void> setMaxRenderDistance(float distance);
45 float getMaxRenderDistance() const { return maxRenderDistance_; }
47 int getLastDistanceCulledCount() const { return lastDistanceCulledCount_; }
52 int queueCapture(int changedMask = -1);
57 int queueCaptureAABB(float minX, float minY, float minZ, float maxX, float maxY, float maxZ,
58 int changedMask = -1);
66 int tick(int faceBudget = 1, int filterBudget = 1, int filterSamples = 64);
71 int updateCamera(Camera3D *camera);
72
73private:
74 struct Entry {
75 ReflectionProbeCapture *probe = nullptr;
76 uint64_t order = 0;
77 uint32_t waitAge = 0;
78 bool distanceCulled = false;
79 };
80
81 std::vector<Entry> entries_;
82 uint64_t nextOrder_ = 0;
83 int lastSelectedCount_ = 0;
84 int lastCapturedFaceCount_ = 0;
85 int lastPublishedCount_ = 0;
86 int lastCandidateCount_ = 0;
87 int lastDistanceCulledCount_ = 0;
88 bool distanceCullingEnabled_ = false;
89 float maxRenderDistance_ = 650.f;
90 float selectionHysteresis_ = 0.75f;
91 std::vector<ReflectionProbeCapture *> lastSelected_;
92};
93
94} // namespace eve::graphics
#define EVENGINE_API_BACKENDS
Definition Export.h:108
float camera[2]
float distance
std::vector< std::int32_t > order
Move-only, checked operation results for the common layer.
SimulationTick tick
Move-only operation result carrying either a value or Status.
Definition Result.h:155
EVENGINE_API_BACKENDS public API.
Incremental six-face HDR scene capture for a runtime reflection probe.
Scene-level stable selection of published reflection probes for a camera.
bool getDistanceCullingEnabled() const
Return whether hard camera-distance qualification is enabled.
float getSelectionHysteresis() const
Return world-space camera-selection hysteresis.
int getLastCapturedFaceCount() const
Return faces rendered by the most recent scheduled tick.
int getLastCandidateCount() const
Return published candidates considered by the most recent camera update.
float getMaxRenderDistance() const
Return the Pcg probe render distance.
int getLastPublishedCount() const
Return probe revisions published by the most recent scheduled tick.
void setDistanceCullingEnabled(bool enabled)
Enable Pcg-style hard camera-distance qualification.
int getLastSelectedCount() const
Return the number of published probes selected by the last update.
int getLastDistanceCulledCount() const
Return probes rejected by the last camera update's hard distance test.
int getCount() const
Return the number of registered probes.
卡牌游戏 UI 工具模块:工厂 + 脚本绑定入口。 功能参考 ycarowr/UiCard:扇形手牌布局、抽牌/洗牌、悬浮放大、拖拽到落牌区、 敌方手牌(背面/偷看)、费用不足置灰,以及可实时调节的布局...
Definition Animation.h:25
bool enabled