나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2025-09-16 00:31:53

렌더링

셰이더에서 넘어옴

1. 일반적 의미2. 컴퓨터 그래픽스에서의 의미
2.1. 라이팅
2.1.1. 라이팅이 작동하는 기법
2.1.1.1. 래스터라이제이션 (Rasterization)2.1.1.2. 레이 트레이싱 (Ray 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)으로부터의 거리와 색상 등을 계산하여 적용하기 때문에 라이팅이 비추는 방향을 바라보고 있는 모든 오브젝트의 표면은 표면의 정보(색상, 텍스처, 노멀 등) 및 광원의 거리에 따른 페이드를 제외하고는 주변 물체의 가려짐과 상관없이 동일한 결과를 얻는다.

오브젝트로 가려진 뒷 부분의 표면도 동일하게 라이팅을 받는다는 뜻이고 그것은 곧 그림자가 없음을 의미한다. 그래서 별도의 그림자 기술(섀도우 볼륨 등)을 구현해서 그림자를 표현하며, 그렇게 만들어진 그림자들은 광원과는 별도로 만들어지는 것이다. 물론 광원의 위치와 각도 등을 고려해서 그림자의 모양이 생성되기는 하지만, 본질적으로 광원에 의해 생성되는 그림자가 아니다.

그림자뿐 아니라 실제로는 빛에 의해 만들어지는 현상(반사 등)도 전부 라이팅과 무관하게 별도로 구현하는 기술들이다. 반사를 예로 들자면, 반사되는 표면에 카메라를 하나 더 두고 카메라 뷰를 보여주는 것이다. 즉, 실제라면 빛이 그대로 전면 반사되어 비추는 현상이지만, 이런 구현은 라이팅과 전혀 무관하게 별도의 편법으로 구현하는 것이다.

1990년대 중반에 나온 퀘이크 1을 비롯해서 현재까지 나온 모든 게임들의 실시간 3D 그래픽은 이 레스터화를 사용하고 있는 것이며, RTX 사용하는 레이 트레이싱 지원 게임들도 부분적으로만 레이 트레이싱을 이용할 뿐이다.
2.1.1.2. 레이 트레이싱 (Ray Tracing)
파일:Unreal Engine Ray Tracing.jpg
레이 트레이싱은 카메라의 시점에서 빛을 투사하고 광원에 도착할 때까지 씬의 오브젝트 주위로 반사되는 빛의 경로를 추적하여 색상을 수집하고 축적하는 방식으로 작동한다. 실제 물리적인 빛의 직진을 그대로 시뮬레이션하기 때문에 래스터화보다 훨씬 고퀄리티의 사실적인 결과를 제공한다. 구현 방식 자체만으로 보자면 래스터화보다 레이 트레이싱이 훨씬 간단하다. 하지만 모든 광원에 대한 빛의 이동 경로를 3D 공간 전 영역에서 추적하며 계산되어야 하기 때문에 엄청난 연산량을 필요로 한다. 구현 개념과 방법 자체는 어려운 게 아니고 매우 쉽다. 매우 단순하고 정확하면서 무식한 방법인 것이다.

포인트 라이트(Point Light), 스포트 라이트(Spot Light), 디렉셔널 라이트(Directional Light) 등 필요에 따라 여러가지 커스텀 라이팅 타입의 광원(Light Source)의 모양을 만들 수 있는 점과 최종적으로 메시(모델)에 저장된 정보(색상, 텍스처, 노멀)를 기반으로 각 픽셀의 색상이 결정되는 것은 래스터화와 동일하다. 이것은 래스터화냐인지 레이 트레이싱인지와는 별개로 단순히 광원이 어떻게 생겼느냐에 대한 것이기 때문이다.

결과물의 품질에 여러 가지로 큰 차이가 있지만, 가장 두드러지는 점은 자연스러운 그림자가 자동으로 생성된다는 점이다. 정확히 말하자면, 사실은 그림자라는 것은 별도로 존재하지 않는다. 오브젝트에 의해 광원이 가려진 표면에는 빛이 닿지 않기 때문에 빛이 닿지 않는 부분은 더 어둡게 되며, 우리는 바로 그 어두운 부분을 그림자라고 부르는 것이다. 이것은 현실에서 그림자가 생기는 원리와 동일하다. 그렇기 때문에 래스터화를 사용할 때 처럼 별도의 그림자 기술을 구현할 필요가 없다.

레이 트레이싱의 개념은 이것이 전부다. 여기에 레이 트레이싱(광선 추적)을 추가로 더 활용하여 래스터화에서 편법으로 구현하던 효과(여러 가지 빛에 의해 만들어지는 현상, 반사 등)들을 실제 빛이 움직이는 것과 동일한 물리 현상을 시뮬레이션하여 구현할 수 있다.

위에 래스터화에서 예를 들었던 반사 효과처럼 카메라 뷰를 활용한 편법이 아닌, 레이 트레이싱을 통해 빛이 거울과 같은 표면에 그대로 반사되는 현상을 시뮬레이션할 수 있다. 물론 이런 현상들을 더 구현하려면 레이 트레이싱으로 특정 표면에 반사가 더 일어나기 위해 빛이 어떤 표면에서 어떻게 더 튕기고(Bounce) 반응하는지를 구현하는 것들이 필요하다. 반사 뿐 아니라 기존에 래스터화에서 편법으로 구현한 앰비언트 오클루전, 전역 조명(글로벌 일루미네이션), 컬러 블리딩 등도 실제 빛의 현상과 완전히 동일하게 시뮬레이션하여 구현이 가능하다. 레이 트레이싱을 이용해 이렇게 여러가지 효과를 구현하는 것을 패스 트레이싱(Path Tracing)이라고 한다.

이 패스 트레이싱이 레이 트레이싱보다 발전된 개념이라거나, 레이 트레이싱의 단점을 해결한 것이 패스 트레이싱이라는 오해가 있기도 한데, 패스 트레이싱은 레이 트레이싱을 이용한 여러가지 특수 효과를 구현하는 것을 의미하는 것이며, 레이 트레이싱을 대체하는 개념이 아니다.

레이 트레이싱은 광원(빛의 발산점)에서 카메라까지 광선을 추적하는 행위 그 자체를 의미하는 것이고, 일반적으로 그냥 레이 트레이싱을 사용했다고 한다면, 가장 기본적인 것(광원의 방향, 밝기, 색, 범위, 가려짐에 의한 빛 차단)에만 레이 트레이싱을 사용한 것을 말한다.

패스 트레이싱을 사용했다고 한다면, 기본적인 것 외에도 표면에 닿은 광선이 표면의 난반사 색상을 머금고 한번(또는 그 이상) 더 튕겨서(Bounce) 추가로 확산하는 것을 구현(글로벌 일루미네이션)하거나, 뻗어나가는 광선이 한 표면에 그대로 전면 반사(거울 효과)를 하거나, 유리 같은 표면을 지나면서 광선이 구불구불(굴절 효과)해지거나 하는 효과들을 구현하는 것을 의미한다.[5]

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

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)이라는 그레이스케일 텍스처[7][8]를 표면에 텍스처 매핑으로 입혀 두고, 그 텍스처의 텍셀(Texel: Texture Pixel, 텍스처의 픽셀)을 기준으로 음영을 드리우고, 퐁 맵이 입혀지지 않은 부분은 고라우드 셰이딩(Per-Vertex Shading)을 사용하는 방법을 활용하기도 했는데, 이유는 셰이딩이 픽셀 단위로 연산되는 부분을 최소화하기 위해서였다.

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

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
로우 폴리곤 모델에 하이 폴리곤을 바탕으로 만든 노멀 맵을 적용한 최종 결과물[10]
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년대 중반 이후로는 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] 즉 광선을 추적해서 빛에 의한 현상을 반영하여 렌더링하는 방법 자체를 의미하는 레이 트레이싱(광선 추적)이라는 개념을 가지고서, 성능상의 이유로 가장 기본적인 현상만을 구현하는 것을 그냥 레이 트레이싱이라고 부르고, 빛에 의한 다른 여러 가지 현상들도 레이 트레이싱(광선 추적)을 이용해서 구현하는 것을 패스 트레이싱이라고 부르는 것이다.[6] 하지만 연산량이 높아 성능 저하는 감수해야 한다.[7] 회색조의 텍스처로, 흰색에 가까울수록 밝고, 검은색에 가까울수록 어두운 부분을 표현한다.[8] 이 그레이스케일 텍스처는 퐁 맵에만 사용되는 게 아니고, 하이트 필드(높낮이 지형)를 구현하기 위한 하이트맵(Height Map)으로 사용되기도 하고, 디스플레이스먼트 매핑에 사용될 때는 디스플레이스먼트 맵(Displacement Map)이라고 부르기도 하며, 엠보스 범프 매핑에 사용될 때는 범프 맵(Bump Map)이라고 부르기도 한다.[9] 노멀 매핑은 표면의 노멀(법선) 정보에 픽셀 단위 셰이딩을 활용해 하이 폴리곤에서 추출한 노멀 맵 텍스처를 로우 폴리곤에 입혀 로우 폴리곤에서 하이 폴리곤의 음영을 보여주는 눈속임을 하지만, 퐁 맵은 단순히 밝고 어두운 정보만 가지고 있는 텍스처를 폴리곤에 입혀서 어느 표면이 조금 더 밝고 어느 표면이 조금 더 어두운가를 표현하는 데에 그친다.[10] 이 결과물에는 노멀 매핑만 사용된 것이 아니고, HDR을 비롯한 갖가지 효과들이 함께 사용된 것이다.