From f0a3b10681f14b8d879fe74a2ff8b1dd6e5edbd6 Mon Sep 17 00:00:00 2001 From: Powei Feng Date: Fri, 27 Mar 2026 11:13:32 -0700 Subject: [PATCH] docs: document 2D coordinate spaces And remove the pngs that documented the same thing. --- art/diagrams/ImageUploadReadPixels.png | Bin 84751 -> 0 bytes art/diagrams/NDC.png | Bin 35426 -> 0 bytes art/diagrams/RenderingReadPixels.png | Bin 38502 -> 0 bytes docs_src/.gitignore | 4 + docs_src/src_mdbook/src/SUMMARY.md | 25 +- .../src/notes/2d_coordinate_spaces.md | 221 ++++++++++++++++++ 6 files changed, 238 insertions(+), 12 deletions(-) delete mode 100644 art/diagrams/ImageUploadReadPixels.png delete mode 100644 art/diagrams/NDC.png delete mode 100644 art/diagrams/RenderingReadPixels.png create mode 100644 docs_src/src_mdbook/src/notes/2d_coordinate_spaces.md diff --git a/art/diagrams/ImageUploadReadPixels.png b/art/diagrams/ImageUploadReadPixels.png deleted file mode 100644 index ee0d5ced2f034ff1b724214a405904b6a7ec285f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84751 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

7pf>hJ;#7C&sG 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 z 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 MO?{1r`>ZegFOHnsH2?qr diff --git a/art/diagrams/NDC.png b/art/diagrams/NDC.png deleted file mode 100644 index 78bfe87e6760451052242884893613593bf0e4d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35426 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

bH)NOm+cxdL?eGI%(_>W0#y9WYAs)cG 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 b^q#M4GXJudlZQ`{re6EA$(jrU`{4fqtwJ4T diff --git a/art/diagrams/RenderingReadPixels.png b/art/diagrams/RenderingReadPixels.png deleted file mode 100644 index 530549c7e7094bc983de14bbbb3c36281d6c9493..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38502 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 g&%u(W@RK=;-MVY9X_qOfn+a diff --git a/docs_src/.gitignore b/docs_src/.gitignore index f3711d83e3f7..cf1f74e640a7 100644 --- a/docs_src/.gitignore +++ b/docs_src/.gitignore @@ -3,3 +3,7 @@ src_mdbook/book src_mdbook/src/dup/*.md src_mdbook/src/main/filament.md src_mdbook/src/main/materials.md +src_mdbook/src/samples/web/*.md +src_mdbook/src/web +src_mdbook/src/release/cocoapods.md +src_mdbook/src/remote \ No newline at end of file diff --git a/docs_src/src_mdbook/src/SUMMARY.md b/docs_src/src_mdbook/src/SUMMARY.md index 00485e733c16..f789b4545a84 100644 --- a/docs_src/src_mdbook/src/SUMMARY.md +++ b/docs_src/src_mdbook/src/SUMMARY.md @@ -23,23 +23,18 @@ - [skinning](./samples/web/skinning.md) - [sky](./samples/web/sky.md) - [Technical Notes](./notes/README.md) - - [Material Properties](./notes/material_properties.md) - - [Release](./release/README.md) - - [CocoaPods](./release/cocoapods.md) - - [Maven](./release/maven.md) - - [Github](./release/guide.md) - - [Versioning](./release/versioning.md) - - [Branching](./release/branching.md) - - [Documentation](./dup/docs.md) - [Debugging](./notes/debugging.md) - [Metal](./notes/metal_debugging.md) - [Vulkan](./notes/vulkan_debugging.md) - [SPIR-V](./notes/spirv_debugging.md) - - [Running with ASAN and UBSAN](./notes/asan_ubsan.md) - - [Using Instruments on macOS](./notes/instruments.md) - - [Code coverage analysis](./notes/coverage.md) - - [Performance analysis](./notes/performance_analysis.md) + - [ASAN and UBSAN](./notes/asan_ubsan.md) + - [Instruments on macOS](./notes/instruments.md) + - [Code coverage](./notes/coverage.md) + - [Performance](./notes/performance_analysis.md) + - [Documentation](./dup/docs.md) + - [Material Properties](./notes/material_properties.md) - [Framegraph](./notes/framegraph.md) + - [2D Coordinate Spaces](./notes/2d_coordinate_spaces.md) - [Tests](./notes/tests.md) - [backend](./dup/backend_test.md) - [CI: backend](./dup/test_ci_backend.md) @@ -66,3 +61,9 @@ - [specgen](./dup/specgen.md) - [specular-color](./dup/specular_color.md) - [zbloat](./dup/zbloat.md) + - [Release](./release/README.md) + - [CocoaPods](./release/cocoapods.md) + - [Maven](./release/maven.md) + - [Github](./release/guide.md) + - [Versioning](./release/versioning.md) + - [Branching](./release/branching.md) diff --git a/docs_src/src_mdbook/src/notes/2d_coordinate_spaces.md b/docs_src/src_mdbook/src/notes/2d_coordinate_spaces.md new file mode 100644 index 000000000000..51aad1db6865 --- /dev/null +++ b/docs_src/src_mdbook/src/notes/2d_coordinate_spaces.md @@ -0,0 +1,221 @@ +# 2D Coordinate Spaces + +This page describes Filament's interpretation of 2D coordinate spaces. We address the differences +between graphics APIs and provide explanations for custom logic and client APIs. + +## 1. Texture coordinate space + +To begin our discussion, we imagine looking at a rectangular image, like a photograph. To be able to +describe to another person where things are on the photograph (say, a **tree**), we need to first +define a consistent coordinate system that both parties understand. A natural choice is to pick one +of the corners as the origin of the coordinate system (that is, corners are easy to identify on a +rectangle, and do not require tools - like a ruler - for positioning). We can further refine this +coordinate system by assigning 2D numbers to the four corners so that we can accurately +describe the positions on the photograph. + +So for example, we assign the corners in clockwise order, starting from the top-left corner: +\\((0, 0)\\), \\((1, 0)\\), \\((1, 1)\\), \\((0, 1)\\). + +Assuming we are sampling from a texture in a shader, we sample by using a 2D coordinate (UV) +to identify a point on the rectangular space of the texture. We can make a statement such as, "the +**tree** is near the point of \\(((0.65, 0.35)\\))", to communicate the position of a tree in +the picture to another person. + +Given the description above, we conclude this section with the following statements + - Programmers communicate with computers using coordinate systems like the above to draw 2D images + onto a display. + - In 3D graphics, similar coordinate systems are used to texturize 3D models with 2D images. The + 2D images are called *textures*. + - Filament defines its coordinate system using the *top-left* of the image as \\((0, 0)\\) and + the *bottom-right* is \\((1, 1)\\). + +### 1.1. OpenGL (The Bottom-Left API) + +OpenGL has its texture coordinate origin \\((0, 0)\\) at the **bottom-left**, and +\\((1, 1)\\) is at the top-right. Note that this differs from Filament's assumed texture +coordinate system. + +The GL function for uploading texture is `glTexImage2D`. Even though GL interprets \\((0, 0)\\) as +the bottom-left of a 2D image, `glTexImage2D` uploads the lower-bits as the *bottom* of the image +as opposed to the *top*. (This behavior is opposite of the other backends' texture upload +APIs). The two differences cancel each other, meaning there is no difference between the different +backends in upload and sampling of textures. + +We can restate the above as + +| | +|---| +| *Filament's internal texture coordinate space defines the **top-left** corner of the image as the origin.* | + +### 1.2. Readback of rendertarget + +While we've established that the APIs are not any different in the *uploading* and *sampling* of +textures for Filament's backends, there are, unfortunately, cases where special handling of +texture coordinate is necessary. + +Reading the result of rendering into CPU memory can be very useful; for example, one might want to +take snapshots of the rendering and output to image formats such as PNG or JPEG. Another use is to +perform image analysis or processing over a rendered image. In Filament, the readback path +corresponds to the `readPixels`. In the OpenGL backend, this is implemented using the `glReadPixels` +function. GL's interpretation of texture coordinate space holds true for `glReadPixels`; this means +that it treats the bottom-left of the image as the origin and the readback output *starts* from the +origin. Hence, the first row of the image in CPU memory is the bottom-most row of the image (when +displayed). + +This creates two related inconsistencies: + - First, (not a real use case), if one were to upload a texture, attach it as an attachment, and + read the attachment, the GL backend would place the bottom of the image as the first row of + pixels in CPU memory. + - Second, the other backends consider the top-left corner as the origin, which means their + readbacks would place the top of the image as the first row of the image in CPU memory. + +To account for these inconsistencies, *the GL backend vertically flips the rows of the readback +image*. + +### 1.3. `flipUV` in Materials + +In order to work with textures and associated primitives from different sources, Filament provides +a simple, material-level client-set flag to flip the v-direction. + +For example, if a 3D modeler +exported a mesh with textures such that the bottom-left corner of the texture is \\(u=0, v=0\\) in +texture space, then this is not consistent with Filament's assumption. Luckily, modern modelers will +only choose either the top-left corner or the bottom-right corner as the origin. To address this +inconsistency, Filament provides `flipUV` in the material definition. Setting this flag to true will +flip the UV coordinate in the vertex attributes so that \\(v' = 1 - v\\), and the texture +coordinate interpretation is then consistent with Filament's internal coordinates. + +## 2. Clip-space + +The clip-space is the bounded 3D space that a primitive vertex is transformed into at the end of a +vertex shader. Abstractly, the XY-plane of the clip-space is parallel to the display, and its +bounds correspond to the bounds of the window, surface, or buffer that we are rendering into. (This +API-specific bounded space is also known as Normalized Device Coordinates or NDC). +In different graphics API, the bounds and orientation of the NDC is also inconsistent. For all of +the backends, the ranges of the XY-plane \\([-1, 1]\\) and the origin (\\((0, 0)\\)) are the +same. However, the depth range and the Y-axis directions are not the same. + +| Graphics API | Depth Range (Z) | Y-Axis Direction | Frame Buffer Origin | +| -------------- | --------------- | ---------------- | ------------- | +| OpenGL / WebGL | \\([−1, 1]\\) | Up | bottom-left | +| Metal | \\([0, 1]\\) | Up | top-left | +| WebGPU | \\([0, 1]\\) | Up | top-left | +| Vulkan | \\([0, 1]\\) | Down | top-left | + +(We will defer the discussion of GL's depth range difference to section 2.3.) + +### 2.1. Vulkan y-axis correction + +The XY ranges for all backends are the same, but Vulkan interprets the Y-Axis direction as +"Down", meaning that \\(y=1\\) is at the bottom of the image. To account for this difference, +Filament flips the projected \\(y\\) coordinate in the vertex shader for Vulkan + +```c++ +#if defined(TARGET_VULKAN_ENVIRONMENT) + // In Vulkan, clip space is Y-down. In OpenGL and Metal, clip space is Y-up. + position.y = -position.y; +#endif +``` + +### 2.2 Fix Frame buffer origin difference with `uvToRenderTargetUV` + +After the workaround in the above section, we can rewrite the table thus + +| Graphics API | Y-Axis Direction | Frame Buffer Origin | +| -------------- | ---------------- | ------------------- | +| OpenGL / WebGL | Up | bottom-left | +| Metal | Up | top-left | +| WebGPU | Up | top-left | +| Vulkan | Up (corrected) | top-left | + +We can rephrase the Y-Axis Direction column to say that + +| | +|---| +| *Filament's internal clip-space defines the Y-axis direction as **UP** (i.e. the physical world up direction pointing to \\(+1\\)).* | + +Now consider the "Frame Buffer Origin" column. This column identifies the origin of the rendered +image in the context of sampling by subsequent passes. + +Assume + - We have two passes \\(A\\) and \\(B\\) + - \\(A\\) renders to a render target that attaches texture \\(T\\) + - \\(B\\) renders a full-screen quad + - In \\(B\\), top-left and bottom-right corners of the quad are assigned texturing UV coordinates + \\((0, 0)\\) and \\((1, 1)\\), respectively. + - The quad in \\(B\\) samples texture \\(T\\). + +For GL, having the *bottom-left* corner as the origin means that rendering a pixel to clip-space +\\(x=-1, y=-1\\) in \\(A\\) will output to pixel at \\(u=0, v=0\\) of \\(T\\). Note that GL +clip-space's y-axis direction is consistent with the texture space v-axis direction. That is, in +pass \\(B\\), sampling from \\(v=0\\) to \\(v=1\\) (moving in the positive direction) maps to going +from \\(y=-1\\) to \\(y=1\\) in clip-space (also moving in positive direction). + +This behavior is opposite for all other backends; sampling from \\(v=0\\) to \\(v=1\\) will map to +clip-space movement from \\(y=1\\) to \\(y=-1\\) (going in the negative direction). + +To account for this, Filament provides the following shader method that clients can call to +correctly sample from a texture that was the rendertarget of a previous pass. + +```c++ +highp vec2 uvToRenderTargetUV(const highp vec2 uv) { +#if defined(TARGET_METAL_ENVIRONMENT) || defined(TARGET_VULKAN_ENVIRONMENT) || defined(TARGET_WEBGPU_ENVIRONMENT) + return vec2(uv.x, 1.0 - uv.y); +#else + return uv; +#endif +} +``` + +It's meant to be used like so + +```c++ +vec2 uv0 = uvToRenderTargetUV(getUV0()); +material.baseColor = texture(materialParams_baseColor, uv0); +``` + +### 2.3. Clip-space depth adjustments for OpenGL + +While the clip-space depth (or Z) dimension does not pertain to the 2D coordinate spaces that we have +been discussing, the concept in this section parallels the space adjustment logic in the other +sections. Hence, we have included it here. + +Consider again this table + +| Graphics API | Depth Range (Z) | +| -------------- | --------------- | +| OpenGL / WebGL | \\([−1, 1]\\) | +| Metal | \\([0, 1]\\) | +| WebGPU | \\([0, 1]\\) | +| Vulkan | \\([0, 1]\\) | + +For OpenGL, the NDC depth dimension ranges from \\(-1\\) to \\(1\\). Filament implements two +paths to adjust this so that the internal clip-space definition remains consistent: + +1. Use the `EXT_clip_control` extension to change the depth range to \\([0, 1]\\). + + ```c++ + #if !defined(__EMSCRIPTEN__) + if (ext.EXT_clip_control) { + #if defined(BACKEND_OPENGL_VERSION_GL) + glClipControl(GL_LOWER_LEFT, GL_ZERO_TO_ONE); + #elif defined(GL_EXT_clip_control) + glClipControlEXT(GL_LOWER_LEFT_EXT, GL_ZERO_TO_ONE_EXT); + #endif + } + #endif + ``` + +2. For cases where the extension is not available, the following shader code will convert the + internal (or noted as virtual in the code) coordinates to GL's expected depth coordinates. + + ```c++ + #if !defined(TARGET_VULKAN_ENVIRONMENT) && !defined(TARGET_METAL_ENVIRONMENT) && !defined(TARGET_WEBGPU_ENVIRONMENT) + // This is not needed in Vulkan, Metal or WebGPU because clipControl is always (1, 0) + position.z = position.z * frameUniforms.clipControl.x + + position.w * frameUniforms.clipControl.y; + #endif + ``` + + This code uses a vector in the uniform buffer to scale and translate the resulting depth. This + vector is written in runtime (so that we'd know whether the extension is present or not).