픽셀(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을 사용할 때만 활성화 됨
- 스페큘러 이펙트는 씬에 있는 광원의 직접 반사이며 일반적으로 오브젝트 표면에 밝은 하이라이트 및 빛나는 모습으로 나타남 (다만 스페큘러 하이라이트는 은은하거나 퍼질 수도 있음)
- 스페큘러의 파라미터로 강도와 컬러 틴트를 조절할 수 있고, 여기에는 광원으로부터의 빛과 환경으로부터의 반사가 포함됨
-
메탈릭 모드를 금속처럼 보여야 하는 메테리얼에만 사용할 수 있는 것은 아님
-
메탈릭 모드라고 하는 이유는 표면의 금속성 또는 비금속성을 제어할 수 있기 때문
-
메탈릭 파라미터가 1에 가까울수록 금속과 같은 느낌을 줌
-
스페큘러와 메탈릭 두 가지 모두 스페큘러 하이라이트를 생성하며 어느 쪽을 사용할지는 설정 및 미적 선호도에 따라 결정하면 됨
노멀 맵(범프 매핑)
- 노멀 맵은 범프 맵(Bump Map)타입
- 실제 디테일이 없는 부분을 디테일이 있는 것처럼 보이게 만들기 위한 것 (“실제” 모델링된 작은 디테일을 갖는 것은 일반적으로 좋지 않음)
- 일반적으로 푸른색을 띠고 있는 텍스처 파일
하이트맵(Height Map)
- 하이트맵은 노멀 매핑과 개념이 유사하지만 더 복잡하여 더 많은 성능 저하를 일으킴
- 일반적으로 노멀맵과 함께 사용
- 카메라와 가까운 쪽은 확대 및 강조되고 먼 쪽은 축소되고 뷰에서 가려진 것처럼 보임
- 첫번째 사진 : 알베도
- 두번째 사진 : 알베도 + 노멀맵 (돌이 서로를 가리지 않음)
- 세번째 사진 : 노멀맵 + 하이트맵 (돌이 표면에서 돌출된 것처럼 보이고 더 가까운 돌이 뒤에 있는 돌을 가림)
오클루전 맵
- 오클루전 맵은 간접 조명을 비춰야 할 때 사용
Emission
- Emission은 메테리얼의 표면이 방출하는 광원의 컬러와 강도를 제어
- 일부분이 안에서 빛나는 것처럼 보여야 하는 모니터 화면, 제어판의 반짝이는 버튼 등에 사용할 수 있음
- Emission을 사용하는 게임 오브젝트는 씬의 어두운 영역에서도 밝게 보임
- Emission을 체크해주면 Color와 Global Illumination 프로퍼티가 나타남
- Global Illumination : 다음의 세 가지 옵션이 있음
- Realtime : 이 메테리얼이 부착된 발광 광원이 인근 게임 오브젝트의 조명에 영향을 줌
- Baked : 인근의 정적 게임 오브젝트에 영향을 줌 (동적 게임 오브젝트 제외)
- None : 씬의 실시간 라이트맵, Baked된 라이트맵에 영향을 주지 않고, 다른 게임 오브젝트에 조명을 비추거나 영향을 주지 않음
보조 맵(디테일 맵) 및 디테일 마스크
- 일반적으로는 캐릭터의 피부에 모공이나 털 같은 피부 디테일을 추가하거나, 벽돌 벽에 작은 균열이나 자라난 이끼를 추가하는 등의 용도로 사용
- 특정 부분에만 좀 더 세부적인 텍스처를 표현할 수 있음
그래픽스 - Unity 매뉴얼