WannaFlySomeDay/UnityEngine - Shader

[SG] Rock Moss Shader

자전거통학 2024. 3. 28. 01:37

 

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