목록프로그래밍/게임 개발 (28)
뭐라도 쓰겠지
Vertex Buffer와 Index Buffer는 현대 그래픽스 파이프라인에서 기본적인 3D 모델 데이터를 GPU에 전달하기 위한 핵심 요소라고 할 수 있다. 각각의 역할과 특징에 대해 살펴보겠다.1. Vertex Buffer정의Vertex Buffer(정점 버퍼)란, 정점(vertex)에 관한 정보를 담은 GPU 메모리상의 버퍼를 말한다.일반적으로 위치(Position), 노멀(Normal), 텍스처 좌표(UV), 색상(Color) 등의 데이터를 담는다.역할그래픽스 API(OpenGL, DirectX 등)에서, 정점 데이터를 한 번에 전달하여 드로우 콜을 효율적으로 수행한다.CPU에서 GPU로 정점을 일일이 보내는 대신, 미리 버퍼에 업로드해놓고 쉐이더에서 이를 참조한다.특징각 정점마다 필요한 속성(..
게임 엔진에서 사용되는 Sprite Sheet와 Texture Atlas의 차이점에 대해 설명하겠다. 둘 다 여러 이미지를 하나의 큰 이미지에 모아두는 방법이라는 점에서 유사하지만, 사용 목적이나 구성 방식에서 차이가 존재한다고 할 수 있다.1. Sprite Sheet정의Sprite Sheet란, 2D 애니메이션에 사용되는 여러 프레임 이미지를 한 장의 큰 이미지로 모아놓은 것을 말한다.주 사용처주로 2D 캐릭터 애니메이션이나 이펙트 연출 등에 사용한다.한 캐릭터가 걷거나 달리는 동작처럼, 특정 애니메이션이 연속된 프레임으로 이루어질 때 활용한다.특징프레임 순서가 고려되며, 각 프레임을 빠르게 교체(혹은 UV 영역만 이동)하여 동작을 표현한다.애니메이션의 연출이 중심이므로, 프레임 단위 정렬이 중요하고 ..
게임 모델링이나 그래픽스 분야에서 텍스처 이미지를 2의 승수배 크기로 만드는 이유는, 주로 그래픽 하드웨어 및 엔진에서 메모리 관리와 퍼포먼스를 효율적으로 처리하기 위함이다.1. GPU 최적화와 호환성과거 하드웨어의 요구사항초기 그래픽 하드웨어(구형 GPU, 콘솔 등)에서는 텍스처 크기가 반드시 2의 승수(Power of Two, POT)여야만 제대로 동작하거나, 비POT 텍스처를 지원하더라도 성능 저하가 있었다고 할 수 있다.이러한 이유로 게임 엔진이나 그래픽 라이브러리(예: OpenGL ES)에서 2의 승수 텍스처를 표준으로 권장해 왔다.현대 GPU에서도 잔존하는 최적화 이점최신 그래픽 카드들은 비POT 텍스처도 지원하지만, 여전히 2의 승수 크기 텍스처가 텍스처 캐싱이나 메모리 할당에서 유리하게 작..

UV 좌표계(UV Coordinate System)는 2차원 이미지를 3D 모델 표면에 투영(매핑)하기 위한 좌표계이다. 3D 공간에서 x, y, z 좌표를 사용해 모델의 지오메트리를 표현하듯, 텍스처(2D 이미지)상에서 u, v 좌표를 사용해 이미지상 픽셀(Texel, 텍셀)을 참조한다. * 텍셀은 "텍스처 맵의 화소"를 의미하는 용어로, 2D 이미지를 구성하는 작은 사각 격자 하나하나를 가리킨다. 예를 들어, 1024x1024 해상도의 텍스처라면 총 1024x1024개의 텍셀이 있다.UV 좌표의 개념u, v는 0.0부터 1.0 사이의 정규화(Normalized) 범위를 가장 일반적으로 사용한다.u = 0.0 -> 텍스처의 왼쪽(또는 x = 0)u = 1.0 -> 텍스처의 오른쪽(또는 x = textu..
유니티에서 코루틴(Coroutine)은 여러 프레임(Frame)에 걸쳐 함수를 중단했다가 재개하는 개념이다. 정확히 말하자면 C#의 IEnumerator 인터페이스와 yield 키워드를 활용해 구현된 '반복자(Iterator) 함수'를 유니티 엔진에서 특정 시점마다(매 프레임, 특정 시간 후 등) 다시 호출하여 마치 함수 실행이 멈췄다가 이어지는 것처럼 보여주도록 만든 구조이다.어떻게 동작하는가? 1. 코루틴 함수 정의IEnumerator를 반환하는 함수 안에서 yield return 문을 사용해 함수 실행을 일시 중지 할 수 있다.유니티는 MonoBehaviour.StartCoroutine()로 이 코루틴 함수(반복자)를 실행시킨다.2. 코루틴 실행 흐름코루틴 함수가 시작되면, yield return ..
디퍼드 렌더링은 3D 게임 엔진에서 조명 계산을 효율적으로 처리하기 위해 고안된 렌더링 기법이다. 전통적인 포워드 렌더링(Forward Rendering)과 달리, 장면의 각 픽셀에 대해 조명을 바로 계산하지 않고, 먼저 지오메트리 정보를 별도의 버퍼(G-Buffer)에 모아 둔 뒤에 나중(Deferred) 단계에서 한꺼번에 조명 계산을 수행한다는 점이 특징이다. 주요 흐름은 다음과 같다. 1. 지오메트리 패스(Geometry Pass)씬의 각 픽셀마다 필요한 정보를 'G-Buffer'라고 불리는 여러 텍스처나 버퍼에 저장한다.예: 월드 스페이스 노멀, 기본 색상, 머터리얼(금속성/거칠기 등), 깊이(Depth), 스페큘러 반사 계수 등이 단계에서는 실제 조명 계산을 수행하지 않으며, 오직 지오메트리 및..