A virtual-geometry renderer: preprocesses a mesh into a cluster DAG, uploads it to the GPU, then each frame runs GPU-driven culling + a software rasterizer into a visibility buffer. 更多...
#include <VirtualGeometryRenderer.h>
Public 成员函数 | |
| VirtualGeometryRenderer () | |
| ~VirtualGeometryRenderer () | |
| VirtualGeometryRenderer (const VirtualGeometryRenderer &)=delete | |
| VirtualGeometryRenderer & | operator= (const VirtualGeometryRenderer &)=delete |
| bool | isReady () const |
| bool | build (const float *positions, int vertexCount, const std::uint32_t *indices, int indexCount) |
| bool | build (const VirtualGeometryBuilder::MeshInput &in) |
| bool | buildIcosphere (int subdiv) |
Convenience: procedural unit icosphere, subdiv subdivision levels. | |
| void | setViewport (int width, int height, float fovYDeg, float errorPx=1.0f) |
| void | setCamera (const float view[16], const float proj[16], const float model[16], const float camPos[3]) |
| void | setCameraSimple (float camX, float camY, float camZ, float nearZ=0.1f, float farZ=100.f) |
| Script-friendly: identity view (camera looking down -Z) + perspective. | |
| void | setModelYaw (float yaw) |
Spin the virtualized model about Y by yaw radians each frame. | |
| int | update () |
| Run cull + raster; returns the number of visible clusters. | |
| bool | resolve (unsigned char *outRgba, int &outW, int &outH) |
| eve::data::ByteData * | resolveByteData () |
| Resolve into a heap ByteData (RGBA) for scripting/display. | |
| int | getViewWidth () const |
| int | getViewHeight () const |
| int | getClusterCount () const |
| int | getVisibleCount () const |
| int | getTotalTriangleCount () const |
| int | getLodLevel (int clusterId) const |
| int | getMaxLodLevel () const |
详细描述
A virtual-geometry renderer: preprocesses a mesh into a cluster DAG, uploads it to the GPU, then each frame runs GPU-driven culling + a software rasterizer into a visibility buffer.
Lifecycle (Squirrel): r <- vg.newRenderer() r.buildIcosphere(4) (or build(...) with raw arrays) r.setViewport(w, h, fovYDeg, errorPx) r.setCamera(view[16], proj[16], model[16], cam[3]) visible <- r.update() ok <- r.resolve(rgbaArray, w, h) // CPU readback of the visibility buffer
在文件 VirtualGeometryRenderer.h 第 29 行定义.
构造及析构函数说明
◆ VirtualGeometryRenderer() [1/2]
| eve::virtualgeometry::VirtualGeometryRenderer::VirtualGeometryRenderer | ( | ) |
在文件 VirtualGeometryRenderer.cpp 第 38 行定义.
◆ ~VirtualGeometryRenderer()
| eve::virtualgeometry::VirtualGeometryRenderer::~VirtualGeometryRenderer | ( | ) |
在文件 VirtualGeometryRenderer.cpp 第 40 行定义.
◆ VirtualGeometryRenderer() [2/2]
|
delete |
成员函数说明
◆ build() [1/2]
| bool eve::virtualgeometry::VirtualGeometryRenderer::build | ( | const float * | positions, |
| int | vertexCount, | ||
| const std::uint32_t * | indices, | ||
| int | indexCount | ||
| ) |
在文件 VirtualGeometryRenderer.cpp 第 51 行定义.
引用了 build(), eve::virtualgeometry::VirtualGeometryBuilder::MeshInput::indexCount, eve::virtualgeometry::VirtualGeometryBuilder::MeshInput::indices, eve::virtualgeometry::VirtualGeometryBuilder::MeshInput::positions , 以及 eve::virtualgeometry::VirtualGeometryBuilder::MeshInput::vertexCount.
被这些函数引用 build() , 以及 buildIcosphere().
◆ build() [2/2]
| bool eve::virtualgeometry::VirtualGeometryRenderer::build | ( | const VirtualGeometryBuilder::MeshInput & | in | ) |
◆ buildIcosphere()
| bool eve::virtualgeometry::VirtualGeometryRenderer::buildIcosphere | ( | int | subdiv | ) |
Convenience: procedural unit icosphere, subdiv subdivision levels.
在文件 VirtualGeometryRenderer.cpp 第 111 行定义.
◆ getClusterCount()
| int eve::virtualgeometry::VirtualGeometryRenderer::getClusterCount | ( | ) | const |
◆ getLodLevel()
| int eve::virtualgeometry::VirtualGeometryRenderer::getLodLevel | ( | int | clusterId | ) | const |
◆ getMaxLodLevel()
| int eve::virtualgeometry::VirtualGeometryRenderer::getMaxLodLevel | ( | ) | const |
在文件 VirtualGeometryRenderer.cpp 第 246 行定义.
引用了 c, eve::virtualgeometry::VirtualGeometryAsset::clusters , 以及 m.
◆ getTotalTriangleCount()
| int eve::virtualgeometry::VirtualGeometryRenderer::getTotalTriangleCount | ( | ) | const |
◆ getViewHeight()
|
inline |
在文件 VirtualGeometryRenderer.h 第 60 行定义.
◆ getViewWidth()
|
inline |
在文件 VirtualGeometryRenderer.h 第 59 行定义.
◆ getVisibleCount()
|
inline |
在文件 VirtualGeometryRenderer.h 第 64 行定义.
◆ isReady()
|
inline |
在文件 VirtualGeometryRenderer.h 第 37 行定义.
◆ operator=()
|
delete |
◆ resolve()
| bool eve::virtualgeometry::VirtualGeometryRenderer::resolve | ( | unsigned char * | outRgba, |
| int & | outW, | ||
| int & | outH | ||
| ) |
Resolve the visibility buffer to RGBA (w*h*4 bytes).
在文件 VirtualGeometryRenderer.cpp 第 191 行定义.
引用了 depth, h, n, u , 以及 eve::virtualgeometry::vgReadPixels().
被这些函数引用 resolveByteData().
◆ resolveByteData()
| eve::data::ByteData * eve::virtualgeometry::VirtualGeometryRenderer::resolveByteData | ( | ) |
Resolve into a heap ByteData (RGBA) for scripting/display.
在文件 VirtualGeometryRenderer.cpp 第 222 行定义.
◆ setCamera()
| void eve::virtualgeometry::VirtualGeometryRenderer::setCamera | ( | const float | view[16], |
| const float | proj[16], | ||
| const float | model[16], | ||
| const float | camPos[3] | ||
| ) |
◆ setCameraSimple()
| void eve::virtualgeometry::VirtualGeometryRenderer::setCameraSimple | ( | float | camX, |
| float | camY, | ||
| float | camZ, | ||
| float | nearZ = 0.1f, |
||
| float | farZ = 100.f |
||
| ) |
Script-friendly: identity view (camera looking down -Z) + perspective.
在文件 VirtualGeometryRenderer.cpp 第 147 行定义.
引用了 a, eve::virtualgeometry::VgUniforms::params, proj, setCamera() , 以及 view.
◆ setModelYaw()
| void eve::virtualgeometry::VirtualGeometryRenderer::setModelYaw | ( | float | yaw | ) |
Spin the virtualized model about Y by yaw radians each frame.
在文件 VirtualGeometryRenderer.cpp 第 167 行定义.
◆ setViewport()
| void eve::virtualgeometry::VirtualGeometryRenderer::setViewport | ( | int | width, |
| int | height, | ||
| float | fovYDeg, | ||
| float | errorPx = 1.0f |
||
| ) |
在文件 VirtualGeometryRenderer.cpp 第 119 行定义.
引用了 height, eve::virtualgeometry::VgUniforms::params , 以及 width.
◆ update()
| int eve::virtualgeometry::VirtualGeometryRenderer::update | ( | ) |
Run cull + raster; returns the number of visible clusters.
在文件 VirtualGeometryRenderer.cpp 第 184 行定义.
引用了 eve::virtualgeometry::VirtualGeometryAsset::clusters, eve::virtualgeometry::VgBackend::state , 以及 eve::virtualgeometry::vgUpdate().
该类的文档由以下文件生成:
- src/modules/virtualgeometry/VirtualGeometryRenderer.h
- src/modules/virtualgeometry/VirtualGeometryRenderer.cpp