material-foundation / material-color-utilities

Color libraries for Material You
Apache License 2.0
1.56k stars 132 forks source link

GLSL #128

Open FluorescentHallucinogen opened 7 months ago

FluorescentHallucinogen commented 7 months ago

I see that GLSL support coming soon (https://github.com/material-foundation/material-color-utilities#library-availability).

Two questions:

  1. Any ETA?

  2. Would it be (and is it even technically possible) to rewrite the quantizer as a shader in GLSL to do all math on GPU instead of CPU?

I mean to pass from JS an array of pixel colors to the GLSL shader and take back to JS an array of dominant colors.

If so, this could be used in a TypeScript version of the library for web app. Browsers now have pretty good WebGL support. I expect a significant increase in performance for (very) large images.

2.1. Is Celebi's algorithm optimized for GPU i.e. can take advantage of the parallel processing on a large number of GPU cores?

FluorescentHallucinogen commented 6 months ago

I've also been thinking about WGSL (WebGPU Shading Language) (https://google.github.io/tour-of-wgsl/).

As far as I understand from the https://developer.chrome.com/articles/gpu-compute/ and https://surma.dev/things/webgpu/index.html blog posts, WebGPU is designed for general-purpose computing on GPU. So it will be easier to rewrite the algorithm to WGSL than to GLSL. Also, WebGPU seems easier to debug (see https://chrome.google.com/webstore/detail/webgpu-devtools/ckabpgjkjmbkfmichbbgcgbelkbbpopi).

But WebGL support in browsers is much better than WebGPU.