SLOHERO
12

PHOTOSHOT / DEVELOPMENT JOURNAL

색상 반전을
한 레이어로

반전은 각 채널을 최댓값에서 빼는 간단한 계산입니다. 이 기능을 조정 레이어로 만들어 원본을 유지한 채 켜고 끄거나, 일부에만 적용할 수 있도록 했습니다.

조정 레이어 12 · 반전
2026.10.01 · SLOHERO · 공개 코드 v0.16.0 기준
보정 전반전 보정 전 AI 생성 인물 예시
보정 후반전 보정 후 AI 생성 인물 예시
AI 생성 인물 원본에 공개 코드 v0.16.0의 해당 조정만 적용한 결과입니다. 각 글에 설정과 불투명도를 적었습니다. 패널은 기존 릴스 제작 때 캡처한 실제 화면입니다.

12편의 사진은 반전 100% 결과입니다. 색을 뒤집는 계산 자체보다, 다른 조정과 같은 렌더링 구조 안에 어떻게 넣었는지 살펴봅니다.

  1. 01반전에는 별도 강도 슬라이더를 넣지 않았습니다
  2. 02256개의 출력값을 미리 계산합니다
  3. 03불투명도 50%에서 회색이 되는 이유
  4. 04두 번 반전하면 원래 값으로 돌아옵니다
01

반전에는 별도 강도 슬라이더를 넣지 않았습니다

반전 레이어의 고유 컨트롤은 비어 있습니다. 사용자가 정할 임계값이나 기준색이 없기 때문입니다. 효과의 강도는 공통 레이어 불투명도로 조절합니다.

invert: {
  name: '반전',
  description: 'RGB 색상을 반전합니다.',
  controls: []
}

사진을 직접 덮어쓰지 않고 조정 정보로 저장합니다. 레이어를 숨기면 이 단계를 건너뛰어 원래 결과를 볼 수 있고, 다시 켜면 같은 계산이 적용됩니다.

고유 슬라이더 없이 공통 레이어 설정만 있는 반전 패널
반전의 실제 조작 패널. 다른 조정처럼 저장과 적용 대상 설정을 사용할 수 있습니다. · 그림을 누르면 전체 패널을 볼 수 있습니다.
02

256개의 출력값을 미리 계산합니다

8비트 RGB에서 입력이 0이면 출력은 255, 입력이 255이면 출력은 0입니다. 엔진에서는 채널을 0~1로 바꾼 값 x에 다음 식을 적용합니다.

if (t === 'invert') x = 1 - x;

밝기·레벨·곡선 등 채널별로 처리할 수 있는 조정은 0~255 입력에 대한 출력표를 만듭니다. 반전도 이 경로를 사용해, 각 픽셀에서는 채널값에 해당하는 칸을 읽습니다.

R·G·B를 서로 교환하는 채널 혼합과 달리, 각 채널은 자기 값만으로 계산됩니다. 알파 채널에는 반전 식을 적용하지 않습니다.

실제 함수 출력 · 8비트 · 불투명도 100%. 입력 128은 127로 바뀝니다.
입력 한 채널반전 결과
0255
32223
64191
128127
19263
2550
03

불투명도 50%에서 회색이 되는 이유

일반 합성에서 원래 값과 반전 값을 정확히 절반씩 섞으면, 두 값의 합이 항상 255이므로 127.5가 됩니다. 이론적인 반올림 결과는 RGB 128·128·128입니다. 실제 코드의 부동소수점 계산에서는 일부 입력이 127로 기록되어 1단계 차이가 날 수 있습니다.

result = original
  + (inverted - original) * opacity;

위 식은 일반 합성 부분을 줄여 쓴 것입니다. 마스크가 있으면 불투명도에 마스크 알파를 곱한 양만 적용합니다. 마스크가 일정하지 않거나 합성 모드를 바꾸면 거의 일정한 중성 회색이 되는 조건도 달라집니다.

반전100퍼센트와 불투명도50퍼센트의 색상 표본
50%는 0.5를 정확히 적용한 계산입니다. 최종 사진은 100%를 사용했습니다.
04

두 번 반전하면 원래 값으로 돌아옵니다

반전 레이어 두 개를 일반 합성·불투명도 100%·마스크 없음으로 쌓으면 255 − (255 − 값)이 됩니다. 두 번째 결과는 원래 RGB와 같습니다.

이 성질은 구현을 점검할 때도 쓸 수 있습니다. 반전 사이에 다른 보정을 넣거나 불투명도를 낮추면 이 등식이 성립하는 조건이 달라집니다.

Adobe의 반전 기능 설명을 참고하되, 여기서는 포토샷의 8비트 RGB 처리만 설명했습니다. 다른 색 공간과 비트 깊이까지 동일하게 동작한다는 의미는 아닙니다.

  1. 원래 값 40첫 번째 반전 → 215
  2. 두 번째 반전255 − 215 → 40
  3. 적용 조건두 레이어 모두 일반 합성 · 불투명도 100% · 마스크 없음

구현 코드와 참고 자료

공개 코드는 구현을 설명하기 위한 참조입니다. 사용·배포 조건은 저장소의 라이선스 표기를 확인하세요. 사진·패널은 자체 제작 자료, 장식 이미지는 AI 생성 이미지입니다.