12 렌더링 가속화 기술 동향 The Recent Trends of Rendering Acceleration Technologies 남승우 (S.W. Nam) 김해동 (H.D. Kim) 김성수 (S.S. Kim) 최진성 (J.S. Choi) 컴퓨터 그래픽스를 이용한 디지털 콘텐츠를 제작 및 생산함에 있어서 마지막 단계에서 렌더링 과정을 꼭 거쳐야 하기 때문에 렌더링 부분은 아주 중요하다 . 렌더링해야 할 디 지털 콘텐츠에는 게임과 같이 실시간성이 아주 중요한 콘텐츠가 있으며 , 영화와 같이 영상의 높은 품질을 요구하는 콘텐츠가 있다 . 본 고에서는 영화와 같이 고품질을 요구 하는 콘텐츠에 대한 렌더링 기술에 대하여 다루고자 한다 . 영화의 한 장면과 같이 복잡 하며 높은 해상도를 갖는 영상을 기존 단일 CPU 및 소프트웨어 렌더러를 이용하여 렌 더링하는 데 아주 많은 시간이 걸린다 . 본 고에서는 렌더링 시간을 줄이며 높은 품질의 렌더링 결과를 얻는 기술을 3 가지 부분에서 소개하고자 한다 . 첫번째 방법에는 수십 개 에서 수천 개의 CPU 를 이용하거나 PC 를 클러스터링하는 방법이고 , 두번째는 기존 GPU 의 기술이 아주 빨리 발전하여 CPU 보다 빠른 성능을 갖기 때문에 GPU 를 활용 하여 가속화하는 방법이 있으며 , 세번째는 전용 하드웨어를 제작하여 렌더링을 가속하 는 방법이 있다 . 위의 방법들에 대한 기술 동향에 대하여 살펴보도록 한다 . 렌더링기술연구팀 선임연구원 렌더링기술연구팀 선임연구원 렌더링기술연구팀 연구원 렌더링기술연구팀 선임연구원 전자통신동향분석 제 22권 제 4호 2007년 8월 목 차 Ⅰ. 서론 Ⅱ. CPU를 이용한 가속 Ⅲ. GPU를 이용한 가속 Ⅳ. 전용 하드웨어 가속 기술 Ⅴ. 결론 융합 시대를 주도할 디지털콘텐츠 기술 특집 * 본 연구는 정보통신부 및 정보통신연구진흥원의 IT 신성장동력핵심기술개발사업 의 일환으로 수행하였음. [2006-S-045-01, 기능 확장형 초고속 렌더러 개발]
12
Embed
렌더링 가속화 기술 동향 - GitHub Pagessungsoo.github.io/papers/rendering-acceleration.pdf · 2020-07-22 · 12 렌더링 가속화 기술 동향 The Recent Trends of Rendering
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
12
렌더링 가속화 기술 동향 The Recent Trends of Rendering Acceleration Technologies
남승우 (S.W. Nam)
김해동 (H.D. Kim)
김성수 (S.S. Kim)
최진성 (J.S. Choi)
컴퓨터 그래픽스를 이용한 디지털 콘텐츠를 제작 및 생산함에 있어서 마지막 단계에서
렌더링 과정을 꼭 거쳐야 하기 때문에 렌더링 부분은 아주 중요하다. 렌더링해야 할 디
지털 콘텐츠에는 게임과 같이 실시간성이 아주 중요한 콘텐츠가 있으며, 영화와 같이
영상의 높은 품질을 요구하는 콘텐츠가 있다. 본 고에서는 영화와 같이 고품질을 요구
하는 콘텐츠에 대한 렌더링 기술에 대하여 다루고자 한다. 영화의 한 장면과 같이 복잡
하며 높은 해상도를 갖는 영상을 기존 단일 CPU 및 소프트웨어 렌더러를 이용하여 렌
더링하는 데 아주 많은 시간이 걸린다. 본 고에서는 렌더링 시간을 줄이며 높은 품질의
렌더링 결과를 얻는 기술을 3가지 부분에서 소개하고자 한다. 첫번째 방법에는 수십 개
에서 수천 개의 CPU를 이용하거나 PC를 클러스터링하는 방법이고, 두번째는 기존
GPU의 기술이 아주 빨리 발전하여 CPU 보다 빠른 성능을 갖기 때문에 GPU를 활용
하여 가속화하는 방법이 있으며, 세번째는 전용 하드웨어를 제작하여 렌더링을 가속하
는 방법이 있다. 위의 방법들에 대한 기술 동향에 대하여 살펴보도록 한다.
렌더링기술연구팀 선임연구원
렌더링기술연구팀 선임연구원
렌더링기술연구팀 연구원
렌더링기술연구팀 선임연구원
전자통신동향분석 제 22권 제 4호 2007년 8월
목 차
Ⅰ. 서론
Ⅱ. CPU를 이용한 가속
Ⅲ. GPU를 이용한 가속
Ⅳ. 전용 하드웨어 가속 기술
Ⅴ. 결론
융합 시대를 주도할 디지털콘텐츠 기술 특집
* 본 연구는 정보통신부 및 정보통신연구진흥원의 IT 신성장동력핵심기술개발사업
의 일환으로 수행하였음. [2006-S-045-01, 기능 확장형 초고속 렌더러 개발]
남승우 외 / 렌더링 가속화 기술 동향
13
I. 서론
화가는 붓과 물감으로 캔버스에 색을 칠하여 하
나의 작품을 만들고, 카메라 작가는 카메라를 이용
하여 필름에다가 하나의 작품을 담듯이 컴퓨터를 이
용하여 하나의 그림을 만들어 내는 것이 렌더링 기
술이다. 컴퓨터 그래픽스 기술은 모델링, 애니메이
션, 렌더링 기술로 크게 분류할 수 있다. 모델링 기
술은 실제 물체와 크기와 모양이 유사하게 점, 면,
선 등을 이용하여 물체의 형태를 만드는 기술이고,
애니메이션 기술은 프레임(frame)마다 물체의 형태
가 움직이게 하는 기술이며, 렌더링 기술은 모델링
된 물체의 표면에 색을 입히는 기술이라 할 수 있다.
색을 입히기 위하여 필요한 요소는 광원, 매질, 카메
라 특성이다. 여기서 빛을 받아서 물체의 표면이 어
떻게 반응하는가와 같은 물체 표면 특성을 매질이라
한다. 그러면 렌더러라 함은 모델링 데이터와 위에
서 언급한 색을 입히기 위한 요소를 입력으로 받아
서 이차원의 이미지를 출력하는 것이다. 기존 상용
렌더러 중에서 픽사(pixar)의 렌더맨(RenderMan)
은 REYES 구조[1]를 계속 발전시켜 왔으나 2005
년을 기점으로 전역 조명(global illumination) 렌더
링을 위한 광선 추적법을 추가하였다. 여기서 REYES
구조는 광선 추적법(ray tracing) 보다 계산량이 많
지 않으므로 속도가 빠른 장점이 있어서 아직도 많
이 사용되고 있다. 그러나 최근 이러한 지역 조명
(local illumination)에 기반한 렌더링 보다는 전역
조명에 기반한 렌더링이 많이 쓰이고 있고, 전역 조
명에 기반한 렌더링이 물리적으로 빛과 매질의 상호
작용을 정교하게 해석하기 때문에 지역 조명에 기반
한 방법보다 좀더 실사에 가까운 렌더링 효과를 얻
을 수 있다. 전역 조명에 기반한 렌더링의 단점은 지
역 조명에 기반한 렌더링보다 시간이 많이 소요된
다. 빛과 매질의 상호작용을 물리적 기반으로 렌더
링하는 대표적인 알고리듬으로는 광선 추적법이 있
다. 광선 추적법은 기본적으로 시간이 매우 많이 걸
리는 계산이어서 광선 추적법의 시간을 단축시키기
위하여 포톤 맵과 레디언스 캐시(radiance cache)
방법 등이 있다. 포톤 맵을 이용하더라도 마지막에
는 final gather를 하게 되어 시간이 많이 걸리는 단
점이 있다. 본 고에서는 위의 전역 조명에 기반한 방
법(특히 광선 추적법 중심)을 가속하기 위한 세 가지
면에서 기술 동향을 설명하고자 한다. 첫째는 CPU
를 이용한 가속 방법, 둘째는 GPU를 이용한 가속
방법, 셋째는 전용 하드웨어를 이용한 가속 방법 등
에 대하여 설명한다. 위와 같이 나눈 것은 Wald 등
이 유로그래픽스에 발표한 STAR 논문을 참조하였
다[2]. II장에서는 병목이 되는 렌더링 알고리듬에
대하여 살펴보고, CPU 기반의 렌더링 가속화 기법
을 설명한다. III장에서 GPU를 이용한 렌더링 가속
기술에 대하여 기존 연구들에 대하여 논하고, IV장
에서는 병목이 되는 알고리듬을 전용 하드웨어로 설
계하여 가속화하는 기술에 대하여 논하고자 한다.
마지막으로 V장에서는 앞으로의 렌더링 가속 부분
에서의 전망과 결론을 맺는다.
Ⅱ. CPU를 이용한 가속
1. 광선 추적법
3차원 장면(물체, 조명, 카메라 등으로 모델링된
장면)이 카메라를 통해서 2차원 영상을 보여주는 것
은 조명과 물체가 상호작용하여 카메라를 통하여 빛
이 들어오는 과정이며, 이러한 과정을 역으로 카메
라에서부터 물체를 향하여 광선을 쏘아 이를 추적하
여 영상에 색깔을 계산하는 알고리듬이 광선 추적법
이다. 광선이 물체에 충돌하면 교차된 물체 표면에
서 모든 방향으로 광선을 발생시키고(이를 2차광선
이라고 하자) 2차 광선들이 또 다른 물체에 교차하
여 3차 광선들을 발생시킨다. 이때 차수를 더해갈수
록 광선의 수는 기하급수적으로 많아지며 계산량도
기하급수적으로 증가한다. 이러한 계산량을 줄이기
위하여 2차광선은 3가지로 형태로 나누어 발생시킨
다. 하나는 섀도 광선을 발생하고 다른 하나는 표면
에서 반사하여 반사광을 발생하고, 마지막으로 물체
를 투과하는 투과광선을 발생한다. (그림 1)은 광선
전자통신동향분석 제 22권 제 4호 2007년 8월
14
이 표면이 충돌할 때 발생하는 2차 광선의 예이다.
광선이 물체 표면과 충돌하면 표면에 대한 광량
(radiance)을 계산하는데 식 (1)과 같다.
iiisdpLpfpL ωθωωωω )cos(),(),,(),(
2 100 ∫= (1)
(1)로부터 2차 광선을 3가지 형태로 발생시키되
(그림 1)과 같이 각 방향으로 확률적으로 분산광을
발생시켜서 광량을 계산하면 (1)이 (2)와 같이 된다.
),(
),(
),(),( 0
∑∑
∑
+
+
+=
transtrans
specularspecular
lightdirectambient
pLf
pLf
pLfLpL
ω
ω
ωω (2)
여기에서 f 값은 BRDF 값이며, 즉 표면에서 입사 빛
에 대한 임의의 방향으로 방출되는 빛의 양이 얼마
인지를 결정하는 함수이고, L 값은 p 위치에서의 색
깔 값이다. (그림 2)는 광선 추적 알고리듬을 의사코
드(pseudo code)로 작성한 것이다. 광선 추적법은
각 픽셀마다 샘플링을 통하여 광선을 생성한다.
그리고 교차점이 있으면 교차점에 대한 색깔 값
을 가져오고 교차점에서부터 2차 광선을 쏘아 2차
광선이 교차하는 점에서 다시 색깔 값을 가져오고 3
차광선도 마찬가지로 반복적으로 수행한다. 각각의
1차 2차 광선에서 가져온 값에 BRDF 함수 값을 곱
하여 모두 더해주면 현재 픽셀에서의 최종 색깔 값
이 된다. 여기서 kd, kr, kt는 각각 직접광, 반사광,
투사광에 대한 BRDF 함수 값이다.
2. CPU를 이용한 가속 기술
국내에서는 일반적으로 소프트웨어를 이용한 가
속은 첫번째, 소프트웨어를 CPU에 최적화하는 방
법이 있으며, 두번째는 CPU를 코어를 많이 사용하
여 알고리듬을 병렬로 처리하는 방법이 있다. 최근
에는 cell processor의 등장으로 cell로 구현한 사
례가 있다. 광선 추적법 자체는 병렬성을 갖고 있으
나 메모리와 CPU 간의 데이터 교환 시간과 동기를
맞추는 기본적인 시간이 들어간다. 이를 해결하기
위한 시도로서 수퍼컴퓨터와 같은 공유메모리 시스
템을 이용하는 방법이 있고, 다른 방법으로는 PC간
에 클러스터링하는 방법이 있다. PC간의 클러스터
링 방법은 공유메모리 방법에 비하여 작은 비용으로
구성할 수 있다는 장점이 있으나 CPU간 통신 대역
폭과 메모리 대역폭이 낮은 것이 단점이다.
가. Star Ray
Muuss 등은 처음으로 이러한 시도를 하였으며, 비
슷한 하드웨어 플랫폼에서 Utah 대학의 Parker 등은
1999년도 논문에 60개의 CPU로 (그림 3)과 같은
512×512 크기의 이미지를 렌더링하는 데 초당 4프
레임의 성능을 갖는 star ray를 발표하였다[3].
image plane
local shading
refract
reflect
normal
intersect
(그림 1) 광선 추적법에서의 2차 광선 발생
(그림 2) 광선 추적 알고리듬의 의사코드
for each pixel for each sample ray generation ray-object intersection if(intersect) Id = local shading if(reflection) reflection ray generation Ir = trace ray endif if(refraction) refraction ray generation It = trace ray endif I = kd×Id+kr×Ir+kt×It endif end for end for
(그림 3) Utah 대학의 Interactive 광선 추적의 예
남승우 외 / 렌더링 가속화 기술 동향
15
나. OpenRT
2001년에 Wald 등이 OpenRT라는 실시간 광선
추적 엔진을 제안하였다. 현재는 웹을 통하여 공개
하여 현재 계속적으로 API가 향상되어 가고 있다.
OpenRT의 커널(kernel)의 특징은 메모리 접근을
최소화하였고, 프로세서의 캐시 적중률을 높이도록
설계하였으며, 최신 CPU의 SIMD extension을 지
원하는 것이다. 또한 광선 추적법에서 광선을 재귀
적(recursive)으로 처리하지 않고 패킷 단위로 추
적, 충돌처리, 셰이딩(shading)하여 메모리 접근을
최소화하고, SSE 명령어를 사용하였다.
OpenRT는 (그림 4)와 같은 일명 “soda hall”
(250만 폴리곤으로 구성)이라는 1024×1024 크기
의 영상 한 장을 Pentium-IV 2.5GHz 1개의 CPU
에서 초당 4.1 프레임의 속도를 나타내었고, 셰이딩
을 포함하면 초당 1.8프레임의 성능을 나타내었다.
이러한 결과로 보면 광선 추적 부분뿐만 아니라 셰
이딩 부분도 병목이 되고 있음을 알 수 있다. Open-
RT는 또한 분산 병렬 처리를 지원하는데 PC를 클
러스터링하여 성능의 향상을 도모할 수 있다. 분산
처리에서 데이터 교환을 위한 라이브러리로 MPI 혹
은 PVM 등이 있는데, 실시간으로 성능을 내기 위해
서는 이러한 라이브러리를 사용할 수 없어서 UNIX
TCP/IP 프로토콜을 이용했다. 다이내믹한 로드 밸
런싱을 효율적으로 하기 위하여 이전 업무가 끝이
나면 다음 업무를 미리 가져와서 다음 업무를 시작
하기 위해 기다리는 시간을 제거하였다. 이외 프레
임간에 차이가 없는 부분은 네트워크를 통하여 전송
을 하지 않고 프레임간에 차이가 있는 부분만을 전
송하며, multi-threading을 지원하여 성능을 높였다.
OpenRT의 분산 병렬 처리의 결과는 다음과 같
다. 48 CPU까지는 테스트를 하였으며 대부분의 장
면에 대하여(전역조명의 경우) 선형적으로 성능이
증가하나 복잡한 장면(1천만 폴리곤 이상, 지역조명
인 경우)에서는 24 CPU 이상에서 성능이 증가하지
않는 현상을 보인다.
3. Cell 프로세서를 이용한 가속 기술
Benthin 등은 cell 프로세서를 이용하여 광선 추
적법을 구현하였다[4]. Cell 프로세서의 구조는 (그
림 5)와 같이 8개의 SPE와 1개의 PPE로 구성되어
있다[5]. 각 SPE는 일종의 128bit-SIMD RISC 프
로세서로서 순차적으로 명령어를 수행하기 때문에
데이터 순서의 의존성 혹은 분기로 인한 파이프라인
스톨(pipeline stall)이 생길 수 있다. SPE의 명령어
들은 SIMD 프로세싱을 할 수 있게 설계되어 있고 1
사이클에 1개의 스루풋을 가지며 2~7 사이클의
latency를 갖는다. 각 SPE들은 세 개의 레벨을 갖는
메모리 구조인데, 한 개의 128×128bit 레지스터 파
일(register file), 한 개의 256KB의 로컬 스토어
(그림 4) OpenRT 성능 테스트에 사용된 “Soda Hall” (그림 5) Cell 프로세서 구조
Power Processor Element(PPE) (64bit PowerPC with VMX)
SPE 5
SPE 6
SPE 7
SPE 8
SPE 1
SPE 2
SPE 3
SPE 4
Memory Controller
Memory Controller
RAM
RAM
I/O Controller
I/O Controller
EIB
Dual “configurable” High speed I/O channels(76.8GBytes per second in total)
Dual 12.8GByte per second memory busses give cell huge memory bandwidth. (25.6GBytesper second in total)
EIB(Element Interconnect Bus) is the internal communication system