载入中...
搜索中...
未找到
TerrainVegetationRuntime.h
浏览该文件的文档.
1#pragma once
2
7
8#include <array>
9#include <cstdint>
10#include <string>
11#include <vector>
12
13namespace eve::asset_procgen {
14
15struct LoadedTerrainMaterial;
16struct TerrainMaterialAtlases;
17
20 std::uint32_t maximumGeneratedInstances = 1'000'000;
21 std::uint32_t maximumTotalInstances = 2'000'000;
22 std::uint32_t maximumGraphNodes = 4096;
23};
24
27 std::uint64_t id = 0;
28 std::string prototype;
29 std::string layer;
30 std::array<float, 3> position{};
31 std::array<float, 4> rotation{0.f, 0.f, 0.f, 1.f};
32 std::array<float, 3> scale{1.f, 1.f, 1.f};
33 std::array<float, 3> normal{0.f, 1.f, 0.f};
34 std::uint32_t seed = 0;
35};
36
39 std::string prototype;
40 std::uint32_t firstInstance = 0;
41 std::uint32_t instanceCount = 0;
42};
43
46 float wavingGrassAmount = 0.f;
47 float wavingGrassSpeed = 0.f;
49 std::array<float, 4> wavingGrassTint{1.f, 1.f, 1.f, 1.f};
50 std::vector<RuntimeInstancePrototype> prototypes;
51 std::vector<TerrainVegetationInstance> instances;
52 std::vector<TerrainVegetationBucket> buckets;
53 std::uint32_t generatedCount = 0;
54 std::uint32_t explicitCount = 0;
55 std::uint32_t weightCulledCount = 0;
56 std::uint32_t graphNodesEvaluated = 0;
57 double graphMilliseconds = 0.0;
58};
59
62 float minimumX = 0.f;
63 float minimumZ = 0.f;
64 float maximumX = 0.f;
65 float maximumZ = 0.f;
67 bool flipV = false;
68};
69
81 LoadedPointGraph* graph, const LoadedInstanceSet* explicitInstances, const TerrainVegetationLimits& limits = {});
82
93 const TerrainVegetationRealization& realization, const LoadedTerrainMaterial& material,
94 const TerrainMaterialAtlases& atlases, const TerrainVegetationWeightDomain& domain);
95
96} // namespace eve::asset_procgen
Runtime decoding of canonical static instances.
Runtime binding for compiled PCG assets.
#define EVENGINE_API_ORCHESTRATION
Definition Export.h:111
std::map< std::string, std::vector< std::string > > graph
Definition Package.cpp:59
Material * material
const AssetImportLimits & limits
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Result< TerrainVegetationRealization > realizeTerrainVegetation(LoadedPointGraph *graph, const LoadedInstanceSet *explicitInstances, const TerrainVegetationLimits &limits)
Execute an optional terrain PCG graph and merge an optional baked instance set.
Result< TerrainVegetationRealization > filterTerrainVegetationByLayerWeights(const TerrainVegetationRealization &realization, const LoadedTerrainMaterial &material, const TerrainMaterialAtlases &atlases, const TerrainVegetationWeightDomain &domain)
Apply terrain RGBA layer weights to procedural instances using stable stochastic thinning.
Owning exact static-instance set selected for one runtime variant.
Owning executable graph and its selected output node.
Contiguous prototype range suitable for one instanced render submission.
One stable terrain vegetation transform and its source attributes.
Hard limits for one deterministic terrain vegetation realization.
Owning, prototype-sorted result plus scalability evidence.
std::vector< RuntimeInstancePrototype > prototypes
std::vector< TerrainVegetationInstance > instances
Explicit world-to-control-map projection for terrain layer filtering.
bool flipV
Reverse V for source maps whose rows oppose the canonical terrain Z axis.