• 正文概述
  • GitHub – nvpro-samples/vk_gltf_renderer:使用光线追踪器和光栅渲染 glTF 场景 (Vulkan)

    Name
    2 months ago
    last month
    4 months ago
    2 weeks ago
    last week
    last year
    last year
    4 months ago
    last month
    4 years ago
    last year
    2 months ago
    last month
    4 months ago

    存储库文件导航

    Vulkan glTF 场景渲染器

    路径追踪者 光栅
    图像描述 图像描述

    概述

    此应用程序演示了 glTF 2.0 场景的双模式渲染器,实现光线追踪和光栅化管线。它展示了共享 Vulkan 资源在渲染模式(包括几何体、材质和纹理)中的利用情况。

    最新消息

    此版本带来了显着的改进和现代化:

    • 现代 Vulkan 框架:现在使用 Nvpro-Core2,它提供:

      • Vulkan 1.4 支持
      • Volk 用于动态 Vulkan 加载
      • 现代 C++ 功能和改进的体系结构
      • 增强的调试和验证层
      • 更好的资源管理
    • 俚语着色语言:将 GLSL 替换为俚语,用于:

      • 增强的着色器开发体验
      • 更好的跨平台兼容性
      • 改进的着色器调试功能
      • 热重载支持 (F5)
      • 新式着色器语言功能
    • DLSS-RR 降噪器:添加了对 NVIDIA 的 DLSS 光线重建降噪器的支持(可选,使用 启用)。USE_DLSS

    主要特点

    • glTF 2.0 (.gltf/.glb) 场景加载
    • 全局照明的路径追踪
    • 基于 PBR 的光栅化
    • HDR 环境映射和 Sun &; Sky 模拟
    • 高级色调映射
    • 摄像控制系统
    • 广泛的调试可视化选项

    依赖

    构建说明

    1. 克隆存储库
    git clone https://github.com/nvpro-samples/nvpro_core2.git
    git clone https://github.com/nvpro-samples/vk_gltf_renderer.git
    1. 生成项目
    cd vk_gltf_renderer
    cmake -B build -S . -DUSE_DLSS=ON -DUSE_DRACO=ON
    cmake --build build --config release
    1. 运行应用程序
    ._binReleasevk_gltf_renderer.exe
    1. 安装 [可选] :如果要打包应用程序
    cmake --install .

    天龙座压缩

    要启用 Draco 网格压缩,您需要启用选项 CMake。在 GUI 界面中,您将看到选项 .如果您使用的是命令行,则可以添加到 cmake 命令。这将下载 Draco 库,并将其包含在项目中。USE_DRACO-DUSE_DRACO=ON

    DLSS 光线重建降噪器

    此版本增加了对 NVIDIA 的 DLSS 光线重建 (DLSS-RR) 降噪器的支持。DLSS-RR 为路径追踪图像提供最先进的基于 AI 的去噪,显着提高图像质量和时间稳定性。

    如何启用:

    默认情况下,DLSS-RR 处于禁用状态。要启用它,请在配置项目时设置 CMake 选项:USE_DLSS=ON

    cmake -DUSE_DLSS=ON ..

    这将自动下载并集成所需的 DLSS SDK。然后,降噪器将作为渲染器中的一个选项提供。

    注意:DLSS-RR 需要兼容的 NVIDIA GPU 和驱动程序。

    glTF 核心功能

    • glTF 2.0 (.gltf/.glb)
    • 图像(HDR、PNG、JPEG 等)
    • 缓冲区(几何体、动画、蒙皮等)
    • 纹理(基色、法线、金属、粗糙度等)
    • 材料(PBR 等)
    • 动画
    • 皮肤
    • 变体
    • 相机
    • 节点
    • 场景
    • 取样
    • 纹理
    • 扩展

    GLTF 扩展

    以下是此应用程序支持的扩展列表

    • KHR_animation_pointer
    • KHR_draco_mesh_compression
    • KHR_lights_punctual
    • KHR_materials_anisotropy
    • KHR_materials_clearcoat
    • KHR_materials_diffuse_transmission
    • KHR_materials_dispersion
    • KHR_materials_emissive_strength
    • KHR_materials_ior
    • KHR_materials_iridescence
    • KHR_materials_sheen
    • KHR_materials_specular
    • KHR_materials_transmission
    • KHR_materials_unlit
    • KHR_materials_variants
    • KHR_materials_volume
    • KHR_mesh_quantization
    • KHR_texture_basisu
    • KHR_texture_transform
    • KHR_xmp_json_ld
    • EXT_mesh_gpu_instancing
    • KHR_node_visibility

    路径追踪者

    实现具有全局照明的路径追踪器。

    图像描述

    选项包括:

    • Max Depth :路径可以执行的反弹次数
    • 最大采样数:每次帧迭代时每个像素的采样数
    • 光圈:景深
    • 调试方法:显示基色、金属色、粗糙度和一些属性等信息
    • 间接和 RTX 管道之间的选择。
    • 降噪器:A-trous 降噪器

    光栅

    利用与路径追踪器共享的 Vulkan 资源,包括:

    • 场景几何体
    • 材料数据
    • 纹理
    • 着色功能

    选项包括:

    • 显示线框:在几何图形顶部显示线框
    • 超级采样:渲染图像 2 倍并使用线性滤镜进行 blit。
    • 调试方法:显示基色、金属色、粗糙度和一些属性等信息

    图像描述

    打开线框选项的示例

    图像描述

    特征

    展示 图像描述 图像描述 图像描述 图像描述
    图像描述 图像描述 图像描述 图像描述
    图像描述 图像描述 图像描述 图像描述
    图像描述 图像描述
    各向异性 图像描述 图像描述 图像描述 图像描述
    图像描述
    衰减 图像描述 图像描述
    Alpha 混合 图像描述 图像描述
    动画 图像描述 图像描述 图像描述
    透明涂层 图像描述 图像描述 图像描述 图像描述
    色散 图像描述 图像描述 图像描述
    IOR 图像描述 图像描述
    发射的 图像描述 图像描述
    彩虹 图像描述 图像描述 图像描述 图像描述
    守时 图像描述 图像描述
    光泽 图像描述 图像描述 图像描述 图像描述
    传输 图像描述 图像描述 图像描述 图像描述
    图像描述 图像描述 图像描述
    变体 图像描述 图像描述 图像描述
    别人 图像描述 图像描述 图像描述 图像描述 图像描述 图像描述 图像描述 图像描述 图像描述 图像描述 图像描述 图像描述 图像描述 图像描述 图像描述 图像描述 图像描述 图像描述 图像描述 图像描述

    调试

    还可以调试各种输出通道,例如:

    金属 粗糙度 正常 基础 发射的 不透明度 切线 TEX 坐标
    图像描述 图像描述 图像描述 图像描述 图像描述 图像描述 图像描述 图像描述

    环境

    太阳与天空

    有一个内置的 Sun & Sky 物理着色器模块。

    图像描述 图像描述 图像描述

    HDR的

    场景的照明可以来自 HDRi。

    图像描述 图像描述 图像描述 图像描述
    图像描述 图像描述 图像描述 图像描述

    可以将 HDR 模糊到不同的级别。

    图像描述 图像描述 图像描述 图像描述

    HDR 也可以旋转以获得正确的照明。

    图像描述 图像描述

    背景

    背景也可以是纯色,如果另存为 PNG,则会考虑 alpha 通道。

    图像描述 图像描述 图像描述

    色调映射器

    如果没有色调映射器,我们就无法获得良好的结果。这是通过计算着色器完成的,可以进行不同的设置。

    图像描述

    支持多个色调映射器:

    照相机

    摄像机导航遵循 Softimage 默认行为。这意味着,相机始终注视着一个兴趣点并围绕它运行。

    以下是默认导航:

    图像描述

    可以通过编辑相机信息的值来微调相机信息。

    图像描述

    注意:复制会以文本形式复制剪贴板中的相机,按粘贴按钮将解析剪贴板以设置相机。

    前任:{0.47115, 0.32620, 0.52345}, {-0.02504, -0.12452, 0.03690}, {0.00000, 1.00000, 0.00000}

    保存和恢复摄像机

    还可以在第二个选项卡中保存和恢复多个相机。按按钮保存相机,按中间按钮删除相机。通过按下其中一个保存的相机,它的位置、兴趣、方向和 FOV 将平滑地改变。+

    注意:如果 glTF 场景包含多个摄像机,它们将在此处显示。

    图像描述

    其他模式

    还存在其他导航模式,例如飞行,其中 、 、 键也会移动相机。wasd

    图像描述

    景深

    景深仅适用于光线追踪,设置可以在RendererPathtracer>Depth-of-Field

    图像描述 图像描述


    程序的模式

    nvvk::Application 是一个类,它提供了一个用于创建 Vulkan 应用程序的框架。它封装了 Vulkan 实例、设备和图面创建,以及窗口管理和事件处理。

    使用 时,您可以附加到它,并且每个元素都将针对不同的状态被调用,从而允许自定义应用程序的行为。该类为这些函数提供了默认实现,因此您只需覆盖所需的函数。nvvk::Applicationnvvkhl::IAppElementnvvkhl::IAppElement

    以下是工作原理的简要概述:nvvk::Application

    初始化:

    创建 的实例时,它会设置 Vulkan 实例、设备和表面。它还会创建一个窗口并设置事件处理。nvvk::Application

    附加元素

    我们附加了许多元素,例如:main()

    • ElementCamera:这允许控制单例相机
    • ElementProfiler:允许在 GPU 上计时执行
    • ElementBenchmarkParameters:命令行参数和测试目的
    • ElementLogger:重定向窗口中的日志信息
    • ElementNvml:显示 GPU 的状态

    但是我们感兴趣的主要内容,也是此应用程序的主要内容是 .这是将控制场景和渲染的那个。GltfRendererElement

    主循环:

    该类提供了一个主循环,用于持续处理事件并更新应用程序状态。在主循环中,它调用以下函数:nvvk::Application

    • onAttach()
      每当元素附加到应用程序时,都会调用此函数。在 中,我们正在创建内部所需的资源。
      GltfRendererElement

    • onDetach()
      当用户尝试关闭窗口时调用此函数。您可以覆盖此函数来处理窗口关闭事件。

    • onRender(VkCommandBuffer):调用
      此函数以使用帧的当前命令缓冲区渲染帧。您可以覆盖此函数以使用 Vulkan 执行渲染作。在这里调用活动渲染器。
      GltfRendererElement

    • onResize()
      调整 的大小时调用此函数。您可以覆盖此函数来处理窗口大小调整事件。在 G 缓冲区中将被重新创建
      viewportGltfRendererElement

    • onUIRender()
      调用此函数以允许渲染 UI 并查询任何鼠标或键盘事件。在 中,我们渲染 UI,但也渲染最终图像。渲染的图像被视为一个 UI 元素,该图像覆盖了整个 ImGui 窗口。
      IAppElementGltfRendererElementviewport

    • onUIMenu()
      将修改我们在窗口标题中看到的内容。它还将创建菜单,例如 ,并处理一些组合键。
      FileHelp

    • onFileDrop()
      将接收被删除的文件的路径。如果是 .gltf、.glb、.obj 或 .hdr,它将加载该文件。文件类型由其扩展名决定 – 3D 场景文件(.gltf、.glb、.obj)作为场景加载,而 HDR 文件(.hdr)作为环境贴图加载。


    场景图

    GLTF 场景使用 tinygltf 加载,然后转换为 Vulkan 版本。Vulkan 版本是场景的简化版本,其中几何体存储在缓冲区中,纹理上传到 GPU。Vulkan 版本用于光栅和光线追踪。

    场景由节点组成,其中每个节点可以有子节点,每个节点可以有一个网格体。网格体由图元组成,其中每个图元都有一个材质。材质由纹理和参数组成。但是,这些都没有直接用于渲染,因为我们使用的是场景的简化版本。

    图像描述

    加载场景后,我们继续解析它以收集 RenderNodes 和 RenderPrimitives。RenderNode 表示节点树的扁平化版本,其中存储了世界变换矩阵和材质。相比之下,RenderPrimitive 表示图元的唯一版本,其中存储了索引和顶点缓冲区。

    RenderNodes 表示要渲染的元素,而 RenderPrimitives 则用作用于渲染的数据的引用。

    动画

    如果场景中有动画,则场景部分下将出现一个新部分。它允许播放/暂停、步进和重置动画,以及更改其速度。

    图像描述

    多场景

    如果有多个场景,则场景部分下将出现一个新部分。它将显示所有场景及其名称。单击场景名称将切换到该场景。

    图像描述

    材质变体

    如果有多个材质变体,则场景部分下将出现一个新部分。它将显示所有材质变体及其名称。单击变体名称会将其应用于模型。

    图像描述

    场景图表UI

    图像描述

    可以可视化场景层次结构,选择节点,修改它们的变换和材质,达到某种程度。

    这是文本的较短版本,专为 GitHub 上的开发人员量身定制:

    重新编译着色器

    若要快速测试着色器,请使用该按钮热重载俚语着色器 (F5)。着色器位于文件夹中,并在构建过程中自动编译。Recompile Shadersshaders

    注意:如果没有共享库和着色器,热重载将无法工作,但应用程序仍将运行。

    工具

    该应用程序附带了一些工具来帮助调试和可视化场景。

    分析器

    分析器是一种允许测量在 GPU 上花费的时间的工具。可以测量在渲染的不同阶段花费的时间,例如路径追踪、光栅化、色调映射等。

    图像描述

    记录器是一种允许查看日志信息的工具。可以通过选择日志级别来过滤日志信息。

    图像描述

    Nvml

    Nvml 是一种允许查看 GPU 状态的工具。可以看到温度、功率、内存使用情况等。

    图像描述

    切线空间(Tangent Space)

    有一个切线空间工具,可以修复或重新创建模型的切线空间。当法线贴图看起来不正确或场景中的切线存在错误时,这很有用。

    公用事业

    gltf-material-modifier.py

    修改 GLTF 文件中的材质,并可选择将场景从 Z 向上重新定向到 Y 向上。

    usage: gltf-material-modifier.py [-h] [--metallic METALLIC] [--roughness ROUGHNESS] [--override] [--reorient]
                                     input_file output_file
    

    位置参数:

       input_file            Path to the input GLTF file.
       output_file           Path to save the modified GLTF file.
    

    选项:

      -h, --help             show this help message and exit
      --metallic METALLIC    Set the metallic factor (default: 0.1).
      --roughness ROUGHNESS  Set the roughness factor (default: 0.1).
      --override             Override existing material values if set.
      --reorient             Reorient the scene from Z-up to Y-up.
    
    1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
    2. 分享目的仅供大家学习和交流,请不要用于商业用途!
    3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
    5. 如有链接无法下载、失效或广告,请联系管理员处理!
    6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
    7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
    8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
    声明如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性

    GLB下载网 - GLB/GLTF模型与格式资源免费下载,支持在线浏览与转换 » 使用光线追踪器和光栅渲染 glTF 场景 (Vulkan)

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载要提取码
    百度网盘提取码都是gltf。
    分享过期和重复下载怎么办
    分享过期请使用备份下载,重复下载是不另扣费的,请放心下载。
    模型和平台不兼容怎么办
    可以用网站在线编辑功能,修改模型属性,大小,方向,坐标,中心,透明等问题,然后重新导出既可https://glbxz.com/38636.html
    开通VIP 享更多特权,建议使用 QQ 登录