载入中...
搜索中...
未找到
TerrainProbePlacement.cpp
浏览该文件的文档.
21 return static_cast<float>(x + y) / static_cast<float>(std::numeric_limits<std::uint64_t>::max());
35bool supportedResolution(int value) { return value >= 16 && value <= 2048 && (value & (value - 1)) == 0; }
37Result<int> exportTerrainProbePoints(PointSet& output, const Heightmap& fitness, const Heightmap& heights,
42 !std::isfinite(s.originX) || !std::isfinite(s.originZ) || !std::isfinite(s.width) || s.width <= 0 ||
44 !std::isfinite(s.spacing) || s.spacing <= 0 || !std::isfinite(s.jitterPercent) || s.jitterPercent < 0 ||
45 s.jitterPercent > 1 || !std::isfinite(s.minimumFitness) || s.minimumFitness < 0 || s.minimumFitness > 1 ||
46 !std::isfinite(s.seaLevel) || !std::isfinite(s.reflectionOffset) || !std::isfinite(s.lightOffset) ||
50 return invalid("terrain.probes: valid finite rasters, resource, scan and reflection settings required");
51 if (!std::all_of(fitness.data().begin(), fitness.data().end(), [](float v) { return v >= 0 && v <= 1; }))
94 auto shadow = next.trySetFloatAttribute(row, "reflectionShadowDistance", s.reflectionShadowDistance);
105 TerrainProbeOperationMode mode, bool worldMapOperation, const std::vector<std::string>& validNames) {
107 if (tiles.empty() || mode < TerrainProbeOperationMode::Add || mode > TerrainProbeOperationMode::Remove ||
118 Diagnostic::error(DiagnosticCode::InvalidArgument, "terrain.probes.multitile: valid tiles and settings required"));
119 if (!std::all_of(fitness.data().begin(), fitness.data().end(), [](float value) { return value >= 0 && value <= 1; }))
121 Diagnostic::error(DiagnosticCode::InvalidArgument, "terrain.probes.multitile: normalized fitness required"));
125 if (!tile.probes || !tile.heights || !owners.insert(tile.probes).second || !validRaster(*tile.heights))
127 DiagnosticCode::InvalidArgument, "terrain.probes.multitile: distinct outputs and finite heights required"));
131 auto mapped = mapTerrainOperationMultiTile(descriptors, operation, TerrainOperationDomain::GameObject,
135 if (fitness.getWidth() != report.operationWidth || fitness.getHeight() != report.operationHeight)
137 DiagnosticCode::InvalidArgument, "terrain.probes.multitile: fitness must match operation window"));
149 Diagnostic::error(DiagnosticCode::InvariantViolation, "terrain.probes.multitile: mapped tile missing"));
156 const int lx = static_cast<int>(std::nearbyint((point.x - tile->originX) * tile->resolutionX / tile->width));
157 const int lz = static_cast<int>(std::nearbyint((point.z - tile->originZ) * tile->resolutionY / tile->depth));
220 auto shadow = next.trySetFloatAttribute(row, "reflectionShadowDistance", s.reflectionShadowDistance);
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
In-memory terrain heightmap: a dense float grid (row-major, index = y * width + x) materialized from ...
Definition Heightmap.h:21
constexpr HexDirection next(HexDirection d) noexcept
The next direction clockwise (NW wraps to NE).
Definition HexMetrics.h:76
double textureSample(const Heightmap &map, double u, double v)
Texture sample.
Definition TerrainRasterInternal.h:38
Definition EvpackPointGraphLoader.h:12
TerrainProbeOperationMode
Mutation performed by a multi-terrain probe rule.
Definition TerrainProbePlacement.h:14
Result< int > exportTerrainProbePoints(PointSet &output, const Heightmap &fitness, const Heightmap &heights, const TerrainProbePlacementSettings &s)
Export Pcg ReflectionProbe or LightProbe placements into an owned attributed PointSet.
Definition TerrainProbePlacement.cpp:37
Result< TerrainMultiTileReport > mapTerrainOperationMultiTile(const std::vector< TerrainOperationTile > &tiles, const TerrainStampSettings &settings, TerrainOperationDomain domain, bool worldMapOperation, const std::vector< std::string > &validTerrainNames)
Calculate Pcg-compatible local and shared pixel rectangles for any multi-terrain raster domain.
Definition TerrainMultiTile.cpp:71
@ Reflection
@ GameObject
Result< TerrainMultiTileReport > applyTerrainProbesMultiTile(const std::vector< TerrainProbeTile > &tiles, const Heightmap &fitness, const TerrainProbePlacementSettings &s, const TerrainStampSettings &operation, TerrainProbeOperationMode mode, bool worldMapOperation, const std::vector< std::string > &validNames)
Apply one Pcg probe rule over mapped terrain tiles as one atomic transaction.
Definition TerrainProbePlacement.cpp:102
@ InvalidArgument
@ InvariantViolation
One deterministic sample used by script-first procedural pipelines.
Definition PointSet.h:17
std::uint64_t id
Stable non-zero identity; zero marks legacy or not-yet-assigned data.
Definition PointSet.h:19
Deterministic value settings for Pcg SetProbes terrain scanning.
Definition TerrainProbePlacement.h:16
Value configuration for a rectangular stamp in world X/Z coordinates.
Definition TerrainStamp.h:22