82.내일배움캠프 73일차 TIL <Unity Unity 2D 팀프로젝트- MartialGod:Reborn - 23일차> 07/23

정광훈(Unity_9기)·2025년 7월 23일

TIL (Today I Learned)

목록 보기
83/110
post-thumbnail

3차 면접 피드백

최적화 방법에서 오브젝트 풀링만 말할거면 왜 최적화 방법인지 설명.
다양하게 최적화 방법 찾아보기. 그리고 설명도 곁들이기.

Q. 유니티 최적화 기법은 어떤 것들이 있나요?

  • 최적화를 해본 적이 있나요? 없다면 어떤 최적화가 있는지 설명해주세요.

코드 및 스크립트 최적화

  • 오브젝트 풀링(Object Pooling)
    • 자주 생성되고 파괴되는 오브젝트(예: 총알, 이펙트)를 미리 만들어두고 재사용하는 방식입니다. Instantiate()Destroy() 호출 비용을 줄여 GC 발생을 최소화합니다.
    • 오브젝트 풀링을 이용하여 화살 공격이나 아이템을 구현했습니다.

렌더링 최적화

  • 드로우 콜(Draw Call) 배치(Batching)
    • 드로우 콜은 CPU가 GPU에게 렌더링 작업을 지시하는 것을 의미합니다.
      드로우 콜이 많으면 CPU 부하가 커져 성능 저하의 원인이 됩니다.

물리 엔진 최적화

  • 콜라이더(Collider) 최적화
    • 메시 콜라이더(Mesh Collider) 대신 기본 도형 콜라이더(Box, Sphere, Capsule Collider)를 우선적으로 사용합니다. 메시 콜라이더는 연산 비용이 높습니다.
    • 복잡한 메시 콜라이더는 Convex 속성을 사용하여 단순화하거나, 여러 개의 기본 콜라이더를 조합하여 사용합니다.

=============================================

  • 최적화에서 가장 중요한 부분은 무엇인가요?
    • 최적화에서 가장 중요한 부분은 프로파일링을 통한 병목 지점의 정확한 파악입니다.
      어떤 최적화 기법을 적용하기 전에, 현재 애플리케이션의 성능 저하가
      CPU 때문인지, GPU 때문인지, 아니면 메모리나 다른 요인 때문인지를 정확하게 측정하고 분석해야 합니다.

============================================

  • 최적화를 위해서 적용해본 텍스쳐 포맷이 있나요?
    • 이건 없는데

드로우 콜 -> 필수 질문급, 최적화로 배칭(Batching)이라는 것이 있음.
이것도 깊게 공부해보기.

Q. 드로우콜에 대해서 설명하고, 최적화하는 방식에 대해 알고 있는 것이 있으면 설명하세요.

A. 드로우 콜은 CPU가 GPU에게 렌더링을 시작하라고 지시하는 명령어입니다.

  • 배치 처리 (Batching)
    • 정적 배치 (Static Batching):
      움직이지 않는 오브젝트들(예: 건물, 나무) 중에서 같은 메시와 머티리얼을 사용하는
      오브젝트들을 하나의 큰 메시로 합쳐서 하나의 드로우 콜로 렌더링하는 방식입니다.
      CPU가 각 오브젝트에 대해 드로우 콜을 개별적으로 보내는 대신,
      미리 합쳐진 큰 메시 하나만 보내므로 드로우 콜 수가 크게 줄어듭니다.
    • 동적 배치 (Dynamic Batching):
      실시간으로 움직이는 작은 오브젝트들 중에서
      같은 메시와 머티리얼을 사용하는 오브젝트들을 묶어서 하나의 드로우 콜로 렌더링하는 방식입니다.
      정적 배치와 달리 런타임에 처리되므로 오브젝트의 크기나 정점 수에 제한이 있을 수 있습니다.

랜더링 파이프라인을 더 자세히 설명하기.
변환 과정이 있는데 상세하게 설명해야할듯.

Q. 렌더링 파이프라인에 대해 설명해주세요.

A.

  • 렌더링 파이프라인(Rendering Pipeline)은 3D 장면을 2D 이미지로 변환하여 화면에 표시하는 일련의 과정을 의미합니다.

    • 1. 애플리케이션 단계 (Application Stage)
      이 단계는 주로 CPU에서 이루어지며, 렌더링을 위한 데이터를 준비하고 장면을 설정하는 역할을 합니다.
    • 2. 지오메트리 단계 (Geometry Stage)
      이 단계는 주로 GPU에서 이루어지며, 3D 모델의 정점(Vertex)들을 처리하고 변형하여 2D 화면에 투영할 준비를 합니다.
    • 3. 래스터화 단계 (Rasterization Stage)
      이 단계는 GPU에서 이루어지며, 2D 스크린 공간으로 변환된 프리미티브(삼각형)들을 실제로 화면의 픽셀로 채우는 과정입니다.

렌더링 파이프라인의 흐름 요약
CPU (애플리케이션 단계):

씬 데이터 준비, 컬링, 드로우 콜 생성, GPU로 데이터 전송.

GPU (지오메트리 단계):

정점 셰이더: 정점 변형 (모델 -> 월드 -> 뷰 -> 클립 공간).

(선택적) 테셀레이션/지오메트리 셰이더: 메시 세분화 또는 프리미티브 생성/삭제.

클리핑: 시야 밖 프리미티브 제거.

스크린 공간 변환: 2D 화면 좌표로 투영.

GPU (래스터화 단계):

삼각형 설정: 각 삼각형 내부의 픽셀을 결정하고 보간 정보 계산.

픽셀 셰이더: 각 픽셀의 최종 색상 계산 (텍스처, 조명 등).

깊이/스텐실 테스트: 픽셀의 앞뒤 관계 및 특정 조건 검사.

블렌딩: 기존 픽셀과 새 픽셀 색상 혼합.

프레임 버퍼 출력: 최종 이미지 저장.

0개의 댓글