diff --git a/source/Changelog.md b/source/Changelog.md index 27de481..f045aa1 100644 --- a/source/Changelog.md +++ b/source/Changelog.md @@ -4,6 +4,12 @@ 此更新日志为纵览更新,对于具体文章的更新位于每个文章的开头的 `更新记录` 中。 ``` +## 2023/10/16 + +>* 增加`可调用着色器`文档 +>* 更新`NVIDIA Vulkan 光线追踪教程`文档 +>* 更新`相交着色器`文档 + ## 2023/10/15 >* 更新`纵览`文档 diff --git a/source/Literature/NVIDIAVulkanRayTracingTutorial/NVIDIAVulkanRayTracingTutorial.rst b/source/Literature/NVIDIAVulkanRayTracingTutorial/NVIDIAVulkanRayTracingTutorial.rst index 53d2b69..1e8fbef 100644 --- a/source/Literature/NVIDIAVulkanRayTracingTutorial/NVIDIAVulkanRayTracingTutorial.rst +++ b/source/Literature/NVIDIAVulkanRayTracingTutorial/NVIDIAVulkanRayTracingTutorial.rst @@ -80,6 +80,7 @@ NVIDIA Vulkan 光线追踪教程 * 2023/9/15 更新 ``8 着色器绑定表`` 添加 ``随笔链接`` * 2023/9/20 增加 ``动态更新`` 文档链接 * 2023/10/7 增加 ``相交着色器`` 文档链接 + * 2023/10/16 增加 ``可调用着色器`` 文档链接 `文献源`_ @@ -2429,4 +2430,5 @@ NVIDIA Vulkan 光线追踪教程 extensions/Reflections.rst extensions/MultipleClosestHitShaders.rst extensions/Animation.rst - extensions/IntersectionShader.rst \ No newline at end of file + extensions/IntersectionShader.rst + extensions/CallableShaders.rst \ No newline at end of file diff --git a/source/Literature/NVIDIAVulkanRayTracingTutorial/extensions/CallableShaders.rst b/source/Literature/NVIDIAVulkanRayTracingTutorial/extensions/CallableShaders.rst new file mode 100644 index 0000000..ceb036e --- /dev/null +++ b/source/Literature/NVIDIAVulkanRayTracingTutorial/extensions/CallableShaders.rst @@ -0,0 +1,56 @@ +可调用着色器 +====================================== + +.. dropdown:: 更新记录 + :color: muted + :icon: history + + * 2023/10/16 增加该扩展文档 + * 2023/10/16 增加 ``教程`` 章节 + * 2023/10/16 增加 ``数据存储`` 章节 + +`文献源`_ + +.. _文献源: https://github.com/nvpro-samples/vk_raytracing_tutorial_KHR/tree/master/ray_tracing_callable + +.. _光线追踪教程: ../NVIDIAVulkanRayTracingTutorial.html + +.. figure:: ../../../_static/callable.png + + 可调用着色器结果示意图 + +教程 +#################### + +该教程为 ``Vulkan`` `光线追踪教程`_ 的扩展。 + +实时光追支持在光线生成着色器、最近命中着色器、未命中着色器或者其他可调用着色器中使用 ``可调用着色器`` 。可调用着色器的调用有点类似间接函数的调用,不需要将这些着色器链接进可执行程序中。 + +数据存储 +#################### + +可调用着色器只能够访问父阶段(可调用着色器的调用者)传进来的数据。且一次只能传递一个结构提数据并像负载那样声明。 + +在父阶段,使用 ``callableDataEXT`` 存储限定符声明传递的数据。比如: + +.. code:: glsl + + layout(location = 0) callableDataEXT rayLight cLight; + +其中 ``rayLight`` 结构体定义在共享文件中。 + +.. code:: glsl + + struct rayLight + { + vec3 inHitPosition; + float outLightDistance; + vec3 outLightDir; + float outIntensity; + }; + +并且在可调用着色器内部必须使用 ``callableDataInEXT`` 存储限定符声明传入的数据。 + +.. code:: glsl + + layout(location = 0) callableDataInEXT rayLight cLight; \ No newline at end of file diff --git a/source/Literature/NVIDIAVulkanRayTracingTutorial/extensions/IntersectionShader.rst b/source/Literature/NVIDIAVulkanRayTracingTutorial/extensions/IntersectionShader.rst index aab10bb..7a4b846 100644 --- a/source/Literature/NVIDIAVulkanRayTracingTutorial/extensions/IntersectionShader.rst +++ b/source/Literature/NVIDIAVulkanRayTracingTutorial/extensions/IntersectionShader.rst @@ -21,11 +21,20 @@ * 2023/10/10 增加 ``光线与球体求交`` 章节 * 2023/10/10 增加 ``光线与轴对齐包围盒求交`` 章节 * 2023/10/10 增加 ``raytrace2.rchit`` 章节 + * 2023/10/16 提供 ``Turbo`` 实现开源示例 `文献源`_ .. _文献源: https://github.com/nvpro-samples/vk_raytracing_tutorial_KHR/tree/master/ray_tracing_intersection#intersection-shader---tutorial +.. admonition:: Turbo 引擎中对该教程的实现示例 + :class: note + + ``Turbo`` 引擎对该教程进行了实现,具体如下: + + * `VulkanKHRRayTracingTestForIntersectionShader `_ :在 `NVIDIA Vulkan 光线追踪教程 <../NVIDIAVulkanRayTracingTutorial.html>`_ 基础实现。 ``示例视频(暂无,待补充)`` 。 + + .. _光线追踪教程: ../NVIDIAVulkanRayTracingTutorial.html .. figure:: ../../../_static/intersection.png diff --git a/source/_static/callable.png b/source/_static/callable.png new file mode 100644 index 0000000..64248cf Binary files /dev/null and b/source/_static/callable.png differ