책 소개
차세대 그래픽스 API 표준 Vulkan을 기초부터 학습하기 위한 모든 것
OpenGL API의 차세대 표준이라고 보기도 하지만, Vulkan은 새로운 API에 대한 시장의 요구에 맞추어 완전히 새로운 접근 방식으로 기초부터 다시 설계한 차세대 그래픽스 및 컴퓨팅 API 표준이다. Vulkan은 GPU 하드웨어 설정을 제어해 병렬 컴퓨팅 능력을 최대한 활용하게 한다. Vulkan의 드라이버 계층은 작게 구성돼 있는데, 이는 응용 프로그램 개발자가 응용 프로그램과 사용하는 자원, 메모리 관리, 동기화 등 더 많은 것을 책임져야 한다는 것을 뜻한다. 따라서 Vulkan API로 프로그래밍을 하려면 일정 수준 이상의 그래픽스와 프로그래밍 관련 지식이 필요하다.
이 책에는 Vulkan의 기초를 학습하기 위한 모든 것이 담겨 있다. 이 책은 독자로 하여금 Vulkan의 이론과 개념, API 표준을 배우고, 실습 예제를 통해 Vulkan이 작동하는 것을 볼 수 있게 한다. 이 책에서는 되도록 일반적이고 직접적인 개념이나 용어를 사용하려고 노력했다. 특히 예제는 독자가 Vulkan을 차근차근 배울 수 있게 장 순서대로 따라 하도록 구성되어 있으며, 각 장은 이전 장의 내용에 새로운 내용을 추가하고 차이점을 소개한다.
이 책을 통해 Vulkan을 완벽히 마스터하기는 어렵지만, Vulkan이 기본 개념과 API 표준을 배우고 예제를 통해 기본 동작과 기능을 살펴볼 수 있다. 게임의 성능 향상과 최적화 또는 게임 엔진 개발에 관심이 있는 개발자라면 Vulkan을 이용해 만족도 높은 결과를 얻길 바란다.
이 책에서 다루는 내용
1장 Vulkan의 기본이 되는 내용을 설명하고, 현재 가장 널리 쓰이는 OpenGL API와 비교해 Vulkan의 차별화된 기능들을 설명한다.
2장 슈도 코드 프로그램을 통해 간단한 'Hello World' 프로그램을 작성해 본다. 이를 통해 Vulkan 프로그램을 맛보고, Vulkan 응용 프로그램을 빌드하는 단계별 과정을 배우게 된다.
3장 첫 번째 Vulkan 예제 프로그램을 만들어 보면서 프로그래밍 환경 설정 방법을 배운다.
4장 Vulkan 응용 프로그램에서 디버깅하는 방법을 설명한다.
5장 커맨드 버퍼를 상세히 설명하고 커맨드 버퍼를 구현해 본다.
6장 리소스 할당과 스와프 체인 구축 이미지 리소스에 대해 살펴보고, 이미지 생성과 할당, 바인딩, 매핑 같은 메모리 관리 개념에 관해 설명한다.
7장 버퍼 리소스와 그리려는 물체의 기하 정보를 포함하는 버텍스 버퍼를 구현하는 방법을 배운다.
8장 Vulkan의 컴퓨팅 및 그래픽스 파이프라인을 소개한다. 이 장에서는 그래픽스 파이프라인 흐름에 대한 개략적인 설명과 함께 파이프라인의 시작부터 끝까지 다양한 모듈의 역할을 설명한다.
9장 Vulkan에서 개체를 그리는 과정을 상세히 설명한다.
10장 디스크립터와 푸시 상수를 사용해 Vulkan 응용 프로그램에서 셰이더 리소스의 값을 변경하는 방법에 관해 설명한다.
11장 텍스처를 추가해 3D 물체에 사실감을 부여하는 렌더링 방법을 배운다.
이 책을 배우는 데 필요한 사전 지식
이 책에서 설명한 하드웨어와 소프트웨어가 필요하며, C/C++ 프로그래밍에 대한 지식과 일정 수준의 코딩 경험이 있어야 한다.
이 책의 대상 독자
이 책은 크로스 플랫폼, 고성능 그래픽과 컴퓨팅 응용 프로그램을 만들어 사용하는 데 관심 있는 독자를 대상으로 하고 있다. 그래픽스와 컴퓨팅 분야의 지식과 경험이 있다면 관련된 Vulkan 개념을 이해하는 데 도움이 될 것이다.
작가 소개
저 : 파르민더 싱
Parminder Singh
싱가포르에 위치한 블랙매직디자인Blackmagic Design에서 컴퓨터 그래픽스 엔지니어로 일하고 있다. 그래픽스 응용 개발 관련된 업무를 해왔고, 특히 네트워크 시뮬레이션, 기하 모델링, 네비게이션, 자동차, 인포테인먼트 시스템, 영상처리, 포스트 프로덕션 관련 분야에서 10년 이상 일해왔다. 그의 관심 연구 분야로는 GPU 프로그래밍, 그래픽스 및 컴퓨팅 응용 프로그램의 확장성을 위한 포팅과 성능 최적화 기술 등이 있다. 그는 Vulkan과 Metal, OpenGL ES 트레이너로 활동하고 있으며, 『OpenGL ES 3.0 Cookbook』(Packt, 2015)을 저술한 바 있다. 여행과 가벼운 요리가 취미이고, 딸아이와 좋은 시간을 보내려고 노력하고 있다. 저자와 연락하고 싶다면 https://www.linkedin.com/in/parmindersingh18 또는 http://openglescookbook.com을 통해 만날 수 있다.
역 : 이환용
아주대학교에서 산학협력교수로 근무하고 있으며, 20년 넘게 컴퓨터 그래픽스와 가상현실 기술을 개발 및 연구해왔다. 크로노스 그룹Khronos Group에서 표준 제정 활동과 함께 표준 보급에 노력해 왔고, Vulkan의 표준 제정과정에도 참여했다. 저서로는 『OpenVG 프로그래밍』(한빛미디어)이 있다. 컴퓨터 그래픽스 관련 드라이버와 응용 프로그램 개발 및 최적화 관련 업무, 컴퓨터 그래픽스 관련 교육을 하고 있다. 소통을 원한다면 openvg.programming@gmail.com으로 연락하기 바란다.
목 차
1.1 Vulkan과 그 진화 과정
1.2 Vulkan vs OpenGL
1.3 알아두어야 할 주요 용어
1.4 Vulkan의 기초
1.5 Vulkan 응용 프로그램의 이해
1.6 Vulkan 프로그래밍 모델 시작하기
1.7 요약
CHAPTER 2 처음 만드는 Vulkan 슈도 프로그램
2.1 Vulkan 설치
2.2 Hello World 슈도 코드
2.3 하나로 맞추기
2.4 요약
CHAPTER 3 장치와 인사하기
3.1 LunarG SDK 시작하기
3.2 CMake로 첫 번째 프로젝트 설정하기
3.3 확장판 소개 3.3.1 레이어와 확장판에 대한 쿼리
3.4 인스턴스 생성
3.5 물리적 장치와 논리적 장치 이해하기
3.6 큐와 큐 패밀리 이해하기
3.7 장치와 큐를 함께 구현하기
3.8 요약
CHAPTER 4 디버깅
4.1 디버깅 맛보기
4.2 LunarG 유효성 검증 레이어와 해당 기능 이해하기
4.3 디버깅 구현
4.4 요약
CHAPTER 5 커맨드 버퍼와 메모리 관리
5.1 커맨드 버퍼 시작하기
5.2 커맨드 풀과 버퍼 API
5.3 커맨드 버퍼의 레코딩
5.4 커맨드 버퍼를 위한 래퍼 클래스 구현
5.5 메모리 관리
5.6 요약
CHAPTER 6 WSI를 이용한 이미지 리소스 할당과 스와프 체인 구축
6.1 이미지 리소스 시작하기
6.2 이미지 리소스 이해하기
6.3 메모리 할당과 이미지 리소스 바인딩
6.4 스와프 체인 소개
6.5 깊이 이미지 생성
6.6 응용 프로그램의 흐름 요약
6.7 요약
CHAPTER 7버퍼 리소스, 렌더 패스, 프레임 버퍼와 SPIR-V 셰이더
7.1 버퍼 리소스의 유형 이해하기
7.2 버퍼 리소스로 기하 데이터 생성하기
7.3 렌더 패스 이해하기
7.4 렌더 패스 사용과 프레임 버퍼 생성하기
7.5 배경색 지우기
7.6 Vulkan에서의 셰이더 작업
7.7 요약
CHAPTER 8 파이프라인과 파이프라인 스테이트 관리
8.1 파이프라인 시작하기
8.2 PCO로 파이프라인 개체 캐싱
8.3 그래픽스 파이프라인 생성
8.4 컴퓨팅 파이프라인 이해
8.5 Vulkan의 파이프라인 스테이트 개체
8.6 파이프라인 구현
8.7 요약
CHAPTER 9 개체 그리기
9.1 Vulkan의 그리기 과정 개요
9.2 드로잉 개체 준비하기
9.3 드로잉 개체의 렌더링
9.4 인덱싱된 기하의 렌더링
9.5 Vulkan의 동기화 프리미티브 이해하기
9.6 디스플레이 윈도의 크기 조정
9.7 요약
CHAPTER 10 디스크립터와 푸시 상수
10.1 디스크립터의 개념 이해하기
10.2 Vulkan에서 유니폼을 구현하는 방법
10.3 푸시 상수 업데이트
10.4 요약
CHAPTER 11 텍스처 그리기
11.1 이미지 리소스의 개요
11.2 텍스처 드로잉을 위한 사전 작업
11.3 선형 타일링으로 이미지 리소스 구현하기
11.4 최적 타일링으로 이미지 리소스 구현하기
11.5 이미지와 버퍼 간 데이터 내용 복사
11.6 디스크립터 세트의 업데이트
11.7 요약
- 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
- 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
반품사유 | 반품 배송비 부담자 |
---|---|
단순변심 | 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다. |
고객 부담이 아닙니다. |
진행 상태 | 결제완료 | 상품준비중 | 배송지시/배송중/배송완료 |
---|---|---|---|
어떤 상태 | 주문 내역 확인 전 | 상품 발송 준비 중 | 상품이 택배사로 이미 발송 됨 |
환불 | 즉시환불 | 구매취소 의사전달 → 발송중지 → 환불 | 반품회수 → 반품상품 확인 → 환불 |
- 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
- 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
결제수단 | 환불시점 | 환불방법 |
---|---|---|
신용카드 | 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) | 신용카드 승인취소 |
계좌이체 |
실시간 계좌이체 또는 무통장입금 취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준) |
계좌입금 |
휴대폰 결제 |
당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소 전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준) |
당일취소 : 휴대폰 결제 승인취소 익월취소 : 계좌입금 |
포인트 | 취소 완료 후, 당일 포인트 적립 | 환불 포인트 적립 |
- 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
- 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
- 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
- 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
- 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
- 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.
상품군 | 취소/반품 불가사유 |
---|---|
의류/잡화/수입명품 | 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우 |
계절상품/식품/화장품 | 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 |
가전/설치상품 | 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.) |
자동차용품 | 상품을 개봉하여 장착한 이후 단순변심의 경우 |
CD/DVD/GAME/BOOK등 | 복제가 가능한 상품의 포장 등을 훼손한 경우 |
상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우 | |
노트북, 테스크탑 PC 등 | 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우 |