본문 바로가기

Swift

[iOS] Metal - 1

사전지식

Rendering(렌더링)

  • 3D 컴퓨터 그래픽에서는 여러 점을 연결해 화면에 이미지를 만듦
  • 여기서 이미지렌더라고 함
  • 3D 모델을 실제 이미지처럼 보이게 하는 과정 → 렌더링

 

렌더링이 왜 필요할까?

  • 3D 모델은 구조, 모양만 존재 → 빛, 그림자, 색에 대한 요소 X
  • 렌더링을 통해
    • 빛을 어디에 비출지
    • 그림자가 어떻게 혹은 어디에 생기는지
    • 재질 등을 계산해서 진짜 처럼 보이게 만드는 과정

→ 그냥 뼈대만 있으니 거기에 색상, 그림자를 입혀 real하게 보이게 하는 거

 

3D 모델?

  • Vertex라는 정점들로 구성되어 있는 뼈대
  • 정점들을 연결하여 모양을 만들고 여기에 색, 재질, 빛 효과 등을 입혀 3D 이미지 생성

 

렌더링 파이프?

  • 3D 모델이 화면에 나타나기까지 거치는 모든 과정
  1. 모델을 불러옴 → 정점 정보 읽어드림
  2. GPU로 모델을 보내고
  3. 세이더 함수가 이 정점들을 처리
  4. 이미지(텍스쳐)를 만들어내고
  5. 다시 CPU를 거쳐 화면에 출력

셰이더 함수

- 그림자와 빛을 계산하는 프로그램

- 이를 통해 반짝이는 금속, 매끄러운 플라스틱, 투명한 유리 등 다양한 효과주기가 가능해짐

 

요약

렌더링은 3D 모델에 빛, 그림자, 재질 등을 계산해 진짜 이미지처럼 보여주는 과정이고,

그 과정의 흐름을 렌더링 파이프라인 이라고 한다~

 

프레임(Frame)

  • 게임의 경우 하나의 이미지로만 구성되어있지 않고, 캐릭터를 부드럽게 움직이게 하기 위해서 매초 여러장의 이미지를 빠르게 보여줘야함(렌더링)
  • 이 때 한 장, 한 장의 이미지를 프레임이라고함

 

프레임 드랍?

  • GPU가 너무 많은 작업(예: 복잡한 그림자, 수천 개의 잔디, 반사 효과 등) 을 하게 되면 1초에 60장을 못 그리고 30장, 15장 밖에 못 그릴 수 있음
  • 이 경우 화면이 끊기는 것처럼 느껴지는 현상을 프레임 드랍

'Swift' 카테고리의 다른 글

[iOS] Metal - 0  (0) 2025.02.08
[iOS] SKIP.tools 사용기  (2) 2025.02.05
[iOS] SKIP.tools?  (0) 2025.01.28
[iOS] About Swift Concurrency  (0) 2025.01.04
[iOS] About Kingfisher  (1) 2024.11.27