본문 바로가기

Unity61

[Unity] 드로우콜 (Draw Call) 게임에 기능을 모두 넣고 종료 시점까지 한 사이클을 굴렸다면, 최적화라는 과제가 남는다. 게임 개발에서 최적화를 공부할 때 반드시 등장하는 것이 드로우콜과 배칭이다. 드로우 콜(Draw Call) 드로우콜이란 CPU가 GPU에게 오브젝트를 그리라고 명령하는 것을 의미한다. GPU는 CPU에 의해서 처리되고 GPU가 Mesh를 렌더링 할 때 지오메트리 데이터를 읽어오는 공간이 바로 GPU Memory이다. 따라서 Mesh를 그리기 위해서는 GPU Memory에 Mesh 관련 정보가 있어야 한다. GPU는 CPU Memory에 접근할 수 없기 때문에 GPU Memory에 데이터를 다시 복사한다. 이 과정을 거쳐 GPU Memory에는 메쉬 정보가 저장된다. GPU는 그릴 대상에 대한 상태 정보를 담는 테이블.. 2024. 2. 26.
[Unity] 컬링 (Culling) 컬링 (Culling) 이란? 드로우콜을 줄이기 위해서는 렌더링할 오브젝트의 수를 줄이면 된다. 주로 사용하는 방법은 눈에 보이지 않는 오브젝트를 제외함으로써 렌더링할 오브젝트의 수를 줄이는 것인데, 이처럼 렌더링이 필요하지 않은 오브젝트들을 추려 내는 것을 컬링(Culling)이라 한다. 게임 캐릭터의 시야 영역 밖에 있는 객체들을 렌더링하지 않고 제외하는 기술이다. 화면에 표시되지 않는 부분의 객체들을 처리하기 위한 비용을 아낌으로써 성능을 향상시키는 데 도움이 된다. 컬링의 종류는? 프러스텀(Frustum) 컬링 = 절두체 컬링 대부분의 게임 엔진은 카메라의 뷰 프러스텀(절두체)으로 컬링을 수행한다. 절두체의 사다리꼴 영역 안에 들어오거나 걸친 오브젝트만 눈에 보이게 되는데, 이 영역을 완전히 벗어.. 2024. 2. 21.
[Unity] 렌더링 파이프라인 유니티 렌더링 파이프라인이란? 렌더 파이프 라인은 게임 오브젝트의 렌더링 과정, 즉 화면에 오브젝트를 그리는 과정을 제어하는 시스템이다. 화면에 그래픽을 그리는 과정을 정의하고 제어하며, 게임의 시각적인 품질과 성능에 영향을 미친다. 씬의 내용들을 취하여 컬링(culling), 렌더링(rendering), 포스트프로세싱(post-processing)등의 작업을 수행하고 그것을 스크린에 표시하는 역할을 한다. 렌더링 파이프 라인은 3D 모델의 표현, 라이팅, 그림자, 쉐이딩 등과 같은 시각적 효과를 구현하는데 사용된다. Unity에서는 여러 가지 렌더링 파이프라인이 존재하며, 각각의 파이프라인은 특정한 목적이나 하드웨어 환경에 최적화되어 있다. 1. Built-in Rend.. 2024. 2. 20.
[Unity] Unity 생명주기 Q. Unity의 생명주기(Unity Life Cycle)란? 생명주기란 Unity 스크립트 내에서 여러 개의 함수가 실행되는 순서와 흐름을 의미한다. 크게 초기화-물리/로직-해제 3개의 영역으로 구분되어 있다. 1. Initialization (초기화) 1) Awake 게임 오브젝트 생성 시 최초로 실행되는 함수로 스크립트가 실행될 때 1번만 호출된다. 오브젝트가 비활성화일 경우엔 호출되지 않지만 스크립트가 비활성화일 경우엔 호출된다. 생성자처럼 게임의 상태 또는 변수 초기화로 사용한다. 오브젝트의 초기화 또는 프리팹의 인스턴스화가 모두 진행된 직후에 호출되기 때문에 Find 함수 호출의 안정성을 보장한다. 코루틴으로 실행할 수 없다. 2) OnEnable 게임 오브젝트를 활성화 시킨다. ex)로그인 .. 2024. 2. 15.
[C#] 싱글톤의 장단점 기술면접 대비하기 #11 싱글톤이란? 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미한다. 1. 게임 시스템의 중추 스크립트 2. 게임 시스템상 전역 변수의 역할을 하는 스크립트 3. 씬 로드 시 데이터가 파괴되지 않고 유지 4. 여러 오브젝트가 접근을 해야 하는 스크립트의 역할 5. 한 개의 객체만 존재 1. 메모리 측면의 이점 최초 한 번의 new 연산자를 통해서 고정된 메모리 영역을 사용하기 때문에 추후 해당 객체에 접근할 때 메모리 낭비를 방지할 수 있다. 뿐만 아니라 이미 생성된 인스턴스를 활용하니 속도 측면에서도 이점이 있다. 2. 데이터 공유가 쉽다는 것 싱글톤 인스턴스가 전역으로 사용되는 인스턴스이기 때문에 다른 클래스의 인스턴스들이 접근하여 사용할 수 있다. 하지만 여러 클래스의 인스.. 2024. 2. 13.
[C#] SOLID 원칙과 상속의 특징 기술면접 대비하기 #10 Q. SOLID 원칙이란 무엇인가? 객체지향 설계에서 지켜야 할 5개의 소프트웨어 개발 원칙. 1) SRP : 단일 책임 원칙 한 클래스는 하나의 책임(기능)만 가져야 한다. = 기능을 하나만 가지고 있을 때, 기능 수정이 필요할 때 코드를 변경하기 쉽기 때문. (유지보수성 상향) 2) OCP : 개방 폐쇄 원칙 확장에는 열림(Open) / 수정에는 닫힘(Closed) 즉, 기능 추가를 위해 클래스 확장을 하되 수정을 최소화하는 방식이다. 상속을 통한 클래스 구축, 추상화 사용의 이점 극대화. 3) LSP : 리스코프 치환 원칙 부모 클래스로 객체를 선언해 자식 클래스의 인스턴스를 받으면, 부모의 메서드를 사용해도 정상적으로 작동해야 한다. 오버라이딩 시 주의해야할 원칙이며, 다.. 2024. 2. 8.