1.1 KiB
1.1 KiB
tags
| tags | ||
|---|---|---|
|
优化带宽(减少储存数据量
- 一块地形为128个三角形,每个三角形包含三个位置
- 每个位置包含位置Vec3,法线Vec3,UV Vec2
- 计算得出每个网格是12kb,整个场景为192M
- 每个位置包含位置Vec3,法线Vec3,UV Vec2
- 优化uv储存
- 位置信息,可以优化掉position.xz只保留高度(没懂
- 使用gl_VertexID(顶点索引)来生成位置
- 使用floor和mod来确定x,z
- position.x = flooar(gl_VertexID / 2.0);
- position.z = mod(gl_VertexID, 2.0);
- 去掉法线,改为两个16整数,使用俯仰角和偏航角来确定法线方向。虽然精度只有原来的一半,但是对于法线来说足够了
- 这些做完之后,由12.9kb=>3kb
- 使用三角形条带,除了第一个三角形之外,之后的每个三角形都可以较少两个顶点信息
- 但只适合规整的网格
着色器执行很快,但是一直等待从内存读取更多的数据,所以造成瓶颈
