최신 게임 엔진은 실시간 렌더링과 블렌더의 "느린"렌더링을 어떻게 달성합니까?


90

나는 gamedev와 Blender를 처음 접했고 흔들리지 않는 것이 있습니다.

블렌더에서 단일 렌더링 (고급 사이클 렌더러를 사용하더라도)은 내 컴퓨터에서 최대 45 초가 걸릴 수 있습니다. 그러나 게임에서 놀라운 그래픽을 가질 수 있으므로 렌더링은 실시간으로 1 초에 여러 번 연속적으로 발생합니다.

또한 "느린"블렌더의 렌더링이 어떻게 보이는지, 게임 엔진이 실시간 (또는 거의 실시간) 렌더링을 달성하는 방법과 관련하여 연결 끊김이 무엇인지 궁금합니다.


3
실시간 렌더링은 그 자체로 큰 주제입니다 (실시간 렌더링 포함). 그리고 Cycles와 같은 렌더러는 게임 엔진의 3D 렌더러와 완전히 다르게 작동합니다. 실제로 비교할 수는 없습니다
UnholySheep

42
@UnholySheep 물론 비교할 수 있습니다. 질문에 대답하기 위해 다른 사람이 어떻게 차이점을 설명하겠습니까?
user985366

2
@ 10Replies 그러나이 질문은 그 사이트에서 주제가 아닙니다.
GiantCowFilms

3
@ 10Replies : OP가 Blender를 언급하고 있지만,이 질문은 실시간 게임 엔진이 거의 사실적인 3D 렌더러 (예 : Blender와 같은 다른 3D 렌더러)보다 3D 장면을 더 빨리 렌더링하는 이유에 대한 문제입니다. 이것은 또한 수락 된 답변에 의해 답변 된 질문이기도합니다. 염두에두고, 나는 질문은 여기에 주제 더 동의 게임 개발 일반적인 게임 개발 기술에 대한 질문이 오히려보다는, 질문 할 수있다, 블렌더 질문 특히 블렌더 더 구체적이다.
또는 매퍼

3
여기서 비밀은 놀라운 것이 정확할 필요는 없다는 것입니다. InvSqrt
Dmitry Grigoryev

답변:


115

실시간 렌더링, 심지어 현대적인 실시간 렌더링은 트릭, 바로 가기, 핵 및 근사치로 구성됩니다.

그림자를 예로 들어 보자.

우리는 여전히 임의의 수의 조명과 임의의 복잡한 객체로부터 실시간 그림자를 렌더링하기위한 완전히 정확하고 강력한 메커니즘을 가지고 있지 않습니다. 섀도우 매핑 기술에는 여러 가지 변형이 있지만 섀도우 맵관련 하여 잘 알려진 문제로 인해 어려움을 겪고 있으며 이러한 문제에 대한 "수정"은 실제로 해결 방법과 트레이드 오프의 모음 일뿐입니다. "심도 바이어스"또는 "다각형 오프셋"이라는 용어는 무엇이든 볼 수 있지만 강력한 기술은 아닙니다.

실시간 렌더러가 사용하는 기술의 또 다른 예는 사전 계산입니다. 실시간으로 계산하기에 무언가 (예 : 조명)가 너무 느리면 (그리고 사용하는 조명 시스템에 따라 다를 수 있음) 사전 계산하여 저장할 수 있으며 사전 계산 된 데이터를 실제로 사용할 수 있습니다 성능 향상을위한 시간-종종 동적 효과를 희생합니다. 이것은 일직선 메모리 대 컴퓨팅 트레이드 오프입니다. 메모리는 종종 저렴하고 풍부하며 컴퓨팅은 그렇지 않기 때문에 컴퓨팅 비용을 절약하기 위해 여분의 메모리를 구울 수 있습니다.

반면 오프라인 렌더러 및 모델링 도구는 정확성과 품질에 더 중점을 두는 경향이 있습니다. 또한 동적으로 변경되는 지오메트리 (예 : 모델을 빌드 할 때 모델)로 작업하기 때문에 사물을 다시 계산해야하는 반면 실시간 렌더러는이 요구 사항이없는 최종 버전으로 작업합니다.


14
언급해야 할 또 다른 요점은 게임이 영역의 뷰를 빠르게 렌더링하는 데 필요한 모든 데이터를 생성하는 데 사용되는 계산량은 하나의 뷰를 렌더링하는 데 필요한 계산량보다 훨씬 더 클 수 있다는 것입니다. 사전 계산없이 영역의 뷰를 렌더링하는 데 1 초가 걸리지 만 사전 계산 된 일부 데이터가이를 1/100 초로 줄일 수있는 경우, 사전 계산에 20 분을 소비하면 실시간 게임에서 뷰가 필요할 경우 유용 할 수 있습니다. 10 초 24fps 영화를 원한다면 4 분을 소비하는 것이 훨씬 빨
랐을 것입니다

9
... 초당 1 개의 비율로 240 개의 필수보기를 생성합니다.
supercat

@ supercat 그리고 이것 때문에 당신의 렌더는 번거 로움이 거의 없으며 프로세스를 많이 제어 할 수 있습니다. 게임 엔진을 사용하여 렌더링 할 수 있습니다 ... 피처를 희생 할 준비가된다면. 그러나 당신이 그만한 가치가 없다고 말한 것처럼.
joojaa

내가 기억 할 수있는이 하나 눈에 띄는 예는 상대적 짜릿한의 조합을 사용하여 매우 제한된 시스템에서 실시간 3D 그래픽을 달성 할 수 있었다 원래 퀘이크 엔진 (~ 1996)이며, 매우 시간이 많이 소요 미리 계산 기술을. BSP 트리와 사전 렌더링 된 조명 효과가 미리 생성되었습니다. 해당 엔진의 레벨을 설계하려면 일반적으로 맵 컴파일 도구가 완료 될 때까지 몇 시간 (보통 밤새)이 소요됩니다. 본질적으로 절충 시간은 제작 시간을 희생하여 렌더링 시간을 줄였습니다.
Jason C

(원래 둠 엔진 [1993] 유사한 사전 계산을했다 마라톤. 뿐만 아니라,하지만 내가 마라톤 수준을 구축 기억, 기억하지 않습니다하지만 참여 있었는지 기억하지 수 있습니다.)
제이슨 C

109

현재의 대답은 관련된 일반적인 문제를 설명하는 데 매우 효과적이지만, 중요한 기술적 세부 사항을 놓치고 있다고 생각합니다. Blender의 "Cycles"렌더 엔진은 대부분의 게임에서 사용하는 엔진과는 다른 유형의 엔진입니다.

일반적으로 게임은 장면의 모든 다각형을 반복하고 개별적으로 그려서 렌더링됩니다. 이는 평평한 이미지를 생성하기 위해 가상 카메라를 통해 다각형 좌표를 '투영'하여 수행됩니다. 이 기술이 게임에 사용되는 이유는 현대 하드웨어가이 기술을 중심으로 설계되어 상대적으로 높은 수준의 디테일까지 실시간으로 수행 될 수 있기 때문입니다. 흥미롭게도, 이것은 Blender Foundation이 이전 엔진을주기 전에 Cycles 엔진을 선호하기 전에 Blender의 이전 렌더 엔진에서 사용했던 기술입니다.

다각형 렌더링

반면에 사이클은 레이트 레이싱 엔진입니다. 다각형을보고 개별적으로 렌더링하는 대신 가상 광선을 장면으로 내보내고 (최종 이미지의 모든 픽셀마다 하나씩) 광선을 여러 표면에서 반사 한 다음 해당 데이터를 사용하여 픽셀의 색상을 결정합니다. 해야한다. 레이트 레이싱은 계산에 많은 비용이 드는 기술로 실시간 렌더링에는 실용적이지 않지만 이미지와 비디오를 렌더링하는 데 사용됩니다.

레이트 레이싱 렌더링


간결성을 위해 레이트 레이싱 및 폴리곤 렌더링에 대한 간단한 설명은 크게 줄었습니다. 기술에 대해 더 자세히 알고 싶다면 필자가 할 수있는 것보다 더 나은 설명을 작성한 많은 사람들이 있다고 생각하므로 심층적 인 자습서 또는 책을 찾는 것이 좋습니다.

또한 3D 렌더링과 관련된 다양한 기술이 있으며 일부 게임은 실제로 특정 목적으로 다양한 레이트 레이싱을 사용합니다.


3
아주 좋은 점에 +1; 나는 의도적으로 래트 레이싱 대 래스터 화의 토끼 구멍을 밟지 않았으므로 이것을 보충 자료로 사용하는 것이 좋습니다.
Maximus Minimus 17

16
이 답변은 차이의 핵심에 더 가깝습니다. 게임 엔진은 래스터 화 (전달 또는 지연)를 수행하는 반면 오프라인 렌더러 (예 : Blender, Renderman 등)는 레이트 레이싱을 수행합니다. 이미지를 그리는 방법은 완전히 다릅니다.

4
@ LeComteduMerde-fou gamedev는 게임 개발자를 대상으로하기 때문에 기술적으로 기울어 진 독자에게는 추가 기술 설명이 도움이 될 것이라고 생각했습니다.
Pharap

1
사실 @ssell하지만, 그렇지 않은 단지 광선 추적에 대해 - 심지어 광선 추적하지 않고, 심지어 GPU 렌더링으로, 블렌더의 렌더링은 일반적으로 훨씬 더 상세하고 느립니다. 이것은 주로 더 나은 텍스처 필터링 및 해상도, 앤티 앨리어싱, 조명, 그림자 매핑, Z- 정확도, 쿼드, 양방향 표면, 큰 다각형 수, 고해상도 출력, 정확한 범프 매핑과 같은 정확성에 중점을 둡니다. , 사전 계산 된 맵 부족, 모핑, 정확한 운동학 ... 게임 엔진에 부족하거나 위조 된 기능의 긴 목록입니다.
Luaan

1
@Chii 나는 잘못 기억했다. ART VPS를 생각하고 있었습니다. 실시간이 아니라 가속이었습니다.
Jason C
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.