Vibrance

바이브런스

Vibrance selectively increases saturation while protecting skin tones.

Also known as: Vibranceselective saturation

Moves in browsers that support WebGPU

This device could not render the demo — showing a still

React
// Renders only in browsers with WebGPU.
// /samples/… are this site’s sample files — point them at your own image or video.
import { Shader, ImageTexture, Vibrance } from 'shaders/react'

export default function ShaderEffect() {
  return (
    <Shader style={{ width: '100%', height: 320 }} disableTelemetry>
      <ImageTexture
        objectFit="cover"
        url="/samples/photo.jpg" />
      <Vibrance
        intensity={1.6} />
    </Shader>
  )
}
Vue
<!-- Renders only in browsers with WebGPU. -->
<!-- /samples/… are this site’s sample files — point them at your own image or video. -->
<script setup lang="ts">
import { Shader, ImageTexture, Vibrance } from 'shaders/vue'
</script>

<template>
  <Shader style="width: 100%; height: 320px" :disable-telemetry="true">
    <ImageTexture
      object-fit="cover"
      url="/samples/photo.jpg"/>
    <Vibrance
      :intensity="1.6"/>
  </Shader>
</template>
Svelte
<!-- Renders only in browsers with WebGPU. -->
<!-- /samples/… are this site’s sample files — point them at your own image or video. -->
<script>
  import { Shader, ImageTexture, Vibrance } from 'shaders/svelte'
</script>

<Shader style="width: 100%; height: 320px" disableTelemetry>
  <ImageTexture
    objectFit="cover"
    url="/samples/photo.jpg" />
  <Vibrance
    intensity={1.6} />
</Shader>
Solid
// Renders only in browsers with WebGPU.
// /samples/… are this site’s sample files — point them at your own image or video.
import { Shader, ImageTexture, Vibrance } from 'shaders/solid'

export default function ShaderEffect() {
  return (
    <Shader style={{ width: '100%', height: '320px' }} disableTelemetry>
      <ImageTexture
        objectFit="cover"
        url="/samples/photo.jpg" />
      <Vibrance
        intensity={1.6} />
    </Shader>
  )
}
JavaScript
// Renders only in browsers with WebGPU.
// /samples/… are this site’s sample files — point them at your own image or video.
// expects <canvas id="canvas" style="width:100%;height:320px"></canvas> on the page
import { createShader } from 'shaders/js'

const shader = await createShader(document.getElementById("canvas"), {
  components: [
    {
      type: 'ImageTexture',
      props: {
        objectFit: 'cover',
        url: '/samples/photo.jpg',
      },
    },
    {
      type: 'Vibrance',
      props: {
        intensity: 1.6,
      },
    }
  ]
}, { disableTelemetry: true })

Props · Vibrance

Changes apply to the demo above and to the code tabs. Descriptions come from the library registry (MIT).

NameValueDefaultRange / optionsDescription
intensityIntensity0-2 – 2 (step 0.1)The intensity of the vibrance effect

Every component also takes blendMode · opacity · visible · maskSource/maskType · boundingBox · id

Rather than pushing every color equally, it brings less vivid colors forward. The adjustment is described as protecting skin tones from the exaggeration of a uniform saturation boost.

`intensity` defaults to 0 and ranges from -2 to 2. Positive values make colors more vivid; negative values reduce them. The registry describes it as a selective saturation adjustment that protects skin tones.

Apply it over a photo or video input. Start subtly when grading portraits or product colors. Large values can still exaggerate the image, so compare it with the regular Saturation effect before choosing.

When to use

Use it to lift color naturally in portraits, strengthen muted product colors, or tune an image without changing all colors equally. Use Saturation when every color should be reduced or increased by the same amount.

Open as page ↗