컴퓨터 그래픽스

편집 역사 토론

1. 개요[편집]

컴퓨터 그래픽스
Computer Graphics
두 렌더링 축래스터화 / 레이 트레이싱
핵심 방정식렌더링 방정식 (Kajiya, 1986)
주요 하위 분야모델링 · 렌더링 · 애니메이션 · 시뮬레이션
연산 기반GPU 컴퓨팅, 선형대수, 몬테카를로 방법

물리를 정확히 푸는 대신, 사람 눈이 속아 넘어갈 만큼만 푸는 기술.

컴퓨터 그래픽스(computer graphics)는 기하 형상과 재질, 조명 정보를 수학적으로 표현하고 이를 화면의 픽셀 값으로 변환하는 계산 분야이다. 전산해석 분야와 뿌리를 공유하지만 목표 함수가 다르다. CFD나 구조해석이 “정답에 얼마나 가까운가”를 묻는다면, 그래픽스는 주어진 프레임 예산 안에서 얼마나 그럴듯한가를 묻는다. 16.7 ms(60 fps) 안에 끝나지 않는 정답은 실시간 그래픽스에서 오답 취급을 받는다.1

이 트레이드오프가 분야 전체의 성격을 결정한다. 근사와 캐싱, 컬링과 레벨 조절이 잔재주가 아니라 정식 학문 주제로 취급되며, 동시에 물리 기반의 엄밀함도 계속 침투해 들어온다. 오프라인 렌더링은 이미 실측 광학에 근접했고, 실시간 쪽도 하드웨어 레이 트레이싱이 보급되며 그 경계가 흐려지는 중이다.

2. 렌더링 방정식[편집]

현대 렌더링 이론의 중심에는 카지야의 렌더링 방정식이 있다. 어떤 점 x\mathbf{x}에서 방향 ωo\omega_o로 나가는 복사휘도는

Lo(x,ωo)=Le(x,ωo)+Ωfr(x,ωi,ωo)Li(x,ωi)(ωin)dωiL_o(\mathbf{x}, \omega_o) = L_e(\mathbf{x}, \omega_o) + \int_{\Omega} f_r(\mathbf{x}, \omega_i, \omega_o) \, L_i(\mathbf{x}, \omega_i) \, (\omega_i \cdot \mathbf{n}) \, d\omega_i

로 쓴다. 우변의 적분 안에 좌변과 같은 종류의 항 LiL_i가 다시 들어 있다는 점, 즉 재귀적 적분 방정식이라는 것이 모든 어려움의 근원이다. 해석해가 없으니 결국 표본추출로 근사하며, 그래서 경로 추적(path tracing)은 본질적으로 몬테카를로 방법이다. 표본이 부족하면 화면에 노이즈가 낀다. 오차가 O(N1/2)O(N^{-1/2})로만 줄어드는 것도 그대로 물려받아, 소볼 수열 같은 저불일치 표본추출과 중요도 표본추출이 렌더러의 필수 장비가 된다.

이 적분을 성실히 푸는 것이 전역 조명이고, 그것이 너무 비싸서 근사한 것이 앰비언트 오클루전이나 각종 라이트맵 굽기다. 재질 항 frf_r(BRDF)을 에너지 보존과 실측 광학에 맞춰 정리한 체계가 물리 기반 렌더링이다.

3. 래스터화 파이프라인[편집]

실시간 렌더링의 주력은 여전히 래스터화다. 삼각형을 화면 공간으로 투영해 픽셀을 채우는 방식으로, 광선-장면 교차 대신 단순 반복문이라 하드웨어로 밀어붙이기 좋다. 순서는 대략 이렇다.

  • 정점 변환 — 모델·뷰·투영 행렬을 곱해 클립 공간으로 보낸다. 회전 표현에는 회전행렬, 오일러각, 사원수가 쓰이며 보간 품질 때문에 애니메이션에서는 사원수가 선호된다.
  • 컬링 — 안 보이는 것부터 버린다. 시야 밖은 프러스텀 컬링, 뒷면은 백페이스 컬링, 다른 물체에 가려진 것은 오클루전 컬링. 이 세 단계를 통과한 삼각형만이 픽셀을 만질 자격을 얻는다.
  • 래스터화와 가시성 — 삼각형을 픽셀 조각으로 쪼개고, 깊이 값을 비교해 앞뒤를 정한다. 깊이 버퍼가 여기서 일한다.
  • 셰이딩 — 픽셀별 조명 계산. 광원이 많으면 지오메트리와 조명을 분리하는 디퍼드 셰이딩이 유리해진다. 그림자는 별도 패스로 그림자 매핑을 굽는다.
  • 필터링과 후처리 — 텍스처 축소 시 에일리어싱을 막는 밉맵, 가장자리 계단을 다스리는 안티앨리어싱이 붙는다.
점군(point cloud) 렌더링 감각을 보기 위한 데모 — 900개 입자를 velocity-Verlet로 적분하며 매 프레임 캔버스에 점으로 찍는다. 그래픽스 파이프라인(정점 변환·래스터화·깊이 버퍼·셰이딩)을 구현한 것이 아니라, 이 커널의 입자 예산 상한에서 '많은 프리미티브를 프레임 예산 안에 그리는' 부하 감각만 전달한다. 원근 투영도 조명도 없다.

4. 표현: 무엇을 그릴 것인가[편집]

렌더링이 “어떻게 그리는가”라면 모델링은 “무엇을 그리는가”다.

표현장점대표 용도
폴리곤 메시하드웨어 친화, 성숙한 도구실시간 자산 전반
파라메트릭 곡면해석적 매끄러움베지어 곡선, NURBS, CAD
암시적 표면위상 변화가 자유로움레벨셋 방법, 유체 표면
복셀·점군스캔 데이터와 직결의료 영상, 라이다

암시적 표현을 삼각형 메시로 뽑아내는 표준 절차가 마칭 큐브이며, CFD 후처리의 등가면 추출과 완전히 같은 알고리즘이다. 반대로 점 집합에서 메시를 만드는 데는 들로네 삼각분할보로노이 다이어그램이 동원된다. 이 지점에서 그래픽스와 메시 생성은 사실상 같은 문제를 다른 목적으로 푸는 형제 분야다.2

5. 속도를 만드는 자료구조[편집]

그래픽스가 빠른 이유의 절반은 알고리즘이 아니라 자료구조다. 광선-삼각형 교차를 전수 검사하면 장면 규모에 선형으로 느려지므로, 경계 볼륨 계층(BVH)으로 로그 스케일로 낮춘다. 공간을 나누는 공간 분할 자료구조는 렌더링뿐 아니라 충돌 감지에도 그대로 쓰인다. 거리에 따라 메시 밀도를 낮추는 레벨 오브 디테일은 “먼 건 대충 그려도 된다”는 지극히 상식적인 아이디어를 체계화한 것이고, 이 모든 것의 실행 기반은 대규모 병렬 하드웨어, 즉 GPU 컴퓨팅이다.

6. 애니메이션과 시뮬레이션의 경계[편집]

움직임을 만드는 쪽에서는 스켈레탈 애니메이션애니메이션 블렌딩, 역운동학이 기본기이고, 데이터는 모션 캡처로 얻는다. 여기서 한 발 더 나가면 아예 물리를 풀게 되는데, 물리 엔진강체 동역학, 천 시뮬레이션, 파티클 시스템, FLIP-PIC 유체가 그 영역이다. 공학 해석과 같은 방정식을 쓰지만 안정성과 속도를 위해 정확도를 과감히 포기한다는 점이 다르다. 실제로 위치 기반 동역학은 힘 대신 위치 보정을 직접 가하는데, 이건 수치적으로는 반칙에 가깝지만 절대 터지지 않는다는 압도적 장점이 있다.3

7. 여담[편집]

그래픽스 엔지니어의 성과 지표는 논문의 수렴 그래프가 아니라 프레임 타임 그래프다. 1 ms를 줄이려고 며칠을 태우고, 그렇게 아낀 예산을 아티스트가 폴리곤 몇 만 개로 즉시 회수해 간다. 그럼에도 이 분야가 재밌는 이유는, 결과가 즉시 눈에 보이고 틀리면 그것도 즉시 눈에 보이기 때문이다. 잔차가 안 내려가는 것보다는 화면이 보라색으로 물드는 편이 디버깅하기 낫다.4

8. 관련 문서[편집]

9. Footnotes[편집]

  1. 그래서 이 바닥에는 “충분히 정확한 것보다 충분히 빠른 것이 낫다”는 정서가 있다. 물론 오프라인 영화 렌더링은 프레임당 수십 시간을 쓰기도 하므로, 같은 학문 안에서 시간 예산이 여섯 자릿수쯤 갈린다.

  2. 다만 요구 품질이 정반대다. 해석용 메시는 요소 품질(왜곡도·종횡비)이 나쁘면 해가 망가지지만, 그래픽용 메시는 겉면만 예쁘면 내부가 비어 있어도 아무 문제가 없다. 그래픽 자산을 그대로 해석에 넣으려다 좌절하는 것은 CAE 입문자의 통과의례.

  3. PBD 계열이 실제 물성치와 무관한 강성 파라미터를 쓰는 것은 잘 알려진 한계다. 공학적 예측이 목적이면 절대 쓰면 안 되고, 화면에서 천이 펄럭이면 되는 상황이면 이보다 나은 선택이 없다. 목적 함수가 다르면 정답도 다르다.

  4. 셰이더 오류 시 화면이 마젠타로 물드는 관습은 여러 엔진의 사실상 표준이다. 자연에 흔치 않은 색이라 “이건 명백히 버그”라는 신호로 쓰기 좋기 때문. 무지개 컨투어를 좋아하는 CAE와는 색 감각이 정반대다.