참고자료 셈플프로젝트+설명
- Parts Color Shader -
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
이런 식으로 팀 구분 컬러로 사용 가능함,
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
RGB텍스처에 남는 알파 채널을 이용해 색을 변경함.
텍스처를 포토샵으로 열어보면 알파채널에 색을 변경할 부위가 정해져 있다.
정해진 부분을 쉐이더로 선택한 색으로 변경 해준다.
하지만 이 방법은 알파 채널밖에 변경이 불가능해 단색밖에 안된다.
그렇다면 여러 색을 변경하고 싶다면? 마스크 텍스처를 넣으면 된다.
마스크 텍스처는 RGBA채널 색을 넣어서 변경할 수 있게 해주면 사용자는 4가지 색을 바꿀 수 있다.
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
메인 RGB텍스처는 그냥 사용하고 마스크 텍스처 RGBA채널들을 사용해 4개 색 사용 가능 변경하고 싶은 그림 위치에 색을 넣으면 됨.
- 쉐이더 코드 -
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
d.a = 1-d.a; 알파값을 반전 시키고
d.rgb = saturate(d.rgb - d.a); saturate = -가 되면 절삭 하고 0~1로 나오게 해줌.
float sum = d.r+d.g+d.b+d.a; 정규화를 위한 값.
lerp(from, to, 현재)
그냥 sum을안 나누고 현재 r값 g값 b값 a값 넣어도 됨.
근데 마스크 텍스처 색상에 RPG로 딱 돼 있는 게 아니고 혼합된 색이 있으면 검은색으로 그려짐.
r,g,b,a를 정규화해주면 보간된 색이 나온다.
정규화해주지 않으면
검은색으로 표현되어 버림.
정규화해주면
노란색으로 표현됨.
끝.
결과 동영상.
반응형
'Programming > Shader' 카테고리의 다른 글
[Unity Shader] 외곽선 Outline, ToonShader (2) | 2015.10.10 |
---|---|
[Unity Shader] Reflection Probe 반사처리 (0) | 2015.10.06 |
[Unity Shader] 실수 및 에러 정리 (0) | 2015.10.01 |
[Unity Shader] Blinn-Phong-Gloss (0) | 2015.09.30 |
[Unity Shader] Rim Light, Hologram (0) | 2015.09.23 |
[Unity Shader] BumpMap, BlinnPhong (0) | 2015.09.21 |
[Unity Shader] 머테리얼색 반전, 회색, 시간에 따라 색깔 바꾸기 (0) | 2015.09.17 |
[Unity Shader] 쉐이더 문법 (0) | 2015.09.08 |