본문 바로가기
Unity/ShaderGraph (대마왕님)

[Unity/ShaderGraph] 02. URP와 셰이더 그래프(Shader Graph)

by 꿀팔자 2023. 4. 18.

 

* 이 포스팅은 '대마왕의 유니티 URP 셰이더 그래프 스타트업, 2023'을 학습하고 개인 학습용으로 정리한 내용입니다.

더 자세하고 다정한 설명을 원하시면 !꼭! 책을 보시길 바랍니다.

 

 

- 책에서 사용한 Unity 버전: 2021.3.5  
- 포스팅에서 사용한 Unity 버전: 2021.3.9  

- Render Pipeline: URP  
  Part02. 
  URP와 셰이더 그래프
  1. 유니티 URP (Universal Render Pipeline)
  2. 셰이더 그래프 (Shader Graph)

 

 

 


  

 

 

  0. 유니티 설치 & 기본 셋팅  

- 이 책은 유니티 버전 2021.3.5 버전을 사용합니다. 

+ 저는 포스팅에서  2021.3.9 버전을 사용합니다.

+ 설치방법은 아래 포스팅을 참고하시면 됩니다. 

 

https://hyekunamatata.tistory.com/4

 

[Unity/Basic] Unity Installation (유니티 설치하기)

1. Unity Hub 다운로드 - Unity 공식 홈페이지: https://unity.com/kr/download 다운로드 지금 Unity를 다운로드하고 전 세계적으로 가장 큰 인기를 누리는 2D/3D 멀티플랫폼 경험 및 게임 제작용 개발 플랫폼을

hyekunamatata.tistory.com

 

 

+ 마지막 단계에서 '3D (URP)'를 선택하면 됩니다.

 

 

 


 

 

 

  1. 유니티 URP (Universal Render Pipeline)  

- Template: 반드시 3D Sample Scene (URP)로 시작하는 것이 좋다. 

- 유니버설 렌더 파이프라인 개요

- 오른쪽 [Inspector] 창에서 Universal Render Pipeline에 대한 글을 볼 수 있다.

 

 

+ 제가 사용한 버전은 Empty 템플릿이 있어서 URP Empty Template을 사용했습니다.

 

 

- Forward Renderer 뿐만 아니라 Deferred Rendering도 지원하고 

  빌트인 버전의 유니티가 가지고 있는 기능을 대부분 구현해서 

  URP는 저사양만이 아닌 기존의 빌트인 렌더링 파이프라인을 대체하는 범용 파이프라인으로 자리 잡음.
- 최신 버전에는 Forward+를 추가해 Forward 렌더링의 한계를 뛰어넘기 시작

 

 

 

 


 

 

 

  2. 셰이더 그래프 (Shader Graph)  

- 전에 사용하던 서피스 셰이더(Surface Shader)를 지원하지 않고 HLSL 코드로 셰이더를 짜도록 바뀌었다.
   ㄴ but 최근에 서피스 셰이더를 URP용으로 만들겠다는 로드맵이 발표됨
   ㄴ 서피스 셰이더? 유니티 자체 스크립트와 CG를 이용해 만든 쉬운 버전 셰이더 코딩이 가능한 셰이더 코딩 방식
                                  버텍스 셰이더나 대부분의 라이팅 공식을 생략해도 잘 동작되도록 만들어놓은 셰이더

- 아티스트 들이 셰이더를 쉽게 만들 수 있는 비주얼 셰이더 에디터(Visual Shader Editor)를 추가

   = 셰이더 그래프(Shader Graph) 
- 노드(Node)라고 하는 블록을 붙여서 코딩을 모르는 아티스트 들도 쉽게 셰이더를 만들 수 있다.

 

 

유니티 21.3.9f1 버전의 셰이더 그래프(Shader Graph)

 

유니티 18.3.14f 버전의 셰이더 그래프(Shader Graph)

 

+ 두 개의 버전 비교해 보면 마스터 스택(Master Stack)이 가장 많이 바뀐 걸 알 수 있습니다. 

   최신 버전이 Vertex, Fragment가 나뉘어 있어서 더 직관적이네요!

 

 

 


 

 

 

1) 셰이더 그래프(Shader Graph)와 HLSL 셰이더

     - HLSL = High Level Shader language의 약자
     - HLSL은 Direct X에서 사용 가능한 셰이더 언어

     - C언어와 매우 닮은 코딩이다 보니 코딩 지식이 부족한 아티스트가 처음부터 다루기에는 조금 힘들다.

 

     - 셰이더 그래프는 사실상 HLSL 셰이더를 노드 형태의 껍데기로 감싸 놓은 것
     - 그래서 셰이더 그래프로 제작된 것은 HLSL 셰이더로 다시 변환되어 적용되며, 각 노는 함수로 관리됨.

 

 

 

 

     - Custom Function 노드를 사용하면 직접 HLSL코드를 작성하여 셰이더 그래프 안에서

       사용할 수 있는 노드를 만들 수 있다. 

 

 

 

 


     - 셰이더 그래프를 선택하면 Inspector에서 View Generated Shader 버튼을 볼 수 있는데,

       누르면 HLSL로 변환된 셰이더 확인 가능
     - 물론 이 HLSL 코드를 수정해서 저장해도 반영되지는 않는다. 또한 자동으로 생성된 코드라 알아보기도 쉽지 않음.
     - 디버깅이나 프로파일링을 위한 함수 확인을 위해서라면 쓸만함.

 

 

 

 


 

 

 

 

2) 셰이더 그래프(Shader Graph)와 앰플리파이드 셰이더 에디터(Amplify Shader Editor)

   [ 앰플리파이드 셰이더 에디터 (Amplify Shader Editor) ]

     - 셰이더 그래프가 나오기 전부터 에셋 스토어에서 유료로 판매 중인 유니티용 비주얼 셰이더 에디터

     - 다양한 예제와 강력한 기능으로 유명

     - URP 뿐만 아니라 HDRP나 빌트인 파이프라인까지 빠르게 업데이트됨 => 많은 유저들 LOVE!

     - 각 노드가 함수역할을 하며, HLSL로 자동 변환되어 사용되는 구조
     - 유니티 셰이더 그래프와 호환X, 유니티 내부에서 만든 툴 X

        → 업데이트 조금 느릴 수 있다. but 상당히 빠른 속도로 업데이트해 주기 때문에 사용하기 좋다.

 

클릭하면 에셋스토어에 있는 Amplify Shader Editor로 넘어갑니다.

 

 

 

 

 


 

* +로 표시된 건 제가 추가한 부가 설명입니다.

* 삽입되는 이미지는 제가 캡쳐한 것입니다.

 

 

 

 

댓글