diff options
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/3D.md | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -1,5 +1,29 @@ # 3D System and Rendering Pipeline +## Coordinate Conventions + +### World Space: Z-up, Y-forward +- X = right +- Y = forward +- Z = up +- `look_at` up parameter: `{0, 0, 1}` +- Camera default position: along +Y axis, looking toward origin + +### View Space: X-right, Y-up, -Z-forward (standard NDC) +- Camera looks down **-Z** in view space +- `perspective()` encodes this via `m[11] = -1` +- Independent of world-space convention — set by `look_at` construction + +### Screen Space: Y-up, origin at bottom-left +- `uv` in `[0,1]`: `(0,0)` = bottom-left, `(1,1)` = top-right +- `st` in `[-1,1]`: NDC directly, y-up +- WebGPU textures are y-down `(0,0)` at top — use `textureSampleYUp()` when sampling with `uv` + +### NDC → Screen +- WebGPU NDC: y-up (`+1` = top) +- WebGPU framebuffer: y-down (pixel row 0 at top) +- `uv.y = 0` → NDC `y = -1` → bottom of framebuffer ✓ + ## Core Concept Hybrid SDF/rasterization pipeline with physics and collision detection. |
