나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2026-08-06 07:42:07

렌더링



1. 일반적 의미2. 컴퓨터 그래픽스에서의 의미
2.1. 라이팅
2.1.1. 라이팅이 작동하는 기법
2.1.1.1. 래스터라이제이션 (Rasterization)
2.1.1.1.1. 포워드 렌더링 (Forward Rendering)2.1.1.1.2. 디퍼드 렌더링 (Deferred Rendering)2.1.1.1.3. 타일드 렌더링 (Tiled Rendering)2.1.1.1.4. 클러스터드 렌더링 (Clustered Rendering)
2.1.1.2. 레이 트레이싱 (Ray Tracing)
2.1.1.2.1. 패스 트레이싱 (Path Tracing)
2.1.2. 표면에 라이팅이 반응하는 기법 (셰이딩)
2.1.2.1. 플랫 셰이딩(Flat Shading) / Per-Polygon Shading2.1.2.2. 구로 셰이딩(Gouraud Shading) / Per-Vertex Shading2.1.2.3. 퐁 셰이딩(Phong shading) / Per-Pixel Shading
2.1.3. 기타
2.2. 텍스처 매핑 (Texture Mapping)
2.2.1. 지오메트리(폴리곤)에 변화를 주는 텍스처 매핑
2.2.1.1. 디스플레이스먼트 매핑2.2.1.2. 하이트 맵2.2.1.3. 월드 포지션 오프셋
2.2.2. 셰이딩 결과에 변화를 주는 텍스처 매핑
2.2.2.1. 엠보스 범프 매핑2.2.2.2. Dot3 범프 매핑(노멀 매핑)2.2.2.3. 스페큘러 매핑2.2.2.4. 글로시니스 매핑2.2.2.5. 러프니스 매핑
2.2.3. 지오메트리(폴리곤)와 셰이딩에 영향을 주지 않는 텍스처 매핑
2.2.3.1. 디테일 텍스처2.2.3.2. 환경 매핑2.2.3.3. 패럴랙스 매핑2.2.3.4. 패럴랙스 오클루전 매핑2.2.3.5. 호라이즌 매핑
2.3. 관련 문서
3. 컴퓨터 마크업 언어에서의 의미
3.1. 관련 문서

1. 일반적 의미

rendering
Render의 기본 의미는 무엇인가를 (코드 등으로) 그려내거나 지금과는 다른 어떤 상태로 만든다는 뜻이다. 한자의 換에 가까운 의미다.

디자인에서 '제품을 실제와 같이 정밀하게 그리는 것' 또는 제품이 최종적으로 제작되었을 때의 '완성 예상도'를 뜻한다.

음악에서 연주자가 악보에 있는 기록된 음악을 연주자 자신만의 기술과 감성으로 표현(연주)하는 것을 렌더링이라고 부른다. 마찬가지로 작곡 프로그램에서 화면상 악보에 기보된 대로 실제 들을 수 있는 음악으로 추출하는 작업도 렌더링이라고 부른다. 일반적으로는 잘 쓰이지는 않지만 음악하는 사람들에게 아주 친숙한 용어.
요리에서 동물의 지방에서 기름을 추출하는 것도 렌더링이라고 부른다.

농림축산 분야에서는 가축사체기계에 넣어 분쇄 및 열처리해 최종적으로 가루 형태의 산출물(비료, 또는 사료로 사용 가능)로 만들어내는 것을 렌더링이라 한다. 즉, 재활용 처리하는 것을 렌더링이라고 한다.

2. 컴퓨터 그래픽스에서의 의미


3D 형상 제작 과정
모델링(Modeling) 렌더링(Rendering)
투영(Projection) 클리핑(Clipping) 은면처리(Hidden Surface) 셰이딩(Shading) 매핑(Mapping)

컴퓨터 그래픽스 분야에서는 2차원 또는 3차원 장면을 바탕으로 컴퓨터를 이용해 사진이나 영상을 만들어내는 과정 또는 그러한 기법을 말한다. 보통 '3D 렌더링'과 같이 3D 이미지/영상과 깊은 관련을 맺고 있으며, 기술적 발전도 이곳에서 주로 이루어진다. 건물 설계, 게임, 애니메이션 등에 주로 사용된다. 이 문서에서는 3D 그래픽 렌더링을 주로 다루고 있다.

3D 그래픽 렌더링은 비실시간 렌더링과 실시간 렌더링으로 구분되며, 사용되는 기술은 거의 같지만 비실시간 렌더링이 조금 더 고급기술을 실시간 렌더링에 비해 신기술의 도입이 빠르다. 실시간 렌더링은 유의미한 프레임레이트(최소 30프레임 이상)으로 구현하기 위해서는 강력한 컴퓨팅 성능이 필요하기 때문이다.

비실시간과 실시간의 극명한 차이는 최종 사용자(플레이어 등)가 3D 영상을 직접 자유롭게 조작할 수 없느냐 있느냐에 있다.

일반적으로 비실시간 3D 영상 제작 과정은 모델링과 렌더링 과정으로 나뉜다. 모델링이 기본적인 골격을 만드는 과정이라면, 렌더링은 그 골격 표면을 처리하는 과정이라 할 수 있다. 렌더링에는 투영(projection), 클리핑(clipping), 은면처리(hidden surface), 셰이딩(shading), 매핑(mapping) 과정이 포함된다. 각 과정의 역할은 다음과 같다.
해외에서는 영화 촬영과 동시에 레이트레이싱 렌더링이 이루어지는 기법을 적용한 단편 영화가 나왔다. 제작 영상. VRay를 이용했는데, 실시간 레이트레이싱 뷰포트는 프로그램 자체가 지원하는 경우가 있으므로 별로 신기할 것은 없으며,[2] 보통 그 뷰포트는 미리보기로만 쓰인다. 실제 렌더링은 이후에 오랜 시간을 걸쳐 이루어진다. 광선 추적을 적게 하면 출력에 노이즈가 생기며, 당장 영상 속 카메라를 보아도 화면에 자글자글한 점들이 보인다. 그래서 노이즈를 없애려면 광선의 개수를 높여야 하는데, 이렇게 되면 사진 하나를 렌더링하는 데에도 고사양 CPU나 쿼드로급 GPU에서 수 분에서 수십 분이 걸리는 경우가 많다. 제대로 된 영화급이면 프레임당 수십 시간[3]이 걸리기도 한다. 이것이 영화와 게임 사이에 그래픽 차이가 생기는 이유이기도 하다. 게임에서 표시되는 영상을 부드럽게 하려면 최소 초당 30번 렌더링해야 하지만,[4] 영화와 게임은 주어진 시간이 엄청나게 차이가 나고, 수천 대의 컴퓨터로 렌더팜을 구성하여 병렬 렌더링을 하기 때문이다.

3D 그래픽 렌더링을 구성하는 요소들에는 여러 가지가 있으나 그 중 가장 주요한 요소를 꼽자면 라이팅, 텍스처 매핑, 애니메이션 등이 있다.

2.1. 라이팅

라이팅을 표현하는 개념은 크게 두 가지로 구분된다.

1. 라이팅의 동작 기법: 래스터라이제이션, 레이 트레이싱
2. 라이팅을 받는 각도에 따라 표면에 드리워지는 음영(셰이딩): 플랫(면 단위), 고라우드(꼭지점 단위), 퐁(픽셀 단위)

위 두 가지의 개념은 3D 월드에서 라이팅을 표현함에 있어 각각 필요한 개념이다.

동작 기법은 빛이 3D 월드에서 어떤 방식으로 움직이고 작용하는지에 대한 개념이고, 셰이딩은 라이팅을 받은 오브젝트의 표면이 어떻게 반응하는가의 개념이다.

그래서 1번의 개념이 2번을 대체하거나 2번의 개념을 1번이 대체하거나 하는 것이 아니고, 1번의 개념과 2번의 개념이 각각 하나씩 반드시 필요하다.

2.1.1. 라이팅이 작동하는 기법

라이팅 작동하는 기법은 크게 래스터라이저 기법와 레이 트레이싱 기법으로 나뉜다.
2.1.1.1. 래스터라이제이션 (Rasterization)
파일:Unreal Engine Rasterization Lighting.jpg
Rasterization(래스터화)는 장면의 오브젝트를 뒤에서 앞으로 그려 변환 매트릭스를 통해 3D 오브젝트를 2D 평면에 매핑하는 방식으로 작동한다.

광원(Light Source)의 모양에는 중앙에서부터 전 방향으로 뻗어나가는 포인트 라이트(Point Light), 한 곳을 집중해서 비추는 스포트 라이트(Spot Light), 햇빛처럼 한 방향으로 내리쬐는 디렉셔널 라이트(Directional Light) 등이 있으며, 필요에 따라 여러 가지 커스텀 라이팅 타입을 만들 수 있다.

최종적으로 라이팅이 오브젝트의 표면에 닿는 부분의 정보(색상, 텍스처, 노멀 등)를 기반으로 씬의 라이팅과 결합해 각 픽셀의 색상이 결정된다.

매우 간단하게 설명하자면, 라이팅이 작동하는 법을 2D화 시킨다고 보면 된다. 3D 장면을 뷰 기준으로 평면화 시킨 후 광원(Light Source)으로부터의 거리와 색상 등을 계산하여 적용하기 때문에 라이팅이 비추는 방향을 바라보고 있는 모든 오브젝트의 표면은 표면의 정보(색상, 텍스처, 노멀 등) 및 광원의 거리에 따른 페이드를 제외하고는 동일한 라이팅을 받는다. 이는 다시 말해 빛에 의해 그림자가 만들어지지 않는다는 의미이므로, 별도의 그림자 기술(섀도우 볼륨 등)을 구현해서 그림자를 표현해야 한다.

그림자뿐 아니라 실제로는 빛에 의해 만들어지는 현상(반사 등)도 전부 라이팅과 무관하게 별도로 구현해야 한다. 반사를 예로 들자면, 반사되는 표면에 카메라를 하나 더 두고 카메라 뷰를 보여주는 방식을 통해서 구현한다.

현재까지 나온 모든 게임들의 실시간 3D 그래픽은 기본적으로 이 레스터화를 사용하고 있으며, 레이 트레이싱을 지원하는 게임들도 부분적으로만 레이 트레이싱을 이용할 뿐이다.
2.1.1.1.1. 포워드 렌더링 (Forward Rendering)
가장 직관적이고 가장 먼저 사용된 렌더링 기법. 각 오브젝트의 재질과 빛을 차례대로 연산해 Forward 라는 이름이 붙었다.
하지만 이 방식은 광원의 수가 많아질수록 성능상 문제가 생기는데 간단히 생각해서 오브젝트를 n, 광원을 m이라고 할 때 화면에 표현된 계산 횟수는 n*m이 되는 문제가 있다.
하지만 광원의 갯수가 많지 않거나 응답성이 중요한 경우 가장 빠르고 속도도 매우 빠르므로 광원의 수가 많지 않거나 빠른 성능이 필요한 VR이나 모바일 등에서 사용한다.
2.1.1.1.2. 디퍼드 렌더링 (Deferred Rendering)
광원 계산을 나중으로 늦춘다고 해 Deferred(지연된) 라는 이름이 붙었다.
디퍼드 렌더링 파이프라인에서는 렌더링을 패스 단계로 나누어 일일이 연산하고 이를 나중에 한꺼번에 합치는 과정을 통해 그려낸다.

모든 광원과 객체를 한번에 연산하므로 광원의 수가 사실상 제한이 없지만 매 프레임은 이 패스를 모두 가지고 있어야 하므로 프레임버퍼에 사용되는 메모리의 요구량과 최종적으로 이를 합치는 과정에서 메모리 사용률이 높고 대역폭 또한 매우 많이 사용한다.

또한 각 패스를 별도로 렌더링하므로 반투명한 재질을 그려낼 수 없는 바이너리 연산만 가능하므로 이를 위해선 반투명 재질만 포워드 패스로 렌더링하는 테크닉이 필요하다. 이를 사용하지 않으면 디더링을 이용해 반투명 효과를 흉내내나 어디까지나 꼼수에 불과해 반투명한 재질이 겹치는 머리카락이나 포울리지 같은 부분이 매우 지저분하게 렌더링되고 MSAA와 같은 방식을 사용할 수 없어 TAA등의 포스트 프로세싱으로 이를 억제하려고 해도 디더링으로 인한 주파수가 매우 높아 소위 "자글자글"한 이미지가 나타나게 된다.

사실상 거의 대부분의 렌더러가 이 방식을 사용하고 있다.
2.1.1.1.3. 타일드 렌더링 (Tiled Rendering)
화면에 최종적으로 렌더링 공간을 격자로 나누어 각 격자 안에 보이는 객체와 광원만 계산한다.
이를 통해 캐시가 작거나 메모리에 한계가 있는 경우 효용성을 나타내지만 깊이값을 계산하지 않으므로 가려져 보이지 않는 광원이나 영향을 주지 않는 물체까지 계산하는 낭비가 생길 수 있다.
2.1.1.1.4. 클러스터드 렌더링 (Clustered Rendering)
이름에 따라 Forward+, Deferred+ 렌더링 등으로 불리나 연산할 부분을 구획으로 나누어 처리한다는 근본적인 개념은 같다.
타일드 방식과 다른 점은 2D 공간이 아닌 3D공간으로 분할해 연산하는 것이 특징으로 더 정교하게 연산을 처리한다.

포워드의 n*m 문제나 디퍼드의 메모리 대역 폭증 문제를 해결하기 위해 사용하는 방법이다.
포워드의 경우 빛이 닿지 않는 부분에 존재한 오브젝트도 해당 광원에 대한 연산이 필요해 낭비되는 연산이 생기지만 이를 3D 타일로 분할해 연산할 부분을 나누어 연산해 많은 광원을 그려낼 수 있다.

디퍼드의 경우 최종적으로 셰이딩이 이뤄질 때 공간적으로 나눠진 영역에 위치한 광원만 계산하게 되므로 전체를 읽을 필요가 없어 대역폭이 절감된다. 그러나 디퍼드 특성인 반투명 처리는 여전히 불가능하다.
2.1.1.2. 레이 트레이싱 (Ray Tracing)
파일:Unreal Engine Ray Tracing.jpg
레이 트레이싱은 카메라의 시점에서 빛을 투사하고 광원에 도착할 때까지 씬의 오브젝트 주위로 반사되는 빛의 경로를 추적하여 색상을 수집하고 축적하는 방식으로 작동한다. 구현 방식 자체는 래스터화보다 훨씬 간단하고 '현실의 빛'과 동일한 방식으로 작동하므로 래스터화보다 훨씬 사실적인 결과를 제공하지만, 각 광원마다 방출되는 n개의 광선들의 진행과 상호작용을 3D 공간 전 영역에서 실시간으로 추적하며 계산해야 하기 때문에 엄청난 연산량을 요구한다. 단순무식한 방법인 셈이다.

현실의 빛을 그대로 구현하려면 각 광원에서 방출되는 무한한 수의 광자가 온갖 물체들에 수십 수백 번씩 반사되는 것을 구현해야 하지만, 이를 초당 수백프레임씩 실시간으로 렌더링하는 것은 불가능하다. 따라서 실제로는 몬테 카를로 알고리즘을 이용해 대표성을 띠는 광선 n개만을 선별해 계산을 수행하여 정확도 손실을 최소화하면서 결과물의 품질을 유지한다.

결과물의 품질에 여러 가지로 큰 차이가 있지만, 가장 두드러지는 점은 래스터화와 달리 '편법'을 써서 그림자를 만들 필요가 없다는 점이다. 레이 트레이싱을 사용한다면 광원에서 나오는 광선들을 추적하는 과정에서 빛이 덜 닿는 부분은 자연스럽게 어두워지며, 그 어두운 부분이 바로 그림자가 된다. 이것은 실제 빛에 의해 그림자가 생기는 원리와 동일하다.

즉, 레이 트레이싱은 '광원(빛의 발산점)에서 카메라까지 광선을 추적하는 행위'를 의미한다. 그리고 복합적인 상호작용을 고려한다면 연산력 소요가 과도하게 커지므로, 일반적으로 그냥 레이 트레이싱을 사용했다고 한다면 가장 기본적인 라이팅(광원의 방향, 밝기, 색, 범위, 가려짐에 의한 빛 차단)에만 레이 트레이싱을 사용한 것을 말한다. 따라서 게임 내에서 설정하는 레이 트레이싱 옵션은 보통 추적하는 광선의 수와 광선을 방출하는 광원의 수 등을 조정하는 것이고, 이외의 복합적인 라이팅 효과는 이전의 래스터 알고리즘을 그대로 사용한다.
2.1.1.2.1. 패스 트레이싱 (Path Tracing)
레이 트레이싱이 충분히 많은 수의 광선을 추적하고, 정반사, 난반사, 확산, 굴절 등의 복합적인 상호작용까지 계산한다면 이론상 래스터화에서는 편법으로 구현해야 하는 반사, 앰비언트 오클루전, 전역 조명(글로벌 일루미네이션), 컬러 블리딩과 같은 복잡한 효과들까지 실제 빛의 현상과 완전히 동일하게 시뮬레이션하여 구현이 가능하다.

하지만 그냥 광선 추적만 해도 래스터식 구현보다 훨씬 많은 연산력을 잡아먹는 판인데, 이런 세세한 상호작용까지 모두 계산하는 것은 지금의 소비자용 최상위 GPU조차 DLSS 등의 저해상도 렌더링 기법과 프레임 보간까지 동원해야 간신히 실사용 가능한 수준의 이미지를 뽑을 수 있는 상황이다.

때문에 상술하였듯 일반적인 레이 트레이싱 기능은 단순 광선 추적만을 의미하는 경우가 대부분이고, 이런 세부적인 상호작용으로 인한 효과까지 구현하는 것은 따로 패스 트레이싱(Path Tracing)이라 구분지어 부른다. 물론 적용한 게임들도 매우 한정적이다.

이러한 명칭 구분 탓에 패스 트레이싱이 레이 트레이싱보다 발전된 개념이라고 알고 있거나, 혹은 레이 트레이싱의 단점을 해결한 것이라고 오해하는 경우도 많다. 그러나 패스 트레이싱은 레이 트레이싱을 이용한 여러 가지 특수 효과를 구현하는 것을 의미하는 것으로, 일종의 하옵과 상옵 같은 개념이지 레이 트레이싱을 대체하는 개념이 아니다.

이런 배경 때문에 단순히 라이팅 작동 방법을 래스터화에서 레이 트레이싱으로 바꾸는 것만으로는 시각적 품질이 획기적으로 발전된 것처럼 느껴지지는 않는다. 기존에 래스터화에서 라이팅과 별개로 구현했던 여러 가지 효과들(반사, 글로벌 일루미네이션, 앰비언트 오클루전 등)을 레이 트레이싱을 이용해서 실제 빛에 의해 만들어지는 것과 동일한 방법으로 구현하는 패스 트레이싱이 적용될 때 비로소 레이 트레이싱이 주는 진정한 시각적 품질 향상을 느낄 수 있다. 물론 그만큼 늘어나는 연산량을 컴퓨터가 부담할 수 있을 때의 이야기지만.[5]

그에 비해 연산 시간에 제한이 없는 프로덕션 렌더러들은 기본적으로 패스트레이싱 기반이다.

2.1.2. 표면에 라이팅이 반응하는 기법 (셰이딩)

셰이딩 기법은 크게 면 단위(Per-Polygon), 꼭지점 단위(Per-Vertex), 픽셀 단위(Per-Pixel), 이렇게 3가지로 구분된다.

텍스처 매핑에 여러 가지 효과를 주거나 무슨 무슨 셰이딩이라고 하거나, 멀티 텍스처를 활용한 머티리얼(Material) 자체를 셰이더라고 부르거나, Direct3D 8 이후 시절부터 등장한 각종 특수효과에 사용되는 기술을 셰이더 모델이라고 이름 붙여서 사용하고 있으나, 이런 것들의 개념과 기본 3가지 셰이딩과는 전혀 다른 개념으로, 여기에서 말하는 셰이딩과는 무관하다. 자세한 내용은 아래 펼치기 참조
[ 펼치기 · 접기 ]
이것은 3D 그래픽 하드웨어로 폴리곤 버텍스 처리 연산을 가속하기 위한 기능을 두고 OpenGL에서는 Vertex Program, Direct3D에서는 Vertex Shader라고 이름 붙였으며, 텍스처 효과 처리 연산을 가속하기 위한 기능을 두고 OpenGL에서는 Fragment Program, Direct3D에서는 Pixel Shader라고 이름을 붙이며 여러가지 오해와 혼란을 불러 일으켰다.

OpenGL에서 정한 이름이 그 기능 자체를 그대로 의미하는 이름에 가깝지만, PC 시장에서 OpenGL을 제치고 Direct3D가 대세가 되면서 Direct3D에서 사용하는 용어가 그대로 셰이더로 굳어진 상태다. 아예 엔비디아 등의 그래픽 칩셋 제조사에서도 공식적으로 셰이더 모델(내부에 픽셀 셰이더 버전 x, 버텍스 셰이더 버전 x, 지오메트리 셰이더, 메시 셰이더 등)이라고 이름을 붙였다.
2.1.2.1. 플랫 셰이딩(Flat Shading) / Per-Polygon Shading
파일:Flat-shading-sample.jpg
폴리곤의 한 면 단위로 음영이 드리워진다. 폴리곤이 거의 처음 등장한 시절의 고전 3D 게임에 이런 방식이 사용됐다. Per-Polygon Shading이라고 부르기도 한다.
2.1.2.2. 구로 셰이딩(Gouraud Shading) / Per-Vertex Shading
파일:Per Vertex Shading.png
폴리곤의 면 단위가 아닌, 각 꼭지점(정점: Vertex)를 단위로 음영이 반응하는 기준점을 두고 폴리곤의 면은 해당 면에 접하는 각 꼭지점들이 반응하는 음영값을 평균을 내서 적용한다.

앙리 구로(Henri Gouraud)가 고안해낸 방식이라서 구로 셰이딩으로 불렸으나, 그 구현 방법을 정확히 표현하는 버텍스 단위 셰이딩(Per-Vertex Shading)으로 불리기도 한다.

Per-Vertex Lighting으로 불리기도 하는데 둘 다 같은 것을 의미하는 말이지만, 굳이 정확히 하자면 라이팅이 표면에 닿아서 반응하는 것을 가리키는 기술이므로 Per-Vertex Shading이 정확한 표현이다.
2.1.2.3. 퐁 셰이딩(Phong shading) / Per-Pixel Shading
파일:Per Pixel Shading.png
폴리곤의 면이나 꼭지점과 무관하게, 3D 월드상의 오브젝트의 크기에 따른 픽셀을 기준으로 음영을 드리운다.

베트남계 미국인인 부이 투옹 퐁(Bui Tuong Phong)이 고안한 방법이라서 퐁 셰이딩이라고 불리며, 그 구현 방법을 정확히 표현하는 픽셀 단위 셰이딩(Per-Pixel Shading)으로 불리기도 한다. 게임 과는 관련 없다.

픽셀 단위 셰이딩이 처음 게임에 실시간으로 사용된 초창기인 2000년대 초중반에는 퐁 맵(Phong Map)이라는 그레이스케일 텍스처[6][7]를 표면에 텍스처 매핑으로 입혀 두고, 그 텍스처의 텍셀(Texel: Texture Pixel, 텍스처의 픽셀)을 기준으로 음영을 드리우고, 퐁 맵이 입혀지지 않은 부분은 고라우드 셰이딩(Per-Vertex Shading)을 사용하는 방법을 활용하기도 했는데, 이유는 셰이딩이 픽셀 단위로 연산되는 부분을 최소화하기 위해서였다.

퐁 맵은 범프 매핑(Bump Mapping)의 일종으로, 노멀 매핑(Normal Mapping)의 단순화된 버전[8]이다.

2000년대 후반 이후로는 퐁 맵 없이 모든 표면에 픽셀 단위 셰이딩을 사용하는 것을 기본값으로 하고 있다.

Per-Pixel Lighting으로 불리기도 하는데 둘 다 같은 것을 의미하는 말이지만, 굳이 정확히 하자면 라이팅이 표면에 닿아서 반응하는 것을 가리키는 기술이므로 Per-Pixel Shading이 정확한 표현이다.

2.1.3. 기타

기본적인 큰 개념인 라이팅이 작동하는 기법과 셰이딩 외에 라이팅 관련 다양한 기술들이 있다.

2.2. 텍스처 매핑 (Texture Mapping)

파일:texturing.png
텍스처 매핑은 텍스처(2D 이미지)를 폴리곤의 표면에 입히는 것이다.

원시적인 3D 그래픽은 폴리곤의 면이 단순히 단색으로만 처리되었으나, 단조로움을 극복하기 위해 이미지를 폴리곤에 입히는 시도가 이루어졌다. 그 이미지를 텍스처(Texture: 직물)라고 이름 붙였고, 텍스처를 폴리곤의 표면에 입히는 것을 매핑(Mapping)이라고 불렀다.

매핑이라고 부른 이유는 텍스처의 어느 부분을 폴리곤 표면의 어느 부분에 붙일지를 위해서 폴리곤 표면의 각 위치에 좌표를 지정해 놓고 텍스처의 가로 세로 픽셀 위치에 그 좌표를 일치화 하는 과정이기 때문에 텍스처를 맵(지도: 지도)이라고 부르고, 그 맵을 폴리곤에 붙이는 과정을 매핑이라고 한 것이다. 현재는 이것을 UV 매핑 또는 UVW 매핑이라고 부른다.

처음에는 단순히 이미지 한장을 붙이기만 했으나, 같은 표면에 각기 다른 효과를 표현하는 2가지 종류 이상의 텍스처를 붙이면서 다중 텍스처링(Multi Texturing)이라고 불렀다. 퀘이크 3 아레나 엔진(id Tech 3)에서는 이 멀티 텍스처링을 셰이더(Shader)라고 불렀고, 언리얼 엔진 1에서는 그냥 멀티 텍스처링이라고 했다가 언리얼 엔진 2에서 GUI 형태의 머티리얼 에디터를 도입하면서 멀티 텍스처링에 머티리얼(Material, 재질)이라는 이름을 붙였다. 이후 언리얼 엔진 3에서는 머티리얼 에디터에서 마우스로 쭉쭉 이어주기만 하면 하드웨어 셰이더 코드(HLSL, GLSL, Cg)가 자동으로 생성되는 기능을 추가했고, 언리얼 엔진 3가 크게 대중화되면서 머티리얼이라는 용어로 굳어졌다.

머티리얼에 사용되는 텍스처 매핑의 종류는 매우 다양하며 크게 3가지로 구분할 수 있다.

1. 지오메트리(폴리곤)에 직접적인 변화를 주는 텍스처 매핑
2. 셰이딩 결과에 변화를 주는 텍스처 매핑
3. 지오메트리와 셰이딩에 영향을 주지 않는 텍스처 매핑

2.2.1. 지오메트리(폴리곤)에 변화를 주는 텍스처 매핑

2.2.1.1. 디스플레이스먼트 매핑
2.2.1.2. 하이트 맵
2.2.1.3. 월드 포지션 오프셋

2.2.2. 셰이딩 결과에 변화를 주는 텍스처 매핑

2.2.2.1. 엠보스 범프 매핑
파일:Emboss Bump Map.png
왼쪽: 범프 맵 텍스처 / 오른쪽: 엠보스 범프 매핑 렌더링 결과

엠보스 범프 매핑(Emboss Bump Mapping)은 그레이스케일로 된 범프 맵 텍스처에 광원을 비추면 범프 맵 텍스처의 밝은 색은 폴리곤의 노멀 벡터가 높이, 어두울 수록 낮게 있는 것처럼 표면의 음영 결과가 달라진다.


실제로 폴리곤은 평면이지만, 약간 울퉁불퉁한 효과를 내기 위한 가벼운 눈속임으로 사용된다. 고라우드 셰이딩(Per-Vertex Shading, 꼭지점 단위 셰이딩)이나 퐁 셰이딩(Per-Pixel Shading)에서 사용 가능하다.
2.2.2.2. Dot3 범프 매핑(노멀 매핑)
파일:Normal Map Texture.png
왼쪽: 실제 폴리곤 / 중앙: 실제 폴리곤의 노멀 백터를 이미지로 저장한 노멀 맵 텍스처 / 오른쪽: 노멀 매핑 렌더링 결과

Dot3 Bump Mapping 또는 노멀 매핑(Normal Mapping)은 폴리곤의 노멀 백터(Normal Vector)를 이미지로 저장한 노멀 맵 텍스처를 매핑한 표면에 광원을 비추면 노멀 맵 텍스처 이미지가 실제 폴리곤의 노멀 백터인 것처럼 음영이 변화한다.

엠보스 범프 매핑과 마찬가지로 단순한 눈속임이지만, 엠보스 범프 매핑은 단순히 높낮이 효과만 표현하는데 그치는데 반해, Dot3 범프 매핑(노멀 매핑)은 평면상에서 모든 방향으로 굴곡이 있는 것처럼 표현이 가능하다. 즉, 엠보스 범프 매핑은 단순히 한 방향(위)로 솟아 오르는 2D 효과라면, Dot3 범프 매핑(노멀 매핑)은 위로 솟아 오르는 효과뿐 아니라 옆 방향으로도 폴리곤이 틀어진 것처럼 음영을 왜곡해서 음영으로 인한 입체감을 살려주는 3D 효과인 것이다.
파일:Rendering_with_normal_mapping.gif
왼쪽: 실제 폴리곤 / 오른쪽: 노멀 매핑 렌더링 결과
다만, 실제 3D로 만들어주는 것은 아니며 어디까지나 평면상에서 음영을 왜곡해 주는 효과이기 때문에 비스듬한 각도에서 본다면 그 한계가 여실히 드러난다.

위의 비교 이미지는 극단적으로 노멀 매핑의 한계를 보여주기 위한 것이고, 실제로는 잘 사용하면 매우 뛰어난 효과를 볼 수 있다. 2000년대 중반 이후로는 매우 단순하고 고전적인 그래픽을 가진 게임들을 제외하고는 모든 게임들이 노멀 매핑을 사용한다고 보면 된다.
파일:character_creation1.jpg 파일:character_creation2.jpg
2,000,000 폴리곤을 사용한 하이 폴리곤 모델 5,000 폴리곤을 사용한 로우 폴리곤 모델
파일:character_creation3.jpg
로우 폴리곤 모델에 하이 폴리곤을 바탕으로 만든 노멀 맵을 적용한 최종 결과물[9]
2.2.2.3. 스페큘러 매핑
2.2.2.4. 글로시니스 매핑
2.2.2.5. 러프니스 매핑

2.2.3. 지오메트리(폴리곤)와 셰이딩에 영향을 주지 않는 텍스처 매핑

2.2.3.1. 디테일 텍스처
디테일 텍스처(Detail Texture)는
2.2.3.2. 환경 매핑
환경 매핑(Environment Mapping)은 주로 철이나 크롬 같은 재질로 된 부분에서 주변의 환경을 반사해 주는 듯한 눈속임을 위한 텍스처 매핑이다.

환경 매핑을 적용하는 오브젝트가 평면이라면 일반적인 단순한 텍스처를 사용하고, 공처럼 둥근 오브젝트라면 큐브 맵(Cube Map)이라고 불리는 정육면체를 펼쳐 놓은 6개의 면이 있는 텍스처를 사용한다.

환경맵에 사용되는 텍스처는 주로 주변 경관을 사진으로 찍은 듯한 이미지를 사용한다.

환경 매핑이 적용된 표면에 범프 매핑(Dot3/노멀 매핑)까지 동시에 적용을 하면 환경 맵 범프 매핑(Environment-Mapped Bump Mapping, 줄여서 EMBM)이라고 부르기도 했는데, 1990년대 후반에서 2000년대 초반에는 그 당시로서 범프 매핑(노멀 매핑)과 환경 매핑이라는 2개의 고급 텍스처 매핑 기술이 동시에 한 표면에 적용되는 일이 흔하지 않았기 때문에 저런 이름을 별도로 붙이기도 했었다.

그러나 2000년대 중반 이후로는 최소 3 ~ 5개(노멀 맵, 스페큘러 맵, 디퓨즈 맵, 그리고 필요시 라이트 맵, 섀도우 맵)가 기본이고, 그 외 특수한 경우 환경 맵, 글로스 맵, 오퍼시티 맵, 마스크 맵, 하이트 맵 등 수많은 텍스처들이 한 표면에 사용되는 경우가 허다하므로, 환경 맵과 범프 매핑이 동시에 사용되는 경우에도, 거기에는 환경 맵과 범프 맵 뿐만이 아닌 다른 수많은 텍스처 매핑들이 동시에 사용되고 있기 때문에 환경 맵 범프 매핑 같은 이름은 전혀 의미가 없으므로 사용되지 않는다.

2.2.3.3. 패럴랙스 매핑
패럴랙스 매핑(Parallax Mapping, 시차 매핑)은 그레이스케일로 된 하이트 맵 텍스처를 사용해서 카메라 뷰를 기준으로, 바라보는 방향에 따라 해당 표면의 이미지를 늘리거나 줄이는 방식으로 왜곡시킨다.

패럴랙스 매핑이 노멀 매핑보다 발전된 노멀 매핑의 상위 개념이라는 오해가 만연해 있는데, 노멀 매핑과 패럴랙스 매핑은 완전히 다른 별개의 매핑 기술이고, 둘 다 동시에 사용해야 극대화된 효과를 볼 수 있다.

노멀 매핑은 셰이딩에 영향을 주는 기술이고, 패럴랙스 매핑은 셰이딩과 무관하기 때문에 라이팅의 위치와 각도 등에 전혀 영향을 받지 않는다. 노멀 매핑과는 구현 개념 자체부터가 완전히 다른 기술이다.

패럴랙스 매핑은 릴리프 매핑(Relief Mapping), 오프셋 매핑(Offset Mapping), 범프 오프셋 매핑(Bump Offset Mapping), 패럴랙스 오프셋 매핑(Parallax Offset Mapping)뷰 의존 디스플레이스먼트 매핑(View-Dependent Displacement Mapping) 등의 다양한 이름으로 불리기도 했으나, 2000년에 후반부터는 패럴랙스 매핑이라는 이름으로 굳어졌다.
2.2.3.4. 패럴랙스 오클루전 매핑
패럴랙스 오클루전 매핑(Parallax Occlusion Mapping, 시차 가려짐 매핑)은 패럴랙스 매핑의 상위 개념으로, 패럴랙스 매핑에서 조금 더 발전된 방식이다.

패럴랙스 매핑은 이미지를 볼록한 형태로 왜곡시키기 때문에 시야 각도를 비스듬하게 이동할수록 위로 튀어나오는 이미지가 그 뒤의 이미지를 가리는 듯한 왜곡을 표현할 수 없고 보기 흉하게 비정상적으로 왜곡된다.

그러나 패럴랙스 오클루전 매핑은 이미지를 오목한 형태로 왜곡시키기 때문에 시야 각도가 비스듬하게 이동해도 패럴랙스 매핑에 비해 비교적 정상적으로 이미지를 왜곡시킨다. 이로 인해 튀어나온 듯한 이미지 뒤에 있는 부분이 가려지는 듯한, 원근법상 올바른 깊이감을 보여준다.

패럴랙스 오클루전 매핑은 패럴랙스 오클루디드 매핑(Parallax Occluded Mapping), 스팁 패럴랙스 매핑(Steep Paallax Mapping), 버추얼 디스플레이스먼트 매핑(Virtual Displacement Mapping) 등의 이름으로도 불렸으나, 2000년대 후반부터는 패럴랙스 오클루전 매핑으로 굳어졌다.
2.2.3.5. 호라이즌 매핑
호라이즌 매핑(Horizon Mapping)은 하이트 맵 이미지를 이용해서 이미지 내부의 자체 그림자(Self-Shadow)를 생성해 주는 기술이다.

셰이딩과 무관하고 라이팅의 방향과 각도에도 전혀 영향을 받지 않는, 라이팅과는 완전 무관한 편법을 이용한 이미지 왜곡을 통한 눈속임으로 그림자를 만들어 내는 기술이다.

호라이즌 매핑을 통해 생성된 그림자는 별도의 인스턴스 오브젝트의 위치와 방향을 통해 반응하며, 이것을 라이팅에 반응하는 것처럼 보이게 만들기 위해 호라이즌 매핑의 인스턴스 오브젝트와 광원을 그룹지정하여 하나로 묶어서 움직이게 만드는 방법을 사용한다.

이 기술이 패럴랙스 오클루전 매핑의 상위 개념이라고 오해 받는 경우가 있으나, 전혀 다른 별개의 기술이다.

패럴랙스 매핑이 발전한 방식은 패럴랙스 오클루전 매핑이지만 호라이즌 매핑은 그것들과는 전혀 별개며, 패럴랙스 매핑 또는 패럴랙스 오클루전 매핑과 동시에 사용이 가능하다.

최상의 결과물을 얻으려면 노멀 매핑, 패럴랙스 오클루전 매핑, 호라이즌 매핑을 동시에 사용해야 한다.

주로 패럴랙스 오클루전 매핑과 더불어 자체 그림자(Self-Shadow)도 추가로 구현할 필요가 있는 일부 머티리얼에 추가하는 경우 외에는 호라이즌 매핑만 별도로 쓰이는 일이 거의 없어서 호라이즌 매핑이라고 별도로 불려지는 일은 거의 없다.

간혹 패럴랙스 오클루전 매핑에 호라이즌 매핑을 함께 사용하면서 그것을 그냥 호라이즌 매핑이라고 부르는 경우도 있는데, 그런 것 때문에 호라이즌 매핑이 패럴랙스 오클루전 매핑보다 발전된 방식이라고 오해가 발생하는 것이다.

패럴랙스 매핑에는 호라이즌 매핑을 함께 사용하지 않고, 패럴랙스 오클루전 매핑에는 호라이즌 매핑을 함께 사용하면서 마치 패럴랙스 오클루전 매핑에는 자체 그림자(Self-Shadow)가 기본으로 포함되어 있는 것처럼, 호라이즌 매핑의 기능을 패럴랙스 오클루전 매핑에 포함시켜 버리면서 호라이즌 매핑의 존재 자체를 지워버리는 경우도 있다. 하지만 명백히 패럴랙스 매핑(또는 패럴랙스 오클루전 매핑)과 호라이즌 매핑은 별개의 기술이며, 노멀 매핑, 패럴랙스 매핑(또는 패럴랙스 오클루전 매핑), 호라이즌 매핑 셋 다 동시에 사용해야 최상의 효과를 볼 수 있다.

2.3. 관련 문서

3. 컴퓨터 마크업 언어에서의 의미

마크업 언어가 갖는 특성으로, 작성된 마크업 언어를 엔진이 해석해서 사람의 눈으로 볼 수 있도록 만들어(그려)주는 과정을 ‘렌더링’이라고 한다.

3.1. 관련 문서


[1] 가끔 카메라를 지나치게 가까이 벽이나 캐릭터에 대면 벽이 뚫려 보이거나 캐릭터 안구가 보이는 경우가 있는데 이는 렌더링 영역을 벗어나서 클리핑된 것이다.[2] 대표적으로 Blender.[3] 물론 영화편집 시에는 하술될 렌더팜을 구성해 작업하기 때문에 영화 한 편당 반나절 정도의 시간에 편집을 마친다. 편집 회의에 따라 변경점도 많고 제작자 컨펌도 받고 해야 해서 시간이 중요하다.[4] 게다가 게임은 접근성을 위해 사양 조절도 해야 한다. 부품 능력은 곧 돈으로 나타나기 때문이다. 누구나 Core i9-13900K, RTX 4090를 쓰진 않으니까.[5] 워낙에 막대한 연산량을 요구하다 보니 패스 트레이싱을 적용했다고 하는 사이버펑크 2077도 반사 횟수와 샘플당 광선의 수를 모두 2회로 제한하는 2B2R 수준으로 구현해두었는데#, 이 정도면 진정한 의미의 패스 트레이싱과는 거리가 멀고 레이 트레이싱을 조금 더 상세하게 적용한 수준에 가깝다.[6] 회색조의 텍스처로, 흰색에 가까울수록 밝고, 검은색에 가까울수록 어두운 부분을 표현한다.[7] 이 그레이스케일 텍스처는 퐁 맵에만 사용되는 게 아니고, 하이트 필드(높낮이 지형)를 구현하기 위한 하이트맵(Height Map)으로 사용되기도 하고, 디스플레이스먼트 매핑에 사용될 때는 디스플레이스먼트 맵(Displacement Map)이라고 부르기도 하며, 엠보스 범프 매핑에 사용될 때는 범프 맵(Bump Map)이라고 부르기도 한다.[8] 노멀 매핑은 표면의 노멀(법선) 정보에 픽셀 단위 셰이딩을 활용해 하이 폴리곤에서 추출한 노멀 맵 텍스처를 로우 폴리곤에 입혀 로우 폴리곤에서 하이 폴리곤의 음영을 보여주는 눈속임을 하지만, 퐁 맵은 단순히 밝고 어두운 정보만 가지고 있는 텍스처를 폴리곤에 입혀서 어느 표면이 조금 더 밝고 어느 표면이 조금 더 어두운가를 표현하는 데에 그친다.[9] 이 결과물에는 노멀 매핑만 사용된 것이 아니고, HDR을 비롯한 갖가지 효과들이 함께 사용된 것이다.