✍️ 개요
이 카테고리는 유니티의 쉐이더 그래프(Shader Graph)에 대한 이론과 실습을 정리한 카테고리입니다.
만약 쉐이더에 관심이 있으신 분들은 저와 함께 공부하면서 실력을 쌓아봅시다.
이전에 UPR란 무엇인가? 포스터에서 유니티 그래픽스 파이프라인의 역사에 대해 잠깐 언급한 적이 있습니다.
유니티 쉐이더에 대해 본격적으로 들어가기 전에 역사에 대해 자세히 살펴보고 가도록 하겠습니다.
📌 빌트인(Built-in) 파이프라인
2018년 이전의 유니티에는 빌트인(Built-in) 파이프라인 밖에 없었습니다.
빌트인에서는 Vertex Shader와 Fragment Shader라는 정석에 가까운 코딩 방식으로 쉐이더를 작성하거나,
유니티에서 지원하는 Surface Shader라는 간편한 코딩 방식을 사용하였습니다.
이때 TA 직군이 주로 Surface Shader을 코딩하는 방식으로 구현했었습니다.
※ 주로 HLSL로 쉐이더를 작성
하지만 커스텀으로 RP을 수정할 수 없었기에, 플랫폼에 맞게 최적화 할 수 없는 단점이 존재했습니다.
물론 Command Buffer와 Callback으로 간접적으로 수정이 가능했지만 한계가 있습니다.
그래서 등장한 것이 SRP(Scriptable Render Pipeline)입니다.
📌 SRP (Scriptable Render Pipeline)
2018년, 유니티에 새로운 렌더링 파이프라인인 SRP(Scriptable Render Pipeline)이 등장했습니다.
그리고 이전까지 사용하던 렌더링 파이프라인을 빌트인이라고 정의합니다.
이때부터 SRP을 통해 직접 렌더링 파이프라인을 코딩할 수 있게 되었습니다.
하지만 많은 인력과 시간이 들어가게 됩니다.
그래서 유니티에서 LWRP(URP)와 HDRP라는 템플릿 SRP을 제공하였습니다.
※ 2019년, 유니티는 LWRP를 URP(Universal Render Pipeline)으로 개명
하지만 그래픽스 파이프라인의 구조가 변경됐기 때문에 이전 파이프라인과 호환되지 않는다는 문제가 있습니다.
즉, SRP는 빌트인 렌더링 파이프라인에서 돌아가지 않는다는 것이죠.
그래도 유니티에서는 비약적인 성능 향상과 확장성을 위해 SRP를 선택합니다.
현재 SPR는 쉐이더 그래프와 HLSL 쉐이더 2가지 방식으로 작성할 수 있습니다.
쉐이더 그래프는 코딩이 아닌, 노드를 연결하여 쉽게 작성이 가능하며,
HSLS 쉐이더는 DirectX를 기반으로 제대로 된 코딩으로 작성합니다.
📌 쉐이더(Shader)란 무엇인가?
쉐이더(Shader) : 조명과 색상, 텍스처, 반사 효과 등을 적용하여 최종적으로 화면에 출력하는 픽셀의 색을 정해주는 코드
쉐이더는 픽셀의 색상을 정하는 과정에서 수학적 계산을 수행합니다.
이 과정의 끝에서, 여러분의 Texture는 멋지고 아름다운 효과를 가지며 유저들을 매혹할 것입니다.
마치 정지된 캐릭터가 숨을 쉬듯 생명을 가진 것처럼 말이죠.
💡 ※ Shader와 Material의 차이점
Material은 Shader를 담는 컨테이너로, Shader에서 정의된 Properties(예: 색상, 텍스처, 숫자 값 등)을 Material에 설정하고 저장합니다. 따라서 Shader는 렌더링의 "어떻게"를 정의하고, Material은 "무엇을" 보여줄지를 정한다고 생각하시면 됩니다.
지금부터 함께 유니티에서 쉐이더를 다루는 방법을 배워 게임에 적용해봅시다.
분명 재밌고 즐거운 공부 시간이 될거라 생각합니다.
'유니티(Unity) > 쉐이더' 카테고리의 다른 글
[Unity 쉐이더] 프로퍼티 생성 (1) | 2024.12.27 |
---|---|
[Unity 쉐이더] 메터리얼과 쉐이더 적용 (1) | 2024.12.26 |