Unity Shader

김동현·2022년 9월 8일
0

컴퓨터 그래픽스 기초

픽셀

픽셀은 디지털 이미지를 구성하는 최소 단위이다.

빛의 3원색인 RGB으로 더 작은 단위인 채널(서브픽셀)을 구성해 이 3가지 채널을 혼합해 원하는 색을 만들고 각 채널을 통과하는 빛의 양(%)로 계조를 표현한다.

쉐이더는 최종적으로 화면에 출력할 픽셀의 색을 정하는 함수를 말한다.

렌더 파이프라인

3D 물체를 화면에 출력하려면 일련의 과정이 필요하다. => 렌더 파이프라인 or 그래픽 파이프라인

  1. 버텍스 로드

    3D물체가 어떻게 생겼는지에 대한 데이터가 필요하다.
    이 데이터를 버텍스 라고한다.
    버텍스는 물체를 구성하는 점으로 렌더링을 위한 여러가지 속성이 있는데, 인덱스 번호(Index Number), 위치(Position), 노멀(Normal), 색(Color), UV 등이 저장되어 있다.
    그래픽카드는 이런 정보를 받아 삼각형을 그려서 물체의 기본적인 형태를 만든다.

  2. 버텍스 쉐이더
    버텍스와 관련된 각종 연산을 한다.
    1. 월드 변환
    - 각 물체는 자신만의 고유한 좌표계를 가지고 있다. 다른 물체와 상호작용을 하려면 월드공간으로 바꿔줘야 하며, 이를 월드 변환이라고 한다.
    2. 뷰 변환
    - 월드 공간에 있다고 화면에 출력되는 것은 아니다. 카메라가 화면에 담아야 비로소 출력이 된다. 따라서 카메라로부터 상대적으로 얼마나 떨어져 있는지 고려되어야 하며, 이를 뷰 변환(View Transform)(직교 투영 Orthographic Projection 이라고도 한다.)이라고 한다, 이때 원근감은 고려되지 않는다.
    3. 원근 투영
    - 원근감을 살리기 위해서 원근 투영(Perspective Projection)을 한다. 카메라가 직교 투영모드인 경우 이 단계는 생략된다.

  3. 레스터라이즈
    3D 공간을 2D 화면으로 옮기는 과정이다.
    즉 , 물체를 화면에 출력할 픽셀과 대응시키는 과정으로 이를 래스터라이즈 라고 한다.
    이를 위한 장치로 래스터라이저 가 있다.

  4. 픽셀 쉐이더 / 프래그먼트 쉐이더
    픽셀과 대응되었으나 색상이 정해지지 않았따.
    픽셀 쉐이더 혹은 프래그먼트 쉐이터는 각종 조명, 텍스쳐, 그림자, 특수효과 증을 연산해 최종적인 색을 결정한다.

Unity의 랜더 파이프라인

Unity의 랜더 파이프라인은 빌트인 렌더파이프라인과 스크립터블 렌더파이프라인으로 나뉜다.

랜더 파이프라인은 저마다 다른 기능 및 성능 특성을 지니고 있기에 두개를 바꾸기 힘드므로 초기에 정할 때 신중해야 한다.

  1. 빌트인 렌더 파이프라인

    • Untiy의 기본 렌더 파이프라인으로 범용으로 사용되지만 커스터마이즈 옵션이 제한적이다.
  2. 유니버셜 렌더 파이프라인

    • 광범위한 플랫폼에서 최적회된 그래픽스를 구현하도록 지원하는 SRP로 이전에는 경량 렌더 파이프라인(LWRP) 으로 불렸다. URP는 LWRP를 대체한다.
  3. 고해상도 렌더 파이프라인

    • 고사양 플랫폼을 위한 최신 고해상도 그래픽스를 구현하도록 지원하는 SRP이다.
  4. 커스텀 렌더 파이프라인

    • 필요한 경우 렌더 파이프라인을 커스터마이징 할 수 있다.

유니티 쉐이더 살펴보기

  1. 쉐이더랩으로만 제작하기

    • 말 그대로 쉐이더랩으로만 작성하는 것 이지만 더이상 권장되지 않는다.
  2. 쉐이더 그래프 사용하기

profile
해보자요

0개의 댓글