| # Chromium Experimental Framebuffer Fetch | |
| The `chromium_experimental_framebuffer_fetch` extension adds support for framebuffer inputs to fragment stages in WGSL. | |
| Framebuffer input, or framebuffer fetch, lets a fragment shader read the value of framebuffer attachments for the current fragment. | |
| It synchronizes the read with all previous writes to the same fragment (in API order). | |
| ## Status | |
| Framebuffer Fetch support in Tint is experimental and might change as we gain implementation experience. | |
| It will also be updated to follow an upstream specification if one is made at some point. | |
| Specification work in the WebGPU group hasn't started. | |
| ## Pseudo-specification | |
| This adds a new builtin attribute `@color` which takes a `u32` argument and is only allowed on `@fragment` entry point scalar / vector inputs. | |
| * Two input variables cannot have the same `@color` attribute. | |
| * The use of `@color(N)` with a multi-sampled color attachment will cause the fragment shader to run once per sample. | |
| ## Example usage | |
| ``` | |
| @fragment fn main(@color(0) vec4f previousColor) -> @location(0) vec4f { | |
| let color = computeThisFragmentColor(); | |
| return myBlend(previousColor, color); | |
| } | |
| ``` | |
| ## To-dos | |
| - Are f16 types allowed for the `@color` inputs? |