파트8
버텍스 컬러를 이용한 텍스쳐 블렌딩, 스펙큘라 효과 적용
void surf(Input IN, inout SurfaceOutputStandard o){ ... o.Albedo = lerp(c.rgb, d.rgb, IN.color.r); o.Albedo = lerp(o.Albedo.rgb,e.rgb, IN.color.g); o.Albedo = lerp(o.Albedo.rgb,f.rgb, IN.color.b); }
물체는 전부다 반짝거리는 정반사(Specular)를 가지고 있다. 서피스 쉐이더에서는 o.Smoothness로 조절한다(1에 가까울수록 정반사이며 반짝거림 0은 난반사 Diffuse). 버텍스 컬러영역을 이용하여 특정부분만 반짝거리도록 이용할 수 있다.
파트11 Lambert lighting
현재 3D그래픽의 조명은 버텍스가 가지고있는 노멀벡터와 빛을 연산하여 만들어지고 버텍스 사이의 밝기값은 보간을 이용하여 구현한다.
램버트 라이팅은 노멀벡터(법선벡터)와 빛의 방향을 내적한 값으로 -1~1사이의 값을 가진다. 색상은 0~1사이의 값을 가져야하므로 saturate또는 max를 통하여 0 밑의 부분을 잘라내거나 half lambert(*0.5+0.5)를 사용한다.
half lambert (내적값 3제곱)
노멀벡터와 빛의 방향벡터를 내적한 값에 텍스쳐의 albedo, 내장변수로 제공되는 빛의 색상과 강도 , 그리고 빛의 감쇠 현상을 표현하는 변수를 곱셈연산하여 램버트 라이팅을 완성한다.
<빛의 감쇠현상 attenuation>
[좌: att 없음 / 우: att 있음]
빛의 감쇠를 연산하지 않으면 빛의 거리에 따른 빛의 감쇠현상이 일어나지 않는다(어두워지지가 않는다)
추가로 다른물체가 이 얼굴에 그림자를 드리우지도 못하면서 자신의 그림자에 자기가 영향받지 않는다(목밑에 생기는 그림자는 자신의 영향을 받아야 = att이 있어야 생긴다)
'2020 이전 > Unity' 카테고리의 다른 글
유니티 그래픽스 최적화 스타트업 읽기시작(끝) (0) | 2019.03.29 |
---|---|
2019.03.26 유니티 셰이더 그래프 설치 (0) | 2019.03.26 |
2019.03.15 큐브맵 스카이박스에 적용시키기 (0) | 2019.03.15 |
유니티 로직함수 (0) | 2018.12.19 |