이미 소장하고 있다면 판매해 보세요.
|
1장. 불칸의 개요
__인스터스, 장치, 큐 ____불칸 인스턴스 ____불칸 물리 장치 ____물리 장치 메모리 ____장치 큐 ____논리 장치 생성 __객체 종류와 함수 규약 __메모리 관리 __불칸에서의 멀티스레딩 __수학적 개념 ____벡터와 행렬 ____좌표계 ____불칸의 강화 ____레이어 ____확장 __깨끗하게 종료하기 __요약 2장. 메모리와 자원 __주 메모리 관리 __자원 ____버퍼형식과 지원 ____이미지 ____자원 시야 ____자원 소멸 __장치 메모리 관리 __장치 메모리 할당 ____주 시스템의 장치 메모리에 대한 접근 ____메모리를 자원에 결속 ____간헐 자원 __요약 3장. 큐와 명령어 __장치 큐 __명령어 버퍼의 생성 __명령어 기록 __명령어 버퍼 재사용 __명령어의 제출 __요약 4장. 자료 이동 __자원 상태 관리 ____파이프라인 방벽 ____전역 메모리 방벽 ____버퍼 메모리 방벽 ____이미지 메모리 방벽 __버퍼의 비우기와 채우기 __이미지를 비우고 채우기 __이미지 자료의 복사 __압축된 이미지 자료를 복사 __이미지 늘이기 __요약 5장. 프리젠테이션 __프리젠테이션 확장 __프리젠테이션 표면 ____마이크로소프트 윈도우에서의 프리젠테이션 ____Xlib 기반 플랫폼에서의 프리젠테이션 ____Xcb로 프리젠테이션 __스왑 체인 __전체 화면 표면 __프리젠테이션의 수행 __마무리 정리 __요약 6장. 셰이더와 파이프라인 __GLSL의 개요 __SPIR-V 개요 ____SPIR-V의 표현 ____SPIR-V를 불칸에 전달 __파이프 라인 ____계산 파이프라인 ____특수화 상수 ____파이프라인 생성 가속 ____파이프라인 연결 __작업 실행 __셰이더에서의 자원 접근 ____서술자 집합 ____서술자 집합에 자원을 연결 ____서술자 집합의 연결 ____균일, 텍셀, 저장 버퍼 ____푸시 상수 ____표본화된 이미지 7장. 그래픽 파이프라인 __논리적 그래픽 파이프라인 __렌더패스 __프레임 버퍼 __단순 그래픽 파이프라인의 생성 ____그래픽 셰이더 단계 ____정점 입력 상태 ____입력 조합 ____테셀레이션 상태 ____시야 영역 상태 ____래스터라이제이션 상태 ____다중표본 상태 ____깊이와 스텐실 상태 ____색 혼합 상태 __동적 상태 __요약 8장. 그리기 __그리기 위한 준비 __정점 자료 __색인된 그리기 ____색인-전용 렌더링 ____재설정 __인스턴싱 __간접 그리기 __요약 9장. 기하구조 처리 __테셀레이션 ____테셀레이션 설정 ____테셀레이션 변수 ____테셀레이션 예: 변위 매핑 __기하 셰이더 ____기본체 자르기 ____기하 셰이더 인스턴싱 __프로그램 가능한 점 크기 __선 너비와 래스터라이제이션 사용자의 자르기와 거르기 __시야 영역 변환 __요약 10장. 화소 처리 __가위 시험 __깊이와 스텐실 연산 ____깊이 시험 ____스텐실 시험 ____선행 화소 시험 __다중표본 렌더링 ____표본율 음영 ____다중 표본 처리 __논리 연산 __화소 셰이더 출력 __색 혼합 __요약 11장. 동기화 __펜스 __이벤트 __세마포어 __요약 12장. 자료 돌려받기 __질의 ____질의 실행 ____시간 질의 __주 시스템에서 자료 읽기 __요약 13장. 다중 패스 렌더링 __입력 첨부 __첨주 내용 ____첨부 초기화 ____렌더 영역 ____첨부 내용의 유지 __부 명령어 버퍼 __요약 부록. 불칸 함수 __용어 사전 |
|
★ 이 책에서 다루는 내용 ★
■ 불칸의 성능을 시연하고 OpenGL과 다른 점을 보여주는 테스트된 코드 예제 ■ 불칸의 새 메모리 시스템을 시작하고 작업하는 전문 가이드 ■ 큐, 명령어, 자료 이동, 프리젠테이션에 대한 철저한 논의 ■ SPIR-V 바이너리 셰이더 언어와 계산/그래픽 파이프라인에 대한 완전한 설명 ■ 그리기 명령어, 기하구조와 화소 처리, 동기화 기본체, 불칸 자료를 응용프로그램에서 읽기에 대한 자세한 논의 ■ 응용프로그램의 완전한 사례 연구: 복잡한 다중패스 아키텍처와 다중 처리 큐를 사용한 지연 렌더링 ■ 불칸 함수와 SPIR-V 연산 코드, 완전한 불칸 용어 사전을 보여주는 부록 ★ 이 책의 대상 독자 ★ 주요 독자는 이미 다른 그래픽과 계산 API에 친숙한 프로그래머들이다. ★ 이 책의 구성 ★ 1장, ‘불칸의 개요’에서는 불칸을 간략히 소개하고, 불칸의 기반을 구성하는 개념을 알아본다. 또한 불칸 객체를 생성하는 기본을 살펴보고, 불칸 시스템을 시작하는 기초적인 방법도 함께 알아본다. 2장, ‘메모리와 자원’에서는 인터페이스의 기반이 되는 불칸의 메모리 시스템을 소개한다. 불칸 장치가 사용하는 메모리를 어떻게 할당하는지와 애플리케이션 안에서 수행되는 시스템 요소들을 알아본다. 3장, ‘큐와 명령어’에서는 명령어 버퍼(command buffer)를 설명하고 이를 제출하는 큐를 소개한다. 불칸 프로세스가 어떻게 작동하고 애플리케이션 실행을 위한 명령어 다발을 생성한 뒤 장치에 어떻게 보내는지 보여준다. 4장, ‘자료 이동’에서는 최초로 자료 이동에 중점을 둔 몇몇 불칸 명령어를 소개한다. 3장에서 처음 다룬 개념을 사용해 명령어 버퍼를 생성하며, 2장에서 소개한 자원과 메모리에 저장된 자료를 복사하고 포맷한다. 5장, ‘프리젠테이션’에서는 애플리케이션이 생성한 이미지를 어떻게 화면에 표현하는지 보여준다. 프리젠테이션은 윈도우 시스템과 상호작용하기 위해 사용되는 용어로, 플랫폼에 특화됐으며, 이 장에서는 플랫폼 특화 주제 중 일부를 자세히 알아본다. 6장, ‘셰이더와 파이프라인’에서는 불칸이 사용하는 바이너리 셰이딩 언어 SPIR-V를 소개한다. 또한 파이프라인(pipeline) 객체도 살펴보며, SPIR-V 셰이더를 사용해 어떻게 생성되는지를 보여준다. 그리고 계산 파이프라인(compute pipeline)의 개념을 알아보는데, 이는 불칸을 사용해서 계산 작업을 처리하는 데 사용할 수 있다. 7장, ‘그래픽 파이프라인’에서는 6장에서 다룬 것을 기반으로 그래픽 파이프라인을 생성하고 소개하는데, 이는 불칸에서 그래픽 프리미티브를 렌더하는 데 필요한 모든 설정을 포함한다. 8장, ‘그리기’에서는 불칸에서 가용한 다양한 그리기 명령어를 알아보고, 색인된(indexed) 것과 비색인된 그리기, 인스턴싱, 간접 명령도 함께 살펴본다. 그래픽 파이프라인에 자료가 들어가는 방법, 7장에서 소개한 것보다 더 복잡한 기하구조를 그리는 방법을 알아본다. 9장, ‘기하구조 처리’에서는 불칸 그래픽 파이프라인의 첫 반쪽을 더욱 자세히 알아보고, 테셀레이션과 기하구조 셰이더 단계에 대해 다른 시각으로 접근한다. 또한, 이 단계에서 가능한 일부 더 발전된 방법을 보여주고 래스터라이제이션 단계까지 파이프라인을 다룬다. 10장, ‘화소 처리’에서는 9장에서 처리하지 않는 기하구조를 유저에게 보여주기 위한 픽셀의 연속을 변환하는 방법인 레스터라이제이션 과정과 그 후의 모든 일을 알아본다. 11장, ‘동기화’에서는 불칸 애플리케이션에 가용한 다양한 프리미티브 동기화를 다루며, 펜스(fence), 이벤트(event), 세마포어(semaphore)도 알아본다. 이들 모두는 애플리케이션이 불칸 병렬 본질의 효율적인 사용을 가능하게 하는 기반이 된다. 12장, ‘자료 돌려받기’에서는 이전 장에서 사용된 통신의 방향을 역으로 해 애플리케이션에서 불칸으로부터 자료를 읽을 때 일어나는 사안들을 살펴본다. 불칸 장치가 수행하는 연산의 시간을 측정하고, 불칸 장치로부터 연산에 대한 통계를 받고, 애플리케이션에서 불칸이 생성한 자료를 받는 방법을 보여준다. 13장, ‘다중 패스 렌더링’에서는 이전에 다룬 다양한 주제를 다시 되짚어보고, 더 발전된 애플리케이션(복잡한 다중 패스 설계와 다중 처리 큐를 사용한 지연 렌더링 애플리케이션)을 생성하기 위해 여러 가지를 한데 묶는다. ‘부록’에서는 불칸 애플리케이션에서 가용한 함수를 생성하는 명령어 버퍼를 표로 보여주며, 속성을 결정할 때 빠르게 참조할 수 있다. ★ 지은이의 말 ★ 불칸은 거대하고 복잡하며, 새로운 시스템이다. 책 한 권에서 API의 모든 부분을 다 포함하는 것은 극도로 어려운 일이다. 이 책과 더불어 불칸 매뉴얼을 철저하게 읽기를 권장하며, 이종 계산 시스템의 사용과 다른 API를 사용한 컴퓨터 그래픽에 관한 다른 책을 읽는 것을 추천한다. 이런 자료들은 수학과 이 책에서 가정한 다른 개념들을 이해하기 쉽게 해준다. ★ 옮긴이의 말 ★ 모바일 렌더러에서 최고의 그래픽을 표현하기 위해 엔진과 렌더링 파이프라인을 커스터마이제이션하던 중에 불칸의 발표는 참으로 반가운 소식이었다. 스티브 잡스의 철학으로 인해 항상 유저 인터페이스와 그래픽에 심혈을 기울이던 애플과는 달리, 오픈 플랫폼인 안드로이드 진영의 경우 통일되지 않은 그래픽 하드웨어로 인한 많은 희생이 있기 때문이다. 애플의 경우 독자 API인 메탈을 통해서 상당한 성능 향상을 이루었지만, OpenGL ES의 경우 너무 오래되어 새로운 모바일 그래픽에 맞지 않는 많은 제약을 가져 통일되지 않은 extension에 의존해야만 했다. 비단 모바일 플랫폼만이 아니라 PC에서도 DirectX의 하드웨어 발전에 맞춘 빠른 지원과 달리 OpenGL의 제약과 시대를 따라가지 못했던 부분으로 인해 구식 API화되고 있었다. 그래픽 응용 프로그램이나 대학교에서는 항상 OpenGL을 배우게 되지만, 사실상 업계에서 표준은 항상 DirectX였으며, 언리얼 엔진 같은 업계 최고의 엔진 역시 렌더링 API는 DirectX를 기본으로 간주하였고, nVidia나 AMD같은 하드웨어 벤더들 역시 OpenGL에 대한 지원이 미흡하였다. 그러던 와중 크로노스 그룹의 불칸 발표는 아주 반가운 소식이었다. 파편화된 플랫폼 사이에서 표준이 되는 공통 API의 도입은 개발자에게 엄청난 편의를 제공하며, 플랫폼 별로 맞춰야 하는 많은 고민들을 해결해줄 수 있다. 특히 게임 같은 소프트웨어의 경우 원 소스 멀티 유즈가 대세며, 대부분의 게임 엔진들이 멀티 플랫폼을 지원하는 것을 강점으로 손꼽고 있다. 이를 통해 불칸 같이 PC와 모바일을 아우르는 공통 API의 등장은 업계 전반에 활력을 불어넣게 될 것이며, 앞으로 더 높은 그래픽 퀄리티의 애플리케이션 개발에 든든한 아군이 되어줄 것이다. 이 책은 불칸의 모체였던 AMD의 독자 그래픽 API 맨틀의 개발자로서 불칸의 개발에 깊이 참여한 수석 개발자가 직접 작성한 것으로, 불칸을 이해하기에 이보다 좋은 교재는 없을 것이라고 생각해 추천하는 의미에서 바쁜 일정 중에 번역하였다. 이 책이 많은 다른 개발자들이 불칸을 이해하는 데 도움이 되길 바란다. |