Object에 texturing을 하면서 두 texture를 덧붙힌다.
이때 상부에 이끼 texture가 입혀 지도록 한다.
포인트 1 - 두 texture의 결합.
Lerp node를 사용하여 두개의 texture를 결합한다.
포인트 2 - 어느 지점으로 결합(blend) 해야 하는가.
월드의 위쪽으로만(혹은 의도하는 방향으로만) 이끼 texture가 입혀지면 될 것이다.
이것은 어떻게 구하는가.
우선 normal 벡터가 필요하다. 해당 vertex방향을 얻기 위함이다.
이를 위해 벡터 연산 내적(Dot product)을 사용한다.
dot product는 cos에 대해 수식을 정규화 할 수 있으므로,
0-90 에서는 양수
90-270까지는 음수
270-360 까지는 다수 양수가 된다. (또한 특정 각도에서 1, 0 에 수렴한다)
아래 cos 그래프를 참조하자.
즉 위를 향한 벡터에 물체의 노멀벡터를 내적하면,
위쪽을 향하는 정점에 대해서만 양수를 돌려 준다고 생각하면 된다.
그리고 그 양수일때만, 이끼 texture를 사용하면 될 것 같다.
따라서 그 내용을 shader graph에 적용한다.
여기에 강도, 위쪽 벡터 등을 외부에서 조절하게끔 parameter로 빼 둔다.
결과.
reference : https://www.youtube.com/watch?v=Q43XBychCEY&list=PLpPd_BKEUoYjcFaqriaMchx5gOqBs2tDh&index=4
'WannaFlySomeDay > UnityEngine - Shader' 카테고리의 다른 글
[SG] Sprite & Background Blur. (0) | 2024.03.31 |
---|---|
[SG] Laser Beam Shader. (0) | 2024.03.30 |
[SG] Water Shader (0) | 2024.03.29 |
[SG] Portal Shader (0) | 2024.03.29 |
[SG] Outline Shader (0) | 2024.03.29 |