참치김밥은 최고의 한식이다

[Unity] 처음으로 직접 만들어 본 HLSL 쉐이더 - 눈 쌓인 쉐이더 본문

Unity

[Unity] 처음으로 직접 만들어 본 HLSL 쉐이더 - 눈 쌓인 쉐이더

l__j__h 2023. 10. 11. 14:06

오브젝트 노말의 y값이 _SnowOffset 이상일 경우에만 흰 색으로 칠해주도록 했다.

그런데, 이렇게 했더니 눈이 아니라 페인트가 묻은 것 마냥 뚝뚝 끊기며 표현이 되길래, 어떻게 눈 쌓인 가장자리를 부드럽게 표현할까 고민하다가

그냥 단순히 알파값에 오브젝트 노말 y를 넣으면 되겠구나! 하고 

프래그먼트 쉐이더의 리턴값을 return float4(0,0,0,오브젝트노말y) 했더니 얼추 부드러워 보이길래,

눈이 많이 쌓인 부분은 더 새하얗게 표현하려고 오브젝트노말y 값을 아래의 Remap 함수를 통해서 맵핑 후 사용했다.

float Remap(float val, float minVal, float maxVal){
                float o = 0;
                o = saturate((val - minVal)/(maxVal - minVal));
                if(o > 0.2)
                    o *= 1.5;
                return o;
            }

 

또, 눈이 쌓이면 소복해지므로, 그 부분도 버텍스 위치를 눈이 쌓인 것처럼 서서히 조정할 수 있도록 추가로 작성 중이다.

 

지금은 텍스처도 없이 일반 White를 깔아줘서 좀 애매해보일 수 있지만, 텍스처 추가하고 눈 노말도 추가해주면 좀 더 보기 좋지 않을까?! 싶다!

 

--------------------------------------------

 

왼쪽 : 적용 전 / 오른쪽 : 눈 쉐이더 적용 후

텍스처 + 노말맵 적용 완료~~~ 

728x90

'Unity' 카테고리의 다른 글

[유니티] Stencil  (0) 2023.11.20
[유니티] Z-Buffer & Color Buffer  (0) 2023.11.20
[Unity] Particle 회전 시키는 방법  (0) 2023.09.08
[Unity] NavMesh 모르던 기능  (0) 2023.09.07
[Unity] UI 부드럽게 할 때 꿀팁  (0) 2023.09.01