게임개발

[ 게임 개발 ] 유니티 쉐이더 그래프 1 - 쉐이더가 무엇이고 왜 쓰는가

vcs 2024. 4. 10. 19:49

유니티에서 개발을 하다 보면

2D든 3D든 게임이 원하는 만큼 때깔이 나오지 않아

마음에 들지 않는 때가 있다.

 

또한 C#코드로 다트윈 깔짝대면서

굳이 이렇게 까지 연출을 해야하나 싶을 정도로

간단하고 반복적인 이펙트를 만들때 또한 존재한다

 

그럴 때 쉐이더를 활용하여 가볍고도 간단하게 

원하는 깔롱 한 효과를 구현하여 보자

 


우선 쉐이더는 무엇일까

이쁜 거?

 

맞는 말이다

 

쉐이더는 수학적인 연산을 통해 게임의 퀄리티를 올리고 이쁜 비주얼을 만들어준다

여기서 중요한 점은 수학적인 연산인데,

쉐이더가 가벼운 이유이기도 하다

 

쉐이더는 수학적인 공식이나 연산을 통해

우리가 원하는 효과들을 구현하기 때문에

파티클 시스템을 떡칠하거나 스크립트로 직접 포지션을 움직여가며 움직이는 것보다

매우 매우 매우 빠르고 가볍다.

 

그런 쉐이더 중에서도 쉐이더 그래프라는 놈은

노드를 이용해 간단하게 연결만 시켜주면 내부적인 연산은 알아서 해주고

우리가 원하는 가볍고 보기에도 좋은 이펙트들이 탄생한다



또한 이 쉐이더그래프는

유니티에서 URP라는 렌더 파이프라인을 사용해야만 쓸 수 있다

 

URP에 대한 설명은 

https://dev-vcs.tistory.com/entry/%EC%9C%A0%EB%8B%88%ED%8B%B0-URP

 

유니티 URP

Universal Rendering Pipeline. 줄여서 URP라고 한다 현재 유니티에서 지원하는 렌더 파이프라인은 Built In, SRP (URP, HDRP) 가 있다. 이번에 설명할 URP는 주로 빛과 볼륨효과와 쉐이더를 통해 게임의 때깔을

dev-vcs.tistory.com

위 글에 남겨놓았다

 

HLSL 코드로 구현된 쉐이더의 일부

보통의 쉐이더는 HLSL이라는 코드로 작성하여 구현하는데

 

이는 결국에는 수학도 수학이지만 어느 정도의 프로그래밍 지식이 있어야만 다룰 수 있는 진입장벽이 있는 작업이라

이를 몰라도 어느정도 수학만 이해할 줄 알아도 노드 연결만 딸깍해서 만들 수 있는

쉐이더그래프의 장점이 이것이다

 

물론 쉐이더 그래프 보다  HLSL이 더 빠르고 가볍지만

깊게 공부하는 것이 귀찮고 간단한 쉐이더정도만 구현하고 싶다라면

그냥 쉐이더 그래프만 공부하는 것도 좋다

 

그럼 이제 쉐이더를 만들어 보자