연기 흐름

Smoke Flow

포인터를 움직이면 연기가 생기고, 그 궤적을 따라 소용돌이치며 옅어집니다.

다른 이름: SmokeFlowcursor smokesmoke trail

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

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

React
// WebGPU 를 지원하는 브라우저에서만 그립니다.
import { Shader, SmokeFlow } from 'shaders/react'

export default function ShaderEffect() {
  return (
    <Shader style={{ width: '100%', height: 320 }} disableTelemetry>
      <SmokeFlow />
    </Shader>
  )
}
Vue
<!-- WebGPU 를 지원하는 브라우저에서만 그립니다. -->
<script setup lang="ts">
import { Shader, SmokeFlow } from 'shaders/vue'
</script>

<template>
  <Shader style="width: 100%; height: 320px" :disable-telemetry="true">
    <SmokeFlow/>
  </Shader>
</template>
Svelte
<!-- WebGPU 를 지원하는 브라우저에서만 그립니다. -->
<script>
  import { Shader, SmokeFlow } from 'shaders/svelte'
</script>

<Shader style="width: 100%; height: 320px" disableTelemetry>
  <SmokeFlow />
</Shader>
Solid
// WebGPU 를 지원하는 브라우저에서만 그립니다.
import { Shader, SmokeFlow } from 'shaders/solid'

export default function ShaderEffect() {
  return (
    <Shader style={{ width: '100%', height: '320px' }} disableTelemetry>
      <SmokeFlow />
    </Shader>
  )
}
JavaScript
// WebGPU 를 지원하는 브라우저에서만 그립니다.
// <canvas id="canvas" style="width:100%;height:320px"></canvas> 가 페이지에 있어야 한다
import { createShader } from 'shaders/js'

const shader = await createShader(document.getElementById("canvas"), {
  components: [
    {
      type: 'SmokeFlow',
    }
  ]
}, { disableTelemetry: true })

속성(props) · SmokeFlow

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

이름값기본값범위·선택지설명(원문)
colorAFresh Color#e29c8b—Color of fresh smoke
colorBAged Color#d517f9—Color smoke transitions to as it ages
stopsColors코드에서 지정null—Multi-stop gradient colors (overrides Color A / Color B when set)
intensityIntensity10.1 – 2 (step 0.05)How much smoke is emitted as you move the cursor
emitRadiusPuff Size0.070.01 – 0.3 (step 0.01)Size of smoke puff emitted at cursor
momentumMomentum200 – 50 (step 1)How much cursor velocity is transferred into the smoke (higher = more directed flow)
dissipationDissipation0.50.05 – 3 (step 0.05)How fast smoke fades over time
detailSwirl Detail100 – 60 (step 1)Fine-scale swirling detail driven by vorticity confinement
gravityGravity2-5 – 5 (step 0.05)Vertical drift — negative floats up, positive sinks down
colorDecayColor Decay0.50 – 3 (step 0.1)How quickly smoke shifts from fresh to aged color
colorSpaceColor SpaceOKLABlinear · oklch · oklab · hsl · hsv · lchColor space for color interpolation

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

포인터를 움직인 길을 따라 연기가 생기고, 손을 뗀 뒤에도 소용돌이치며 흩어진다. 향을 든 손을 움직일 때 연기 꼬리가 뒤따르는 모습과 비슷하다.

`intensity`는 나오는 연기의 양(기본값 1, 범위 0.1–2), `emitRadius`는 한 번에 생기는 연기 크기(기본값 0.07, 범위 0.01–0.3), `momentum`은 포인터 속도가 연기에 전달되는 정도(기본값 20, 범위 0–50)다. `dissipation`은 사라지는 속도(기본값 0.5, 범위 0.05–3), `gravity`는 위아래 흐름(기본값 2, 범위 -5–5)을 조절한다.

혼자 화면을 그리는 생성 레이어라 입력 이미지가 필요 없다. 단색 배경과 조합하면 연기 궤적을 보기 쉽고, 움직임이 계속 남으므로 글자 뒤에 오래 깔지 않는다.

언제 쓰나

포인터 궤적을 보여 주는 히어로 인터랙션, 짧은 드로잉 경험, 분위기 전환 연출에 좋다. 긴 문장이나 빠르게 읽어야 하는 안내 화면에서는 피한다.

페이지로 열기 ↗