본문 바로가기
Computer Graphics/ShaderLab, HLSL

[ShaderLab] Vertex Color (Masking)

by 진현개발일기 2024. 2. 27.

■ Vertex Color

정점(Vertex)에는 여러 가지 정보가 들어있다. 대표적으로 

(1) 위치 (Position)

(2) 컬러 (Color)
(3) 노말 (Normal)
(4) 탄젠드 (Tangent)

(5) UV (Texcoord)

 

위와 같은 정보를 담고 있는데 버텍스 컬러는 이 중에서 버텍스가 내포하고있는 Color값을 뜻한다.

이같이 외부 인터페이스에서 입력해주는 값이 아니라 엔진 내에서 버텍스 값을 받아와 사용하려면 Input 구조체를 사용해야했다.

■ Poly Bursh

 

유니티 2018부터 Poly Bursh라는 툴을 사용해 버텍스에 컬러값을 칠해줄 수 있게 되었다.

 

Poly Bursh를 통해 위와 같이 R, G, B 영역을 칠해줬다. 처음에 칠하기만 하면은 우리 눈에는 보이지 않으므로 정점들이 갖고 있는 color값들을 가져와 사용해줘야한다. 아래와 같이 정점의 컬러 값을 가져와 Emission에 대입해줬기에 위와 같이 볼 수 있게 되었다.

만약에 텍스처 rgb + 정점의 color.rgb를 하면 위와 같이 나온다

 

만약에 텍스처 rgb * 정점의 color.rgb를 하면 위와 같이 나온다

 

 

 

■ Vertex Color Masking

이제 덧칠해준 컬러값을 마스킹으로 활용하기 위해 텍스처 4개를 받도록 프로퍼티를 조정하였고

 

각각 RGB 영역에 원하는 텍스처를 띄워봤다.

 

 

[결과물]

 

 

■ 첨언

버텍스 컬러 (Vertex Color)는 잘 응용하면 라이트맵을 베이크 할 수 없는 상황에서 엠비언트 오클루전 (Ambient Occlusion)처럼 이용하거나 저렴한 라이트맵 (Lightmap)처럼 이용할 수도 있을 것이다.

 

정점의 컬러는 버텍스가 기본적으로 갖고 있는 데이터이므로 저렴한 비용으로 피부색이나 옷 색을 바꾸어 줄 때 사용할 수 있을 것이다. 특히 파티클이나 이펙트에서는 이미 흔하게 사용하고 있으며 기타 다양한 방법으로 활용되고 있다.

 

■ 참고

https://product.kyobobook.co.kr/detail/S000001888115

 

유니티 쉐이더 스타트업 | 정종필(대마왕) - 교보문고

유니티 쉐이더 스타트업 | 『유니티 쉐이더 스타트업』은 프로그래밍으로 완성해야 하는 쉐이더의 구현을 아티스트들의 역량으로도 충분히 발휘할 수 있도록 도움을 주는 책입니다. 저자의 오

product.kyobobook.co.kr

 

728x90