载入中...
搜索中...
未找到
VirtualGeometryBackend.h
浏览该文件的文档.
1#pragma once
2
4
5#include <cstdint>
6#include <vector>
7
8namespace eve::virtualgeometry {
9
11struct VgUniforms {
12 float viewProj[16];
13 float model[16];
14 float cameraPos[4];
15 float params[4]; // x=viewW, y=viewH, z=projScale, w=errorPx
16 float frustum[24]; // 6 planes
17 float misc[4]; // x=clusterCount
18};
19
24struct VgBackend {
25 void *state = nullptr; // vulkan::VgState*
26};
27
28// ---- backend interface (implemented in vulkan/) ----
30void vgCreate(VgBackend &be);
32void vgDestroy(VgBackend &be);
33
34// Upload a built asset (positions/triangles/clusters) to the GPU.
36void vgUpload(VgBackend &be, const VirtualGeometryAsset &asset);
38void vgUploadUniforms(VgBackend &be, const VgUniforms &u);
40void vgReset(VgBackend &be, int visibleCapacity);
41
42// Dispatch cull + raster for the given workgroup counts. Returns visible count.
44int vgUpdate(VgBackend &be, int clusterCount, int visibleCapacity, int viewW, int viewH);
45
46// Read the visibility buffer back to CPU (packed depth<<16|clusterId).
48bool vgReadPixels(VgBackend &be, std::vector<uint32_t> &out);
49
50} // namespace eve::virtualgeometry
float u
Definition Grass.cpp:233
void vgReset(VgBackend &be, int visibleCapacity)
Vg reset.
int vgUpdate(VgBackend &be, int clusterCount, int visibleCapacity, int viewW, int viewH)
Vg update.
void vgUploadUniforms(VgBackend &be, const VgUniforms &u)
Vg upload uniforms.
bool vgReadPixels(VgBackend &be, std::vector< uint32_t > &out)
Vg read pixels.
void vgCreate(VgBackend &be)
Vg create.
void vgDestroy(VgBackend &be)
Vg destroy.
void vgUpload(VgBackend &be, const VirtualGeometryAsset &asset)
Vg upload.
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...