렌더링

POV-Ray 3.6을 사용해 렌더링된 이미지 블렌더를 사용하여 여러 스타일로 렌더링된 건축 시각화]] **렌더링**(rendering) 또는 **이미지 합성**은 3D 모델과 같은 입력 데이터로부터 사실적인 또는 비사실적인 이미지를 생성하는 과정이다. "렌더링"이라는 단어는 원래 예술가가 실제 또는 상상의 것을 묘사할 때 수행하는 작업을 의미하며(완성된 예술 작품 또한 "렌더링"이라고 불림),doi=10.1093/OED/1142023199doi=10.1093/OED/1095944705doi=10.1093/OED/1143106586doi=10.1093/OED/1039673413 오늘날에는 일반적으로 컴퓨터 프로그램을 사용하여 (종종 예술가가 생성한) 정밀한 설명으로부터 이미지나 비디오를 생성하는 것을 의미한다. 렌더링을 수행하는 소프트웨어 애플리케이션 또는 컴포넌트를 **렌더링 엔진**url-status=live, **렌더 엔진**, **렌더링 시스템**, **그래픽스 엔진**, 또는 간단히 **렌더러**라고 부른다. 이미지가 즉시 생성 및 표시되는 (이상적으로는 움직임이나 애니메이션의 인상을 줄 만큼 충분히 빠른) 실시간 렌더링과, 나중에 보기 위해 이미지 또는 영화나 비디오 프레임을 생성하는 오프라인 렌더링(때로는 사전 렌더링이라고도 함)이 구별된다. 오프라인 렌더링은 더 느리고 고품질의 렌더러를 사용할 수 있다. 게임과 같은 인터랙티브 애플리케이션은 사전 렌더링된 콘텐츠를 포함할 수 있지만 주로 실시간 렌더링을 사용해야 한다. 렌더링은 특정 시점에서 본 3D 공간의 좌표를 사용하여 정의된 장면이나 개체의 이미지를 생성할 수 있다. 이러한 3차원 렌더링은 광학, 시각 연구, 수학 및 소프트웨어 공학의 지식과 아이디어를 사용하며, 비디오 게임, 시뮬레이터, 영화 및 TV용 시각 효과, 디자인 시각화, 의료 진단과 같은 응용 분야를 가진다. 사실적인 3차원 렌더링은 환경에서 빛의 전파를 모델링하는 것을 필요로 한다. 예를 들어 렌더링 방정식을 적용하는 것이다. 실시간 렌더링은 고성능 래스터화 알고리즘을 사용하여 도형 목록을 처리하고 각 도형이 어떤 픽셀을 덮고 있는지 결정한다. 더 많은 사실성이 요구될 때 (예: 건축 시각화 또는 시각 효과를 위해) 광선 추적과 같은 더 느리고 픽셀 단위의 알고리즘이 대신 사용된다. (광선 추적은 래스터화된 렌더링 중에도 조명과 반사의 사실성을 향상시키기 위해 선택적으로 사용될 수 있다.) 경로 추적이라는 광선 추적 유형은 현재 가장 일반적인 사실적 렌더링 기술이다. 경로 추적은 3D 애니메이션 영화의 프레임과 같은 고품질 비사실적 이미지를 생성하는 데에도 인기가 있다. 래스터화와 광선 추적 모두 GPU라고 불리는 특수 설계된 마이크로프로세서에 의해 속도가 향상될 수 있다("가속화"될 수 있다). 래스터화 알고리즘은 폴리곤 및 텍스트와 같은 2D 도형만 포함하는 이미지를 렌더링하는 데에도 사용된다. 이러한 유형의 렌더링 응용 분야에는 디지털 일러스트레이션, 그래픽 디자인, 2D 애니메이션, 탁상출판 및 사용자 인터페이스의 표시가 포함된다. 역사적으로 렌더링은 **이미지 합성**이라고 불렸으나 오늘날 이 용어는 AI 이미지 생성을 의미할 가능성이 높다.arxiv=2112.10752 "신경 렌더링"이라는 용어는 신경망이 이미지를 생성하는 주요 수단이지만 출력 이미지에 대한 어느 정도의 제어가 제공될 때 사용되기도 한다.arxiv=2004.03805 신경망은 전통적인 알고리즘을 대체하지 않고 렌더링을 도울 수도 있다. 예를 들어 경로 추적 이미지에서 노이즈를 제거하는 방식이다.
# 특징

## 사실적 렌더링
컴퓨터 그래픽스 연구의 상당 부분은 사진과 유사한 이미지를 생성하는 데 집중해 왔다. 이를 가능하게 하는 기본적인 기술은 1980년대에 발명되었지만, 그 10년이 끝날 무렵에도 복잡한 장면에 대한 사실주의는 여전히 먼 목표로 간주되었다. 오늘날 사실주의는 오프라인 렌더링에서는 일상적으로 달성할 수 있지만, 실시간 렌더링에서는 여전히 어렵다. 사실적인 이미지를 생성하려면 렌더링은 빛이 광원에서 어떻게 이동하고, 장면 내 객체에 의해 (종종 여러 번) 반사, 굴절 및 산란되며, 카메라 렌즈를 통과하여 최종적으로 카메라의 필름 또는 센서에 도달하는지를 시뮬레이션해야 한다. 이러한 시뮬레이션에 사용되는 물리학은 주로 기하광학으로, 빛 입자는 (대부분 직선인) 광선이라고 불리는 선을 따르지만, 일부 상황에서는 (예를 들어 비눗방울 표면과 같은 박막을 렌더링할 때) 빛의 파동 특성을 고려해야 한다. 시뮬레이션해야 할 효과는 다음과 같다: * 그림자, 날카로운 가장자리를 가진 그림자와 반그림자를 포함한 부드러운 그림자 모두 * 거울 및 매끄러운 표면의 반사, 거칠거나 물결 모양의 반사 표면 * 굴절—공기와 유리와 같은 두 투명 재료 사이의 경계를 통과할 때 빛이 꺾이는 현상. 꺾이는 정도는 빛의 파장에 따라 달라지며, 색상 가장자리나 "무지개"가 나타날 수 있다. * 볼륨 효과—빛이 부분적으로 투명하거나 반투명한 물질(단순히 광선이 통과하는 것을 허용하는 대신 빛을 변형하기 때문에 참여 매체라고 불림)을 통과할 때 흡수 및 산란 * 코스틱—빛이 물체를 비추기 전에 반사되거나 굴절될 때 발생하는 밝은 부분으로, 때로는 뚜렷한 필라멘트와 접히거나 뒤틀린 모양을 가진다. 사실적인 장면에서 객체는 광원에서 직접 도달하는 빛(대부분 공기를 방해 없이 통과한 후)과 장면의 다른 객체에서 반사된 빛 모두에 의해 조명된다. 이 복잡한 조명 시뮬레이션을 글로벌 일루미네이션이라고 한다. 과거에는 간접 조명을 종종 장면 내에 추가적인 숨겨진 조명을 배치하여 속였다(특히 애니메이션 영화를 렌더링할 때). 그러나 오늘날에는 경로 추적이 이를 정확하게 렌더링하는 데 사용된다. 진정한 사실적 렌더링을 위해서는 사진을 찍는 데 사용되는 카메라를 시뮬레이션해야 한다. 얇은 렌즈 근사는 원근 투영과 피사계 심도 (및 보케) 에뮬레이션을 결합할 수 있게 한다. 카메라 렌즈 시뮬레이션은 렌즈 구성 요소에 의해 빛이 굴절되는 방식을 모델링함으로써 더 사실적으로 만들 수 있다. 필름 또는 비디오 프레임을 렌더링할 경우 모션 블러가 종종 시뮬레이션된다. 시뮬레이션된 렌즈 플레어 및 블룸은 때때로 이미지를 주관적으로 더 밝게 보이도록 추가된다(실제 카메라의 디자인은 이러한 효과를 줄이려 하지만). 사실적 렌더링은 다양한 표면 재료가 빛을 반사하는 방식에 대한 수학적 설명인 반사율 모델 또는 (물리적으로 타당한 경우) 양방향 반사 분포 함수(BRDF)를 사용한다. 대리석, 식물 잎, 인간 피부와 같은 재료를 렌더링하려면 빛의 일부가 재료 내부로 이동하여 산란된 다음 다시 밖으로 나오는 서브서피스 스캐터링이라는 효과를 시뮬레이션해야 한다. 거칠기와 같은 색상 및 속성이 표면 전체에 걸쳐 어떻게 변하는지는 텍스처 매핑을 사용하여 효율적으로 표현할 수 있다.
## 3차원 렌더링의 다른 스타일
일부 응용 프로그램(및 3차원 모델링의 초기 단계)의 경우, 특히 재료 및 표면 세부 사항이 정의되지 않고 개체의 모양만 알려진 경우 와이어프레임 렌더링과 같은 단순화된 렌더링 스타일이 적합할 수 있다. 게임 및 기타 실시간 응용 프로그램은 예술적 또는 디자인 선택으로, 또는 저사양 하드웨어에서 더 높은 프레임 레이트를 허용하기 위해 더 단순하고 덜 사실적인 렌더링 기술을 사용할 수 있다. 정투상 및 등축 투영은 양식화된 효과를 내거나 CAD 렌더링에서 평행선이 평행하게 묘사되도록 하는 데 사용될 수 있다. 비사실적 렌더링(NPR)은 가장자리 감지 및 포스터리제이션과 같은 기술을 사용하여 기술 일러스트레이션, 만화 또는 기타 드로잉 또는 페인팅 스타일과 유사한 3D 이미지를 생성한다.
# 입력
3D 장면이나 2D 이미지를 렌더링하기 전에, 렌더링 소프트웨어가 이해할 수 있는 방식으로 설명되어야 한다. 역사적으로 2D 및 3D 렌더링 모두에 대한 입력은 일반적으로 텍스트 파일이었는데, 이는 바이너리 파일보다 사람이 편집하고 디버그하기 쉽기 때문이다. 3D 그래픽스의 경우, 텍스트 형식은 더 효율적인 바이너리 형식과 API에 의해 크게 대체되었는데, 이들은 파일 시스템에 파일을 생성하지 않고도 상호 작용하는 응용 프로그램이 렌더링 구성 요소와 직접 통신할 수 있게 한다(비록 장면 설명은 렌더링 전에 메모리에 생성되지만). 전통적인 렌더링 알고리즘은 3D 장면 또는 2D 이미지의 기하학적 설명을 사용한다. 실제 세계에서 스캔된 데이터 또는 과학적 컴퓨터 시뮬레이션의 시각화를 렌더링하는 응용 프로그램 및 알고리즘은 다른 유형의 입력 데이터를 필요로 할 수 있다. 포스트스크립트 형식(종종 탁상출판의 부상에 기여했다고 평가됨)은 2D 그래픽스와 페이지 레이아웃을 설명하는 표준화되고 상호 운용 가능한 방법을 제공한다. 확장 가능한 벡터 그래픽스(SVG) 형식도 텍스트 기반이며, PDF 형식은 내부적으로 포스트스크립트 언어를 사용한다. 대조적으로, 많은 3D 그래픽스 파일 형식이 표준화되었지만(VRML 및 X3D와 같은 텍스트 기반 형식 포함), 서로 다른 렌더링 응용 프로그램은 일반적으로 자체 필요에 맞게 조정된 형식을 사용하며, 이로 인해 독점 및 오픈 형식이 확산되었고, 바이너리 파일이 더 흔하게 사용되고 있다.
## 2D 벡터 그래픽스
벡터 그래픽스 이미지 설명에는 다음이 포함될 수 있다. * 좌표 및 곡률 정보 (선분, 원호, 베지에 곡선의 경우 채워진 도형의 경계로 사용될 수 있음) * 기본 도형 (예: 직사각형, 원, 타원)의 중심 좌표, 너비 및 높이 (또는 경계 사각형 좌표) * 선을 렌더링하기 위한 색상, 너비 및 패턴 (예: 파선 또는 점선) * 도형을 채우기 위한 색상, 패턴 및 그라디언트 * 비트맵 이미지 데이터 (포함되거나 외부 파일에 있음)와 크기 및 위치 정보 * 렌더링될 텍스트 (크기, 위치, 방향, 색상 및 글꼴 포함) * 도형 또는 비트맵 이미지의 일부만 렌더링되어야 하는 경우 클리핑 정보 * 겹치는 도형을 렌더링하기 위한 투명도 및 컴포지팅 정보 * 이미지의 다른 디스플레이 및 프린터에서 일관되게 렌더링되도록 하는 색 공간 정보
## 3D 기하학
기하학적 장면 설명에는 다음이 포함될 수 있다. * 구 및 원뿔과 같은 기하학적 기본 요소의 크기, 위치 및 방향 (더 복잡한 객체를 만들기 위해 다양한 방식으로 결합될 수 있음) * 꼭짓점 좌표 및 표면 법선 벡터 (종종 메시를 서브디비전하여 매끄러운 표면으로 렌더링되는) 폴리곤 메시 * 장면 내에서 객체를 배치, 회전 및 크기 조절하기 위한 변환 (장면의 일부가 다른 로컬 좌표계를 사용할 수 있도록 함). * 장면이 어떻게 보여지는지 설명하는 "카메라" 정보 (위치, 방향, 초점거리, 시야) * 조명 정보 (위치, 종류, 밝기 및 색상) * 표면의 광학적 특성 (예: 반사율, 거칠기 및 굴절률) * 빛이 통과하는 매체의 광학적 특성 (투명한 고체, 액체, 구름, 연기), 예: 흡수 및 산란 단면적 * 표면의 텍스처 맵으로 사용되는 비트맵 이미지 데이터 * 복잡한 3D 도형 또는 장면을 절차적으로 생성하기 위한 작은 스크립트 또는 프로그램 * 애니메이션 렌더링을 위해 객체 및 카메라 위치와 기타 정보가 시간에 따라 어떻게 변하는지에 대한 설명 개별 3D 객체 또는 "모델"을 저장하기 위한 많은 파일 형식이 존재한다. 이들은 더 큰 장면에 가져오거나, 렌더링 소프트웨어 또는 게임에서 요청 시 로드할 수 있다. 사실적인 장면은 가정용품, 차량, 나무와 같은 수백 가지 항목을 필요로 할 수 있으며, 3D 아티스트는 종종 방대한 모델 라이브러리를 활용한다. 게임 제작에서 이러한 모델(텍스처, 오디오 파일, 애니메이션과 같은 다른 데이터와 함께)은 "애셋"이라고 불린다.
## 볼륨 데이터
과학 및 공학 시각화는 종종 3D 스캔 또는 컴퓨터 시뮬레이션으로 생성된 볼륨 데이터를 렌더링해야 한다. 이러한 데이터의 가장 일반적인 출처는 진단을 위해 렌더링해야 하는 의료용 CT 및 MRI 스캔이다. 볼륨 데이터는 매우 클 수 있으며, 특히 볼륨이 성긴 경우(데이터를 포함하지 않는 빈 영역이 있는 경우) 효율적으로 저장하기 위해 특수 데이터 형식이 필요하다. 렌더링 전에는 볼륨 데이터의 레벨 집합이 추출되어 마칭 큐브 알고리즘 등을 사용하여 삼각형 메시로 변환될 수 있다. 또한 볼륨 데이터를 직접 다루는 알고리즘도 개발되었는데, 예를 들어 구름과 연기에 의해 빛이 산란되고 흡수되는 방식을 사실적으로 묘사하기 위해 사용되며, 이러한 유형의 볼륨 렌더링은 영화의 시각 효과에 광범위하게 사용된다. 보간 없이 저해상도 볼륨 데이터를 렌더링할 때 개별 큐브 또는 "복셀"이 보일 수 있으며, 이 효과는 때때로 게임 그래픽에서 의도적으로 사용된다.
## 사진측량 및 스캔
실제 세계 객체의 사진은 3D 객체의 텍스처로 사용하여 렌더링된 장면에 통합될 수 있다. 또한 장면의 사진들을 이어 붙여 파노라마 이미지나 환경 맵을 만들 수 있는데, 이는 장면을 매우 효율적으로 렌더링할 수 있지만 한 가지 시점에서만 가능하다. 구조광 또는 라이다를 사용하여 실제 객체와 장면을 스캔하면 공간의 수백만 개 개별 점의 좌표와 때로는 색상 정보로 구성된 점 구름이 생성된다. 이러한 점 구름은 직접 렌더링되거나 렌더링 전에 메시로 변환될 수 있다. (참고: "점 구름"은 때때로 와이어프레임 렌더링과 유사하게 모든 3D 기하학에 사용될 수 있는 최소주의적 렌더링 스타일을 지칭하기도 한다.)
## 신경 근사 및 라이트 필드
더 최근의 실험적인 접근 방식은 공간의 각 지점에서 들어오는 빛의 색상, 강도 및 방향을 정의하는 복사장을 사용하여 장면을 묘사하는 것이다. (이는 개념적으로 홀로그램에 기록된 라이트 필드와 유사하지만 동일하지는 않다.) 유용한 해상도에 대해, 복사장의 데이터 양은 너무 커서 볼륨 데이터로 직접 표현하기는 비현실적이며, 근사 함수를 찾아야 한다. 신경망은 일반적으로 이러한 근사를 생성하고 평가하는 데 사용되며, 때로는 비디오 프레임 또는 다양한 각도에서 촬영한 장면 사진 모음을 "훈련 데이터"로 사용한다. 신경망과 관련된 알고리즘은 최근 장면을 3D 가우스로 근사하는 데 사용되었다. 그 결과로 얻은 표현은 점 구름과 유사하지만, 점 대신 흐릿하고 부분적으로 투명하며 다양한 차원과 방향을 가진 얼룩을 사용한다. 신경 복사장과 마찬가지로, 이러한 근사는 종종 사진이나 비디오 프레임에서 생성된다.
# 출력
렌더링의 결과는 화면에 즉시 표시되거나 (게임과 같은 실시간 렌더링의 경우 초당 여러 번) JPEG 또는 PNG와 같은 래스터 그래픽스 파일 형식으로 저장될 수 있다. 고급 렌더링 애플리케이션은 일반적으로 더 미세한 색상 계조와 높은 동적 범위 조명을 표현할 수 있는 OpenEXR 파일 형식을 사용하며, 이를 통해 톤 매핑 또는 다른 조정을 품질 손실 없이 나중에 적용할 수 있다. 빠르게 렌더링된 애니메이션은 비디오 파일로 직접 저장될 수 있지만, 고품질 렌더링의 경우 개별 프레임(이는 클러스터 또는 렌더 팜의 다른 컴퓨터에서 렌더링될 수 있으며 렌더링하는 데 몇 시간 또는 심지어 며칠이 걸릴 수 있음)은 별도의 파일로 출력되어 나중에 비디오 클립으로 결합된다. 렌더러의 출력에는 단순히 RGB 색상 값 이상이 포함될 때도 있다. 예를 들어, 스펙트럼은 여러 파장의 빛을 사용하여 샘플링될 수 있거나, 깊이(카메라로부터의 거리) 또는 이미지의 각 지점의 재료와 같은 추가 정보가 포함될 수 있다(이 데이터는 합성 중 또는 실시간 렌더링을 위한 텍스처 맵 생성 시 사용되거나, 경로 추적 이미지에서 노이즈 제거를 돕는 데 사용될 수 있다). 투명도 정보가 포함되어 렌더링된 전경 객체를 사진 또는 비디오와 합성할 수 있다. 또한 렌더링 후 조명을 조정할 수 있도록 다른 조명의 기여 또는 스페큘러 및 디퓨즈 조명을 별도의 채널로 저장하는 것이 유용할 때도 있다. OpenEXR 형식은 단일 파일에 많은 채널의 데이터를 저장할 수 있도록 한다. 블렌더 및 픽사 렌더맨과 같은 렌더러는 Arbitrary Output Variables(AOV)라고 불리는 다양한 구성 가능한 값을 지원한다.
# 기술
3D 장면을 렌더링하는 방법을 선택하는 것은 일반적으로 속도, 메모리 사용량 및 사실성 사이의 절충안을 포함한다(사실성이 항상 바람직한 것은 아니지만). 수년에 걸쳐 개발된 **알고리즘**은 컴퓨터 성능과 메모리 용량이 증가함에 따라 더 고급 방법이 실용화되면서 느슨한 발전을 따른다. 단일 최종 이미지에 여러 기술이 사용될 수 있다. 중요한 구분은 이미지의 픽셀을 반복하는 이미지 순서 알고리즘과 장면의 객체를 반복하는 객체 순서 알고리즘 사이이다. 단순한 장면의 경우 객체 순서가 일반적으로 더 효율적인데, 픽셀보다 객체가 적기 때문이다. ; 2D 벡터 그래픽스 : 1960년대~1970년대의 벡터 디스플레이는 전자빔의 편향을 사용하여 화면에 선분을 직접 그렸다. 오늘날에는 채워진 도형도 지원하는 래스터화 알고리즘을 사용하여 벡터 그래픽스가 렌더링된다. 원칙적으로 모든 2D 벡터 그래픽스 렌더러는 3D 객체를 먼저 2D 이미지 평면에 투영하여 렌더링하는 데 사용될 수 있다. ; 3D 래스터화 : 스캔라인 또는 z-버퍼 기술을 통해 은면 제거를 처리하여 3D 렌더링에 더 효율적으로 사용될 수 있도록 2D 래스터화 알고리즘을 적용한다. 객체가 덮는 픽셀을 다양한 방식으로 색칠함으로써 다양한 사실적 또는 양식화된 효과를 얻을 수 있다. 표면은 일반적으로 래스터화되기 전에 삼각형 메시로 분할된다. 래스터화는 일반적으로 (위에서 설명한) "객체 순서" 렌더링과 동의어이다. ; 광선 투사 : 광선이 교차하는 첫 번째 객체를 계산하기 위해 기하학적 공식을 사용한다. 각 픽셀에 대해 광선을 투사하고 장면에 해당하는 점을 찾아 "이미지 순서" 렌더링을 구현하는 데 사용될 수 있다. 광선 투사는 그래픽 및 비그래픽 목적 모두에 사용되는 기본적인 작업이다. 예를 들어, 점이 그림자 속에 있는지 확인하거나 게임에서 적이 무엇을 볼 수 있는지 확인하는 경우이다. ; 광선 추적 : 정반사 및 굴절로 인한 빛의 반사 경로를 시뮬레이션하며, 각 경로에 대해 다양한 수의 광선 투사 작업이 필요하다. 고급 형태는 몬테카를로 기법을 사용하여 면적 조명, 피사계 심도, 흐릿한 반사 및 부드러운 그림자와 같은 효과를 렌더링하지만, 글로벌 일루미네이션 계산은 일반적으로 경로 추적의 영역에 속한다. ; 라디오서티 (컴퓨터 그래픽스) : 장면의 표면을 조각으로 나누고, 각 조각이 광원에서 또는 다른 표면에서 간접적으로 받는 빛의 양을 추정하는 유한 요소 분석 접근 방식이다. 각 표면의 복사조도가 알려지면, 장면은 래스터화 또는 광선 추적을 사용하여 렌더링될 수 있다. ; 경로 추적 : 몬테카를로 적분과 단순화된 형태의 광선 추적을 사용하여, 광원에서 카메라로 이동할 때 광자가 취할 수 있는 가능한 경로의 표본의 평균 밝기를 계산한다(일부 이미지의 경우 픽셀당 수천 개의 경로를 샘플링해야 한다). 이는 렌더링 방정식을 해결하기 위한 통계적으로 불편향된 방법으로 도입되어 광선 추적에 엄격한 수학적 기초를 제공했다. 위의 각 접근 방식에는 많은 변형이 있으며, 일부 중복이 있다. 경로 추적은 별개의 기술로 간주될 수도 있고, 특정 유형의 광선 추적으로 간주될 수도 있다. 광선 추적 및 경로 추적과 관련된 용어의 사용은 시간이 지남에 따라 크게 변했다는 점에 유의해야 한다. 레이마칭을 이용한 프랙탈 지형 렌더링]] 광선 행진은 광선 투사에 사용되는 알고리즘 계열로, 광선과 복잡한 객체(예: 볼륨 데이터셋 또는 부호화 거리 함수로 정의된 표면) 간의 교차점을 찾는 데 사용된다. 그 자체로 렌더링 방법은 아니지만, 광선 추적 및 경로 추적에 통합될 수 있으며, 래스터화에 의해 화면 공간 반사 및 기타 효과를 구현하는 데 사용된다. 광자 매핑이라는 기술은 광원에서 객체로 광자 경로를 추적하여 복사조도에 대한 데이터를 축적하고, 이 데이터는 기존 광선 추적 또는 경로 추적 중에 사용된다. 광원에서 카메라로 추적된 광선만을 사용하여 장면을 렌더링하는 것은 비실용적인데, 이는 현실에 더 가깝지만 엄청난 수의 광자를 시뮬레이션해야 하며, 그 중 극히 일부만이 실제로 카메라에 도달하기 때문이다. 일부 저자들은 기존 광선 추적을 "역방향" 광선 추적이라고 부르는데, 이는 카메라에서 광원으로 광자 경로를 역추적하기 때문이며, 광원에서 경로를 따르는 것(광자 매핑에서와 같이)을 "정방향" 광선 추적이라고 부른다. 그러나 때로는 이러한 용어의 의미가 뒤바뀌기도 한다. 광원에서 시작하는 광선 추적은 입자 추적 또는 광선 추적이라고도 불리며, 이러한 모호성을 피할 수 있다. 비디오 게임 그래픽을 포함한 실시간 렌더링은 일반적으로 래스터화를 사용하지만, 점점 더 광선 추적 및 경로 추적과 결합하고 있다. 이를 통해 곡면 및 상호 반사 객체에서의 반사, 그리고 넓은 범위의 거리 및 표면 방향에서 정확한 그림자를 포함하여 래스터화만으로는 어려운 시각 효과를 구현할 수 있다. 광선 추적 지원은 DirectX, 메탈, 벌컨과 같은 게임에 사용되는 최신 그래픽스 API에 포함되어 있다. 광선 추적은 시뮬레이션된 블랙홀을 렌더링하는 데 사용되었으며, 빛의 속도에 가까운 속도로 움직이는 물체의 모습은 빛 광선 시뮬레이션 중에 시공간 곡률과 상대론적 효과를 고려하여 렌더링되었다.
## 라디오서티
라디오서티 (컴퓨터 그래픽스) 고전적인 라디오서티 시연. 표면은 16x16 또는 16x32 메시로 나뉜다. 상단: 직접 조명만. 하단: 라디오서티 솔루션 (반사율 0.85). 쌍선형 보간을 사용하여 패치를 부드럽게 한 동일한 장면. 하단: 경로 추적(PBRT 렌더러 사용)으로 렌더링된 장면.]] 라디오서티(동명의 방사선량에서 따옴)는 거칠거나 무광택 표면에서 튕겨 나가는 빛에 의해 조명되는 객체를 렌더링하는 방법이다. 이러한 유형의 조명을 간접광, 환경 조명, 확산 조명 또는 확산 상호 반사라고 하며, 이를 사실적으로 렌더링하는 문제를 글로벌 일루미네이션이라고 한다. 래스터화 및 기본 형태의 광선 추적(분배 광선 추적 및 경로 추적 제외)은 간접광을 대략적으로만 근사할 수 있으며, 예를 들어 예술가가 선택한 균일한 "주변" 조명량을 추가하여 근사할 수 있다. 라디오서티 기술은 직사각형 형광등 패널과 같은 면광원이 있는 장면을 렌더링하는 데에도 적합하며, 이는 래스터화 및 전통적인 광선 추적으로는 어렵다. 라디오서티는 물리 기반 방법으로 간주되는데, 이는 물리학의 방정식과 실험 데이터를 사용하여 환경에서 빛의 흐름을 시뮬레이션하는 것을 목표로 하지만, 종종 모든 표면이 불투명하고 완벽하게 람베르트라고 가정하여 사실성을 떨어뜨리고 적용 가능성을 제한한다. 원래의 라디오서티 방법(1984년 처음 제안됨), 현재 고전적 라디오서티라고 불리는 이 방법에서는 장면의 표면과 조명을 패치라고 불리는 조각으로 분할하는데, 이 과정을 메싱이라고 한다(이 단계는 이를 유한요소법으로 만든다). 렌더링 코드는 각 패치에서 방출되거나 난반사되는(산란되는) 빛의 어떤 부분이 다른 각 패치에 수신되는지 결정해야 한다. 이러한 비율은 형태 인자 또는 시야 인자라고 불린다(공학에서 방사열 전달을 모델링하는 데 처음 사용됨). 형태 인자는 수신 표면의 반사율에 곱해져 행렬에 넣어진다. 그런 다음 장면의 조명은 선형대수학의 방법을 통해 해결할 수 있는 행렬 방정식(또는 동등하게 연립 선형 방정식)으로 표현될 수 있다. 라디오서티 방정식을 풀면 각 패치에서 방출 및 반사되는 총 빛의 양이 주어지며, 이를 면적으로 나누어 라디오서티라는 값을 얻는다. 이 값은 래스터화 또는 광선 추적 시 패치의 가시 부분에 해당하는 픽셀의 색상을 결정하는 데 사용될 수 있다. 실시간 렌더링의 경우, 이 값(또는 더 일반적으로 로컬 표면 반사율에 의존하지 않는 복사조도)은 미리 계산되어 텍스처(복사조도 맵이라고 함)에 저장되거나 3D 모델의 꼭짓점 데이터로 저장될 수 있다. 이 기능은 건축 시각화 소프트웨어에서 조명 계산 후 건물 내부를 실시간으로 걸어다니는 것을 허용하는 데 사용되었다. 고전적 라디오서티에 사용되는 행렬의 큰 크기(패치 수의 제곱)는 사실적인 장면에 문제를 야기한다. 실제 구현에서는 야코비 또는 가우스-자이델 반복을 사용할 수 있는데, 이는 (적어도 야코비의 경우) 나머지 빛의 양(표면에 아직 흡수되지 않은)이 미미해질 때까지 빛의 전파를 한 번에 한 번씩 시뮬레이션하는 것과 동등하다. 필요한 반복(반사) 횟수는 장면 자체에 따라 달라지며, 패치 수에 따라 달라지지 않으므로 총 작업량은 패치 수의 제곱에 비례한다(가우스 소거법을 사용하여 행렬 방정식을 푸는 것은 패치 수의 세제곱에 비례하는 작업이 필요하다는 점과 대조적이다). 형태 인자는 필요할 때 다시 계산될 수 있으므로 전체 행렬을 메모리에 저장할 필요가 없다. 렌더링의 품질은 종종 패치의 크기에 따라 결정되며, 예를 들어 그림자의 가장자리를 정확하게 묘사하려면 매우 미세한 메시가 필요하다. 중요한 개선 사항은 계층적 라디오서티로, 서로 멀리 떨어진 표면 간의 빛 전달을 시뮬레이션하기 위해 더 거친 메시(더 큰 패치)를 사용하고 필요에 따라 패치를 적응적으로 세분화한다. 이를 통해 라디오서티를 훨씬 더 크고 복잡한 장면에 사용할 수 있다. 라디오서티 방법의 대안 및 확장 버전은 광택 표면 및 거울과 같은 비람베르트 표면을 지원하며, 때로는 표면 패치뿐만 아니라 볼륨 또는 객체 "클러스터"도 사용한다. 확률적 또는 몬테카를로 라디오서티는 다양한 방식으로 랜덤 샘플링을 사용한다. 예를 들어, 모든 패치에 대해 통합하는 대신 입사광 샘플을 취하여 성능을 향상시키지만 노이즈를 추가한다(이 노이즈는 경로 추적 노이즈와 달리 최종 단계에서 결정론적 반복을 사용하여 줄일 수 있다). 단순화되고 부분적으로 사전 계산된 라디오서티 버전은 팔진트리 라디오서티와 같이 라이트 필드의 근사를 저장하는 기술과 결합되어 실시간 렌더링에 널리 사용된다.
## 경로 추적
경로 추적 물리 기반 렌더링이라는 접근 방식의 일환으로, **경로 추적**은 영화의 효과를 포함하여 사실적인 장면을 렌더링하는 데 지배적인 기술이 되었다. 예를 들어, 인기 있는 오픈 소스 3D 소프트웨어인 블렌더는 사이클 렌더러에서 경로 추적을 사용한다. 글로벌 일루미네이션을 위해 경로 추적을 사용하여 생성된 이미지는 일반적으로 라디오서티(사실적인 조명을 위한 주요 경쟁 알고리즘)를 사용할 때보다 노이즈가 더 많지만, 라디오서티는 복잡한 장면에 적용하기 어렵고 복사조도의 테셀레이션된 표현을 사용하여 발생하는 아티팩트가 발생하기 쉽다. 분산 광선 추적과 마찬가지로, 경로 추적은 확률적 또는 무작위화된 광선 추적의 일종으로 몬테카를로 또는 준몬테카를로 적분을 사용한다. 이는 렌더링 방정식과 같은 논문에서 1986년에 짐 카지야에 의해 제안되고 명명되었다. 카지야는 분산 광선 추적의 복잡성 대부분을 한 번에 카메라에서 단일 경로만 추적함으로써 피할 수 있다는 것을 관찰했다(카지야의 구현에서 이 "분기 없음" 규칙은 각 표면 교차점에서 각 광원의 무작위로 선택된 지점으로 추가 광선을 추적함으로써 깨졌다). 카지야는 경로의 각 단계에서 어떤 광선을 따를지 선택하는 것과 같은 무작위 결정을 내리기 위해 층화표집과 중요도 샘플링을 사용하여 출력 이미지에 존재하는 노이즈를 줄일 것을 제안했다. 이러한 기술에도 불구하고, 당시 사용 가능한 컴퓨터로는 수용 가능한 수준으로 분산을 줄일 수 있을 만큼 충분한 샘플을 생성하는 데 드는 계산 비용이 너무 높았기 때문에 경로 추적은 영화 렌더링에 실용적이지 않았을 것이다. 경로 추적만을 사용하여 완전히 렌더링된 최초의 장편 영화인 몬스터 하우스는 20년 후에야 개봉되었다. 기본적인 형태의 경로 추적은 코스틱 및 빛이 좁은 공간을 통해 간접적으로 들어오는 장면을 렌더링하는 데 비효율적이다(너무 많은 샘플이 필요하다). 1990년대에는 이러한 약점을 해결하기 위한 시도가 있었다. 양방향 경로 추적은 광자 매핑과 유사하게 광원과 카메라에서 별도로 광선을 추적한 다음 이러한 경로를 연결하는 방법을 찾는다(하지만 광자 매핑과 달리 일반적으로 모든 픽셀에 대해 동일한 캐시된 데이터를 사용하는 대신 각 픽셀에 대해 새로운 광 경로를 샘플링한다). 메트로폴리스 광 전송은 이전에 추적된 경로를 수정하여 경로를 샘플링하고, 다른 "밝은" 경로와 유사한 경로를 탐색하는 데 더 많은 시간을 할애하여 더 밝은 경로를 발견할 가능성을 높인다. 다중 중요도 샘플링은 두 개 이상의 샘플링 방법에서 샘플을 결합할 때 분산을 줄이는 방법을 제공하며, 특히 일부 샘플이 다른 샘플보다 훨씬 더 노이즈가 많을 때 유용하다. 이후의 작업은 에릭 비치의 1997년 박사 학위 논문에 요약되고 확장되었으며, 이는 컴퓨터 그래픽스 커뮤니티에서 경로 추적에 대한 관심을 높이는 데 기여했다. 1998년에 처음 출시된 아널드 렌더러는 경로 추적이 영화 프레임 렌더링에 실용적이며, 영화 산업에서 불편향 및 물리 기반 렌더링에 대한 수요가 있음을 입증했다. 다른 상업용 및 오픈 소스 경로 추적 렌더러가 등장하기 시작했다. 계산 비용은 CPU 및 클러스터 성능의 급속한 발전으로 해결되었다. 경로 추적의 상대적인 단순성과 몬테카를로 방법으로서의 특성(픽셀당 수백 또는 수천 개의 경로를 샘플링)은 GPU에 구현하는 데 매력적이며, 특히 엔비디아의 RTX 및 OptiX와 같은 광선 추적 가속 기술을 지원하는 최신 GPU에서 더욱 그렇다. 그러나 양방향 경로 추적 및 메트로폴리스 광 전송은 GPU에서 효율적으로 구현하기가 더 어렵다. 경로 추적을 개선하기 위한 연구는 계속되고 있다. 양방향 경로 추적 및 메트로폴리스 광 전송의 많은 변형과 경로 추적을 광자 매핑과 결합하는 방법이 탐구되었다. 최근의 경로 안내 접근 방식은 각 공간 볼륨에서 라이트 필드 확률 분포의 근사를 구축하여 경로를 더 효과적으로 샘플링할 수 있도록 한다. 수용 가능한 품질을 달성하는 데 필요한 경로 수를 줄이면서 일부 세부 사항을 잃거나 노이즈보다 더 불쾌한 작은 규모의 아티팩트를 도입할 위험이 있는 경로 추적의 출력을 노이즈 제거하는 기술이 개발되었다. 신경망은 현재 이러한 목적으로 널리 사용되고 있다.
## 신경 렌더링
**신경 렌더링**은 인공 신경망을 사용하는 렌더링 방법이다.s2cid=215416317url-status=live 신경 렌더링에는 2차원 이미지에서 3D 모델을 재구성하는 데 사용되는 이미지 기반 렌더링 방법이 포함된다. 이러한 방법 중 하나는 사진측량으로, 이는 객체의 여러 각도에서 찍은 이미지 모음을 3D 모델로 변환하는 방법이다. 최근에는 엔비디아, 구글 및 기타 여러 회사에서 텍스트와 거친 페인팅으로부터 3D 모델을 생성하고 렌더링하는 데 상당한 발전이 있었다.
# 과학적, 수학적 기초
불편향 렌더링 사실적 렌더러의 구현에는 항상 물리적 시뮬레이션 또는 에뮬레이션이라는 기본 요소가 있다—실제 물리적 프로세스와 유사하거나 이를 추상화하는 어떤 계산. "물리 기반"이라는 용어는 렌더링 외부에서 더 일반적이고 널리 받아들여지는 물리적 모델 및 근사치를 사용하는 것을 의미한다. 렌더링 커뮤니티에서는 특정 관련 기술들이 점차 확립되었다. 기본 개념은 비교적 간단하지만 계산하기 어렵다. 그리고 더 일반적인 렌더러를 위한 단일의 우아한 알고리즘이나 접근 방식은 찾아내기 어려웠다. 견고성, 정확성 및 실용성 요구 사항을 충족하기 위해 구현은 다양한 기술의 복잡한 조합이 될 것이다. 렌더링 연구는 과학적 모델의 적용과 효율적인 적용 모두에 관심이 있다. 렌더링에 사용되는 수학에는 선형대수학, 미적분학, 수치 수학, 신호 처리 및 몬테카를로 방법이 포함된다.
## 렌더링 방정식
렌더링 방정식 이것은 렌더링에서 핵심적인 학술적/이론적 개념이다. 이는 렌더링의 비인지적 측면을 가장 추상적으로 형식화한 표현 역할을 한다. 더 완벽한 모든 알고리즘은 이 방정식의 특정 공식에 대한 해로 볼 수 있다. : L_o(x, \omega) = L_e(x, \omega) + \int_\Omega L_i(x, \omega') f_r(x, \omega', \omega) (\omega' \cdot n) \, \mathrm d \omega' 의미: 특정 위치와 방향에서 나가는 빛(Lo)은 방출된 빛(Le)과 반사된 빛의 합이다. 반사된 빛은 모든 방향에서 들어오는 빛(Li)에 표면 반사율과 입사각을 곱한 값의 합이다. 상호 작용 지점을 통해 외부 빛과 내부 빛을 연결함으로써 이 방정식은 장면 내의 전체 '광 전송'—빛의 모든 움직임—을 나타낸다.
## 양방향반사도분포함수
**양방향반사도분포함수**(BRDF)는 빛과 표면의 상호 작용에 대한 간단한 모델을 다음과 같이 표현한다. : f_r(x, \omega', \omega) = \frac{\mathrm d L_r(x, \omega)}{L_i(x, \omega')(\omega' \cdot \vec n) \mathrm d \omega'} 빛 상호 작용은 종종 훨씬 더 단순한 모델인 난반사 및 정반사로 근사화되지만, 둘 다 BRDF가 될 수도 있다.
## 기하광학
렌더링은 실제로 거의 독점적으로 빛 물리학의 입자 측면, 즉 기하광학과 관련이 있다. 빛을 기본 수준에서 이리저리 튀는 입자로 취급하는 것은 단순화이지만 적절하다. 빛의 파동 측면은 대부분의 장면에서 무시할 수 있으며 시뮬레이션하기가 훨씬 더 어렵다. 주목할 만한 파동 측면 현상으로는 회절(CD 및 DVD의 색상에서 볼 수 있음) 및 편광(LCD에서 볼 수 있음)이 있다. 두 가지 유형의 효과는 필요한 경우 반사 모델의 외관 지향적 조정을 통해 생성된다.
## 시각
비록 주목을 덜 받지만, 인간 시각에 대한 이해는 렌더링에 귀중하다. 이는 주로 이미지 디스플레이와 인간 지각이 제한된 범위를 가지고 있기 때문이다. 렌더러는 광범위한 빛 밝기와 색상을 시뮬레이션할 수 있지만, 현재 디스플레이(영화 스크린, 컴퓨터 모니터 등)는 너무 많은 것을 처리할 수 없으며, 일부는 버리거나 압축해야 한다. 인간 지각 또한 한계를 가지고 있으므로 사실감을 생성하기 위해 넓은 범위의 이미지를 제공할 필요가 없다. 이는 이미지를 디스플레이에 맞추는 문제를 해결하는 데 도움이 될 수 있으며, 더 나아가 특정 미묘함이 눈에 띄지 않을 것이기 때문에 렌더링 시뮬레이션에서 어떤 단축키를 사용할 수 있는지 제안할 수 있다. 이와 관련된 주제는 톤 매핑이다.
## 샘플링 및 필터링
어떤 접근 방식을 취하든 모든 렌더링 시스템이 다루어야 할 한 가지 문제는 바로 **샘플링 문제**이다. 본질적으로 렌더링 과정은 유한한 수의 픽셀을 사용하여 이미지 공간에서 색상으로의 연속 함수를 묘사하려고 한다. 나이퀴스트-섀넌 샘플링 정리(또는 코텔니코프 정리)의 결과로, 표시될 수 있는 모든 공간 파형은 이미지 해상도에 비례하는 최소 두 개의 픽셀로 구성되어야 한다. 더 간단히 말해서, 이는 이미지가 한 픽셀보다 작은 세부 사항, 색상 또는 강도의 최고점 또는 최저점을 표시할 수 없다는 아이디어를 표현한다. 어떤 필터링 없이 순진한 렌더링 알고리즘이 사용되면 이미지 함수의 높은 주파수는 최종 이미지에 보기 흉한 에일리어싱을 유발할 것이다. 에일리어싱은 일반적으로 픽셀 격자가 보이는 객체의 들쭉날쭉한 가장자리인 재기로 나타난다. 에일리어싱을 제거하려면 모든 렌더링 알고리즘(보기 좋은 이미지를 생성하려면)은 높은 주파수를 제거하기 위해 이미지 함수에 어떤 종류의 로우패스 필터를 사용해야 하며, 이 과정을 안티에일리어싱이라고 한다.
# 하드웨어 가속
렌더링은 일반적으로 사용 가능한 컴퓨팅 성능과 메모리 대역폭에 의해 제한되므로, 특히 실시간 렌더링을 위해 이를 가속화하기 위한 특수 컴퓨터 하드웨어가 개발되었다. 프레임 버퍼와 같은 하드웨어 기능은 렌더링 출력을 실시간으로 부드럽게 표시하는 데 필요하다. 하드웨어 가속은 렌더링을 위한 소프트웨어 사용을 대체하는 것이 아니라, 전용 회로를 사용하여 선택된 작업이나 계산을 가속화하거나 소프트웨어 코드의 일부를 다른 유형의 프로세서에서 실행한다.
## 역사
벡터 모니터(캘리그라피 디스플레이라고도 함) 시대에는 디스플레이 처리 장치(DPU)가 전자빔을 제어하여 시각적 요소 목록을 유지하고 화면에 지속적으로 다시 그리는 전용 CPU 또는 코프로세서였다. 에반스 & 서덜랜드의 라인 드로잉 시스템-1(및 1980년대까지 생산된 이후 모델)과 같은 고급 DPU는 와이어프레임 이미지 렌더링을 가속화하기 위한 3D 좌표 변환 기능을 통합했다. 에반스 & 서덜랜드는 또한 디지스타 천체투영관 투영 시스템을 만들었는데, 이는 별과 와이어프레임 그래픽스를 모두 렌더링할 수 있는 벡터 디스플레이였다(벡터 기반 디지스타와 디지스타 II는 많은 천체투영관에서 사용되었으며, 몇몇은 여전히 작동 중일 수 있다). 디지스타 프로토타입은 영화 스타 트렉 II: 칸의 분노의 3D 별 필드를 렌더링하는 데 사용되었는데, 이는 장편 영화에서 볼 수 있었던 최초의 3D 컴퓨터 그래픽스 시퀀스 중 일부였다. 1970년대와 1980년대 초 음영 처리된 3D 그래픽스 렌더링은 보통 유타 대학교 연구원들이 사용했던 PDP-10과 같은 범용 컴퓨터에서 구현되었다. 이는 데이터 주소 지정, 의사 결정, 계산 능력 등 CPU만이 제공하는 복잡한 단계의 파이프라인을 포함하기 때문에 특수 하드웨어로 속도를 높이기 어려웠다(특정 작업을 가속화하기 위한 전용 회로가 제안되기도 했지만). 슈퍼컴퓨터 또는 특수 설계된 다중 CPU 컴퓨터 또는 클러스터가 때때로 광선 추적에 사용되기도 했다. 1981년 제임스 H. 클라크와 마크 한나는 3D 래스터화 파이프라인의 일부 단계를 수행하기 위한 VLSI 칩인 지오메트리 엔진을 설계하고, 이 기술을 상업화하기 위해 실리콘 그래픽스(SGI) 회사를 설립했다. 1980년대의 가정용 컴퓨터와 게임 콘솔은 디스플레이 영역을 스크롤하고 채우고, 스프라이트와 선을 그릴 수 있는 그래픽스 코프로세서를 포함했지만, 사실적인 이미지를 렌더링하는 데는 유용하지 않았다. 1980년대 후반에 3D 렌더링 가속 기능을 갖춘 PC 그래픽 카드와 아케이드 게임이 등장하기 시작했으며, 1990년대에는 이러한 기술이 보편화되었다. 오늘날 저전력 모바일 프로세서조차도 일반적으로 3D 그래픽스 가속 기능을 통합하고 있다.
## 그래픽 처리 장치
그래픽 처리 장치 1990년대의 3D 그래픽스 가속기는 현대의 GPU로 발전했다. GPU는 CPU와 마찬가지로 범용 프로세서이지만, 개별 픽셀 렌더링과 같이 작고 유사하며 대부분 독립적인 여러 하위 작업으로 나눌 수 있는 작업을 위해 설계되었으며, 이를 병렬로 수행한다. 이는 GPU가 이러한 방식으로 하위 작업으로 분할될 수 있는 모든 렌더링 알고리즘의 속도를 높일 수 있음을 의미하며, 특정 래스터화 알고리즘과 단순한 셰이딩 및 조명 효과만 가속화하도록 설계된 1990년대 3D 가속기와는 대조적이다(트릭을 사용하여 더 일반적인 계산을 수행할 수 있었지만). GPU는 그 기원 때문에 여전히 전통적인 3D 래스터화 그래픽스 파이프라인의 일부 단계에 대한 특수 하드웨어 가속을 제공한다. 여기에는 Z-버퍼를 사용한 은면 제거 및 밉맵을 사용한 텍스처 매핑이 포함되지만, 이러한 기능이 항상 사용되는 것은 아니다. 최신 GPU는 바운딩 볼륨 계층 구조에서 광선 교차점을 찾는 것을 가속화하는 기능을 포함하여 광선 추적 및 경로 추적의 모든 변형을 가속화하는 데 도움이 되며, 렌더링에 유용할 수 있는 신경망 가속 기능도 포함한다. GPU는 일반적으로 고해상도 실시간 렌더링의 읽기 및 쓰기 대역폭 요구 사항을 지원하기 위해 고대역폭 메모리 시스템과 통합되어 있으며, 특히 프레임을 렌더링하기 위해 여러 패스가 필요한 경우 더욱 그렇다. 그러나 메모리 지연 시간은 CPU보다 높을 수 있으며, 이는 알고리즘의 임계 경로에 많은 메모리 액세스가 포함될 경우 문제가 될 수 있다. GPU 설계는 높은 지연 시간을 피할 수 없다고 받아들이고(부분적으로는 많은 수의 스레드가 메모리 버스를 공유하기 때문) 스레드 간에 효율적으로 전환하여 이를 "숨기려" 노력하므로, 첫 번째 스레드가 읽기 또는 쓰기가 완료되기를 기다리는 동안 다른 스레드가 계산을 수행할 수 있다. 렌더링 알고리즘은 대부분 동일한 작업을 수행하는 작고 유사한 스레드 그룹을 사용하여 구현될 수 있는 경우에만 GPU에서 효율적으로 실행될 것이다. 이 요구 사항을 충족하는 코드의 예: 간단한 광선 추적 이미지에서 작은 픽셀 사각형을 렌더링할 때 모든 스레드는 동일한 객체와 교차하고 동일한 조명 계산을 수행할 가능성이 높다. 성능 및 아키텍처적 이유로, GPU는 와프 또는 웨이브프론트라고 불리는 약 16-64개의 스레드 그룹을 잠금 단계(그룹의 모든 스레드가 동시에 동일한 명령을 실행함)로 실행한다. 그룹의 모든 스레드가 특정 코드 블록을 실행할 필요가 없는 경우(조건으로 인해) 일부 스레드는 유휴 상태가 되거나 계산 결과가 폐기되어 성능 저하가 발생한다.
## 하드웨어 및 소프트웨어 렌더링
역사적으로 하드웨어 렌더링(아마도 "하드웨어 가속 렌더링" 또는 "하드웨어 보조 렌더링"의 약어)이라는 용어는 때때로 하드웨어 가속 래스터화 파이프라인을 사용하는 렌더링(일반적으로 실시간 렌더링용)을 의미하는 데 사용되었다. 반대로, 소프트웨어 렌더링은 그래픽스 하드웨어의 기능에 의해 제한되지 않고 더 사실적이고 고품질 기술을 사용할 수 있는 소프트웨어를 사용하는 오프라인 렌더링을 의미했다. 하드웨어와 소프트웨어 모두 발전했으며, 비록 이러한 용어들이 여전히 사용되지만, 이제는 그 의미가 상황에 따라 달라질 수 있다. 최근에는 "소프트웨어 렌더링"이 OpenGL, 메탈, Direct3D, 벌컨과 같은 그래픽스 API를 사용하지 않는 렌더링을 의미할 수 있다. 그러나 과거에 "소프트웨어 렌더러"라고 불렸을 수 있는 렌더러 유형(예: 영화 오프라인 렌더링에 사용되는 경로 추적 렌더러)은 이제 GPU 가속을 일반적으로 사용하며, 종종 CUDA 또는 OpenCL과 같은 그래픽스에 특화되지 않은 API를 통해 사용한다. 후자의 API는 GPU에서 C++ 코드를 실행할 수 있게 하므로, 이제 CPU 또는 GPU에서 동일한 렌더링 코드를 실행하는 것이 가능하다.
# 알고리즘 및 기술의 연대기
다음은 현재 연구 분야를 포함하여 자주 언급되는 렌더링 기술의 대략적인 연대기이다. 아이디어가 특정 논문에서 명명된 경우에도, 거의 항상 동일한 분야에서 작업하는 여러 연구자 또는 팀이 있었다는 점에 유의해야 한다(초기 관련 작업 포함). 방법이 처음 제안될 때는 종종 매우 비효율적이며, 유용한 기술로 발전시키기 위해서는 추가적인 연구와 실제적인 노력이 필요하다. 이 목록은 학술 연구에 초점을 맞추고 하드웨어는 포함하지 않는다. (더 많은 역사에 대해서는 #외부 링크뿐만 아니라 컴퓨터 그래픽스#역사 및 아케이드 비디오 게임의 황금기#기술을 참조한다.) colwidth=20em * 1760년 – 람베르트 반사 모델 * 1931년 – 표준화된 RGB 색상 표현 * 1967년 – 토랜스-스패로우 반사 모델access-date=4 December 2024 * 1968년 – 광선 투사 * 1968년 – 워녹 은면 제거 알고리즘 * 1970년 – 스캔라인 렌더링 * 1971년 – 구로 셰이딩archive-date=2010-07-02 * 1973년 – 퐁 셰이딩language=en-USarchive-date=2012-03-27 * 1973년 – 퐁 반사 모델 * 1974년 – 텍스처 매핑 * 1974년 – Z 버퍼링 * 1976년 – 환경 매핑s2cid=408793 * 1977년 – 블린-퐁 반사 모델doi-access=free * 1977년 – 그림자 볼륨url-status=dead * 1978년 – 그림자 매핑book-title=Computer Graphics (Proceedings of SIGGRAPH 1978) * 1978년 – 범프 매핑url-status=live * 1980년 – BSP 트리citeseerx=10.1.1.112.4406 * 1980년 – 광선 추적s2cid=9524504 * 1981년 – 쿡-토랜스 반사 모델citeseerx=10.1.1.88.7796 * 1983년 – MIP 맵citeseerx=10.1.1.163.6298 * 1984년 – 팔진트리 광선 추적s2cid=16965964 * 1984년 – 알파 합성url-status=live * 1984년 – 분산 광선 추적pages=137–145url=http://www.cs.rutgers.edu/~nealen/teaching/cs428_fall09/readings/cook84.pdf * 1984년 – 라디오서티 (컴퓨터 그래픽스) (1985년 사소하지 않은 장면에 대한 방법)citeseerx=10.1.1.112.356access-date=17 December 2024 * 1984년 – A-버퍼 * 1985년 – 헤미큐브 라디오서티url-status=dead * 1986년 – 광원 추적citeseerx=10.1.1.31.581 * 1986년 – 렌더링 방정식 * 1986년 – 경로 추적 * 1987년 – 레이즈 렌더링 * 1988년 – 복사조도 캐싱url-access=subscriptionaccess-date=11 February 2025 * 1991년 – 샤오린 우 직선 안티에일리어싱url-access=subscriptionchapter=Fast Anti-Aliased Circle Generation * 1991년 – 계층적 라디오서티citeseerx=10.1.1.93.5694 * 1993년 – 오렌-나야르 반사 모델M. Oren and S.K. Nayar, "Generalization of Lambert's Reflectance Model date=2010-02-15". SIGGRAPH. pp.239-246, Jul, 1994 * 1993년 – 톤 매핑archive-date=2011-12-08 * 1993년 – 서브서피스 스캐터링citeseerx=10.1.1.57.9761 * 1993년 – 양방향 경로 추적 (Lafortune & Willems 공식)url-status=live * 1994년 – 앰비언트 어클루전s2cid=15271113 * 1995년 – 광자 매핑doi=10.1016/0097-8493(94)00145-o * 1995년 – 다중 중요도 샘플링url-status=live * 1997년 – 양방향 경로 추적 (Veach & Guibas 공식)citeseerx=10.1.1.88.944 * 1997년 – 메트로폴리스 광 전송 * 1997년 – 즉석 라디오서티citeseerx=10.1.1.15.240 * 2002년 – 사전 계산 복사 전송url-status=dead * 2002년 – Primary sample space Metropolis light transportaccess-date=10 February 2025 * 2003년 – MERL BRDF 데이터베이스hdl-access=free * 2005년 – 라이트컷츠access-date=10 February 2025 * 2005년 – 복사조도 캐싱access-date=11 February 2025 * 2009년 – 확률적 점진적 광자 매핑 (SPPM)access-date=10 February 2025 * 2012년 – 정점 연결 및 병합 (VCM) (통합 경로 샘플링이라고도 함)access-date=10 February 2025access-date=10 February 2025access-date=11 February 2025 * 2012년 – 매니폴드 탐색url-access=subscription * 2013년 – 그래디언트 영역 렌더링url-access=subscription * 2014년 – Multiplexed Metropolis light transportaccess-date=10 February 2025 * 2014년 – 미분 가능한 렌더링url-status=live * 2015년 – Manifold next event estimation (MNEE)doi=10.1111/cgf.12681access-date=11 February 2025 * 2017년 – 경로 유도 (적응형 SD-트리 사용)url-access=subscription * 2020년 – 시공간 저수지 재샘플링 (ReSTIR)url-access=subscription * 2020년 – 신경 복사장 * 2023년 – 3D 가우스 스플래팅 Div col end
# 추가 문헌
colwidth=30em * url=https://www.realtimerendering.com/ * isbn=978-1-55860-387-5 * last2=Wallace * last3=Bala * url=https://archive.org/details/computergraphics00fole * editor=Andrew S. Glassner * author-link=Andrew Glassner * author2-link=Amy Ashurst Gooch * edition=[Nachdr.] * last2=Humphreys * author1-link=Peter Shirley * last2=Schlechtweg * s2cid=2487835 div col end