载入中...
搜索中...
未找到
MeshVfxRenderBatch.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
6
7#include <cstdint>
8#include <span>
9#include <vector>
10
11namespace eve::stylize {
12
14enum class MeshVfxBatchBlend : std::uint8_t {
16 Alpha,
17};
18
21 std::uint64_t pipelineId = 0;
22 std::uint64_t materialId = 0;
23 std::uint64_t meshId = 0;
24 std::uint32_t renderPass = 0;
26
28 auto operator<=>(const MeshVfxBatchKey&) const = default;
29};
30
33 std::uint64_t stableInstanceId = 0;
35 float viewDepth = 0.0f;
36};
37
39enum class MeshVfxMeshUpdate : std::uint8_t {
40 Reuse,
41 Refresh,
42};
43
51
55 std::vector<MeshVfxBatchedDraw> draws;
56};
57
60 std::uint32_t inputItems = 0;
61 std::uint32_t queuedDraws = 0;
62 std::uint32_t culledDraws = 0;
63 std::uint32_t missingDecisions = 0;
64 std::uint32_t dynamicMeshRefreshes = 0;
65};
66
69 std::vector<MeshVfxRenderBatch> batches;
71};
72
81public:
89 [[nodiscard]] MeshVfxRenderQueue build(std::span<const MeshVfxRenderItem> items,
90 std::span<const MeshVfxLodDecision> lodDecisions,
91 std::uint64_t frameIndex) const;
92};
93
94} // namespace eve::stylize
#define EVENGINE_API_WORLD
Definition Export.h:109
Builds deterministic state batches while preserving alpha depth order.
MeshVfxMeshUpdate
Whether an instance must refresh dynamic mesh data this frame.
MeshVfxLodTier
Runtime quality tier selected for one mesh VFX instance.
MeshVfxBatchBlend
Blend ordering contract used by the mesh VFX batch planner.
Immutable GPU-state identity used to combine compatible draw items.
auto operator<=>(const MeshVfxBatchKey &) const =default
Operator <=>.
Summary of rejected or accepted queue entries.
One ordered draw reference inside a render batch.
Consecutive compatible draws sharing GPU state.
std::vector< MeshVfxBatchedDraw > draws
One visible mesh VFX draw before sorting and batching.
Complete deterministic queue consumed by a graphics backend.
std::vector< MeshVfxRenderBatch > batches