UNPKG

pixi.js

Version:

<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">

103 lines (87 loc) 2.03 kB
"use strict"; const hslgpu = ` fn getLuminosity(c: vec3<f32>) -> f32 { return 0.3*c.r + 0.59*c.g + 0.11*c.b; } fn setLuminosity(c: vec3<f32>, lum: f32) -> vec3<f32> { var modLum: f32 = lum - getLuminosity(c); var color: vec3<f32> = c.rgb + modLum; // clip back into legal range modLum = getLuminosity(color); let modLumVec = vec3<f32>(modLum); let cMin: f32 = min(color.r, min(color.g, color.b)); let cMax: f32 = max(color.r, max(color.g, color.b)); if(cMin < 0.0) { color = mix(modLumVec, color, modLum / (modLum - cMin)); } if(cMax > 1.0) { color = mix(modLumVec, color, (1 - modLum) / (cMax - modLum)); } return color; } fn getSaturation(c: vec3<f32>) -> f32 { return max(c.r, max(c.g, c.b)) - min(c.r, min(c.g, c.b)); } fn setSaturationMinMidMax(cSorted: vec3<f32>, s: f32) -> vec3<f32> { var colorSorted = cSorted; if(colorSorted.z > colorSorted.x) { colorSorted.y = (((colorSorted.y - colorSorted.x) * s) / (colorSorted.z - colorSorted.x)); colorSorted.z = s; } else { colorSorted.y = 0; colorSorted.z = 0; } colorSorted.x = 0; return colorSorted; } fn setSaturation(c: vec3<f32>, s: f32) -> vec3<f32> { var color = c; if (color.r <= color.g && color.r <= color.b) { if (color.g <= color.b) { color = vec3<f32>(setSaturationMinMidMax(color.rgb, s)).rgb; } else { color = vec3<f32>(setSaturationMinMidMax(color.rbg, s)).rbg; } } else if (color.g <= color.r && color.g <= color.b) { if (color.r <= color.b) { color = vec3<f32>(setSaturationMinMidMax(color.grb, s)).grb; } else { color = vec3<f32>(setSaturationMinMidMax(color.gbr, s)).gbr; } } else { // Using bgr for both fixes part of hue if (color.r <= color.g) { color = vec3<f32>(setSaturationMinMidMax(color.brg, s)).brg; } else { color = vec3<f32>(setSaturationMinMidMax(color.bgr, s)).bgr; } } return color; } `; export { hslgpu }; //# sourceMappingURL=GPUhls.mjs.map