[Unity] URP 셰이더 Time 노드로 움직이는 불 만들기

2023. 7. 12. 16:59Unity

728x90
반응형

배경이 투명해야 하기 때문에 셰이더 Graph Settings를 [Transparent]로 바꾼다. [Blending Mode] - [Additive]는 배경과 덧셈이 되면서 더 밝아지게 된다. [Render Face]는 양면 렌더링을 위해 [Both]로 설정한다.

 

 

V 방향으로만 [Time]에 [Negate] 음수를 곱하여 위로 올라가게 [Add] 노드로 더했고 [Sample Texture 2D]로 텍스쳐에 적용한다. 고정할 텍스쳐와 움직일 텍스쳐의 rgb와 알파를 각각 곱해서 Fragment에 전달한다.

 

 


 

 

책의 예제에서는 (0.5, 0.5, 0.5)의 값을 갖는 회색 텍스쳐를 UV 값을 [Split]하여 각 U, V 값에 [Add]하는 부분이 있는데, 정확히 U, V 값이 0.5씩 이동되지 않는 결과가 나온다. 이유는 감마 보정 때문이며 이는 텍스쳐 Inspector에서 [sRGB]를 체크 해제하여 해결할 수 있다.

이처럼 데이터로 사용되는 텍스쳐는 반드시 sRGB를 꺼야 정확한 결과가 나온다.

 

 


 

 

불에 Noise가 들어간 UV 텍스쳐를 넣으면 그 모양대로 일그러지는 것을 볼 수 있다.

 

 

일그러짐을 줄이기 위해 UV 텍스쳐를 어둡게 처리할 수 있다.

 

 

최종적으로 Noise 텍스쳐를 이용해 불타는 느낌을 만들었다. 책의 예제를 하나씩 따라가면서 생각하면서 만들어보았고, 예제대로 하면 불이 점점 대각선 아래쪽으로 움직이는데, 이것을 해결하기 위해 Float 프로퍼티 하나를 생성해서 Noise의 강도를 조절하고 동시에 U, V 각각의 값에 위치 보정으로 역수([Negate])의 반 값(0.5 [Multiply])을 Transform([Add])하여 위치 조정을 하였다.

 

 

둘 다 0.3 Noise 값을 적용하였다. 예제의 불 위치가 왼쪽 아래로 조금 내려간 것을 볼 수 있다. (좌: 예제, 우: 위치 보정 후 결과)

 

 


참고자료

 

대마왕의 유니티 URP 셰이더 그래프 스타트업

셰이더의 기본 개념에서부터 셰이더 그래프(노드)의 기본 활용법까지 소개하여, 다양하고 재미있는 셰이더를 만드는 방법을 알려준다. 또한, 자신이 원하는 효과를 만들기 위해 노드를 어떤 방

www.aladin.co.kr

728x90
반응형