Glow

글로우

Softens bright areas into a surrounding glow with adjustable intensity.

Also known as: GlowSoft glowBloom-like glow

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, Glow, ImageTexture } from 'shaders/react'

export default function ShaderEffect() {
  return (
    <Shader style={{ width: '100%', height: 320 }} disableTelemetry>
      <ImageTexture
        objectFit="cover"
        url="/samples/still.jpg" />
      <Glow
        intensity={1.6}
        threshold={0.35} />
    </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, Glow, ImageTexture } from 'shaders/vue'
</script>

<template>
  <Shader style="width: 100%; height: 320px" :disable-telemetry="true">
    <ImageTexture
      object-fit="cover"
      url="/samples/still.jpg"/>
    <Glow
      :intensity="1.6"
      :threshold="0.35"/>
  </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, Glow, ImageTexture } from 'shaders/svelte'
</script>

<Shader style="width: 100%; height: 320px" disableTelemetry>
  <ImageTexture
    objectFit="cover"
    url="/samples/still.jpg" />
  <Glow
    intensity={1.6}
    threshold={0.35} />
</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, Glow, ImageTexture } from 'shaders/solid'

export default function ShaderEffect() {
  return (
    <Shader style={{ width: '100%', height: '320px' }} disableTelemetry>
      <ImageTexture
        objectFit="cover"
        url="/samples/still.jpg" />
      <Glow
        intensity={1.6}
        threshold={0.35} />
    </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/still.jpg',
      },
    },
    {
      type: 'Glow',
      props: {
        intensity: 1.6,
        threshold: 0.35,
      },
    }
  ]
}, { disableTelemetry: true })

Props · Glow

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

NameValueDefaultRange / optionsDescription
intensityIntensity10 – 50 (step 0.5)Glow intensity (brightness of the glow effect)
thresholdThreshold0.50 – 1 (step 0.01)Brightness threshold for glow extraction (lower = more glow)
sizeGlow Size250 – 100 (step 1)Glow spread in pixels (clean up to ~72px, mild banding above)

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

It resembles the haze around a bright sign seen in a dark room: light appears to spill into the surrounding air. This effect adds a soft halo around bright parts of an image.

`intensity` defaults to 1 (range 0–50) and raises the glow brightness. `threshold` defaults to 0.5 (0–1) and sets which brightness levels begin to glow; lowering it includes more of the image. `size` defaults to 25px (0–100px) and changes the spread. The registry notes that mild banding may appear above about 72px.

Apply it over an image or shape; bright dots and lines against a dark background show it clearly. It can pair with neon glow or sparkle, but raising both `size` and `intensity` too far can haze the image and blur text.

When to use

Use it to halo neon signs, glowing buttons, or bright product imagery, and to emphasize small lights on dark backgrounds. Avoid it on text-heavy screens or where crisp edges matter.

Open as page ↗