Vulkan
文章平均质量分 89
千里马-horse
专注于OpenGL、camera 应用开发、音视频开发
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Building a Simple Engine -- Subsystems -- Audio basics
本文介绍了一个基础游戏音频系统的C++实现方案。系统采用模块化设计,包含AudioClip(音频资源)、AudioSource(音源)、AudioListener(听者)和AudioSystem(核心管理)四个核心类,支持音频加载、播放控制、3D空间定位等基础功能。系统采用现代C++风格实现,通过共享指针管理资源生命周期,并提供了与游戏引擎集成的接口。虽然能满足基本音频播放需求,但存在空间音频模拟精度不足、CPU计算开销大等局限性,为后续利用Vulkan计算着色器进行GPU加速优化奠定了基础。文章还给出了典原创 2026-02-13 07:15:00 · 215 阅读 · 0 评论 -
Building a Simple Engine -- Subsystems -- Introduction
本文介绍了如何通过Vulkan引擎扩展音频和物理子系统。重点阐述了利用Vulkan计算着色器实现3D空间音频处理和物理仿真加速的技术方案,分析了GPU并行计算在提升音频处理能力和复杂物理仿真方面的优势。文章还探讨了统一内存模型带来的系统协同效率,同时指出了移动平台需要考虑的功耗、延迟等实践限制,建议采用混合架构设计。最后强调了掌握Vulkan计算着色器和相关基础概念对实现这些子系统的必要性。原创 2026-02-13 07:00:00 · 404 阅读 · 0 评论 -
Building a Simple Engine -- Loading Model -- sConclusion
本章介绍了简易引擎的开发成果,重点整合了模型加载功能与既有架构。通过实现层级场景图、glTF动画支持、PBR材质系统和多对象渲染,展示了教程知识点的实际应用。该引擎框架具备可扩展性,为后续开发高级功能(如完善材质系统、物理集成等)奠定了基础。相关代码详见simple_engine/20_loading_models.cpp文件。原创 2026-02-12 07:45:00 · 124 阅读 · 0 评论 -
Building a Simple Engine -- Loading Models -- Animations
本文介绍了3D动画系统的实现原理,重点阐述了骨骼动画的关键要素:关键帧、插值、通道和骨骼结构。详细解析了动画数据结构设计、更新流程和播放机制,包括时间管理、关键帧定位、插值计算等核心环节。此外,还探讨了高级动画技术,如动画融合、逆运动学和动画状态机,以及性能优化方法。系统支持glTF格式,通过分层设计实现动画加载、播放和融合功能,为创建动态3D场景提供了基础框架。原创 2026-02-12 07:15:00 · 853 阅读 · 0 评论 -
Building a Simple Engine -- Loading Models -- Scene rendering
本文详细介绍了3D场景渲染的核心流程,重点阐述了基于scenegraph的渲染系统实现。主要内容包括:1) 场景图的层级遍历与变换矩阵计算;2) 材质属性配置与GPU资源绑定;3) 渲染管线优化技术,如视锥剔除、LOD和实例化渲染;4) 高级渲染技术包括延迟渲染和分簇渲染。系统通过深度优先遍历场景图,结合变换矩阵计算、材质参数传递和GPU指令下发,实现了高效灵活的3D场景渲染框架。文章还探讨了多种性能优化方案,为复杂场景渲染提供了技术基础。原创 2026-02-12 07:00:00 · 545 阅读 · 0 评论 -
Building a Simple Engine -- Loading Models -- Multiple objects
本文探讨了3D场景中多对象管理与渲染的关键技术。主要内容包括:1)多对象管理策略(实例化/独立模型加载)与组织方式(扁平集合/空间分区/场景图);2)性能优化技术(绘制调用批处理、视锥剔除、资源共享);3)实例化渲染实现方案,包括基础对象实例化与硬件加速实例化;4)材质变体技术实现视觉多样性。这些方法共同构成了高效渲染复杂3D场景的基础框架,在保持性能的同时支持大规模对象的差异化表现。原创 2026-02-11 07:15:00 · 653 阅读 · 0 评论 -
Building a Simple Engine -- Loading Models -- PBR rendering
本文介绍了如何为glTF模型实现PBR(基于物理的渲染)渲染管线。首先阐述了glTF原生支持的PBR材质属性,包括基础颜色、金属度/粗糙度、法线贴图等。然后详细讲解了在渲染引擎中的实现步骤:配置包含光源、相机等参数的统一缓冲区,通过推送常量传递材质属性,设置描述符集绑定纹理资源,以及编写核心PBR着色器实现BRDF计算。文章还涵盖了光源配置、相机集成等关键环节,并简要提及了IBL、次表面散射等高级PBR技术。最终实现了物理精确的glTF模型渲染,为后续场景构建奠定了基础。原创 2026-02-11 07:00:00 · 782 阅读 · 0 评论 -
Building a Simple Engine -- Loading Models -- Loading glTF
本文系统介绍了glTF 3D模型加载与渲染的关键技术。首先解析了glTF格式作为高效3D传输标准的优势及其层级化数据结构,包括场景图、网格、材质和动画系统。详细阐述了基于tinygltf库的模型解析流程,重点讲解了PBR材质系统的金属度-粗糙度工作流及其纹理处理机制。文章深入探讨了KTX2/BasisUniversal纹理压缩方案,包括格式检测、转码优化和Vulkan资源创建。同时分析了场景图对层级变换的支持,3D网格数据的组织方式,以及动画系统的关键帧插值技术。最后介绍了与Vulkan渲染管线的集成方法,原创 2026-02-10 07:15:00 · 1321 阅读 · 0 评论 -
Building a Simple Engine -- Loading Models -- Model system
本文介绍了基于glTF格式构建3D引擎模型系统的设计方法。主要内容包括:1. 采用场景图架构组织3D对象,支持层级变换、空间组织和动画功能;2. 定义了顶点、材质、网格等核心数据结构;3. 对比了场景图与简单集合、空间分区系统的区别;4. 详细说明了模型系统的使用方式,包括加载、更新和渲染流程;5. 实现了节点、动画通道等关键类结构,支持骨骼动画和关键帧插值。该系统通过结构化的数据组织,为复杂3D场景提供了高效的加载、动画和渲染能力。原创 2026-02-10 07:00:00 · 1264 阅读 · 0 评论 -
Building a Simple Engine -- Loading Models -- Project setup
本文摘要:3D资源管线设计是游戏引擎开发的关键环节。文章系统阐述了资源组织四大原则(分类化、层级化、易查找性、可扩展性),详细解析了资源管线的7个核心阶段(制作到运行时加载)。重点探讨了文件格式选择、纹理压缩、资源打包等技术决策,并提出了美术-引擎协作规范。针对开发态到生产态的转换,强调了自动化验证与批处理的重要性。最后以具体项目为例,展示了glb+KTX2格式方案及其与引擎架构的集成方式,包括工具链选择、目录结构设计和美术工作流规范。整套方案兼顾性能与扩展性,为构建高效资源管线提供了完整方法论。原创 2026-02-09 07:15:00 · 1221 阅读 · 0 评论 -
Building a Simple Engine -- GUI -- Conclusion
本文总结了基于DearImGui构建的Vulkan跨平台GUI系统,涵盖环境搭建、输入处理、UI元素开发及Vulkan集成等核心内容。系统已实现桌面和移动设备兼容,提供参数控制、信息展示等交互功能。文章指出可优化方向包括性能调优、触控适配、多语言支持等,并探讨了与其他引擎组件的集成方案。同时介绍了Nuklear、Qt等备选GUI库的特点,强调选择时需权衡开发范式、性能等因素。最后指出该GUI系统为开发专业级应用奠定基础,下一章将聚焦3D模型加载与渲染技术。原创 2026-02-08 07:30:00 · 629 阅读 · 0 评论 -
Building a Simple Engine -- GUI -- Vulkan integration
本文详细介绍了ImGui与Vulkan渲染管线的集成方案。主要内容包括:1) 核心集成流程,从准备帧到呈现的全过程;2) 两种命令缓冲区集成方案(单/多命令缓冲区)的实现与优劣对比;3) 动态渲染特性的应用,简化renderpass和framebuffer管理;4) 高级主题如多视口支持、高DPI处理和纹理渲染;5) 性能优化建议与完整工具类封装方案。通过动态渲染等现代Vulkan特性,实现了灵活高效的GUI系统集成,为不同应用场景提供了可扩展的解决方案。原创 2026-02-08 07:15:00 · 1250 阅读 · 0 评论 -
Building a Simple Engine -- GUI -- UI elements
本文探讨了将ImGui集成到Vulkan应用的核心概念,重点包括:1)关注点分离、性能优化和输入管理等关键设计原则;2)Vulkan特定实现技术,如缓冲区管理、命令缓冲区集成和描述符资源配置;3)纹理显示方案,包括描述符集创建和图像控件使用;4)3D对象拾取实现,协调GUI与场景交互。文章提供了完整的代码示例,展示了如何构建组件化GUI系统,并平衡2D界面与3D交互的关系,最终实现高效、直观的图形界面解决方案。原创 2026-02-08 07:00:00 · 1138 阅读 · 0 评论 -
Building a Simple Engine -- GUI -- Input handling
本文介绍了在3D应用中集成GUI时的输入事件管理方案。主要内容包括:1)设计跨平台的抽象输入系统,提供统一的输入状态跟踪和动作映射接口;2)实现输入优先级机制,确保GUI和3D场景输入的正确路由;3)展示GLFW窗口库的具体适配实现;4)提出输入模式切换、手势识别和上下文系统等高级处理技术。通过构建平台无关的输入层,开发者可以为用户提供流畅的交互体验,同时保持代码的跨平台兼容性。原创 2026-02-07 07:30:00 · 817 阅读 · 0 评论 -
Building a Simple Engine -- GUI -- ImGui setup
本文详细介绍了在Vulkan应用中集成DearImGui图形界面的完整实现过程。主要内容包括:1. 通过手动集成方式将ImGui源码引入项目;2. 实现ImGuiVulkanUtil类作为Vulkan与ImGui的桥梁,包含GPU资源管理、管线配置、输入处理等核心功能;3. 详细讲解了字体纹理上传、动态缓冲区更新、渲染指令记录等关键技术实现;4. 提供了完整的初始化、渲染循环和清理代码示例。该方案采用现代Vulkan动态渲染技术,实现了高效UI渲染与3D场景的无缝集成,支持键盘输入处理和多种视觉样式配置。原创 2026-02-07 07:15:00 · 1223 阅读 · 0 评论 -
Building a Simple Engine -- Lighting & Materials -- Conclusion
本章系统介绍了基于物理的渲染(PBR)技术在Vulkan引擎中的实现。重点讲解了金属度-粗糙度工作流,包括BRDF理论、glTF材质映射、着色器实现和阴影效果处理。通过pushconstants高效传递材质参数,构建了完整的线性光照计算管线,涵盖色彩空间转换、能量守恒等关键环节。同时提供了渲染异常排查思路,并指出IBL、HDR等优化方向。本章为PBR渲染奠定了坚实基础,后续可向光照、材质或性能等方向深入拓展。原创 2026-02-06 07:30:00 · 1164 阅读 · 0 评论 -
Building a Simple Engine -- Lighting & MaterialsVulkan -- integration
本文介绍了如何将PBR(基于物理的渲染)技术集成到Vulkan渲染管线中。主要内容包括:更新渲染器类以支持PBR管线,创建专门的PBR材质属性结构体;扩展初始化流程来构建PBR管线;更新渲染流程以绑定PBR管线并推送材质属性;使用glTF模型测试PBR实现效果。该方案为渲染物理精确的材质提供了基础框架,能够兼容glTF模型的PBR材质定义,并支持灵活的材质属性修改。通过RAII机制自动管理资源,确保代码安全性。该实现将在后续章节中用于加载和渲染glTF模型。原创 2026-02-06 07:00:00 · 570 阅读 · 0 评论 -
Building a Simple Engine -- Lighting & MaterialsLighting -- implementation
本文介绍了基于物理的渲染(PBR)着色器的实现方法,采用金属度-粗糙度工作流,兼容glTF模型。着色器通过推送常量传递材质属性,使用统一缓冲区传递变换矩阵和光照信息。文章详细解析了着色器的三部分架构:1) CPU-GPU通信层的数据结构和资源绑定;2) PBR数学核心的Cook-Torrance微表面BRDF模型;3) 顶点与片段着色器的主逻辑实现。同时提供了扩展渲染器的步骤,包括创建PBR管线、更新统一缓冲区和添加推送材质属性支持。该实现严格遵循glTF标准,确保物理正确性和数值稳定性,并支持HDR管线、原创 2026-02-05 07:15:00 · 1244 阅读 · 0 评论 -
Building a Simple Engine -- Lighting & Materials -- Push constants
Vulkan推送常量(PushConstants)是一种高效的小数据传输机制,允许直接通过命令缓冲区向着色器传递数据,无需描述符集和内存分配。推送常量适合传递高频更新、体积小(通常≤128字节)的数据,如材质属性参数。其实现包含两个关键步骤:在管线布局中定义推送常量范围,并通过commandBuffer.pushConstants发送数据。相比统一缓冲区,推送常量更新速度更快但容量有限,适用于不同场景的数据传递需求。在PBR渲染中,推送常量常用于传递材质属性,而统一缓冲区则更适合处理低频更新的大数据集。原创 2026-02-05 07:00:00 · 1301 阅读 · 0 评论 -
Building a Simple Engine -- Lighting & Materials -- Lighting models
本文系统介绍了计算机图形学中的光照模型发展历程,重点分析了从传统模型(平面着色、高洛德着色、冯氏模型)到基于物理的渲染(PBR)的技术演进。文章详细阐述了各类光照模型的核心原理、优势局限及应用场景,特别解读了glTF格式采用的金属度-粗糙度工作流PBR实现方案。同时探讨了光源类型选择、高级光照技术(如全局光照、次表面散射)以及模型选型时的关键考量因素,为图形渲染实践提供了全面的理论指导。原创 2026-02-04 07:15:00 · 1271 阅读 · 0 评论 -
Building a Simple Engine -- Lighting & Materials -- Introduction
摘要:本章介绍3D渲染中光照与材质的基础原理,重点讲解基于物理的渲染(PBR)技术。PBR基于物理原理模拟光线与表面交互,相比传统渲染方法更具真实感和一致性。文章详细阐述了PBR的核心原理,包括能量守恒、微表面理论和菲涅尔效应,并介绍了金属度-粗糙度工作流及BRDF函数。同时讲解了计算机图形学中材质的关键属性与常见类型,以及如何通过推送常量传递材质数据。本章为理解现代3D渲染技术奠定了重要基础。原创 2026-02-04 07:00:00 · 730 阅读 · 0 评论 -
Building a Simple Engine -- Camera Transformations -- Conclusion
在本章中,我们为 Vulkan 应用程序构建了一套完整的相机系统。接下来我们将总结所学内容,并探讨可优化的方向。原创 2026-02-03 07:15:00 · 263 阅读 · 0 评论 -
Building a Simple Engine -- Camera Transformations -- Vulkan integration
本教程详细介绍了如何将相机系统集成到Vulkan应用程序中。主要内容包括:创建统一缓冲区(UBO)存储模型、视图和投影矩阵;设置描述符集布局和描述符集;实现持久化映射缓冲区以提高更新效率;基于相机移动和模型变换逐帧更新矩阵数据;处理键盘和鼠标输入来控制相机移动和旋转。通过五个关键步骤完成集成,最终实现了一个功能完备的3D相机系统,支持用户通过输入设备实时导航场景。原创 2026-02-03 07:00:00 · 698 阅读 · 0 评论 -
Building a Simple Engine -- Camera Transformations -- Camera implementation
本文详细介绍了3D相机系统的设计与实现方法。主要内容包括:1)基础相机类的架构设计,涵盖空间定位、欧拉角表示、输入处理和矩阵生成等核心功能;2)第三人称相机的进阶实现,重点解决了目标跟踪、遮挡规避和轨道控制等关键技术;3)相机系统与图形管线的集成方案。文章从数学原理到具体实现,系统地阐述了构建灵活、实用的3D相机系统的完整方案,适用于游戏开发、建筑可视化等多种3D应用场景。原创 2026-02-02 07:15:00 · 745 阅读 · 0 评论 -
Building a Simple Engine -- Camera Transformations -- Transformation matrices
本文介绍了3D图形学中的变换矩阵及其应用,重点解析了模型-视图-投影(MVP)管线的实现过程。模型矩阵负责物体空间到世界空间的转换,视图矩阵处理世界空间到相机空间的变换,投影矩阵则实现3D到2D的映射。文章还详细说明了法向量矩阵的处理方法,以及如何在着色器中应用这些变换矩阵。最后提及了层级变换在复杂场景中的应用,为后续实现3D相机系统奠定基础。原创 2026-02-02 07:00:00 · 759 阅读 · 0 评论 -
Building a Simple Engine -- Camera Transformations -- Math foundations
本文系统介绍了3D图形学中相机系统的数学基础,重点阐述了向量运算、矩阵变换、坐标系转换等核心概念。主要内容包括:1)向量在3D图形中的关键作用及运算方法;2)矩阵变换的类型与应用,包括模型矩阵、视图矩阵和投影矩阵;3)Look-At函数的实现原理与应用场景;4)射线投射技术的数学表示与实现;5)透视与正交投影的区别及实现方法;6)四元数在旋转运算中的优势;7)3D图形学中不同坐标系的转换关系。这些数学工具为构建灵活的3D相机系统提供了理论基础,是实现物体拾取、场景渲染等功能的关键支撑。原创 2026-02-01 07:15:00 · 760 阅读 · 0 评论 -
Building a Simple Engine -- Camera Transformations -- Introduction
本章核心目标是讲解 Vulkan 中 3D 相机系统的实现,核心围绕 3D 变换数学、变换矩阵、相机控制及管线集成展开。学习本章需具备 Vulkan 核心教程基础,以及命令缓冲区、图形管线等关键 Vulkan 概念和 C++ 编程能力。完成学习后将掌握 3D 变换原理,并获得可直接复用的 Vulkan 相机系统。原创 2026-02-01 07:00:00 · 230 阅读 · 0 评论 -
Building a Simple Engine -- Engine Architecture -- Conclusion
本文总结了现代渲染引擎的核心架构设计原则与实践经验。重点分析了分层架构、组件化系统、面向数据设计和服务定位器等关键模式的应用场景,探讨了组件系统、资源管理、渲染管线和事件系统等核心模块的实现方案。文章强调架构设计应遵循渐进式开发理念,在灵活性与复杂度间寻找平衡,同时重视性能考量与迭代重构。建议通过实践探索和开源项目研究来深化理解,并指出成功的引擎开发需要持续演进以适应项目需求变化。这些架构基础为后续引擎功能开发提供了重要支撑。原创 2026-01-31 07:15:00 · 697 阅读 · 0 评论 -
Building a Simple Engine -- Engine Architecture -- Event systems
本文探讨了渲染引擎中事件系统的设计与实现。事件系统通过解耦模块间的直接依赖,提供灵活高效的通信机制。文章详细介绍了基础事件系统的实现方案,包括基事件类型定义、监听器与分发器机制、事件总线的即时和队列两种投递模式,并给出了具体使用示例。此外,还分析了事件分类、优先级、冒泡捕获等高级特性。一个设计良好的事件系统能显著提升引擎的模块化程度、可维护性和扩展性,是构建现代游戏引擎架构的关键组件。原创 2026-01-31 07:00:00 · 1302 阅读 · 0 评论 -
Building a Simple Engine -- Engine Architecture -- Rendering pipeline
本文详细介绍了现代Vulkan渲染管线的设计与实现,重点阐述了基于渲染图(Rendergraph)的动态渲染架构。文章首先概述了渲染管线的核心阶段,包括场景剔除、渲染通道管理、命令生成与执行等,然后深入讲解了渲染图的数据结构、资源管理、依赖分析和自动同步机制。特别强调了动态渲染与传统渲染通道的区别,展示了如何结合渲染图实现延迟渲染技术,包括G缓冲配置、几何通道和光照通道的实现。文章还详细解析了Vulkan同步机制,包括管线屏障、信号量和围栏的使用场景,并提供了最佳实践建议。通过这种架构,开发者能够构建灵活、原创 2026-01-30 07:00:00 · 1317 阅读 · 0 评论 -
Building a Simple Engine -- Engine Architecture -- Resource management
本文介绍了渲染引擎中资源管理系统的设计与实现。系统采用分层架构管理各类资源(纹理、网格、着色器等),通过资源句柄、引用计数和缓存机制实现高效资源管理。关键技术包括:1) 基于类型的安全资源存储与访问;2) 智能加载/卸载策略;3) 异步加载支持;4) 开发期热重载功能。系统还实现了纹理、网格和着色器等核心资源的专有管理逻辑,包括Vulkan资源创建、GPU内存优化等。这种资源管理系统可显著提升渲染性能,降低内存占用,并为复杂渲染场景提供可靠支持。原创 2026-01-30 07:00:00 · 1269 阅读 · 0 评论 -
Building a Simple Engine -- Engine Architecture -- Component systems
本文探讨了基于组件的架构在Vulkan渲染引擎中的实现。相比传统的深层继承体系,组件系统通过组合方式提供了更好的灵活性、模块化和性能。文章详细介绍了组件系统的设计原则(单一职责、封装性、低耦合、可复用性),并给出了基础实现方案,包括组件基类、实体管理、常见组件类型(变换、网格、相机)等。同时讨论了组件通信方式(直接引用和事件系统)、生命周期管理以及性能优化方案(组件类型ID)。这种架构避免了继承体系的弊端,使引擎更易维护和扩展,为后续资源管理系统奠定了基础。原创 2026-01-29 07:30:00 · 468 阅读 · 0 评论 -
Building a Simple Engine --Engine Architecture -- Architectural patterns
本文概述了现代渲染引擎与游戏引擎的常用架构模式,重点介绍了基于组件的架构(CBA)。作为Vulkan渲染引擎的设计基础,CBA通过实体-组件-系统的模块化设计实现灵活扩展和高效渲染。相比分层架构、面向数据设计等服务定位器模式,CBA能更好地分离渲染关注点,支持图形功能灵活调整,并兼容性能优化。文中提供了组件系统的代码示例,并解释了选择CBA作为核心架构的原因:模块化、可扩展性以及与行业标准方案的兼容性。最后指出在实际开发中将结合其他架构模式的优点,为后续深入探讨组件系统实现奠定基础。原创 2026-01-29 07:00:00 · 1920 阅读 · 0 评论 -
Building a Simple -- EngineEngine Architecture -- Introduction
欢迎阅读《构建简易游戏引擎》系列教程的章节!在本章中,我们将探讨构成现代 Vulkan 渲染引擎核心的基础架构模式与设计原则。本系列教程虽以的构建为核心,但所涉及的架构理念同时适用于渲染引擎与完整游戏引擎的开发。我们会明确区分哪些模式更适合渲染导向的系统开发,哪些则适用于更通用的游戏引擎开发场景。首先,我们会从宏观角度审视引擎的整体结构。一个设计优良的架构,是打造灵活、可维护且可扩展渲染系统的关键前提。原创 2026-01-29 07:15:00 · 1642 阅读 · 0 评论 -
Building a Simple -- EngineIntroduction
《构建简易引擎》系列教程为已掌握Vulkan核心知识的开发者提供进阶指导,采用结构化方法构建可复用渲染引擎。教程强调引擎架构设计、资源管理、渲染技术和性能优化等关键概念,使用vk::raii和C20模块简化开发流程。学习过程中鼓励自主实践与实验性开发,需配合《Vulkan指南》等参考资料。教程涵盖从相机系统到移动开发适配的完整内容,并提供Bistro资源包快速入门。建议开发者通读章节后动手实践,将教程代码作为开发起点进行功能扩展。原创 2026-01-29 07:00:00 · 956 阅读 · 0 评论 -
Ray Tracing -- Shadow transparency
本文介绍了在光线追踪渲染中实现透明物体阴影效果的完整技术方案。通过Alpha测试技术,系统能够正确处理带透明通道的纹理(如树叶模型),在阴影计算时根据纹理Alpha值决定是否继续光线追踪。关键技术包括:1) 使用加速结构标记透明几何体;2) 构建实例查找表实现无绑定资源访问;3) 在光线查询中实现透明度检测循环,通过纹理采样和Alpha测试动态处理透明片段。该方案克服了传统阴影映射技术难以处理精细Alpha细节的局限,最终实现了高质量的透明物体阴影效果。文中还详细介绍了使用Nsight Graphics工具原创 2026-01-27 07:30:00 · 930 阅读 · 0 评论 -
Ray Tracing -- Conclusion
本课程在Vulkan光栅化管线中实现了光线追踪效果,主要技术包括:1)动态渲染简化了渲染流程,成为Vulkan推荐方式;2)通过构建BLAS/TLAS加速结构实现光线查询;3)在片段着色器中实现阴影和反射效果,支持透明物体处理。实验采用RenderDoc和NsightGraphics进行调试验证,所有效果无需独立光线追踪管线,适用于移动端GPU。课程提供了完整的Vulkan学习资源和3D模型来源,帮助开发者掌握混合渲染技术。原创 2026-01-28 07:15:00 · 971 阅读 · 0 评论 -
Ray Tracing -- Reflections
本文摘要:介绍了基于光线查询实现反射效果的技术方案。通过从像素点沿镜面反射方向发射光线,检测命中物体并采样其颜色来实现反光材质效果。详细说明了实现步骤:1) 通过push constants传递反光标志位;2) 在片段着色器中调用反射处理函数;3) 实现apply_reflection函数,包括计算反射方向、光线追踪查询和颜色混合。特别强调了与阴影检测的不同之处:需要获取最近命中三角形的完整颜色而非仅检测相交。最终通过0.7的反射强度将反射颜色与基础颜色混合,实现桌面积水反射环境的效果。原创 2026-01-28 07:00:00 · 975 阅读 · 0 评论 -
Ray Tracing -- TLAS animation
本文摘要介绍了实现动画物体阴影同步更新的方法。通过在每帧更新实例变换矩阵并重建顶级加速结构(TLAS)来保持阴影与物体动画同步。关键步骤包括:1)更新实例变换矩阵;2)以更新模式重建TLAS;3)添加适当的内存屏障确保同步;4)在绘制循环中调用更新函数。该方法利用光线查询技术直接在片段着色器中实现阴影计算,相比完整的光线追踪管线更高效,尤其适合移动设备等仅支持光线查询的硬件平台。通过原地更新TLAS而非重建,显著提升了动画场景的性能表现。原创 2026-01-27 07:00:00 · 671 阅读 · 0 评论 -
Ray Tracing -- Ray query shadows
本文介绍了在片段着色器中通过光线查询实现硬阴影效果的方法。核心步骤包括:1)从片段位置向光源方向投射阴影射线;2)设置射线参数(TMin/TMax)避免自相交;3)初始化RayQuery对象并配置优化标志;4)执行光线追踪查询;5)根据首个命中结果判断阴影状态。当前实现存在阴影不随物体动画更新的问题,需通过重建TLAS解决。该方法利用光线查询快速检测遮挡关系,实现了基础的实时阴影效果。原创 2026-01-26 08:15:00 · 1367 阅读 · 0 评论
分享