공유를 통해 많은 수의 소립(fine-grained) 객체들을 효과적으로 지원하는 패턴
3.1 숲에 들어갈 나무들
나무들이 동일한 메시 정보(폴리곤, 정점), 텍스처를 사용한다면 이 특성들을 공유 데이터로써 GPU에 한 번만 보내야 한다.
3.2 수천 개의 인스턴스
나무 인스턴스를 그릴 때 공유 데이터를 사용하도록 한다.
Direct3D, OpenGL에서는 하드웨어적으로 인스턴스 렌더링을 지원한다.
https://lemonyun.tistory.com/57
16. 인스턴싱과 절두체 선별
인스턴싱 : 한 장면에서 같은 물체를 여러 번 그리는 것, 성능을 크게 향상할 수 있다. 절두체 선별 : 시야 절두체 바깥에 있는 일단의 삼각형들을 간단한 판정으로 골라내서 기각하는 기법 16.1
lemonyun.tistory.com
DirectX 12를 이용한 3D 게임 프로그래밍 입문 16장에서 다룬 인스턴싱에서는 아래와 같은 자료를 셰이더에 전달했다.
공유 데이터 : 재질 자료를 담은 구조적 버퍼, 텍스처 배열, 정점 버퍼 뷰, 인덱스 버퍼 뷰
개별 데이터 : 인스턴스별 자료 항목을 담은 구조적 버퍼 (material index, world matrix, textransform)
3.4 지형 정보 (경량 패턴 사용 예시)
맵이 격자 타일 형태라고 할때
Terrain tiles_[WIDTH][HEIGHT] 형태의 배열을 사용하여 타일 정보를 관리할 수 있다.
ㄴ Terrain을 enum으로 사용하는 경우
ㄴ 지형 종류에 대한 데이터 (예를 들면 해당 지형에서의 기온)를 위한 함수가 별도로 필요함
지형 종류에 대한 데이터 캡슐화를 위해 Terrain을 클래스로 정의
'읽은 책 > 게임 프로그래밍 패턴' 카테고리의 다른 글
6. 디자인 패턴 - 싱글턴 (0) | 2022.07.14 |
---|---|
5. 디자인 패턴 - 프로토타입 (0) | 2022.07.13 |
4. 디자인 패턴 - 관찰자, 감시자(observer) (0) | 2022.07.13 |
2. 디자인 패턴 - 명령(command) (0) | 2022.07.13 |
1. 구조, 성능, 게임 (0) | 2022.07.12 |