기본 요소와 정점 빌딩 가이드

이 가이드는 사용자 정의 정점 포맷과 정점 버퍼를 사용하여 프리미티브를 구축하고 사용하는 방법을 간략하게 설명합니다. 일반적으로 3D 작업, 특수 효과, 복잡한 그리기 과정 또는 셰이더와 함께 작업할 때는 사용되는 정점 포맷에 대해 크게 걱정할 필요가 없습니다. 게임 메이커가 정점 데이터를 자동으로 설정하고 전달해 주기 때문입니다. 하지만 속도를 높이거나 추가 정보를 전달해야 할 때는 직접 정점 데이터를 만들어야 할 수 있습니다.

기본 정점 포맷

기본 정점 포맷은 일반적으로 3D 위치(x, y, z), 색상(알파 포함), UV 텍스처 좌표를 포함하며, 이를 직접 만드는 경우는 다음과 같습니다.

vertex_format_begin();
vertex_format_add_position_3d();
vertex_format_add_colour();
vertex_format_add_texcoord();
my_format = vertex_format_end();

만약 셰이더를 사용하여 정점의 위치만 조작한다면, 색상이나 텍스처 데이터를 전달할 필요가 없습니다. 이 경우는 아래와 같이 사용자 정의 포맷을 만들 수 있습니다.

vertex_format_begin();
vertex_format_add_position_3d();
my_format = vertex_format_end();

정점 속성 및 필수 사항

정점 포맷을 정의할 때 사용할 수 있는 다섯 가지 정점 속성이 있습니다: - 색상 - 노멀 - 3D 위치 - 위치 - 텍스처 좌표

일반적으로 포맷의 일부로 3D 위치를 항상 제공해야 하지만 나머지는 선택 사항입니다. 정점 포맷을 생성한 후에는 정점 속성을 정의한 순서를 준수해야 합니다.

정점 포맷 제거

정점 포맷은 메모리를 요구하므로 필요하지 않을 때는 다음 함수를 사용하여 제거해야 합니다.

vertex_format_delete(my_format);

정점 버퍼

생성한 모든 프리미티브는 정점 버퍼에 저장됩니다. 정점 버퍼는 미리 생성하고, 이후 프리미티브를 구축하는 데 참고합니다. 정점 버퍼는 다양한 프리미티브를 생성하는 데 여러 번 재사용할 수 있으며, 게임이나 레벨의 특정 프리미티브 유형을 유지하도록 "동결"할 수도 있습니다.

삼각형 프리미티브 예제

한 개의 삼각형 프리미티브를 구축하는 예시 코드는 아래와 같습니다:

// Create Event
v_buff = vertex_create_buffer();
vertex_begin(v_buff, global.my_format);
vertex_position(v_buff, 10, 10);
vertex_colour(v_buff, c_white, 1);
vertex_texcoord(v_buff, 0, 0);
vertex_position(v_buff, 110, 10);
vertex_colour(v_buff, c_white, 1);
vertex_texcoord(v_buff, 1, 0);
vertex_position(v_buff, 110, 110);
vertex_colour(v_buff, c_white, 1);
vertex_texcoord(v_buff, 1, 1);
vertex_end(v_buff);

// Draw Event
var tex = sprite_get_texture(spr_Background, 0);
shader_set(shd_shimmer);
vertex_submit(v_buff, pr_trianglelist, tex);
shader_reset();

이 예제에서는 먼저 인스턴스의 Create Event에서 정점 버퍼를 생성하고, 삼각형 프리미티브를 구성하는 다양한 정점을 정의합니다. 그런 다음 정점 정의를 종료하고, 정점 데이터가 "v_buff" 변수에 저장됩니다.

정점 배치 및 셰이더

사용자 정의 정점 버퍼를 사용하면 GPU에 전송되는 정점 배치에 영향을 미칩니다. 정점 버퍼를 생성하면 그래픽 데이터의 최하위 수준을 생성하게 되며, 게임 메이커는 이 버퍼를 그래픽 카드에 직접 전송합니다. 최적의 배치를 원한다면, 배치할 항목을 동일한 버퍼 안에 저장해야 합니다.

정점 포맷과 셰이더 속성

GLSL ES 셰이더 내에서 정점 포맷과 셰이더 속성을 매핑하는 방법은 아래와 같습니다:

셰이더 속성 예제

attribute vec3 in_Position;        // (x,y,z)
attribute vec4 in_Colour;          // (r,g,b,a)
attribute vec2 in_TextureCoord;    // (u,v)

정점 포맷 설정

정점 포맷을 셰이더와 호환되도록 설정하는 코드:

vertex_format_begin();
vertex_format_add_position_3d();
vertex_format_add_colour();
vertex_format_add_texcoord();
my_format = vertex_format_end();

정점 특성을 올바르게 매핑하려면, 명명 규칙을 기반으로 합니다.

정리하자면, 정점 포맷을 작성한 후에는 추가 색상 속성을 추가할 때 식별 번호를 붙여야 합니다. 여기서 주요 규칙은 포맷에 정의된 순서에 따라 속성을 매핑하는 것입니다.

Read more

기술 문서 해설 및 활용 예제

이 문서는 특정 기술에 대한 설명과 활용 방법을 다룹니다. 아래에서 내용을 쉽게 이해할 수 있도록 해설하고, 다양한 활용 및 응용 예제를 추가로 제공합니다. 기술 개요 이 기술은 게임 개발에서 자주 사용되는 기능으로, 특정 작업을 자동화하거나 효율적으로 처리하는 데 도움을 줍니다. 주로 게임의 로직을 구성하거나 사용자 인터페이스를 제어하는 데 사용됩니다. 주요

By 이재협/실장/시스템개발실/PHYSIA

키워드 설명서

이 문서는 특정 키워드에 대한 설명과 사용법을 제공합니다. 문법 (arguments); 인수 인수 이름 유형 설명 argument_name 인수에 대한 설명을 여기에 작성합니다. 반환값 (선택적 설명) 예제 code_example() { // 여기에 코드 예제를 설명합니다. } 코드 예제 설명 위의 코드 예제는 특정 기능을 수행하는 함수의 기본 구조를 보여줍니다. 이 함수는 인수를 받아들이고, 특정

By 이재협/실장/시스템개발실/PHYSIA

GameMaker 환경 설정 및 기능

이 문서에서는 GameMaker의 환경 설정 및 다양한 IDE 기능에 대한 정보를 제공합니다. 다음은 주요 항목들입니다: IDE 환경 설정 IDE(통합 개발 환경) 설정은 GameMaker의 전반적인 사용 경험을 조정하는 데 도움을 줍니다. 여기서 사용자는 개인의 필요에 맞게 다양한 옵션을 설정할 수 있습니다. 주요 설정 항목 설정 항목 설명 테마 IDE의 색상

By 이재협/실장/시스템개발실/PHYSIA

GameMaker IDE 설명서

GameMaker IDE는 게임을 만들고 소프트웨어에서 제공하는 모든 기능을 활용하는 주요 인터페이스입니다. 이 프로그램은 시작 화면부터 게임을 만들기 위해 사용하는 모든 편집기 창까지 포함되며, 매뉴얼과 다양한 튜토리얼에서 IDE라고 언급됩니다. IDE의 구성 요소 다음 섹션에서는 IDE에 대한 정보를 다룹니다: 1. 설정 및 기능 IDE의 설정 및 기능은 사용자가 게임 개발을 보다 효율적으로

By 이재협/실장/시스템개발실/PHYSIA