1. 림라이트
2. 림라이트 응용
1. 림라이트
1 - 림라이트 만들기
2 - 텍스쳐, 노말맵 추가하기
1 - 림라이트 만들기
림라이트의 특징을 보자면 "어느쪽에서 봐도 항상 외곽이 밝다" 입니다
반대로 말하면 "어느쪽에서 봐도 항상 우리가 바라보는 방향이 제일 어둡다" 이죠
그럼 우리가 이걸 구현하기 위해서 필요한 정보는 내가 바라보는 방향의 벡터와 버텍스의 노말 정보가 필요할 겁니다
우리가 바라보는 카메라 방향에 따라 빛이 달라지는 거니까요
저번에 만들었던 램버트라이트를 꺼내봅시다
이렇게 생겨먹은 기본 라이트를 만들어봅시다
지금은 Custom Fuction에서 나오는 라이트노말에 따라 연산을 합니다
그럼 여기서 라이트 노말 대신 카메라의 방향 벡터를 넣으면 어떻게될까요?
View Direction 이라는 노드를 통해 카메라 뷰 벡터를 가져옵니다
근데 얘가 크기가 1이 아니라 정규화(Normalize)를 해서 계산해야합니다
그래서 normalize까지 해서 내적연산을 해주면
이런식으로 화면을 돌려도 우리가 바라보는 방향은 항상 밝게 빛납니다
그럼 이 결과에다가 one minus를 하면?
위와 반대로 이번엔 바라보는 방향은 어둡고, 외곽 부분이 밝은 것을 볼 수 있습니다
여기다가 이제 중간값 차이를 크게 벌리기 위해 제곱(power)을 해주면
짜란
림라이트처럼 나왔어요
최종 노드는 이런식으로 나왔고,
저 맨 마지막 power에서 나온 결과물과 지정 색상을 곱하면 림라이트의 색상도 우리가 선택할 수 있겠죠
2 - 텍스쳐, 노말맵 추가하기
그럼 이걸 텍스쳐와 노말맵이랑 섞어봅시다
먼저 텍스쳐는 그냥 림라이트랑 더하면 끝입니다
이렇게 하면
이런식으로 림라이트와 잘 섞이는 걸 볼 수 있습니다
노말도 한번 넣어보죠
노말맵을 우리가 이전에 Normal Vector로 넣었던 위치에 대신 넣어주면 되는데
보면 Normal Vector의 옵션을 보면 World로 되어있습니다. 월드좌표계를 쓴다는 뜻이죠
근데 노말맵의 좌표계는 Tangent로 되있단 말이죠
그래서 이 tangent 좌표를 world 좌표로 변환하는 작업이 필요합니다
그걸 해주는 노드가 Transform 노드입니다
이렇게 그냥 벡터 하나 넣고
"넣은게 어떤 좌표계냐", "어떤 좌표계로 바꿀거냐" 이거만 정해주면 끝입니다
그리고 이걸로 world좌표로 바꾼 후에 normal vector 있던 자리에 꼽아주면
이런 식으로 노말맵이 먹은 모습을 볼 수 있습니다
2. 림라이트 응용
1 - 기본 홀로그램
2 - 깜빡이는 홀로그램
1 - 기본 홀로그램
안이 뻥 뚫려있고 림라이트만 보이는 모습을 만들어보는겁니다
그냥 그대로 꼽아주면 되는데 그냥 그대로 두면 검은색도 그대로 안쪽이 뚫린 모습이 나오지 않습니다
그래서 이렇게 마스터노드의 옵션을 바꿔줍시다
이러면 검은색은 투명하게 되기 때문에 우리가 원하는 결과물이 나오게 됩니다
(안쪽이 투과되서 안쪽까지 다 나오는게 문제지만...)
2 - 깜빡이는 홀로그램
sin 노드와 time 노드를 쓰면 저걸 깜빡이게 만들 수 있는데
sin 곡선을 보면 범위가 -1 ~ 1 까지란 말이죠 색상 범위는 0~1인데 말이에요.
그래서 이 -1 ~ 1의 곡선을 0~1의 곡선으로 만들어줘야하는데 이 방법이 3가지가 있습니다
첫번째로, 0 미만의 값을 다 0으로 보정해버리는 겁니다
그럼 검은 곡선이 빨간 곡선처럼 되겠죠
결과로는 깜빡였다 잠시 까맣고, 깜빡였다 잠시 까맣고를 반복하게 됩니다
만드는 방법은
이런식으로 sin 곡선에 clamp를 걸어줍니다
두번째로, 곡선의 스케일을 0 ~ 1로 줄이는겁니다 Half Lambert 공식때처럼 말이죠
그럼 모양은 얼추 유지되면서, 범위만 좁혀지게 되죠
이러면 결과는 뭔가 부드럽게? 깜빡이는 걸 볼 수 있습니다
노드는 sin에 0.5 곱하고 0.5 더하면 됩니다
마지막 3번째는 절댓값으로 만들어버리는 겁니다
그러면 빨간색 곡선처럼 나오겠고,
결과로는 뭔가 통통 튀는 듯한 느낌의 애니메이션을 볼 수 있습니다
노드로는 그냥 절댓값노드인 absolute를 꽂아주면 끝입니다
'그래픽(기타)' 카테고리의 다른 글
유니티 SRP 셰이더 그래프 - 10 (0) | 2020.01.31 |
---|---|
유니티 SRP 셰이더 그래프 - 9 (0) | 2020.01.28 |
유니티 SRP 셰이더 그래프 - 7 (0) | 2020.01.19 |
유니티 SRP 셰이더 그래프 - 6 (0) | 2020.01.13 |
유니티 SRP 셰이더 그래프 - 5 (0) | 2020.01.10 |