일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 디퍼드 렌더링
- InputManager
- effective C++
- 장치 초기화
- TCP/IP
- Render Target
- gitscm
- 게임 디자인 패턴
- 동적 색인화
- light
- 네트워크 게임 프로그래밍
- DirectX12
- FrameResource
- 입방체 매핑
- 노멀 맵핑
- 절두체 컬링
- direct3d
- 조명 처리
- Deferred Rendering
- 게임 프로그래밍
- 큐브 매핑
- Dynamic Indexing
- Frustum Culling
- 게임 클래스
- DirectX
- C++
- 네트워크
- Direct3D12
- gitlab
- 직교 투영
- Today
- Total
목록전체 글 (44)
코승호딩의 메모장
이전에 텍스쳐 맵핑을 할 때, 텍스쳐의 정보를 Mesh가 가지고 있도록 하였다. 그러나 모든 게임엔진에서는 Material이라는 재질 정보에서 텍스쳐를 가지고 있으며 추가적으로 fresnel, roughness, diffuseAlbedo 등 빛에 대한 상호작용을 하는 정보들도 가지고 있다. 따라서 Material이라는 클래스를 하나 만들어서 재질과 텍스쳐에 대한 정보는 모두 이 Material에서 관리하도록 하자. 참고로 Material은 Mesh마다 바뀌어야 하는 정보이기 때문에 이 정보들을 쉐이더에 넘길 때, 상수 버퍼의 형태로 FrameResource에 추가하여 넘겨줘야 한다. 우선 Material에 필요한 인자들을 생각해 보면 빛과의 상호작용을 위한 변수들과 텍스쳐를 움직일 수 있는 행렬 정보와 ..
이번 글에서는 텍스쳐 맵핑을 사용하여 간단한 사각형에 텍스쳐를 입히도록 한다. 이전에 만들었던 서술자 테이블에 CBV이든 SRV이든 그냥 CopyDescriptors를 이용하여 서술자를 복사하면 되기 때문에 쉽게 구현할 수 있을 것이다. 서술자 테이블에 SRV 추가 enum class CBV_REGISTER : uint8 { b0, b1, b2, b3, b4, END }; enum class SRV_REGISTER : uint8 { t0 = static_cast(CBV_REGISTER::END), t1, t2, t3, t4, END }; 다음과 같이 CBV, SRV의 레지스터를 enum class를 사용하여 묶어줬기 때문에 서술자 테이블에서 GetCpuHandle을 할 때, 해당하는 레지스터 값만 넣어주..
이번 글에서는 Mesh 클래스를 사용하여 간단한 오브젝트를 그려보고자 한다. 초기화 부분에서 정점 정보와 인덱스 정보를 넘겨주고 버퍼를 생성한 뒤 렌더링 함수에서 위 버퍼들에 대한 서술자를 셋 해주고 이동 관련 상수 버퍼를 업데이트하여 결과적으로 해당하는 메쉬에 대한 이동을 수행한다. 정점 정보는 디폴트 힙에 만들어야 한다. 일반적으로 모델링의 로컬 정점들은 변하지 않기 때문이다. 따라서 업로드 힙을 생성하여 정점 정보를 넘겨주고 업로드 힙의 내용을 디폴트 힙의 버퍼에 복사해야 한다. 이를 위해 편의용 함수를 구현한다. ComPtr d3dUtil::CreateDefaultBuffer(ComPtr device, ComPtr cmdList, const void* initData, UINT64 byteSize..
이번 글에서는 쉐이더에 필요한 ConstantBuffer를 넘겨주는 방법과 [DirectX 입문]에서 배운 CPU와 GPU의 동기화 작업을 최적화하기 위한 수단인 FrameResource를 적용해보려고 합니다. 이에 대한 내용은 이전 글을 참고하면 됩니다. [Frame Resource와 Render Item] 01 Frame Resource Frame Resource 프레임 자원이란 프레임마다 명령 대기열을 완전히 비우지 않고 CPU와 GPU의 활용도를 높이는 최적화 수단이다. CPU와 GPU는 병렬로 작동하기 때문에 동기화가 필요하다고 suengho2257.tistory.com ConstantBuffer 상수 버퍼를 쉐이더로 넘기기 위해서 루트 시그니처를 사용해야 하고 이를 위해 루트 파라미터를 정의해..
이번 포스팅에서는 [DirectX12 입문]에서 배운 내용과 인터넷 강의와 서적등을 참고한 내용을 바탕으로 간단한 3D게임을 만들어보려고 합니다. 함수나 변수들에 대한 자세한 내용은 [DirectX12 입문] 포스팅을 참고하시면 됩니다. [Direct3D 개요와 초기화] · DirectX 12를 이용한 3D 게임 프로그래밍 입문 : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com 이번 포스팅(3D 게임 프로그래밍 입문)에서는 위 책과 한국공학대학교 게임 suengho2257.tistory.com 첫 번째 목표는 Direct3D를 초기화하는데 필요한 Com 객체들을 클래스화 하고 클라이언트 프로젝트와 정적 엔진 프로젝트를 나눠 엔진에서 클래스화된 Com 객체들..
오브젝트란 월드(씬) 상에 배치될 수 있는(화면에 그려질 수 있는) 모든 것을 의미한다. 오브젝트는 부피, 무게와 같은 물리적 특성을 지니며 예를 들어 건물, 장애물, 유닛, 총알 등이 있다. 이 모든 것들이 Object라는 클래스 안에 만들어질 것이다. 이번 글에서는 오브젝트를 생성하고 위치, 크기와 같은 특성을 부여하면 자동으로 화면에 그려지도록 구현하는 것이 목표이다. 이번 프로젝트 구현의 목표는 다음과 같다. GSEGame 클래스에서 ObjectMgr 보유 ObjectMgr 클래스에서 Object 관리 Object Maximum 개수 제한(디버깅 및 유지관리 시 장점) 랜덤 포지션으로 많은 Object 생성 후 화면에 그리기 우선 앞서 작성하였던 GSEGame 클래스 안에 Object를 생성을 할..