3 options
Vulkan cookbook : work through recipes to unlock the full potential of the next generation graphics API-Vulkan.
- Format:
- Book
- Author/Creator:
- Lapinski, Pawel.
- Language:
- English
- Subjects (All):
- Vulkan graphics programme.
- Computer graphics.
- Three-dimensional modeling.
- Three-dimensional imaging.
- Physical Description:
- 1 online resource (662 pages) : illustrations (some colour)
- Edition:
- 1st ed.
- Place of Publication:
- Birmingham : Packt Publishing, 2017.
- System Details:
- Mode of access: World Wide Web.
- Summary:
- Work through recipes to unlock the full potential of the next generation graphics API—VulkanKey Features[*] This book explores a wide range of modern graphics programming techniques and GPU compute methods to make the best use of the Vulkan API[*] Learn techniques that can be applied to a wide range of platforms desktop, smartphones, and embedded devices[*] Get an idea on the graphics engine with multi-platform support and learn exciting imaging processing and post-processing techniquesBook DescriptionVulkan is the next generation graphics API released by the Khronos group. It is expected to be the successor to OpenGL and OpenGL ES, which it shares some similarities with such as its cross-platform capabilities, programmed pipeline stages, or nomenclature. Vulkan is a low-level API that gives developers much more control over the hardware, but also adds new responsibilities such as explicit memory and resources management. With it, though, Vulkan is expected to be much faster. This book is your guide to understanding Vulkan through a series of recipes. We start off by teaching you how to create instances in Vulkan and choose the device on which operations will be performed. You will then explore more complex topics such as command buffers, resources and memory management, pipelines, GLSL shaders, render passes, and more. Gradually, the book moves on to teach you advanced rendering techniques, how to draw 3D scenes, and how to improve the performance of your applications. By the end of the book, you will be familiar with the latest advanced techniques implemented with the Vulkan API, which can be used on a wide range of platforms.What you will learn[*] Work with Swapchain to present images on screen[*] Create, submit, and synchronize operations processed by the hardware[*] Create buffers and images, manage their memory, and upload data to them from CPU[*] Explore descriptor sets and set up an interface between application and shaders[*] Organize drawing operations into a set of render passes and subpasses[*] Prepare graphics pipelines to draw 3D scenes and compute pipelines to perform mathematical calculations[*] Implement geometry projection and tessellation, texturing, lighting, and post-processing techniques[*] Write shaders in GLSL and convert them into SPIR-V assemblies[*] Find out about and implement a collection of popular, advanced rendering techniques found in games and benchmarksWho this book is forThis book is ideal for developers who know C/C++ languages, have some basic familiarity with graphics programming, and now want to take advantage of the new Vulkan API in the process of building next generation computer graphics. Some basic familiarity of Vulkan would be useful to follow the recipes. OpenGL developers who want to take advantage of the Vulkan API will also find this book useful.
- Contents:
- Cover
- Copyright
- Credits
- About the Author
- Acknowledgments
- About the Reviewer
- www.PacktPub.com
- Customer Feedback
- Table of Contents
- Preface
- Chapter 1: Instance and Devices
- Introduction
- Downloading Vulkan's SDK
- Getting ready
- How to do it...
- How it works...
- See also
- Enabling validation layers
- Connecting with a Vulkan Loader library
- Preparing for loading Vulkan API functions
- Loading functions exported from a Vulkan Loader library
- Loading global-level functions
- Checking available Instance extensions
- Creating a Vulkan Instance
- Loading instance-level functions
- Enumerating available physical devices
- Checking available device extensions
- Getting features and properties of a physical device
- Checking available queue families and their properties
- Selecting the index of a queue family with the desired capabilities
- Creating a logical device
- Loading device-level functions
- Getting a device queue
- See also.
- Creating a logical device with geometry shaders, graphics, and compute queues
- Destroying a logical device
- Destroying a Vulkan Instance
- Releasing a Vulkan Loader library
- Chapter 2: Image Presentation
- Creating a Vulkan Instance with WSI extensions enabled
- Creating a presentation surface
- Selecting a queue family that supports presentation to a given surface
- Creating a logical device with WSI extensions enabled
- Selecting a desired presentation mode
- Getting the capabilities of a presentation surface
- Selecting a number of swapchain images
- Choosing a size of swapchain images
- Selecting desired usage scenarios of swapchain images
- Selecting a transformation of swapchain images
- Selecting a format of swapchain images
- Creating a swapchain
- Getting handles of swapchain images
- Creating a swapchain with R8G8B8A8 format and a mailbox present mode
- Acquiring a swapchain image.
- Getting ready
- Presenting an image
- Destroying a swapchain
- Destroying a presentation surface
- Chapter 3: Command Buffers and Synchronization
- Creating a command pool
- Allocating command buffers
- Beginning a command buffer recording operation
- Ending a command buffer recording operation
- Resetting a command buffer
- Resetting a command pool
- Creating a semaphore
- Creating a fence
- Waiting for fences
- Resetting fences
- Submitting command buffers to a queue
- Synchronizing two command buffers
- Checking if processing of a submitted command buffer has finished
- Waiting until all commands submitted to a queue are finished
- Waiting for all submitted commands to be finished
- Destroying a fence
- Destroying a semaphore
- Freeing command buffers
- Destroying a command pool
- Chapter 4: Resources and Memory
- Creating a buffer
- Allocating and binding a memory object for a buffer
- There's more...
- Setting a buffer memory barrier
- Creating a buffer view
- Creating an image
- Allocating and binding a memory object to an image
- Setting an image memory barrier
- Creating an image view
- Creating a 2D image and view
- Creating a layered 2D image with a CUBEMAP view
- Mapping, updating and unmapping host-visible memory
- Copying data between buffers
- Copying data from a buffer to an image
- Copying data from an image to a buffer
- Using a staging buffer to update a buffer with a device-local memory bound
- Using a staging buffer to update an image with a device-local memory bound
- Destroying an image view
- Destroying an image.
- How to do it...
- Destroying a buffer view
- Freeing a memory object
- Destroying a buffer
- Chapter 5: Descriptor Sets
- Creating a sampler
- Creating a sampled image
- Creating a combined image sampler
- Creating a storage image
- Creating a uniform texel buffer
- Creating a storage texel buffer
- Creating a uniform buffer
- Creating a storage buffer
- Creating an input attachment
- Creating a descriptor set layout
- Creating a descriptor pool
- Allocating descriptor sets
- Updating descriptor sets
- Binding descriptor sets
- Creating descriptors with a texture and a uniform buffer
- Freeing descriptor sets
- Resetting a descriptor pool
- Destroying a descriptor pool
- Destroying a descriptor set layout
- How to do it.
- How it works.
- Notes:
- Includes index.
- Includes bibliographical references and index.
- ISBN:
- 9781786464705
- 1786464705
- OCLC:
- 988029252
The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.