载入中...
搜索中...
未找到
TerrainDetailGpuResolver.cpp
浏览该文件的文档.
18 Impl(const asset::EvpackResourceReader& sourceReader, const asset::EvpackCapabilities& sourceCapabilities,
20 : reader(sourceReader), capabilities(sourceCapabilities), graphics(sourceGraphics), meshes(sourceGraphics),
64 // Resolve and validate every prototype before RenderSystem3D opens a frame. GPU uploads from the collector
81 return Result<void>::failure(Diagnostic::error(DiagnosticCode::Conflict, "terrain Detail runtime is released",
108 Diagnostic::error(DiagnosticCode::NotFound, "terrain Detail resource is unresolved", detail.prototype, {},
110 const std::string key = detail.prototype + "\n" + detail.renderMode + "\n" + detail.resourceAsset;
123 auto prefab = asset_graphics::EvpackStaticPrefab::load(impl_->reader, impl_->meshes, impl_->images,
132 resource.slots.parts.push_back({source.localTransform, source.meshId, source.materialId, source.flags,
140 auto mesh = impl_->meshes.uploadMesh(geometry.value().positions.data(), geometry.value().normals.data(),
185 auto materialReleased = impl_->graphics.gpuDrivenReleaseMaterialRecord(resource.material.get());
199 Diagnostic::error(DiagnosticCode::Failed, "terrain Detail GPU table registration failed", detail.prototype,
215 const std::string key = detail.prototype + "\n" + detail.renderMode + "\n" + detail.resourceAsset;
217 // Shadow passes precede the frame's GPU collector. The first frame prepares the resource in that collector;
218 // subsequent shadow passes consume it. Uploading inside an active shadow render pass can deadlock the backend.
235 auto material = impl_->graphics.gpuDrivenReleaseMaterialRecord(iterator->second.material.get());
Transactional graphics consumers for canonical runtime assets.
Transactional EVIMG runtime texture loading.
Canonical card geometry for texture-backed Unity terrain details.
Default GPU resolver for Unity terrain Detail resources.
static Result< AssetRef > parse(std::string_view text)
Parse an asset://<canonical UUID> reference.
Definition ResourceRef.cpp:20
A structured explanation of a failed, degraded, or noteworthy result.
Definition Diagnostic.h:94
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
Immutable reader retaining an admitted pack by shared ownership.
Definition EvpackResourceReader.h:29
Capability-aware adapter from admitted EVIMG assets to backend textures.
Definition EvpackImageLoader.h:65
static Result< std::unique_ptr< EvpackStaticPrefab > > load(const asset::EvpackResourceReader &reader, graphics::IMeshResourceFactory &meshes, graphics::IImageResourceFactory &images, const AssetRef &asset, const asset::EvpackCapabilities &capabilities)
Validate a template and stage its mesh, material and image dependencies; failures release staged uplo...
Definition EvpackStaticPrefab.cpp:166
Result-based adapter over the engine's established graphics resource factory.
Definition EvpackImageLoader.h:26
Result-based adapter over the engine's established graphics resource factory.
Definition EvpackGraphicsLoader.h:42
Capability-aware eve.instance-set/5 EVINST decoder with v1-v4 compatibility.
Definition EvpackInstanceSetLoader.h:61
Result< LoadedInstanceSet > load(const AssetRef &instances, const asset::EvpackCapabilities &capabilities, const InstanceSetLoadLimits &limits={}) const
Validate metadata, exact byte layout and every TRS record transactionally.
Definition EvpackInstanceSetLoader.cpp:30
Owning lazy GPU resource resolver for texture-backed terrain Detail prototypes. @ownership Uploaded m...
Definition TerrainDetailGpuResolver.h:27
Result< TerrainVegetationGpuPrototype > resolve(const TerrainVegetationGpuPrototypeRequest &prototype) override
Load and cache one Detail card, image, and masked material transactionally.
Definition TerrainDetailGpuResolver.cpp:99
~TerrainDetailGpuResolver() override
Releases TerrainDetailGpuResolver resources.
Definition TerrainDetailGpuResolver.cpp:42
TerrainDetailGpuResolver(const asset::EvpackResourceReader &reader, const asset::EvpackCapabilities &capabilities, graphics::Graphics &graphics)
Constructs a TerrainDetailGpuResolver.
Definition TerrainDetailGpuResolver.cpp:37
Result< void > release()
Release all backend leases; failed releases remain owned for retry.
Definition TerrainDetailGpuResolver.cpp:231
Owning runtime for one cooked Unity Terrain Detail instance set. @ownership Owns the realization,...
Definition TerrainDetailGpuResolver.h:62
static Result< std::unique_ptr< TerrainDetailRuntime > > load(const asset::EvpackResourceReader &reader, const asset::EvpackCapabilities &capabilities, graphics::Graphics &graphics, const AssetRef &asset, const TerrainVegetationLimits &limits={})
Load, realize, and register one Detail set atomically; GPU resources resolve on first render.
Definition TerrainDetailGpuResolver.cpp:52
Result< void > setFrame(TerrainVegetationGpuFrame frame)
Update the absolute simulation time used for deterministic grass motion.
Definition TerrainDetailGpuResolver.cpp:79
TerrainDetailRuntime(const TerrainDetailRuntime &)=delete
Result< void > release()
Unregister rendering and release all backend resources; safe to retry after failure.
Definition TerrainDetailGpuResolver.cpp:90
~TerrainDetailRuntime()
Releases TerrainDetailRuntime resources.
Definition TerrainDetailGpuResolver.cpp:73
const Diagnostic * lastSubmissionError() const
Return the latest asynchronous render-submission diagnostic, if any. @ownership Borrowed; the runtime...
Definition TerrainDetailGpuResolver.cpp:86
Definition Graphics.h:125
GPU texture created via Graphics::newTexture. Owns GPU resources through an opaque backend handle.
Definition Texture.h:18
Result< TerrainVegetationRealization > realizeTerrainVegetation(LoadedPointGraph *graph, const LoadedInstanceSet *explicitInstances, const TerrainVegetationLimits &limits)
Execute an optional terrain PCG graph and merge an optional baked instance set.
Definition TerrainVegetationRuntime.cpp:81
Result< TerrainDetailCardGeometry > buildTerrainDetailCard(const RuntimeInstancePrototype &prototype)
Build bottom-anchored unit cards for a texture-backed terrain Detail prototype.
Definition TerrainDetailCard.cpp:19
Result< TerrainVegetationGpuPlan > buildTerrainVegetationGpuPlan(const TerrainVegetationRealization &realization, ITerrainVegetationGpuResolver &resolver, const TerrainVegetationGpuFrame &frame)
Resolve every prototype and build GPU records transactionally.
Definition TerrainVegetationGpu.cpp:18
constexpr uint32_t kInvalidGpuDrivenSlot
GPU-driven rendering shared constants + std430 GPU layouts.
Definition GpuDrivenTypes.h:19
@ NotFound
@ Unsupported
@ Failed
@ Conflict
Definition Container.h:602
Actual runtime device capabilities used for variant selection.
Definition Evpack.h:92
Definition TerrainDetailGpuResolver.cpp:27
TerrainVegetationGpuPrototype slots
Definition TerrainDetailGpuResolver.cpp:32
graphics::Texture * texture
Definition TerrainDetailGpuResolver.cpp:29
std::unique_ptr< graphics::Material > material
Definition TerrainDetailGpuResolver.cpp:30
graphics::Mesh * mesh
Definition TerrainDetailGpuResolver.cpp:28
std::unique_ptr< asset_graphics::EvpackStaticPrefab > prefab
Definition TerrainDetailGpuResolver.cpp:31
std::map< std::string, Resource > resources
Definition TerrainDetailGpuResolver.cpp:34
Impl(const asset::EvpackResourceReader &sourceReader, const asset::EvpackCapabilities &sourceCapabilities, graphics::Graphics &sourceGraphics)
Definition TerrainDetailGpuResolver.cpp:18
const asset::EvpackCapabilities & capabilities
Definition TerrainDetailGpuResolver.cpp:23
asset_graphics::GraphicsImageFactoryAdapter images
Definition TerrainDetailGpuResolver.cpp:26
const asset::EvpackResourceReader & reader
Definition TerrainDetailGpuResolver.cpp:22
graphics::Graphics & graphics
Definition TerrainDetailGpuResolver.cpp:24
asset_graphics::GraphicsMeshFactoryAdapter meshes
Definition TerrainDetailGpuResolver.cpp:25
Explicit frame inputs for deterministic terrain Detail animation.
Definition TerrainVegetationGpu.h:77
One owning realization's prototype request passed to the graphics resource provider.
Definition TerrainVegetationGpu.h:35
GPU table slots resolved for one vegetation prototype.
Definition TerrainVegetationGpu.h:17
Hard limits for one deterministic terrain vegetation realization.
Definition TerrainVegetationRuntime.h:19