摘要: 准备工作 以下代码基于开源项目vulkanExample中pbr部分 1、创建多光源场景 设置均匀分布的64个光源,并绘制光源形状 为简化操作,光源形状为球形,并设置衰减 void updateLights() { const float p = 15.0f; // 空间范围参数 const int 阅读全文
posted @ 2025-04-07 21:27 BlueTOberry 阅读(120) 评论(0) 推荐(0)
摘要: 一、 1.1 基础概念说明 RenderPass: 每次提交Draw call命令之后,到输出一张或多张图片结果,这个过程称为RenderPass,在Vulkan中可以创建其对象,主要描述了Pass当中的输入输出相关信息。 SubPass:存在很多渲染方式,需要多次Pass才能渲染得到最后的结果,比 阅读全文
posted @ 2025-09-19 13:09 BlueTOberry 阅读(122) 评论(0) 推荐(0)
摘要: // 创建渲染通行证(支持多视图和深度缓冲) std::vector<VkAttachmentDescription> attachments(2); // 颜色附件 attachments[0].format = format; attachments[0].samples = VK_SAMPLE 阅读全文
posted @ 2025-09-19 12:08 BlueTOberry 阅读(45) 评论(0) 推荐(0)
摘要: 1. PSOPipeline State Object,管线状态对象)? PSO 是 Vulkan 的核心概念之一,它是一个包含了渲染所需几乎所有状态的、不可变的对象。你可以把它想象成一台高度可配置的工业机器(GPU)的完整配置方案。 在传统 API(如 OpenGL)中,你可以在运行时动态地、单独 阅读全文
posted @ 2025-09-18 20:28 BlueTOberry 阅读(95) 评论(0) 推荐(0)
摘要: 我将为 generateIrradianceCube 函数提供逐行中文注释和分析。这个函数是用 C++ 编写的,使用 Vulkan API 生成用于物理基础渲染 (PBR) 的辐照度立方体贴图 (irradiance cube map)。该函数创建一个立方体贴图,设置离屏渲染管线,并将环境贴图渲染为 阅读全文
posted @ 2025-09-14 19:50 BlueTOberry 阅读(55) 评论(0) 推荐(0)
摘要: 在静态光照探针运用中,主要依靠球谐函数 球谐函数定义:基函数 在数学中,一个基函数是一个函数空间中的一个基地,就像欧拉空间的一个坐标轴一样。 球谐函数是将谐函数限制在球坐标下的单位球面的一组基函数, 球面空间上的球谐函数可以看作球体的球壳,本质上是二维函数,可视化如下: 绿色表示球谐函数的值为正值, 阅读全文
posted @ 2025-09-01 19:57 BlueTOberry 阅读(253) 评论(0) 推荐(1)
摘要: 设计思路 1 目标: 在 GPU 上并行计算每个光源对集群的分配,生成与 CPU 版本等效的 ClusterCountsandOffsets 和 ClusterIndexList 数据结构。 使用共享内存减少全局内存访问,提高性能。 使用原子操作确保线程安全地更新集群计数和索引列表。 2 工作组划分 阅读全文
posted @ 2025-07-22 14:56 BlueTOberry 阅读(50) 评论(0) 推荐(0)
摘要: 实现GPU版本cluster light的步骤 1.分割视椎体为三维网格 具体实现: 选取合适的网格大小。(例如16924的网格,分别对应屏幕的x,y,z),每个cluster表示一个空间区域,包含可能影响该区域像素的光源。 按照对数分割,计算AABB(轴对齐包围盒),进行光源与cluster的相交 阅读全文
posted @ 2025-06-14 22:54 BlueTOberry 阅读(41) 评论(0) 推荐(0)