Fullscreen Radial Blur
prepare
- loadAssets: 加载模型和贴图
- prepareOffscreen
- 创建渲染模糊场景帧缓冲
- Color attachment
- vkCreateImage
- vkGetImageMemoryRequirements
- vkAllocateMemory
- vkBindImageMemory
- vkCreateImageView
- vkCreateSampler
- Depth stencil attachment
- vkCreateImage
- vkGetImageMemoryRequirements
- vkAllocateMemory
- vkBindImageMemory
- vkCreateImageView
- vkCreateRenderPass
- vkCreateFramebuffer
- prepareUniformBuffers
- createBuffer
- updateUniformBuffers
- setupDescriptorSetLayout
- Scene rendering
- descriptorSetLayoutBinding
- vkCreateDescriptorSetLayout
- vkCreatePipelineLayout
- Fullscreen radial blur
- descriptorSetLayoutBinding
- vkCreateDescriptorSetLayout
- vkCreatePipelineLayout
- Scene rendering
- preparePipelines
- vkCreateGraphicsPipelines: Radial blur pipeline
- vkCreateGraphicsPipelines: Phong pass
- vkCreateGraphicsPipelines: Color pass
- setupDescriptorPool
- vkCreateDescriptorPool
- setupDescriptorSet
- Scene rendering
- vkAllocateDescriptorSets
- writeDescriptorSet
- vkUpdateDescriptorSets
- Fullscreen radial blur
- vkAllocateDescriptorSets
- writeDescriptorSet
- vkUpdateDescriptorSets
- Scene rendering
- buildCommandBuffers
- loop
- vkBeginCommandBuffer
- First render pass: Offscreen rendering
- vkCmdSetViewport
- vkCmdSetScissor
- vkCmdBeginRenderPass
- vkCmdBindDescriptorSets
- vkCmdBindPipeline
- draw
- vkCmdEndRenderPass
- Second render pass: Scene rendering with applied radial blur
- vkCmdBeginRenderPass
- vkCmdSetViewport
- vkCmdSetScissor
- vkCmdBindDescriptorSets
- vkCmdBindPipeline
- draw
- if blur
- vkCmdBindDescriptorSets
- vkCmdBindPipeline
- vkCmdDraw
- drawUI
- vkCmdEndRenderPass
- vkEndCommandBuffer
- loop
render
- draw
- prepareFrame
- vkQueueSubmit
- submitFrame
- updateUniformBuffersScene
shader
- radialblur: 滤波
- phongpass: 获取渲染模型的效果
- colorpass: 将blur和模型结果混合
- FS: 正常渲染(使用texture获取字体)
小结
本节vulkan没有特殊的设置. 效果都是基础, 可以忽略.
Bloom
使用高斯模糊, 管线与上节大致相同, 可忽略.
Parallax mapping
视差贴图也是基础, 可忽略.
Spherical Environment Mapping
vulkan没有特殊的设置, 也是渲染基础. ( 但是可以研究一下Spherical Environment Mapping 新的使用场景)
总结
Effects章节都是一些渲染效果的实现, vulkan管线没有特殊的设置. 而效果项都是渲染基础方法. 所以可以忽略该章节.