노이즈 디졸브

Noise Dissolve

유기적인 노이즈 무늬를 따라 입력 화면이 조금씩 깎여 사라집니다.

다른 이름: NoiseDissolvenoise dissolve

WebGPU 를 지원하는 브라우저에서 움직입니다

이 기기에서는 데모를 그리지 못해 정지 화면을 보여 줍니다

React
// WebGPU 를 지원하는 브라우저에서만 그립니다.
// /samples/… 는 이 사이트의 샘플 파일입니다. 내 프로젝트의 이미지·영상 경로로 바꾸세요.
import { Shader, ImageTexture, NoiseDissolve } from 'shaders/react'

export default function ShaderEffect() {
  return (
    <Shader style={{ width: '100%', height: 320 }} disableTelemetry>
      <ImageTexture
        objectFit="cover"
        url="/samples/still.jpg" />
      <NoiseDissolve
        progress={{
          type: "auto-animate",
          mode: "ping-pong",
          outputMin: 0,
          outputMax: 1,
          speed: 0.5
        }}>
        <ImageTexture
          objectFit="cover"
          url="/samples/photo.jpg" />
      </NoiseDissolve>
    </Shader>
  )
}
Vue
<!-- WebGPU 를 지원하는 브라우저에서만 그립니다. -->
<!-- /samples/… 는 이 사이트의 샘플 파일입니다. 내 프로젝트의 이미지·영상 경로로 바꾸세요. -->
<script setup lang="ts">
import { Shader, ImageTexture, NoiseDissolve } from 'shaders/vue'
</script>

<template>
  <Shader style="width: 100%; height: 320px" :disable-telemetry="true">
    <ImageTexture
      object-fit="cover"
      url="/samples/still.jpg"/>
    <NoiseDissolve
      :progress="{
        type: 'auto-animate',
        mode: 'ping-pong',
        outputMin: 0,
        outputMax: 1,
        speed: 0.5
      }">
      <ImageTexture
        object-fit="cover"
        url="/samples/photo.jpg"/>
    </NoiseDissolve>
  </Shader>
</template>
Svelte
<!-- WebGPU 를 지원하는 브라우저에서만 그립니다. -->
<!-- /samples/… 는 이 사이트의 샘플 파일입니다. 내 프로젝트의 이미지·영상 경로로 바꾸세요. -->
<script>
  import { Shader, ImageTexture, NoiseDissolve } from 'shaders/svelte'
</script>

<Shader style="width: 100%; height: 320px" disableTelemetry>
  <ImageTexture
    objectFit="cover"
    url="/samples/still.jpg" />
  <NoiseDissolve
    progress={{
      type: "auto-animate",
      mode: "ping-pong",
      outputMin: 0,
      outputMax: 1,
      speed: 0.5
    }}>
    <ImageTexture
      objectFit="cover"
      url="/samples/photo.jpg" />
  </NoiseDissolve>
</Shader>
Solid
// WebGPU 를 지원하는 브라우저에서만 그립니다.
// /samples/… 는 이 사이트의 샘플 파일입니다. 내 프로젝트의 이미지·영상 경로로 바꾸세요.
import { Shader, ImageTexture, NoiseDissolve } from 'shaders/solid'

export default function ShaderEffect() {
  return (
    <Shader style={{ width: '100%', height: '320px' }} disableTelemetry>
      <ImageTexture
        objectFit="cover"
        url="/samples/still.jpg" />
      <NoiseDissolve
        progress={{
          type: "auto-animate",
          mode: "ping-pong",
          outputMin: 0,
          outputMax: 1,
          speed: 0.5
        }}>
        <ImageTexture
          objectFit="cover"
          url="/samples/photo.jpg" />
      </NoiseDissolve>
    </Shader>
  )
}
JavaScript
// WebGPU 를 지원하는 브라우저에서만 그립니다.
// /samples/… 는 이 사이트의 샘플 파일입니다. 내 프로젝트의 이미지·영상 경로로 바꾸세요.
// <canvas id="canvas" style="width:100%;height:320px"></canvas> 가 페이지에 있어야 한다
import { createShader } from 'shaders/js'

const shader = await createShader(document.getElementById("canvas"), {
  components: [
    {
      type: 'ImageTexture',
      props: {
        objectFit: 'cover',
        url: '/samples/still.jpg',
      },
    },
    {
      type: 'NoiseDissolve',
      props: {
        progress: {
          type: 'auto-animate',
          mode: 'ping-pong',
          outputMin: 0,
          outputMax: 1,
          speed: 0.5
        },
      },
      children: [
        {
          type: 'ImageTexture',
          props: {
            objectFit: 'cover',
            url: '/samples/photo.jpg',
          },
        },
      ],
    }
  ]
}, { disableTelemetry: true })

속성(props) · NoiseDissolve

값을 바꾸면 위 데모와 코드 탭에 바로 반영됩니다. 설명은 라이브러리 레지스트리의 영어 원문(MIT)입니다.

이름값기본값범위·선택지설명(원문)
progressProgress데모에서 자동으로 오가는 값 — 움직이면 그 값에 고정됩니다0.50 – 1 (step 0.01)How far the dissolve has progressed (0 = fully visible, 1 = fully wiped away)
scaleScale30.5 – 20 (step 0.1)Frequency of the dissolve pattern (higher = smaller blobs)
softnessSoftness0.250 – 1 (step 0.01)How softly the erosion edge fades out (0 = hard-edged blobs)
seedSeed00 – 100 (step 1)Random seed for pattern variation
invertInvertfalse—Reverse the order the pattern dissolves in

모든 컴포넌트 공통: blendMode · opacity · visible · maskSource/maskType · boundingBox · id

종이나 벽의 얼룩이 번지듯 불규칙한 경계가 장면을 잠식합니다. 격자 대신 들쭉날쭉한 유기 패턴이 드러납니다.

`progress`는 기본 0.5, 범위 0–1입니다. `scale`은 기본 3, 범위 0.5–20이며 값을 높이면 무늬 덩어리가 작아집니다. `softness`는 기본 0.25, 범위 0–1로 경계를 흐리고, `seed`는 기본 0, 범위 0–100에서 패턴 변형을 고릅니다. `invert`는 기본 false로 사라지는 순서를 뒤집습니다.

이미지나 영상 입력 위에 놓고, 전환 시 다음 장면을 아래에 두고 progress를 움직이세요. softness가 낮으면 거친 경계가 되고 scale이 높으면 세밀해지므로, 얇은 선이나 작은 글자가 경계에 잘려도 괜찮은 영역에서 쓰세요.

언제 쓰나

유기적인 장면 소멸, 잉크·얼룩처럼 번지는 그래픽, 격자 없는 부드러운 전환에 좋습니다. 텍스트와 얇은 윤곽을 깨끗하게 유지해야 한다면 피하세요.

페이지로 열기 ↗