유니티 그래픽스(Graphics)

김찬수·2023년 5월 21일
0

Unity

목록 보기
11/15

픽셀(Pixel)

  • 디지털 이미지를 구성하는 최소 단위
  • 빨강(R), 초록(G), 파랑(B) 3가지의 서브 픽셀 / 채널로 구성
  • 불투명도를 나타내는 알파값(A)도 보통은 포함
  • 가산 혼합하여 색깔을 나타냄
  • 각 채널의 값의 범위는 0~1 까지

렌더 파이프라인

  • 3D 물체를 화면에 출력하려면 일련의 과정이 필요하고, 이를 렌더 파이프라인 혹은 그래픽 파이프라인이라고 함

1. 입력 조립 단계

  • 버텍스를 그래픽 카드에 전달
  • 그래픽 카드는 버텍스 정보를 바탕으로 물체의 모양을 그림
    버텍스(Vertex)
  • 물체를 구성하는 점
  • 인덱스 번호, 위치, 노멀 벡터(어떤 방향을 바라보고 있는지 나타냄), 색, UV

2. 버텍스 셰이더 (Vertex Shader)

  • 버텍스 셰이더는 버텍스와 관련된 각종 연산을 함 (가장 많이 하는 연산 = 좌표 변환)

  • 월드 변환 (Local -> World)
    각 물체는 자신만의 고유한 좌표계를 가지고 있는데, 다른 물체와 상호작용을 하려면 월드 공간으로 바꿔줘야 함

  • 뷰 변환 (World -> View)
    월드 공간에 있다고 화면에 출력되는 것은 아니고, 카메라가 화면에 담아야 비로소 출력이 됨. 따라서 카메라로부터 상대적으로 얼마나 떨어져 있는지 고려되어야 하며, 이를 뷰 변환이라고 함 (이때 원근감은 고려되지 않음)

  • 원근 투영 (Perspective Projection)
    원근감을 살리기 위해 원근 투영을 함. 카메라가 Orthographic 모드인 경우 이 단계는 생략됨

3. 래스터라이즈 (Rasterize)

  • 3D 공간을 2D 화면으로 옮기는 과정
  • 물체를 화면에 출력할 픽셀과 대응시키는 과정
  • 래스터라이저라는 하드웨어가 함

4. 픽셀 셰이더 / 프래그먼트 셰이더

  • 각종 그림자, 조명, 텍스처, 특수효과 등을 연산해 최종적인 색을 정함

메시(Mesh)

  • 모양을 설명하는 데이터 컬렉션
  • 메시는 GPU가 렌더링하는 오브젝트의 모양을 설명
  • 메테리얼은 표면의 형상을 설명
  • 버텍스 / 토폴로지 / 인덱스 이 3가지 프로퍼티로 정의됨
  • LOD(Level of Detail) : 멀리 있는 오브젝트는 너무 세세하게 그려줄 필요가 없으니 멀수록 적은 버텍스로 대충 그려주어서 최적화

텍스처(Texture)

  • 메시의 질감을 정의하는 이미지

셰이더(Shader)

  • 보통 셰이더라고 하는 셰이더 프로그램은 GPU에서 실행되는 프로그램
  • 렌더링 시 픽셀의 색조, 명암을 결정
  • 최종적으로 화면에 출력할 픽셀의 색을 정하는 함수
  • 버텍스 셰이더를 이용해 버텍스를 조작하거나 픽셀 셰이더 / 프래그먼트 셰이더를 이용해 색깔을 조작할 수 있음

렌더링 모드

  • Opaque : 디폴트모드, 투명한 영역이 없는 일반 솔리드 오브젝트에 적합
  • Cutout : 이 모드에서는 반투명 영역이 없고 텍스처가 100% 불투명이거나 보이지 않아서 나뭇잎이나 구멍과 찢어진 부분이 있는 옷감 같은 메테리얼의 형상을 만들기 위해 투명도를 사용할 때 적합
  • Transparent : 투명한 플라스틱이나 유리처럼 투명한 메테리얼을 사실적으로 렌더링하는 데 적합
  • Fade : 이 모드에서는 오브젝트 페이드 인 또는 페이드 아웃을 애니메이션으로 나타내고 싶을 때 유용

알베도(Albedo)

  • 알베도 값으로 단일 컬러를 지정하는 경우도 있지만, 알베도의 파라미터로 텍스처 맵을 할당하는 경우가 훨씬 더 많음

스페큘러(Specular)

  • 스페큘러는 Shader에서 Specular setup을 사용할 때만 활성화 됨
  • 스페큘러 이펙트는 씬에 있는 광원의 직접 반사이며 일반적으로 오브젝트 표면에 밝은 하이라이트 및 빛나는 모습으로 나타남 (다만 스페큘러 하이라이트는 은은하거나 퍼질 수도 있음)
  • 스페큘러의 파라미터로 강도와 컬러 틴트를 조절할 수 있고, 여기에는 광원으로부터의 빛과 환경으로부터의 반사가 포함됨

메탈릭(Metallic)

  • 메탈릭 모드를 금속처럼 보여야 하는 메테리얼에만 사용할 수 있는 것은 아님

  • 메탈릭 모드라고 하는 이유는 표면의 금속성 또는 비금속성을 제어할 수 있기 때문

  • 메탈릭 파라미터가 1에 가까울수록 금속과 같은 느낌을 줌

  • 스페큘러와 메탈릭 두 가지 모두 스페큘러 하이라이트를 생성하며 어느 쪽을 사용할지는 설정 및 미적 선호도에 따라 결정하면 됨

노멀 맵(범프 매핑)

  • 노멀 맵은 범프 맵(Bump Map)타입
  • 실제 디테일이 없는 부분을 디테일이 있는 것처럼 보이게 만들기 위한 것 (“실제” 모델링된 작은 디테일을 갖는 것은 일반적으로 좋지 않음)
  • 일반적으로 푸른색을 띠고 있는 텍스처 파일

하이트맵(Height Map)

  • 하이트맵은 노멀 매핑과 개념이 유사하지만 더 복잡하여 더 많은 성능 저하를 일으킴
  • 일반적으로 노멀맵과 함께 사용
  • 카메라와 가까운 쪽은 확대 및 강조되고 먼 쪽은 축소되고 뷰에서 가려진 것처럼 보임
  • 첫번째 사진 : 알베도
  • 두번째 사진 : 알베도 + 노멀맵 (돌이 서로를 가리지 않음)
  • 세번째 사진 : 노멀맵 + 하이트맵 (돌이 표면에서 돌출된 것처럼 보이고 더 가까운 돌이 뒤에 있는 돌을 가림)

오클루전 맵

  • 오클루전 맵은 간접 조명을 비춰야 할 때 사용

Emission

  • Emission은 메테리얼의 표면이 방출하는 광원의 컬러와 강도를 제어
  • 일부분이 안에서 빛나는 것처럼 보여야 하는 모니터 화면, 제어판의 반짝이는 버튼 등에 사용할 수 있음
  • Emission을 사용하는 게임 오브젝트는 씬의 어두운 영역에서도 밝게 보임
  • Emission을 체크해주면 ColorGlobal Illumination 프로퍼티가 나타남
  • Global Illumination : 다음의 세 가지 옵션이 있음
  • Realtime : 이 메테리얼이 부착된 발광 광원이 인근 게임 오브젝트의 조명에 영향을 줌
  • Baked : 인근의 정적 게임 오브젝트에 영향을 줌 (동적 게임 오브젝트 제외)
  • None : 씬의 실시간 라이트맵, Baked된 라이트맵에 영향을 주지 않고, 다른 게임 오브젝트에 조명을 비추거나 영향을 주지 않음

보조 맵(디테일 맵) 및 디테일 마스크

  • 일반적으로는 캐릭터의 피부에 모공이나 털 같은 피부 디테일을 추가하거나, 벽돌 벽에 작은 균열이나 자라난 이끼를 추가하는 등의 용도로 사용
  • 특정 부분에만 좀 더 세부적인 텍스처를 표현할 수 있음

그래픽스 - Unity 매뉴얼

profile
프로그래머 지망생

0개의 댓글