diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-28 09:08:57 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-28 09:08:57 +0100 |
| commit | 9ee410594a52cbc699b13de2bde4860d70c959a3 (patch) | |
| tree | d56adf5931d488abcf3ac8e24a828d2d5b02e8cc /src/shaders/math/color.wgsl | |
| parent | 6599a428cd69be6c66c5179e1f0fce42f561f935 (diff) | |
refactor: move common/shaders/ to src/shaders/
Relocates shared WGSL shaders under src/ where all source code lives,
eliminating the top-level common/ directory.
- Update asset references in workspaces/main/assets.txt and workspaces/test/assets.txt
- Update docs: PROJECT_CONTEXT.md, ARCHITECTURE.md, WORKSPACE_SYSTEM.md, SHADER_REUSE_INVESTIGATION.md
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'src/shaders/math/color.wgsl')
| -rw-r--r-- | src/shaders/math/color.wgsl | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/shaders/math/color.wgsl b/src/shaders/math/color.wgsl new file mode 100644 index 0000000..9352053 --- /dev/null +++ b/src/shaders/math/color.wgsl @@ -0,0 +1,27 @@ +// Common color space and tone mapping functions. + +// sRGB to Linear approximation +// Note: Assumes input is in sRGB color space. +fn sRGB(t: vec3f) -> vec3f { + return mix(1.055 * pow(t, vec3f(1.0/2.4)) - 0.055, 12.92 * t, step(t, vec3f(0.0031308))); +} + +// ACES Filmic Tone Mapping (Approximate) +// A common tone mapping algorithm used in games and film. +fn aces_approx(v_in: vec3f) -> vec3f { + var v = max(v_in, vec3f(0.0)); + v *= 0.6; + let a = 2.51; + let b = 0.03; + let c = 2.43; + let d = 0.59; + let e = 0.14; + return clamp((v * (a * v + b)) / (v * (c * v + d) + e), vec3f(0.0), vec3f(1.0)); +} + +// HSV to RGB conversion +const hsv2rgb_K = vec4f(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); +fn hsv2rgb(c: vec3f) -> vec3f { + let p = abs(fract(c.xxx + hsv2rgb_K.xyz) * 6.0 - hsv2rgb_K.www); + return c.z * mix(hsv2rgb_K.xxx, clamp(p - hsv2rgb_K.xxx, vec3f(0.0), vec3f(1.0)), c.y); +} |
