Projection

  • World-space view:

                       x = -visible_width/2        x = +visible_width/2
 y = -visible_height/2  ┌────────────────────────────┐
                        │                            │
                        │          (0,0)             │
                        │            ┼── +x          │
                        │            │               │
                        │            ▼ +y            │
                        │                            │
 y = +visible_height/2  └────────────────────────────┘
  • Clip-space output:
          x = -1.0      x = +1.0
 y = -1.0 ┌──────────────────┐
          │                  │
          │ Right Hand Ortho │
          │ (with flipped Y) │
          │                  │
 y = +1.0 └──────────────────┘

 z:  0.0  -->  -1.0
     near       far

After projection it gets converted to the actual WebGPU device coordinates (Normalized Device Coordinates):

          x = -1.0      x = +1.0
 y = -1.0 ┌──────────────────┐
          │                  │
          │   NDC (WebGPU)   │
          │                  │
 y = +1.0 └──────────────────┘

 depth: 0.0 --> 1.0
     near       far