본문 바로가기

게임 개발 일지/내일배움캠프 TIL89

[Unity] 스프라이트 아틀라스, GPU 인스턴싱 스프라이트 아틀라스 (Sprite Atlas) 스프라이트 아틀라스는 Unity 2D 에서 사용하는 최적화 기법이다. Unity 엔진에 내장되어 있으며, Project Settings_Editor_Sprite Packer 에서 체크할 수 있다. 2D 프로젝트는 스프라이트와 다른 그래픽스를 사용해 씬의 시각적 요소를 만든다. 그러므로 개발자(혹은 디자이너)는 단일 프로젝트에 다수의 텍스처 파일을 사용한다. 일반적으로 Unity는 씬의 각 텍스처에 대해 드로우콜을 발생시킨다. 따라서 많은 텍스처가 포함된 프로젝트의 경우 여러 개의 드로우 콜이 발생하면서 리소스를 많이 소비하므로 프로젝트의 성능을 저하시킬 수 있다. 스프라이트 아틀라스(Sprite Atlas)는 여러 개의 텍스처를 단일 텍스처로 결합하는 에셋이.. 2024. 2. 28.
[Unity] 배치 (Batch) 배치(Batch)와 배칭 (Batching) 1) 배치(Batch) : SetPass Call 과 DP Call 을 합친 개념이다. * 드로우콜과의 차이점 : 드로우콜은 (렌더 상태 변경 명령 + DP Call)을 포함한 개념으로, 배치가 드로우콜보다 좁은 의미이다. 2) 배칭(Batching)이란 여러 개의 Batch를 하나로 묶는 최적화 기법이다. (드로우콜을 묶어서 처리하기 위함) 기본적으로 드로우 콜을 발생시킬 수 있는 이미지, 텍스쳐, 메테리얼, 쉐이더를 하나로 묶어서 처리한다. 배치의 특징 배치는 SetPass Call + DP Call 개념이다. Render State Changes(렌더 상태 변경)가 아니라 SetPass를 포함하므로, 드로우콜보다 좁은 의미를 가진다. Batch가 적다고 .. 2024. 2. 27.
[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.
[C#] 프로그래머스/삼총사 문제 한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다. 한국중학교 학생들의 번호를 나타내는 정수 배열 number가 매개변수로 주어질 때, 학생들 중 삼총사를 만들 수 있는 방법의 수를 return 하도록 solution 함수를 완성하세요. .. 2024. 2. 23.
[Unity] Scene이 여러 개인 게임의 SoundManager Scene이 여러 개인 게임에서 BGM이 다음 씬으로 넘어가더라도 끊기지 않고 계속 재생시키고 싶은 경우가 있다. SoundManager.cs 라는 스크립트를 이용해 게임 시작 시 SoundManager를 오브젝트 형태로 생성시켜주고 DontDestroyOnLoad 처리를 해주면 씬이 넘어가더라도 해당 오브젝트(Audio Souce)를 파괴하지 않고 유지할 수 있다. // SoundManager.cs using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; using UnityEngine.Audio; using UnityEngine.SceneManagement; public class SoundManager : Mo.. 2024. 2. 22.
[Unity] 컬링 (Culling) 컬링 (Culling) 이란? 드로우콜을 줄이기 위해서는 렌더링할 오브젝트의 수를 줄이면 된다. 주로 사용하는 방법은 눈에 보이지 않는 오브젝트를 제외함으로써 렌더링할 오브젝트의 수를 줄이는 것인데, 이처럼 렌더링이 필요하지 않은 오브젝트들을 추려 내는 것을 컬링(Culling)이라 한다. 게임 캐릭터의 시야 영역 밖에 있는 객체들을 렌더링하지 않고 제외하는 기술이다. 화면에 표시되지 않는 부분의 객체들을 처리하기 위한 비용을 아낌으로써 성능을 향상시키는 데 도움이 된다. 컬링의 종류는? 프러스텀(Frustum) 컬링 = 절두체 컬링 대부분의 게임 엔진은 카메라의 뷰 프러스텀(절두체)으로 컬링을 수행한다. 절두체의 사다리꼴 영역 안에 들어오거나 걸친 오브젝트만 눈에 보이게 되는데, 이 영역을 완전히 벗어.. 2024. 2. 21.