载入中...
搜索中...
未找到
VirtualGeometryBackend.h
浏览该文件的文档.
1#pragma once
2
4
5#include <cstdint>
6#include <vector>
7
8namespace eve::virtualgeometry {
9
10struct VgUniforms {
11 float viewProj[16];
12 float model[16];
13 float cameraPos[4];
14 float params[4]; // x=viewW, y=viewH, z=projScale, w=errorPx
15 float frustum[24]; // 6 planes
16 float misc[4]; // x=clusterCount
17};
18
23struct VgBackend {
24 void *state = nullptr; // vulkan::VgState*
25};
26
27// ---- backend interface (implemented in vulkan/) ----
28void vgCreate(VgBackend &be);
29void vgDestroy(VgBackend &be);
30
31// Upload a built asset (positions/triangles/clusters) to the GPU.
32void vgUpload(VgBackend &be, const VirtualGeometryAsset &asset);
33void vgUploadUniforms(VgBackend &be, const VgUniforms &u);
34void vgReset(VgBackend &be, int visibleCapacity);
35
36// Dispatch cull + raster for the given workgroup counts. Returns visible count.
37int vgUpdate(VgBackend &be, int clusterCount, int visibleCapacity, int viewW, int viewH);
38
39// Read the visibility buffer back to CPU (packed depth<<16|clusterId).
40bool vgReadPixels(VgBackend &be, std::vector<uint32_t> &out);
41
42} // namespace eve::virtualgeometry
float u
Definition Grass.cpp:234
void vgReset(VgBackend &be, int visibleCapacity)
int vgUpdate(VgBackend &be, int clusterCount, int visibleCapacity, int viewW, int viewH)
void vgUploadUniforms(VgBackend &be, const VgUniforms &u)
bool vgReadPixels(VgBackend &be, std::vector< uint32_t > &out)
void vgCreate(VgBackend &be)
void vgDestroy(VgBackend &be)
void vgUpload(VgBackend &be, const VirtualGeometryAsset &asset)
Opaque backend state for one virtual-geometry renderer. Owned by VirtualGeometryRenderer; allocated/f...
Fully processed virtual-geometry asset (CPU representation). Produced by Builder from a Mesh; uploade...