하프톤

Halftone

연속된 색과 명암을 일정한 잉크 점 패턴으로 바꿔 인쇄물처럼 보이게 합니다.

다른 이름: Halftonehalftone dotsBen-Day dots

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

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

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

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

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

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

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

속성(props) · Halftone

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

이름값기본값범위·선택지설명(원문)
styleStyleclassicclassic · cmykHalftone rendering style
frequencyFrequency10010 – 300 (step 1)Frequency of the halftone dots
angleAngle450 – 360 (step 1)Rotation angle of the pattern (in degrees)
cyanAngleCyan Angle150 – 360 (step 1)Screen angle for the cyan plate (in degrees)
magentaAngleMagenta Angle750 – 360 (step 1)Screen angle for the magenta plate (in degrees)
yellowAngleYellow Angle00 – 360 (step 1)Screen angle for the yellow plate (in degrees)
blackAngleBlack Angle450 – 360 (step 1)Screen angle for the black plate (in degrees)
misprintMisprint00 – 0.01 (step 0.0005)Simulated mis-registration between plates. Plates are offset around the misprint angle, producing color fringing at the edges of inked regions.
misprintAngleMisprint Angle00 – 360 (step 1)Direction the plates drift apart. Rotating this rotates the color-fringing pattern.
paperColorPaper#ffffff—Paper/substrate color shown where no ink lands
cyanColorCyan#00ffff—Cyan ink color
magentaColorMagenta#ff00ff—Magenta ink color
yellowColorYellow#ffff00—Yellow ink color
blackColorBlack#000000—Black (key) ink color

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

색이 작은 잉크 점으로 쪼개져 종이에 찍힌 듯한 효과입니다. 만화책의 확대 인쇄면이나 팝아트 포스터에서 보던 점무늬가 이미지 전체에 나타납니다.

`style`의 기본값은 `classic`으로 하프톤 표현 방식을 고릅니다. `frequency`는 기본 100이며 10–300에서 점의 촘촘함을 정하고, `angle`은 기본 45도이며 0–360도에서 패턴 방향을 돌립니다. `misprint`는 기본 0이며 0–0.01에서 색판이 어긋나는 정도를 더합니다. `paperColor`의 기본값은 `#ffffff`입니다.

이미지 입력을 아래에 놓아야 인쇄 점무늬로 바뀝니다. `Dither`나 `Engraving`과 조합하면 다른 인쇄·판화 질감을 만들 수 있지만, 주파수를 높이면 작은 점이 뭉쳐 세부가 덜 보일 수 있습니다.

언제 쓰나

팝아트 포스터, 만화풍 이미지, 인쇄물 콘셉트에 좋습니다. 매끈한 색면과 작은 디테일을 그대로 살려야 할 때는 피하세요.

페이지로 열기 ↗