载入中...
搜索中...
未找到
FogSystem.cpp
浏览该文件的文档.
188 return volLight_.integrate(beam, profile_, origin, direction, sceneDepth, budget.volLightSegments,
Stable, structured diagnostics shared by engine modules.
Structured operation status used by the common Result foundation.
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
static Status success(StatusCode code=StatusCode::Ok)
Construct a successful status with an explicit non-error outcome.
Definition Status.h:81
Camera-frustum volume used by the volumetric fog passes and CPU references.
Definition AtmosphereVolume.h:37
const glm::mat4 & getInvViewProj() const
Inverse view-projection last written by setCamera / setInvViewProj.
Definition Volumetric.h:215
AtmosphereVolume * getAtmosphereVolume() const
Access the froxel media grid for native density/light injection.
Definition Volumetric.h:213
void configureFroxelGrid(int width, int height, int depth, float nearDistance, float farDistance)
Configure the CPU reference/fallback froxel grid used by the atlas renderer. Quality presets choose s...
Definition Volumetric.cpp:758
Result< FogRayResult > integrate(const AnalyticBeam &beam, const FogProfile &profile, const glm::vec3 &origin, const glm::vec3 &direction, float sceneDepth, int segments, float mediumDensity) const
Integrate the beam contribution along a view ray.
Definition AnalyticalVolLight.cpp:65
Cached light-path transmittance used by Fast / Enhanced quality tiers.
Definition BeerLightCache.h:20
Result< void > rebuild(const FogDensityField &field, const FogProfile &profile, const glm::vec3 &lightDir, const glm::vec3 &lightColor, float intensity, int samplesPerCell=6)
Rebuild transmittance along the primary light for each density cell.
Definition BeerLightCache.cpp:27
bool matches(std::uint64_t densityRevision, const glm::vec3 &lightDir, float intensity) const noexcept
True when the cache matches the supplied state.
Definition BeerLightCache.cpp:18
void invalidate()
Mark cache stale (quality change, light cut, etc.).
Definition BeerLightCache.cpp:13
const FogWorldBounds & bounds() const noexcept
Definition FogDensityField.h:29
Result< void > seedHeightBand(float baseDensity, float baseHeight, float falloff, float curlScale, std::uint32_t seed)
Seed a height-banded density layer with optional curl noise.
Definition FogDensityField.cpp:172
Result< void > resize(int width, int height, int depth, const FogWorldBounds &bounds)
Allocate a regular lattice over world bounds.
Definition FogDensityField.cpp:25
std::uint64_t revision() const noexcept
Definition FogDensityField.h:31
Result< void > integrate(AtmosphereVolume &volume, const FogDensityField &field, const FogProfile &profile, const glm::mat4 &invViewProj, const glm::vec3 &lightDir, const glm::vec3 &lightColor, float intensity, const BeerLightCache *beerCache)
Integrate froxels with optional Beer-cache visibility.
Definition FogFroxelBridge.cpp:64
Result< int > inject(AtmosphereVolume &volume, const FogDensityField &field, const FogProfile &profile, const glm::mat4 &invViewProj, bool occupancySkip)
Inject density-field media into an AtmosphereVolume froxel grid.
Definition FogFroxelBridge.cpp:35
Result< FogRayResult > integrate(const FogDensityField &field, const FogProfile &profile, const glm::vec3 &origin, const glm::vec3 &direction, const FogVolumeBound &bound, const glm::vec3 &lightDir, const glm::vec3 &lightColor, float lightIntensity, const glm::vec3 &skyAmbient, const glm::vec3 &groundAmbient, int sampleCount, float sceneDepth, const BeerLightCache *beerCache, bool useAnalyticSegments) const
Integrate one view ray through the density field.
Definition FogRayMarch.cpp:84
Result< int > injectToFroxel(AtmosphereVolume &volume, const glm::mat4 &invViewProj)
Add MAC density into an existing froxel grid without clearing or integrating.
Definition FogSystem.cpp:113
Result< std::vector< DustParticle > > generateDust(int count, float turbulenceMeters, std::uint32_t seed=7u) const
Generate procedural dust for the simulation bounds.
Definition FogSystem.cpp:192
Result< void > setQuality(FogQuality quality)
Select Fast / Enhanced / PhysicalReference and invalidate caches.
Definition FogSystem.cpp:15
Result< FogRayResult > integrateBeam(const AnalyticBeam &beam, const glm::vec3 &origin, const glm::vec3 &direction, float sceneDepth, float mediumDensity) const
Analytic beam integration using the active quality segment count.
Definition FogSystem.cpp:184
Result< FogRayResult > marchRay(const glm::vec3 &origin, const glm::vec3 &direction, const FogVolumeBound &bound, const glm::vec3 &lightDir, const glm::vec3 &lightColor, float lightIntensity, const glm::vec3 &skyAmbient, const glm::vec3 &groundAmbient, float sceneDepth) const
World-space ray march through the live density field.
Definition FogSystem.cpp:67
Result< int > renderToFroxel(AtmosphereVolume &volume, const glm::mat4 &invViewProj, const glm::vec3 &lightDir, const glm::vec3 &lightColor, float intensity)
Inject + integrate the density field into a froxel AtmosphereVolume.
Definition FogSystem.cpp:80
Result< int > syncToVolumetric(Volumetric *volumetric, const glm::vec3 &lightDir, const glm::vec3 &lightColor, float intensity)
Map the live density field into a Volumetric froxel grid and integrate lighting. Resizes the atlas to...
Definition FogSystem.cpp:137
ContinuousArtOutput stylize(const FogRayResult &physical, float viewZ, float neighborOpacity=0.f) const noexcept
Apply ContinuousArt to a physical ray result.
Definition FogSystem.cpp:197
Result< int > injectToVolumetric(Volumetric *volumetric)
Additive MAC inject into a Volumetric that already holds height fog / volumes. Does not resize,...
Definition FogSystem.cpp:123
Result< void > configureDomain(int simWidth, int simHeight, int simDepth, const FogWorldBounds &bounds, float fixedDt=1.f/60.f)
Allocate density + MAC over world bounds at the quality froxel-ish resolution. Simulation resolution ...
Definition FogSystem.cpp:21
Result< void > seedHeightFog(float baseDensity, float baseHeight, float falloff, float curlScale, std::uint32_t seed=1u)
Seed a height-banded fog volume.
Definition FogSystem.cpp:31
Result< FogCflReport > stepSimulation(float dt)
Advance wind + MAC fluid by wall-clock dt (fixed substeps inside).
Definition FogSystem.cpp:41
Result< void > ensureBeerCache(const glm::vec3 &lightDir, const glm::vec3 &lightColor, float intensity)
Refresh BeerLightCache when quality/light/density require it.
Definition FogSystem.cpp:52
Result< void > configure(const FogDensityField &field, float fixedDt=kDefaultFixedDt)
Allocate MAC arrays matching a density field lattice.
Definition MacFluidGrid.cpp:14
Result< void > pullDensity(const FogDensityField &field)
Copy concentration from a density field (same resolution).
Definition MacFluidGrid.cpp:63
Result< void > pushDensity(FogDensityField &field) const
Write concentration back into a density field.
Definition MacFluidGrid.cpp:74
Result< FogCflReport > step(float dt, SceneWind &wind, FogInteractor *interactor, float simTime)
Advance simulation by wall-clock dt using fixed substeps.
Definition MacFluidGrid.cpp:372
Result< std::vector< DustParticle > > generate(const FogWorldBounds &volume, int count, float timeSeconds, float turbulenceMeters, std::uint32_t seed) const
Generate dust inside an AABB for the current view time.
Definition ProceduralDust.cpp:27
Definition AnalyticalVolLight.cpp:11
FogQualityBudget budgetFor(FogQuality quality) noexcept
Resolve the budget for a quality preset.
Definition FogTypes.h:52
@ PhysicalReference
Dense tracking, no skip shortcuts.
@ InvalidArgument
@ Failed
@ NoOp
Analytic beam volume: capped cone frustum or pyramidal spot.
Definition AnalyticalVolLight.h:16
Stylized fog presentation derived from a physical FogRayResult.
Definition FogTypes.h:169
Optical result of integrating one view ray through fog.
Definition FogTypes.h:122
Analytic volume used to bound a camera ray before sampling.
Definition FogRayMarch.h:17
Axis-aligned world bounds for a fog simulation domain.
Definition FogTypes.h:96