연기

Smoke

발생 지점에서 연기가 피어올라 퍼지고, 시간이 지나며 색이 바뀌고 옅어집니다.

다른 이름: Smokesmoke simulation

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

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

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

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

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

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

export default function ShaderEffect() {
  return (
    <Shader style={{ width: '100%', height: '320px' }} disableTelemetry>
      <Smoke />
    </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: 'Smoke',
    }
  ]
}, { disableTelemetry: true })

속성(props) · Smoke

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

이름값기본값범위·선택지설명(원문)
colorAStart Color#fc83f9—Color of fresh smoke
colorBEnd Color#c21c79—Color smoke transitions to as it ages
stopsColors코드에서 지정null—Multi-stop gradient colors (overrides Color A / Color B when set)
emitFromEmit From
x0.5y1
{"x":0.5,"y":1}x, y: 0 – 1The emission source point
directionDirection00 – 360 (step 1)Emission direction (0 = up, 90 = right, 180 = down, 270 = left)
speedSpeed200.1 – 50 (step 0.1)Emission velocity strength
spreadSpread600 – 180 (step 1)Emission cone angle in degrees
emitRadiusEmit Size0.080.01 – 0.3 (step 0.01)Size of the emission area
intensityIntensity10.1 – 1 (step 0.01)Smoke emission density
dissipationDissipation0.20.1 – 3 (step 0.1)How fast smoke fades over time
detailDetail250 – 50 (step 1)Fine-scale swirling detail
gravityGravity0.5-2 – 2 (step 0.1)Downward gravitational pull on smoke
colorDecayColor Decay0.40 – 3 (step 0.1)How quickly smoke shifts from Color A to Color B
mouseInfluenceCursor Influence0.10 – 2 (step 0.01)Strength of cursor influence
mouseRadiusCursor Radius0.10.02 – 0.5 (step 0.01)Radius of cursor influence area
colorSpaceColor Spacelinearlinear · oklch · oklab · hsl · hsv · lchColor space for color interpolation

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

정해 둔 발생 지점에서 연기가 피어올라 퍼지고 시간이 지나며 옅어진다. 향 연기가 가느다란 기둥으로 올라와 주변 공기에 번지는 장면처럼 배경에 깊이와 움직임을 더한다.

`emitFrom`은 발생 위치(기본값 `{x: 0.5, y: 1}`), `direction`은 퍼지는 방향(기본값 0도, 위쪽), `speed`는 분출 속도(기본값 20, 범위 0.1–50), `spread`는 퍼지는 각도(기본값 60도, 범위 0–180), `dissipation`은 옅어지는 속도(기본값 0.2, 범위 0.1–3)를 조절한다.

혼자 화면을 채우는 생성 레이어다. 어두운 배경이나 단순한 도형 위에 두면 연기 색이 드러나고, 복잡한 사진·문장 뒤에서는 형태가 겹쳐 화면이 답답해질 수 있다.

언제 쓰나

분위기 있는 히어로 배경, 장면 전환 사이의 짧은 연출, 불·향 같은 발생 지점을 표현할 때 좋다. 글자와 정보가 빽빽한 영역의 배경으로는 피한다.

페이지로 열기 ↗