전체 글 169

[물방울책 정리] Chapter 10: Stenciling

스텐실 버퍼는 몇 가지 특수 효과를 구현하기 위해 사용할 수 있는 off-screen 버퍼이다.스텐실 버퍼는 백 버퍼와 깊이 버퍼와 동일한 해상도를 가지며, 스텔실 버퍼의 ij 번째 픽셀은 백 버퍼와 깊이 버퍼의 ij번째 픽셀과 대응된다. ID3D11DepthStencilView.. 등의 이름에서 보았다시피 스텐실 버퍼와 깊이 버퍼와 함께 동작한다.스텐실 버퍼는 스텐실처럼 작동하여 특정 픽셀 조각이 백버퍼로 렌더링되는 것을 차단한다.  예를 들어, 거울을 구현할 떄, 거울의 평면을 기준으로 객체를 반사해야 하지만, 반사된 이미지는 거울 안에만 그려져야 한다. 스텐실 버퍼를 사용하여 반사가 거울에 그려지는 경우가 아니면 렌더링을 차단할 수 있다.  스텐실 버퍼는 ID3D11DepthStencilState ..

언어/C, C++ 2024.10.06

[물방울책 공부록] Chapter 9 Blending

프레임을 렌더링할 때, 먼저 지형을 그리고 그 다음으로 나무 상자를 그리며, 지형과 나무 상자의 픽셀들이 백 버퍼에 저장된다. 그 후 Blending을 사용하여 물 표면을 back buffer에 그리면, 물의 픽셀들이 지형과 나무 상자에 적절하게 혼합되어 지형과 나무 상자가 물을 통해 보이게 된다. 이 장에서는 현재 래스터화 중인 픽셀을 이전 back buffer에 이미 래스터화된 픽셀과 혼합할 수 있게 해주는 기술을 살펴본다. 이 기술은 물과 유리 같은 반투명 객체를 렌더링할 수 있게 해준다. 논의를 위해 우리는 back buffer를 렌더 타겟을 언급한다.그러나 나중에 off screen 렌더 타겟에도 렌더링할 수 있다는 것을 보여줄 것이다. 블렌딩은 이러한 렌더 타겟에도 동일하게 적용되며, 목적지 ..

[DX11 물방울책 공부록] Chapter 8: Texturing

실제 세계의 물체는 보통 버텍스 단위의 색상만으로는 포착할 수 없는 더 많은 세부 사항을 가고 있다.텍스처 매핑은 삼각형 위에 이미지 데이터를 매핑할 수 있는 기법으로, 이를 통해 장면의 세부 사항과 사실감을 크게 향상시킬 수 있다. 예를 들어, 육면체를 만들고 각 면에 상자 텍스처를 매핑하여 상자처럼 보이게 만들 수 있다. 텍스처와 리소스 복습우리는 앞서 이미 텍스처를 사용해왔다. 특히, 깊이 버퍼와 백 버퍼는 ID3D11Texture2D 인터페이스로 표현되는 2D 텍스처 객체이다. 2D 텍스처는 데이터 요소들의 행렬이다. 2D 텍스처는 많은 용도로 사용될 수 있으며, 그 중 한가지 용도는 픽셀의 색상을 저장하는 것이다. 이 때 텍스처는 2D 이미지 데이터를 저장한다. 그러나 이것이 유일한 용도는 아니..

게임을 위한 자료구조 - 빠른 순회, 빠른 삽입, 빠른 삭제, 빠른 탐색

GameObjectManager (가칭)전체 순회, 삽입, 삭제, 탐색 속도가 매우 빠른 컨테이너입니다.제목은 GameObjectManager 라고 지었는데, GameObject를 관리하기 위한 컨테이너 쯤으로 불러도 괜찮습니다.이름에서 볼 수 있듯 게임 오브젝트를 관리하기 위해서 만든 특별한 자료구조입니다.게임에서 가장 빈번히 일어나는 작업 중 하나는 컨터이너의 순회입니다. 보통 게임 오브젝트들은 매 틱마다 자신의 고유의 일을 수행하기 위해 Update 혹은 Tick 이라는 함수를 수행합니다. 그러기 위해서는 컨테이너에 수많은 오브젝트들을 저장하여 전체 순회를 통해서 상태를 갱신하는 설게를 사용할 수 있습니다. 그러므로 컨테이너의 순회는 1초에 최소 60번은 발생하며, 순회의 속도는 게임의 성능을 판가..

게임을 위한 자료구조) 빠른 순회, 빠른 탐색, 빠른 삭제, 빠른 삽입 설계도

1. 오브젝트는 이중으로 관리 1) 빠른 삽입, 삭제, 탐색을 위한 해쉬 테이블 2) 빠른 순회를 위한 오브젝트 벡터, 빠른 삭제를 위해 특수한 형태의 벡터를 사용함 2. 해쉬 테이블 키 : 오브젝트의 ID (ID는 uint64 이며 유일하다.) 값 : std::pair (배열의 인덱스, 오브젝트의 unique_ptr) 3. 벡터 단순한 일자형 벡터 캐쉬 히트가 높아서 순회속도가 빠르다. 4. 탐색 해쉬 테이블을 통한 탐색 5. 삽입 해쉬 테이블을 통한 삽입 -> O(1) 배열에 추가적으로 삽입하고 배열의 인덱스를 해쉬 테이블에 업데이트 -> O(1) 이 때 push_back을 사용하면 안됨 벡터의 맨 뒤 인덱스를 얻어냄 해당 인덱스의 요소가 nullptr면 대입 해당 인덱스의 요소가 nullptr가 아..

[DX11 물방울책 요약 정리] Direct3D에서 그리기

주의책이랑 다른 내용이 굉장히 많습니다.현대 DX와 책과 다른 부분이 많고.. 책에는 설명이 난해하게 된 부분이 있어서 의역이 다수 존재합니다. 이전 챕터에서는 주로 렌더링 파이프라인의 개념적 및 수학적 측면에 초점을 맞췄다. 이번 챕터에스는 Direct3D 인터페이스와 메서드를 사용하여 렌더링 파이프라인을 구성하고버텍스 쉐이더, 픽셀 쉐이더를 정의하고, 기하 데이터를 렌더링 파이프라인에 제출하여 그리는 바법에 중점을 둔다. 이 챕터를 끝내면, 색상 또는 와이어프레임 모드로 다양한 기하학적 도형을 그릴 수 있게 될 것이다. Vertices와 입력 레이아웃Driect3D의 버텍스는 위치 외에도 추가 데이터를 포함할 수 있다.사용자 정의 버텍스를 위해서는 먼저 우리가 선택한 버텍스 데이터를 포함하는 구조체를..

카테고리 없음 2024.09.20

[DX11 물방울책 요약 정리] 챕터5: 렌더링 파이프라인

이 장의 주요 주제는 렌더링 파이프라인이다. 가상 카메라가 배치되고 방향이 설명된 3d 장면의 기하학적 설명을 바탕으로,렌더링 파이프라인은 카메라가 보는 것을 기반으로 2D 이미지를 생성하는 일련의 과정 전체를 의미한다. 말이 어려울 수도 있는데.. 월드에 3D 기하학들이 정해져 있고, 카메라는 특정 공간을 미추고 있다.3D 기하학 정보들을 적절하게 해석하여 뷰포트에 2D 형태로 이미지를 생성하는 과정을 렌더링 파이프라인이라고 한다. 외 그림에서 왼쪽이미지는 카메라가 위치하고 조준된 3D 월드의 객체들의 측면 뷰를 보여준다.가운데 이미지는 같은 장면을 위에서 내려다본 모습이다.카메라의 시야 (피라미드 모양, 혹은 절두체라고 부름) 은 볼 수 있는 공간의 부피 (가시부피)를 나타내며, 해당 공간 외부에 있..