万本电子书0元读

万本电子书0元读

顶部广告

Vulkan Cookbook电子书

售       价:¥

29人正在读 | 0人评论 9.8

作       者:Pawel Lapinski

出  版  社:Packt Publishing

出版时间:2017-04-28

字       数:89.0万

所属分类: 进口书 > 外文原版书 > 电脑/网络

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
Work through recipes to unlock the full potential of the next generation graphics API―Vulkan About This Book ?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 Who This Book Is For This 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. 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 de*or 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
目录展开

Title Page

Copyright

Credits

About the Author

Acknowledgments

About the Reviewer

www.PacktPub.com

Customer Feedback

Preface

What this book covers

What you need for this book

Who this book is for

Sections

Getting ready

How to do it…

How it works…

There's more…

See also

Conventions

Reader feedback

Customer support

Downloading the example code

Downloading the color images of this book

Errata

Piracy

Questions

Instance and Devices

Introduction

Downloading Vulkan's SDK

Getting ready

How to do it...

How it works...

See also

Enabling validation layers

How to do it...

How it works...

See also

Connecting with a Vulkan Loader library

How to do it...

How it works...

See also

Preparing for loading Vulkan API functions

How to do it...

How it works...

See also

Loading functions exported from a Vulkan Loader library

How to do it...

How it works...

See also

Loading global-level functions

How to do it...

How it works...

See also

Checking available Instance extensions

How to do it...

How it works...

See also

Creating a Vulkan Instance

How to do it...

How it works...

See also

Loading instance-level functions

How to do it...

How it works...

See also

Enumerating available physical devices

How to do it...

How it works...

See also

Checking available device extensions

How to do it...

How it works...

See also

Getting features and properties of a physical device

How to do it...

How it works...

See also

Checking available queue families and their properties

How to do it...

How it works...

See also

Selecting the index of a queue family with the desired capabilities

How to do it...

How it works...

See also

Creating a logical device

Getting ready

How to do it...

How it works...

See also

Loading device-level functions

How to do it...

How it works...

See also

Getting a device queue

How to do it...

How it works...

See also

Creating a logical device with geometry shaders, graphics, and compute queues

How to do it...

How it works...

See also

Destroying a logical device

How to do it...

How it works...

See also

Destroying a Vulkan Instance

How to do it...

How it works...

See also

Releasing a Vulkan Loader library

How to do it...

How it works...

See also

Image Presentation

Introduction

Creating a Vulkan Instance with WSI extensions enabled

How to do it...

How it works...

See also

Creating a presentation surface

Getting ready

How to do it...

How it works...

See also

Selecting a queue family that supports presentation to a given surface

How to do it...

How it works...

See also

Creating a logical device with WSI extensions enabled

How to do it...

How it works...

See also

Selecting a desired presentation mode

How to do it...

How it works...

See also

Getting the capabilities of a presentation surface

How to do it...

How it works...

See also

Selecting a number of swapchain images

How to do it...

How it works...

See also

Choosing a size of swapchain images

How to do it...

How it works...

See also

Selecting desired usage scenarios of swapchain images

How to do it...

How it works...

See also

Selecting a transformation of swapchain images

How to do it...

How it works...

See also

Selecting a format of swapchain images

Getting ready

How to do it...

How it works...

See also

Creating a swapchain

How to do it...

How it works...

See also

Getting handles of swapchain images

How to do it...

How it works...

See also

Creating a swapchain with R8G8B8A8 format and a mailbox present mode

How to do it...

How it works...

See also

Acquiring a swapchain image

Getting ready

How to do it...

How it works...

See also

Presenting an image

Getting ready

How to do it...

How it works...

See also

Destroying a swapchain

How to do it...

How it works...

See also

Destroying a presentation surface

How to do it...

How it works...

See also

Command Buffers and Synchronization

Introduction

Creating a command pool

How to do it...

How it works...

See also

Allocating command buffers

How to do it...

How it works...

See also

Beginning a command buffer recording operation

How to do it...

How it works...

See also

Ending a command buffer recording operation

How to do it...

How it works...

See also

Resetting a command buffer

How to do it...

How it works...

See also

Resetting a command pool

How to do it...

How it works...

See also

Creating a semaphore

How to do it...

How it works...

See also

Creating a fence

How to do it...

How it works...

See also

Waiting for fences

How to do it...

How it works...

See also

Resetting fences

How to do it...

How it works...

See also

Submitting command buffers to a queue

Getting ready

How to do it...

How it works...

See also

Synchronizing two command buffers

Getting ready

How to do it...

How it works...

See also

Checking if processing of a submitted command buffer has finished

How to do it...

How it works...

See also

Waiting until all commands submitted to a queue are finished

How to do it...

How it works...

See also

Waiting for all submitted commands to be finished

How to do it...

How it works...

See also

Destroying a fence

How to do it...

How it works...

See also

Destroying a semaphore

How to do it...

How it works...

See also

Freeing command buffers

How to do it...

How it works...

See also

Destroying a command pool

How to do it...

How it works...

See also

Resources and Memory

Introduction

Creating a buffer

How to do it...

How it works...

See also

Allocating and binding a memory object for a buffer

How to do it...

How it works...

There's more...

See also

Setting a buffer memory barrier

Getting ready

How to do it...

How it works...

There's more...

See also

Creating a buffer view

How to do it...

How it works...

See also

Creating an image

How to do it...

How it works...

See also

Allocating and binding a memory object to an image

How to do it...

How it works...

There's more...

See also

Setting an image memory barrier

Getting ready

How to do it...

How it works...

See also

Creating an image view

How to do it...

How it works...

See also

Creating a 2D image and view

How to do it...

How it works...

See also

Creating a layered 2D image with a CUBEMAP view

How to do it...

How it works...

See also

Mapping, updating and unmapping host-visible memory

How to do it...

How it works...

See also

Copying data between buffers

How to do it...

How it works...

See also

Copying data from a buffer to an image

How to do it...

How it works...

See also

Copying data from an image to a buffer

How to do it...

How it works...

See also

Using a staging buffer to update a buffer with a device-local memory bound

How to do it...

How it works...

See also

Using a staging buffer to update an image with a device-local memory bound

How to do it...

How it works...

See also

Destroying an image view

How to do it...

How it works...

See also

Destroying an image

How to do it...

How it works...

See also

Destroying a buffer view

How to do it...

How it works...

See also

Freeing a memory object

How to do it...

How it works...

See also

Destroying a buffer

How to do it...

How it works...

See also

Descriptor Sets

Introduction

Creating a sampler

How to do it...

How it works...

See also

Creating a sampled image

How to do it...

How it works...

See also

Creating a combined image sampler

How to do it...

How it works...

See also

Creating a storage image

How to do it...

How it works...

See also

Creating a uniform texel buffer

How to do it...

How it works...

See also

Creating a storage texel buffer

How to do it...

How it works...

See also

Creating a uniform buffer

How to do it...

How it works...

See also

Creating a storage buffer

How to do it...

How it works...

See also

Creating an input attachment

How to do it...

How it works...

See also

Creating a descriptor set layout

How to do it...

How it works...

See also

Creating a descriptor pool

How to do it...

How it works...

See also

Allocating descriptor sets

How to do it...

How it works...

See also

Updating descriptor sets

Getting ready

How to do it...

How it works...

See also

Binding descriptor sets

How to do it...

How it works...

See also

Creating descriptors with a texture and a uniform buffer

How to do it...

How it works...

See also

Freeing descriptor sets

How to do it...

How it works...

See also

Resetting a descriptor pool

How to do it...

How it works...

See also

Destroying a descriptor pool

How to do it...

How it works...

See also

Destroying a descriptor set layout

How to do it...

How it works...

See also

Destroying a sampler

How to do it...

How it works...

See also

Render Passes and Framebuffers

Introduction

Specifying attachments descriptions

How to do it...

How it works...

See also

Specifying subpass descriptions

Getting ready

How to do it...

How it works...

See also

Specifying dependencies between subpasses

How to do it...

How it works...

See also

Creating a render pass

Getting ready

How to do it...

How it works...

See also

Creating a framebuffer

How to do it...

How it works...

See also

Preparing a render pass for geometry rendering and postprocess subpasses

Getting ready

How to do it...

How it works...

See also

Preparing a render pass and a framebuffer with color and depth attachments

Getting ready

How to do it...

How it works...

See also

Beginning a render pass

How to do it...

How it works...

See also

Progressing to the next subpass

How to do it...

How it works...

See also

Ending a render pass

How to do it...

How it works...

See also

Destroying a framebuffer

How to do it...

How it works...

See also

Destroying a render pass

How to do it...

How it works...

See also

Shaders

Introduction

Converting GLSL shaders to SPIR-V assemblies

How to do it...

How it works...

See also

Writing vertex shaders

How to do it...

How it works...

See also

Writing tessellation control shaders

How to do it...

How it works...

See also

Writing tessellation evaluation shaders

How to do it...

How it works...

See also

Writing geometry shaders

How to do it...

How it works...

See also

Writing fragment shaders

How to do it...

How it works...

See also

Writing compute shaders

How to do it...

How it works...

See also

Writing a vertex shader that multiplies vertex position by a projection matrix

How to do it...

How it works...

See also

Using push constants in shaders

How to do it...

How it works...

See also

Writing texturing vertex and fragment shaders

How to do it...

How it works...

See also

Displaying polygon normals with a geometry shader

How to do it...

How it works...

See also

Graphics and Compute Pipelines

Introduction

Creating a shader module

How to do it...

How it works...

See also

Specifying pipeline shader stages

Getting ready

How to do it...

How it works...

See also

Specifying a pipeline vertex binding description, attribute description, and input state

How to do it...

How it works...

See also

Specifying a pipeline input assembly state

How to do it...

How it works...

See also

Specifying a pipeline tessellation state

How to do it...

How it works...

See also

Specifying a pipeline viewport and scissor test state

Getting ready

How to do it...

How it works...

See also

Specifying a pipeline rasterization state

How to do it...

How it works...

See also

Specifying a pipeline multisample state

How to do it...

How it works...

See also

Specifying a pipeline depth and stencil state

How to do it...

How it works...

See also

Specifying a pipeline blend state

How to do it...

How it works...

See also

Specifying pipeline dynamic states

How to do it...

How it works...

See also

Creating a pipeline layout

How to do it...

How it works...

See also

Specifying graphics pipeline creation parameters

How to do it...

How it works...

See also

Creating a pipeline cache object

How to do it...

How it works...

See also

Retrieving data from a pipeline cache

How to do it...

How it works...

See also

Merging multiple pipeline cache objects

How to do it...

How it works...

See also

Creating a graphics pipeline

How to do it...

How it works...

See also

Creating a compute pipeline

How to do it...

How it works...

See also

Binding a pipeline object

How to do it...

How it works...

See also

Creating a pipeline layout with a combined image sampler, a buffer, and push constant ranges

How to do it...

How it works...

See also

Creating a graphics pipeline with vertex and fragment shaders, depth test enabled, and with dynamic viewport and scissor tests

How to do it...

How it works...

See also

Creating multiple graphics pipelines on multiple threads

Getting ready

How to do it...

How it works...

See also

Destroying a pipeline

How to do it...

How it works...

See also

Destroying a pipeline cache

How to do it...

How it works...

See also

Destroying a pipeline layout

How to do it...

How it works...

See also

Destroying a shader module

How to do it...

How it works...

See also

Command Recording and Drawing

Introduction

Clearing a color image

How to do it...

How it works...

See also

Clearing a depth-stencil image

How to do it...

How it works...

See also

Clearing render pass attachments

How to do it...

How it works...

See also

Binding vertex buffers

Getting ready

How to do it...

How it works...

See also

Binding an index buffer

How to do it...

How it works...

See also

Providing data to shaders through push constants

How to do it...

How it works...

See also

Setting viewport states dynamically

How to do it...

How it works...

See also

Setting scissor states dynamically

How to do it...

How it works...

See also

Setting line width states dynamically

How to do it...

How it works...

See also

Setting depth bias states dynamically

How to do it...

How it works...

See also

Setting blend constants states dynamically

How to do it...

How it works...

See also

Drawing a geometry

How to do it...

How it works...

See also

Drawing an indexed geometry

How to do it...

How it works...

See also

Dispatching compute work

How to do it...

How it works...

See also

Executing a secondary command buffer inside a primary command buffer

How to do it...

How it works...

See also

Recording a command buffer that draws a geometry with dynamic viewport and scissor states

Getting ready

How to do it...

How it works...

See also

Recording command buffers on multiple threads

Getting ready

How to do it...

How it works...

See also

Preparing a single frame of animation

How to do it...

How it works...

See also

Increasing the performance through increasing the number of separately rendered frames

Getting ready

How to do it...

How it works...

See also

Helper Recipes

Introduction

Preparing a translation matrix

How to do it...

How it works...

See also

Preparing a rotation matrix

How to do it...

How it works...

See also

Preparing a scaling matrix

How to do it...

How it works...

See also

Preparing a perspective projection matrix

How to do it...

How it works...

See also

Preparing an orthographic projection matrix

How to do it...

How it works...

See also

Loading texture data from a file

Getting ready

How to do it...

How it works...

See also

Loading a 3D model from an OBJ file

Getting ready

How to do it...

How it works...

See also

Lighting

Introduction

Rendering a geometry with a vertex diffuse lighting

Getting ready

How to do it...

How it works...

See also

Rendering a geometry with a fragment specular lighting

Getting ready

How to do it...

How it works...

See also

Rendering a normal mapped geometry

Getting ready

How to do it...

How it works...

See also

Drawing a reflective and refractive geometry using cubemaps

Getting ready

How to do it...

How it works...

See also

Adding shadows to the scene

Getting ready

How to do it...

How it works...

See also

Advanced Rendering Techniques

Introduction

Drawing a skybox

Getting ready

How to do it...

How it works...

See also

Drawing billboards using geometry shaders

How to do it...

How it works...

See also

Drawing particles using compute and graphics pipelines

How to do it...

How it works...

See also

Rendering a tessellated terrain

Getting ready

How to do it...

How it works...

See also

Rendering a full-screen quad for post-processing

How to do it...

How it works...

See also

Using input attachments for a color correction post-process effect

How to do it...

How it works...

See also

累计评论(0条) 1个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部