■ 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에 대입해줬기에 위와 같이 볼 수 있게 되었다.
■ Vertex Color Masking
이제 덧칠해준 컬러값을 마스킹으로 활용하기 위해 텍스처 4개를 받도록 프로퍼티를 조정하였고
각각 RGB 영역에 원하는 텍스처를 띄워봤다.
[결과물]
■ 첨언
버텍스 컬러 (Vertex Color)는 잘 응용하면 라이트맵을 베이크 할 수 없는 상황에서 엠비언트 오클루전 (Ambient Occlusion)처럼 이용하거나 저렴한 라이트맵 (Lightmap)처럼 이용할 수도 있을 것이다.
정점의 컬러는 버텍스가 기본적으로 갖고 있는 데이터이므로 저렴한 비용으로 피부색이나 옷 색을 바꾸어 줄 때 사용할 수 있을 것이다. 특히 파티클이나 이펙트에서는 이미 흔하게 사용하고 있으며 기타 다양한 방법으로 활용되고 있다.
■ 참고
https://product.kyobobook.co.kr/detail/S000001888115
'Computer Graphics > ShaderLab, HLSL' 카테고리의 다른 글
[ShaderLab] AO(Ambient Occlusion), Vertex Color 활용2 (6) | 2024.02.28 |
---|---|
[ShaderLab] NormalMap (0) | 2024.02.28 |
[ShaderLab] UV, 불 이펙트 (1) | 2024.02.27 |
[ShaderLab] Surface Shader - Texture (0) | 2024.02.15 |
[ShaderLab] 서피스 쉐이더 구조 및 기초 작업 (0) | 2024.02.15 |