载入中...
搜索中...
未找到
WaterUnderwaterEffects.cpp
浏览该文件的文档.
11bool finite3(const glm::vec3& v) { return std::isfinite(v.x) && std::isfinite(v.y) && std::isfinite(v.z); }
19 DiagnosticCode::InvalidArgument, "water.underwater: gradient keys require normalized finite values"));
20 if (std::any_of(stops_.begin(), stops_.end(), [time](const auto& stop) { return stop.time == time; }))
33 DiagnosticCode::InvalidArgument, "water.underwater: nonempty gradient and finite sample required"));
46 DiagnosticCode::InvalidArgument, "water.underwater: scalar keys require normalized finite time"));
60 DiagnosticCode::InvalidArgument, "water.underwater: nonempty scalar curve and finite sample required"));
71 WaterUnderwaterState& state, WaterUnderwaterOutput& output, const WaterUnderwaterSettings& settings,
75 if (!std::isfinite(input.cameraY) || !std::isfinite(input.seaLevel) || !std::isfinite(input.timeOfDay) ||
79 !std::isfinite(settings.nearFogDistance) || !std::isfinite(settings.fogDensity) || settings.fogDensity < 0.0F ||
80 !std::isfinite(settings.playbackVolume) || settings.playbackVolume < 0.0F || settings.playbackVolume > 1.0F ||
81 !std::isfinite(settings.causticSize) || settings.causticSize < 1.0F || settings.causticSize > 100.0F ||
82 settings.framesPerSecond <= 0 || settings.causticTextureCount < 0 || !finite3(settings.fogColorMultiplier) ||
101 DiagnosticCode::InvalidArgument, "water.underwater: finite normalized settings and frame input required"));
147 const std::int64_t advanced = static_cast<std::int64_t>(candidateState.causticFrame) + input.causticTicks;
155 candidate.depth01 = std::clamp((input.seaLevel - input.cameraY) / settings.fogDepth, 0.0F, 1.0F);
168 if (settings.fogColorMultiplier.r >= 0.0F) color.r = std::clamp(color.r + settings.fogColorMultiplier.r, 0.0F, 1.0F);
169 if (settings.fogColorMultiplier.g >= 0.0F) color.g = std::clamp(color.g + settings.fogColorMultiplier.g, 0.0F, 1.0F);
221Result<void> applyWaterUnderwaterFog(Volumetric* volumetric, const WaterUnderwaterOutput& output,
227 !std::isfinite(surface.height) || !std::isfinite(surface.heightFalloff) || surface.heightFalloff < 0.0F) {
229 DiagnosticCode::InvalidArgument, "water.underwaterFog: valid provider and finite fog snapshot required"));
237 DiagnosticCode::InvalidArgument, "water.underwaterFog: fog end must exceed the clamped start"));
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
Definition Graphics.h:125
virtual void setSceneTransitionFx(float vignette, float vignetteSmoothness, float lensDistortion, float lensScale)=0
Set final-composite vignette and radial lens distortion strengths in [0,1].
virtual void setSceneColorFilter(const glm::vec3 &color)=0
Set a non-negative linear RGB multiplier applied during final HDR exposure.
virtual void setSceneLiftGammaGain(const glm::vec3 &lift, const glm::vec3 &inverseGamma, const glm::vec3 &gain)=0
Set pre-tonemap HDR lift, inverse-gamma and gain coefficients.
void setTint(float r, float g, float b, float a=1.f)
Definition Renderable3D.cpp:127
Caller-owned ordered color gradient used for depth or time-of-day fog.
Definition WaterUnderwaterEffects.h:22
Result< void > addStop(float time, float r, float g, float b)
Add a finite key in [0,1]; duplicate times are rejected atomically.
Definition WaterUnderwaterEffects.cpp:15
Result< glm::vec3 > evaluate(float time) const
Evaluate with endpoint clamping and linear interpolation.
Definition WaterUnderwaterEffects.cpp:30
Caller-owned normalized scalar curve used by Pcg underwater post exposure.
Definition WaterUnderwaterEffects.h:35
Result< void > addKey(float time, float value)
Add a finite key in [0,1]; duplicate times are rejected atomically.
Definition WaterUnderwaterEffects.cpp:43
Result< float > evaluate(float time) const
Evaluate with endpoint clamping and linear interpolation.
Definition WaterUnderwaterEffects.cpp:57
void setMode(const std::string &mode)
"screenspace" | "raymarch" | "fog" | "froxel" | "cloud".
Definition Volumetric.cpp:350
void setFogHeight(float worldY)
Height fog: denser near world Y = fogHeight; falloff is 1/meters scale.
Definition Volumetric.cpp:453
void setFogStart(float startDistance)
View-distance ramp where fog appears (world units along the ray).
Definition Volumetric.cpp:463
卡牌游戏 UI 工具模块:工厂 + 脚本绑定入口。 功能参考 ycarowr/UiCard:扇形手牌布局、抽牌/洗牌、悬浮放大、拖拽到落牌区、 敌方手牌(背面/偷看)、费用不足置灰,以及可实时调节的布局...
Definition Animation.h:25
Result< void > applyWaterUnderwaterHorizon(Renderable3D *horizon, const WaterUnderwaterOutput &output)
Synchronize Pcg's underwater horizon mesh visibility.
Definition WaterUnderwaterEffects.cpp:294
Result< void > applyWaterUnderwaterMaterial(Renderable3D *renderable, const WaterUnderwaterOutput &output, const WaterSurfaceMaterialSnapshot &surface)
Apply Pcg's per-frame underwater material color to a dedicated water renderable.
Definition WaterUnderwaterEffects.cpp:303
Result< void > applyWaterUnderwaterFog(Volumetric *volumetric, const WaterUnderwaterOutput &output, const WaterSurfaceFogSnapshot &surface)
Apply a water-effects snapshot to an existing EVEngine volumetric fog provider.
Definition WaterUnderwaterEffects.cpp:221
Result< void > advanceWaterUnderwaterDisableTrigger(WaterUnderwaterDisableTriggerState &state, const WaterUnderwaterTriggerEvent &event, int expectedSensorTag, int expectedVisitorTag)
Apply one Box3D trigger event using Pcg DisableUnderwaterFXTrigger semantics.
Definition WaterUnderwaterEffects.cpp:206
Result< void > applyWaterUnderwaterPostFx(Graphics *graphics, Camera3D *camera, const WaterUnderwaterOutput &output, const WaterSurfacePostFxSnapshot &surface)
Apply underwater exposure and final-composite color to borrowed graphics providers.
Definition WaterUnderwaterEffects.cpp:248
Result< void > advanceWaterUnderwaterEffects(WaterUnderwaterState &state, WaterUnderwaterOutput &output, const WaterUnderwaterSettings &settings, const WaterUnderwaterInput &input, const UnderwaterColorGradient &depthGradient, const UnderwaterColorGradient &timeGradient, const UnderwaterScalarCurve &postExposureCurve, const UnderwaterColorGradient &postColorGradient)
Advance Pcg underwater transitions and derive provider-neutral effects.
Definition WaterUnderwaterEffects.cpp:70
constexpr HexVec3 lerp(HexVec3 a, HexVec3 b, float t) noexcept
Linear interpolation between two positions.
Definition HexMetrics.h:51
@ InvalidArgument
Caller-owned surface fog values restored after leaving or disabling underwater effects.
Definition WaterUnderwaterEffects.h:153
float heightFalloff
Definition WaterUnderwaterEffects.h:159
Caller-owned water-renderable tint restored outside the underwater state.
Definition WaterUnderwaterEffects.h:176
glm::vec3 color
Definition WaterUnderwaterEffects.h:177
float alpha
Definition WaterUnderwaterEffects.h:178
Caller-owned surface post-processing values restored above water.
Definition WaterUnderwaterEffects.h:163
float vignetteSmoothness
Definition WaterUnderwaterEffects.h:167
float lensScale
Definition WaterUnderwaterEffects.h:169
glm::vec3 color
Definition WaterUnderwaterEffects.h:165
float vignette
Definition WaterUnderwaterEffects.h:166
float exposureEv
Definition WaterUnderwaterEffects.h:164
glm::vec3 lift
Definition WaterUnderwaterEffects.h:170
glm::vec3 inverseGamma
Definition WaterUnderwaterEffects.h:171
glm::vec3 gain
Definition WaterUnderwaterEffects.h:172
float lensDistortion
Definition WaterUnderwaterEffects.h:168
Caller-owned enable state driven by Pcg disable-underwater trigger events.
Definition WaterUnderwaterEffects.h:101
Immutable per-frame water, camera and lighting snapshot.
Definition WaterUnderwaterEffects.h:88
Effects snapshot for graphics, audio, particles and VFX providers to consume.
Definition WaterUnderwaterEffects.h:112
float hdrpBaseHeight
Definition WaterUnderwaterEffects.h:133
bool particles
Definition WaterUnderwaterEffects.h:119
float fogHeight
Definition WaterUnderwaterEffects.h:131
bool transitionFx
Definition WaterUnderwaterEffects.h:123
float hdrpAnisotropy
Definition WaterUnderwaterEffects.h:136
float hdrpDepthExtent
Definition WaterUnderwaterEffects.h:137
float transitionLensScale
Definition WaterUnderwaterEffects.h:145
bool playSubmergeUp
Definition WaterUnderwaterEffects.h:117
float hdrpProbeDimmer
Definition WaterUnderwaterEffects.h:135
glm::vec3 postColor
Definition WaterUnderwaterEffects.h:139
bool surfaceVfx
Definition WaterUnderwaterEffects.h:121
bool isUnderwater
Definition WaterUnderwaterEffects.h:113
glm::vec3 underwaterMaterialColor
Definition WaterUnderwaterEffects.h:140
bool loopAudio
Definition WaterUnderwaterEffects.h:118
glm::vec3 transitionColorFilter
Definition WaterUnderwaterEffects.h:149
float transitionWeight
Definition WaterUnderwaterEffects.h:141
glm::vec3 transitionLift
Definition WaterUnderwaterEffects.h:146
float transitionVignette
Definition WaterUnderwaterEffects.h:142
float transitionVignetteSmoothness
Definition WaterUnderwaterEffects.h:143
float transitionLensDistortion
Definition WaterUnderwaterEffects.h:144
float causticSize
Definition WaterUnderwaterEffects.h:126
float postExposure
Definition WaterUnderwaterEffects.h:138
glm::vec3 fogColor
Definition WaterUnderwaterEffects.h:127
int causticFrame
Definition WaterUnderwaterEffects.h:125
glm::vec3 transitionInverseGamma
Definition WaterUnderwaterEffects.h:147
bool playSubmergeDown
Definition WaterUnderwaterEffects.h:116
float fogDensity
Definition WaterUnderwaterEffects.h:128
float hdrpMeanFreePath
Definition WaterUnderwaterEffects.h:134
glm::vec3 transitionGain
Definition WaterUnderwaterEffects.h:148
Authored Pcg underwater-effects policy; owns no renderer, audio source or scene object.
Definition WaterUnderwaterEffects.h:48
Persistent caller-owned transition and caustic animation state.
Definition WaterUnderwaterEffects.h:98
int causticFrame
Definition WaterUnderwaterEffects.h:98
bool isUnderwater
Definition WaterUnderwaterEffects.h:98
bool initialized
Definition WaterUnderwaterEffects.h:98
Immutable normalized 3D trigger event snapshot supplied by the physics owner.
Definition WaterUnderwaterEffects.h:104
bool exited
Definition WaterUnderwaterEffects.h:108
bool entered
Definition WaterUnderwaterEffects.h:107
int visitorTag
Definition WaterUnderwaterEffects.h:106
int sensorTag
Definition WaterUnderwaterEffects.h:105