更新文档

This commit is contained in:
2026-06-09 10:39:10 +08:00
parent 0fdcb6b8ff
commit 189072ba4e
3 changed files with 53 additions and 30 deletions
+8
View File
@@ -21,6 +21,14 @@ src/
Apps/
Demo/ # 2D sprite/tilemap 性能测试入口
Game/ # Tom 游戏
generated/ # 自动生成的 tom_atlas.h
tools/ # SpriteAssetTool(离线资源转换)
src/
app/ # TomGameApp
audio/ # VoiceEffect、VoicePlayer、VoiceRecorder
components/ # SpriteAnimator
scenes/ # TomScene
systems/ # AnimationSystem
```
`src/Core/Core` 这个二级目录保留的是原底层库里的核心运行时对象。它和顶层 `src/Core` 名称重复,但含义不同:
+5 -8
View File
@@ -125,7 +125,7 @@
当前项目已经接入 `Core::DepthBuffer`,并采用以下规则:
- `DepthBuffer` 存储类型为 `float`
- `DepthBuffer` 存储类型为 `float`;`TriangleRasterizer` 内部使用定点深度插值(`depth_fp += depth_fp_per_pixel`,提取时 `>> 16`),内层循环无 float 运算
- 每帧开始时必须调用 `depthBuffer->clear()`,默认清为 `INFINITY`
- 当前约定为“深度值越小,离相机越近”
- 深度测试通过后,必须同时更新 `DepthBuffer` 和 `FrameBuffer`
@@ -133,17 +133,14 @@
当前三角形光栅化里的深度流程为:
- 在屏幕空间遍历三角形包围盒
- 以像素中心 `x + 0.5, y + 0.5` 作为采样点
- 用屏幕空间 `x/y` 计算重心坐标
- 用同一组重心坐标判断点是否在三角形内,并插值顶点 `z`
- 使用增量式整数边缘函数替代每像素 float 重心计算和除法
- 深度插值使用定点算术:`depth_fp += depth_fp_per_pixel`,提取时 `>> 16`
- 若新深度更近,则写入 `DepthBuffer` 和 `FrameBuffer`
也就是说:
- 重心坐标的计算是二维问题,只使用屏幕空间 `x/y`
- 顶点 `z` 的插值使用这组重心权重完成
- 当前实现是屏幕空间线性插值,后续如果引入纹理、法线或更严格的属性插值,需要进一步考虑透视校正插值
- 当前实现已定点化,内层循环无 float 运算,符合 `DEVELOPMENT_GUIDELINES.md` 性能红线
- 后续如果引入纹理、法线或更严格的属性插值,需要进一步考虑透视校正插值
## 10. Demo 中的可见性规则