UNPKG

@nebula.gl/layers

Version:

A suite of 3D-enabled data editing layers, suitable for deck.gl

55 lines (44 loc) 1.1 kB
// TODO - this module is a WIP /* eslint-disable camelcase */ const INITIAL_STATE: Record<string, number> = { color_uOpacity: 1.0, color_uDesaturate: 0.0, color_uBrightness: 1.0, }; function getUniforms(opts = INITIAL_STATE) { const uniforms: Record<string, number> = {}; if (opts.opacity) { uniforms.color_uOpacity = opts.opacity; } return uniforms; } const vs = `\ varying vec4 color_vColor; color_setColor(vec4 color) { color_vColor = color; } `; const fs = `\ uniform float color_uOpacity; uniform float color_uDesaturate; uniform float color_uBrightness; varying vec4 color_vColor; vec4 color_getColor() { return color_vColor; } vec4 color_filterColor(vec4 color) { // apply desaturation and brightness if (color_uDesaturate > 0.01) { float luminance = (color.r + color.g + color.b) * 0.333333333 + color_uBrightness; color = vec4(mix(color.rgb, vec3(luminance), color_uDesaturate), color.a); // Apply opacity color = vec4(color.rgb, color.a * color_uOpacity); return color; } `; export default { name: 'color', vs, fs, getUniforms, };