유니티 셰이더로 이미지 흑백 처리하기

굥지·2026년 1월 8일

Unity

목록 보기
8/8

오늘도 제미나이에게 도움을..

왼쪽 일반적인 스프라이트를 흑백처리하는 방법입니당

셰이더말고 답이 없더라고요,, 일단 이렇게 하면되는데 하나씩 차근차근 알려드릴게엽

UI Canvas Shader Graph 사용 (유니티 6 권장)

1. 셰이더 그래프 생성

  1. Project 창 우클릭 -> Create -> Shader Graph -> UI -> Canvas Shader Graph를 선택

  1. 이름을 짓고 더블 클릭하여 열면

2. 필수 속성 만들기

좌측 Blackboard에서 다음 두 가지를 추가

  1. Texture2D 추가 -> 이름을 반드시 _MainTex로 변경
    • 주의: Reference 이름도 _MainTex여야 UI Image 컴포넌트의 소스 이미지를 자동으로 받아옴
  2. Float 추가 -> 이름을 _GrayscaleAmount로 짓고 Default Value는 1로

_MainText는 아무것도 안 건드림

3. 노드 연결하기

빈 공간에 우클릭하여 노드를 추가(Create Node)하고 아래 순서대로 연결하면 되는데 좀 복잡함 ㅠㅠ

  1. Sample Texture 2D 노드 생성

    • Blackboard의 _MainTex를 끌어와서 Texture 슬롯에 연결
    • RGBA 출력값을 사용

  1. Saturation 노드 생성

    - Sample Texture 2D의 출력을 In에 연결
    - Saturation값에는 0을 입력 (흑백)
        
  2. Lerp 노드 생성 (원본과 흑백을 섞기 위함)

    - A: Sample Texture 2D의 출력 (원본 색)
    - B: Saturation 노드의 출력 (흑백 색)
    - T: Blackboard의 _GrayscaleAmount 연결

  3. Vertex Color 노드 생성 (투명도 조절을 위해 필수)

  4. Multiply 노드 생성

    -A : Lerp의 결과
    -B : Vertex Color 노드

  5. 최종 연결
    • Multiply의 결과를 Master StackBase ColorAlpha에 연결

4. 머터리얼 적용

저장 후 만들어진 셰이더 파일 우클릭 -> Create -> Material

Material을 눌러보면 Grayscale Amount 속성을 1로 바꿔주면 됨니다(0 :원본, 1 :흑백)

만들어진 Matrial를 해당 Material 자리에 넣어주면 끝!

0개의 댓글