Rasterization vs Ray Tracing

2025. 4. 9. 06:30·Dev/Grapics
렌더링 기술의 두 갈래, 무엇이 다르고 왜 중요한가?

 

게임 그래픽을 담당하는 개발자 A는 GPU 성능을 쥐어짜며 실시간 렌더링을 구현하고 있었습니다.

그런데 어느 날, 팀의 아티스트가 무심코 묻습니다.

"레이 트레이싱 쓰면 더 예쁘지 않아요? 왜 안 써요?"

 

개발자 A는 한숨을 쉬며 이렇게 답합니다.

"아름다움은 계산량과 반비례하거든요...."

 

그래서 오늘의 질문은 이것입니다.

 

왜 어떤 렌더링은 Rasterization을 쓰고, 어떤 렌더링은 Ray Tracing을 쓸까?

둘은 어떻게 다르고, 각각 어떤 장단점이 있을까?

 

이 글에서는 두 기술의 핵심 원리, 차이점, 그리고 실제 적용 사례까지 알아보겠습니다.


1. Rasterization - 화면에 삼각형을 빠르게 찍는 기술

Rasterization은 3D 공간의 정점을 화면 좌표계로 투영한 뒤, 삼각형 단위로 색상을 채워나가는 방식입니다.

즉, '모양'을 기준으로 빠르게 픽셀을 칠하는 방식입니다.

 

핵심 프로세스

  1. 모델 정점(Vertex)을 가져온다
  2. 뷰 변환 및 투영(Projection)을 적용한다
  3. 삼각형 구성 및 화면 공간으로 변환한다
  4. 삼각형 내부 픽셀 색칠 (Fragment Shader)
// OpenGL 기본 예시
glUseProgram(shaderProgram);
glBindVertexArray(vao);
glDrawArrays(GL_TRIANGLES, 0, 3); // 삼각형을 그린다

 

장점과 단점

장점 단점
매우 빠름 (GPU 최적화 완료) 광학 효과 표현이 제한됨
코드가 단순하고 예측 가능함 복잡한 조명은 트릭으로 구현해야 함

2. Ray Tracing - 픽셀마다 광선을 쏘는 방식

Ray Tracing은 카메라에서 출발한 광선을 따라가며

카메라에서 쏜 광선은 장면 속 물체에 닿거나, 계속 진행해 화면 밖으로 사라집니다.

광선이 어떤 물체에 닿는다면, 그 표면에서 반사되거나 굴절되어 다시 다른 경로로 나아가게 되죠.

 

이렇게 반사되거나 굴절된 광선은 또 다른 물체에 닿거나, 결국 광원에 도달하거나,

아니면 그냥 사라질 수도 있습니다.

 

이 과정을 재귀적으로 반복하면서,

빛의 흐름이 어디에서 어떻게 시작되어 카메라까지 도달하는지를 역추적합니다.

 

결국 광원이 닿는 경로를 찾게 되면,

그 경로를 따라 들어오는 빛의 기여도(조명, 색상, 반사율 등)를 계산해 해당 픽셀의 최종 색을 결정합니다.

 

이처럼 “빛이 어떻게 반사되어 이곳까지 왔는가?”를 거슬러 추적하여

이미지를 만들어내는 기법이 바로 Ray Tracing입니다.

Ray Tracing

장점과 단점

장점 단점
자연스러운 그림자, 반사, 굴절 표현 가능 매우 높은 연산량(느림)
물리 기반 조명 계산 (PBR에 최적) 실시간 처리를 위해선 RTX 등 필요

3. 요즘 게임은 왜 Ray Tracing을 쓰기 시작했을까?

예전엔 Ray Tracing을 '쓸 수 없었던 기술'이었습니다.

너무 느렸거든요.

 

하지만 2018년, NVIDIA가 RTX 시리즈 + 하드웨어 레이 트레이싱을 도입하면서 판이 바뀌었습니다.

이후 등장한 기술이 바로 Hybrid Rendering 입니다.

Hybrid 방식: Raster + Ray의 콜라보

  • 기본적인 장면 그리기: Rasterization
  • 반사, 그림자, 글로벌 일루미네이션(GI): Ray Tracing
  • -> 빠른 속도는 유지하고, 빛의 퀄리티는 리얼하게 가져가는 전략

Ndivia Hybrid Rendering Pipeline

 

대표 게임

  • Cyberpunk 2077
  • Minecraft RTX
  • Battlefield V
  • Hogwarts Legacy 등

4. 비교 요약: 언제 어떤 방식을 써야 할까?

항목 Rasterization Ray Tracing
작동 방식 정점 -> 삼각형 -> 픽셀 카메라에서 광원 발사 -> 교차 확인
렌더링 속도 매우 빠름 상대적으로 느림
광확 효과 구현 쉐이더 기반 트릭 사용 자연스러운 표현 가능
주 사용 분야 게임, 실시간 그래픽스 영화, 시각화, 오프라인 렌더링
하드웨어 요구 GPU 기본 지원 RTX 등 특수 하드웨어 필요

5. 왜 둘은 철학이 다른가?

Rasterization은 빠른 속도와 예측 가능성이 우선인 철학입니다.

  • "현실을 모방한다"는 것보다는, "현실처럼 보이게 하는 트릭"에 집중하며 발전해 왔습니다.
  • 성능을 위해 비현실적 계산도 과감히 생략합니다.

Ray Tracing은 현실을 물리 기반으로 시뮬레이션하는 철학입니다.

  • 실제 빛의 경로처럼 반사, 굴절, 그림자를 추적합니다.
  • 결과는 자연스럽지만, 계산량은 필연적으로 많습니다.
현실과 비슷하게 보이게 할 것이냐?
아니면, 현실처럼 "계산"할 것이냐?

 

이 철학적 질문이 두 렌더링 방식의 차이입니다.


 

'Dev > Grapics' 카테고리의 다른 글

Scop 구현기 2편: VAO와 VBO의 세계  (0) 2025.04.09
Scop 구현기 1편: 윈도우 하나 띄우는 게 뭐라고 (Object Viewer)  (0) 2025.04.09
셰이더는 그낭 함수일까?  (0) 2025.04.08
OpenGL의 좌표계, 진짜로 이해하기  (1) 2025.04.08
정점(Vertex)이란 무엇인가? - 그래픽 세계의 가장 작은 시작점  (0) 2025.04.08
'Dev/Grapics' 카테고리의 다른 글
  • Scop 구현기 2편: VAO와 VBO의 세계
  • Scop 구현기 1편: 윈도우 하나 띄우는 게 뭐라고 (Object Viewer)
  • 셰이더는 그낭 함수일까?
  • OpenGL의 좌표계, 진짜로 이해하기
onepaperhoon
onepaperhoon
한장훈님의 블로그 입니다.
  • onepaperhoon
    OnePaperHoon Blog
    onepaperhoon
  • 전체
    오늘
    어제
    • 분류 전체보기 (14)
      • Dev (14)
        • System Programming (2)
        • Linux (0)
        • CS (0)
        • Network, Protocol (0)
        • Grapics (11)
        • Web, App (0)
        • Design Pattern (1)
      • Projects (0)
      • TIL (0)
      • Life (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    graphics
    디자인 패턴
    glfw
    shared memory
    OpenGL
    그래픽스
    싱글톤 패턴
    Game
    graphicapi
    Pipe
    named pipe
    공유 메모리
    shader
    c++
    Vertex Shader
    cpp
    Process
    C언어
    3d
    IPC
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
onepaperhoon
Rasterization vs Ray Tracing
상단으로

티스토리툴바