diff --git a/.buildinfo b/.buildinfo index ce0702a..9364b99 100644 --- a/.buildinfo +++ b/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 -# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: feea49b46bdab24ed05b97fb0780dea5 +# This file records the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 4427c0434444d5f8f6e9d3d140f481e2 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/Application/VolumetricCloud.html b/Application/VolumetricCloud.html index 9cc4e78..7093b9c 100644 --- a/Application/VolumetricCloud.html +++ b/Application/VolumetricCloud.html @@ -6,7 +6,7 @@ - +
渲染结果如下:
-你会发现会有生硬的一圈圈的条纹状结果,之所以会出现这种现象是因为采样步长都是定长,这就会导致上一步和下一步之间的过渡数据被完全忽略,为了解决此问题,只需要在采样点临域内随机做个位移即可,宏观上看就是采样点随机“抖动”。(还有一种方案是“抖动”射线的起点或者是射线的方向,无论是什么方式,最终都是随机偏移采样点)
+你会发现会有生硬的一圈圈的条纹状结果,之所以会出现这种现象是因为采样步长都是定长,这就会导致上一步和下一步之间的过渡数据被完全忽略,为了解决此问题,只需要在采样点临域内随机做个位移即可,宏观上看就是采样点随机“抖动”。(还有一种方案是“抖动"射线的起点或者是射线的方向,无论是什么方式,最终都是随机偏移采样点)
我们使用之前的hash(...)
函数生成一个随机值,以此来抖动采样点。
此更新日志为纵览更新,对于具体文章的更新位于每个文章的开头的 更新记录
中。
-
- +
更新
纵览
文档更新
资源与内存
文档
- + diff --git a/EnvironmentalConfig.html b/EnvironmentalConfig.html index db60ed7..c924257 100644 --- a/EnvironmentalConfig.html +++ b/EnvironmentalConfig.html @@ -6,7 +6,7 @@ - +
- @@ -342,40 +342,40 @@
更新
资源与内存
文档2024/9/6¶
- 2024/9/3¶
+2024/9/14¶
-
- +
更新
资源
文档更新
纵览
文档- 2024/8/29¶
+2024/9/6¶
-
- -
更新
欢迎来到 Vulkan 入门精要
文档- +
更新
开始于 Vulkan SDK
文档更新
资源与内存
文档- 2024/5/21¶
+2024/9/3¶
-
- +
更新
资源与内存
文档更新
资源
文档- 2024/5/18¶
+2024/8/29¶
-
- +
更新
资源与内存
文档- +
更新
欢迎来到 Vulkan 入门精要
文档更新
开始于 Vulkan SDK
文档- 2024/5/17¶
+2024/5/21¶
- @@ -383,7 +383,7 @@
更新
资源与内存
文档2024/5/17¶
- 2024/5/13¶
+2024/5/18¶
- @@ -391,7 +391,7 @@
更新
资源与内存
文档2024/5/13¶
- 2024/5/11¶
+2024/5/17¶
- @@ -399,23 +399,23 @@
更新
资源与内存
文档2024/5/11¶<
- 2024/5/7¶
+2024/5/13¶
-
- +
更新
资源
文档更新
资源与内存
文档- 2024/4/29¶
+2024/5/11¶
-
- +
更新
资源
文档更新
资源与内存
文档- 2024/4/25¶
+2024/5/7¶
- @@ -423,7 +423,7 @@
更新
资源
文档2024/4/25¶<
- 2024/4/23¶
+2024/4/29¶
- @@ -431,7 +431,7 @@
更新
资源
文档2024/4/23¶<
- 2024/4/20¶
+2024/4/25¶
- @@ -439,7 +439,7 @@
更新
资源
文档2024/4/20¶<
- 2024/4/18¶
+2024/4/23¶
- @@ -447,7 +447,7 @@
更新
资源
文档2024/4/18¶<
- 2024/4/17¶
+2024/4/20¶
- @@ -455,7 +455,7 @@
更新
资源
文档2024/4/17¶<
- 2024/4/16¶
+2024/4/18¶
- @@ -463,7 +463,7 @@
更新
资源
文档2024/4/16¶<
- 2024/4/15¶
+2024/4/17¶
- @@ -471,42 +471,42 @@
更新
资源
文档2024/4/15¶<
- 2024/4/14¶
+2024/4/16¶
- -
更新
资源
文档- -
增加
相关链接
文档更新
欢迎来到 Vulkan 入门精要
文档- 2024/4/13¶
+2024/4/15¶
-
更新
内存
文档更新
资源
文档- 2024/4/10¶
+2024/4/14¶
- +
更新
资源
文档- +
增加
相关链接
文档更新
欢迎来到 Vulkan 入门精要
文档- 2024/4/9¶
+2024/4/13¶
+
更新
内存
文档更新
资源
文档- 2024/4/6¶
+2024/4/10¶
- @@ -514,7 +514,7 @@
更新
资源
文档2024/4/6¶
- 2024/4/2¶
+2024/4/9¶
- @@ -522,7 +522,7 @@
更新
资源
文档2024/4/2¶
- 2024/3/31¶
+2024/4/6¶
- @@ -530,7 +530,7 @@
更新
资源
文档2024/3/31¶<
- 2024/3/29¶
+2024/4/2¶
- @@ -538,7 +538,7 @@
更新
资源
文档2024/3/29¶<
- 2024/3/28¶
+2024/3/31¶
- @@ -546,7 +546,7 @@
更新
资源
文档2024/3/28¶<
- 2024/3/27¶
+2024/3/29¶
- @@ -554,23 +554,23 @@
更新
资源
文档2024/3/27¶<
- 2024/3/26¶
+2024/3/28¶
-
- +
更新
内存
文档更新
资源
文档- 2024/3/24¶
+2024/3/27¶
-
- +
更新
内存
文档更新
资源
文档- 2024/3/23¶
+2024/3/26¶
- @@ -578,7 +578,7 @@
更新
内存
文档2024/3/23¶<
- 2024/3/19¶
+2024/3/24¶
- @@ -586,7 +586,7 @@
更新
内存
文档2024/3/19¶<
- 2024/3/17¶
+2024/3/23¶
- @@ -594,7 +594,7 @@
更新
内存
文档2024/3/17¶<
- 2024/3/16¶
+2024/3/19¶
- @@ -602,7 +602,7 @@
更新
内存
文档2024/3/16¶<
- 2024/3/15¶
+2024/3/17¶
- @@ -610,7 +610,7 @@
更新
内存
文档2024/3/15¶<
- 2024/3/14¶
+2024/3/16¶
- @@ -618,7 +618,7 @@
更新
内存
文档2024/3/14¶<
- 2024/3/10¶
+2024/3/15¶
- @@ -626,7 +626,7 @@
更新
内存
文档2024/3/10¶<
- 2024/3/9¶
+2024/3/14¶
- @@ -634,7 +634,7 @@
更新
内存
文档2024/3/9¶
- 2024/3/3¶
+2024/3/10¶
- @@ -642,7 +642,7 @@
更新
内存
文档2024/3/3¶
- 2024/2/27¶
+2024/3/9¶
- @@ -650,7 +650,7 @@
更新
内存
文档2024/2/27¶<
- 2024/2/21¶
+2024/3/3¶
- @@ -658,7 +658,7 @@
更新
内存
文档2024/2/21¶<
- 2024/2/17¶
+2024/2/27¶
- @@ -666,32 +666,31 @@
更新
内存
文档2024/2/17¶<
- 2024/2/16¶
+2024/2/21¶
-
- +
更新
逻辑设备
文档更新
内存
文档- 2024/2/8¶
+2024/2/17¶
-
- +
更新
逻辑设备
文档更新
内存
文档- 2024/2/7¶
+2024/2/16¶
- -
更新
逻辑设备
文档更新
最初之物 VkInstance
文档- 2024/2/5¶
+2024/2/8¶
- @@ -699,49 +698,50 @@
更新
逻辑设备
文档2024/2/5¶
- 2024/2/4¶
+2024/2/7¶
-
- -
更新
设备队列
文档- +
更新
纵览
文档- +
更新
逻辑设备
文档更新
最初之物 VkInstance
文档- 2024/2/3¶
+2024/2/5¶
-
- +
更新
设备队列
文档更新
逻辑设备
文档- 2024/2/2¶
+2024/2/4¶
-
- -
更新
最初之物 VkInstance
文档- +
更新
物理设备
文档- +
更新
设备队列
文档更新
纵览
文档- 2024/2/1¶
+2024/2/3¶
-
- +
更新
最初之物 VkInstance
文档更新
设备队列
文档- 2024/1/30¶
+2024/2/2¶
- +
更新
最初之物 VkInstance
文档更新
物理设备
文档- 2024/1/28¶
+2024/2/1¶
- @@ -749,7 +749,7 @@
更新
最初之物 VkInstance
文档2024/1/28¶<
- 2024/1/25¶
+2024/1/30¶
- @@ -757,23 +757,23 @@
更新
最初之物 VkInstance
文档2024/1/25¶<
- 2024/1/20¶
+2024/1/28¶
-
- +
更新
纵览
文档更新
最初之物 VkInstance
文档- 2024/1/14¶
+2024/1/25¶
-
- +
更新
纵览
文档更新
最初之物 VkInstance
文档- 2024/1/10¶
+2024/1/20¶
- @@ -781,7 +781,7 @@
更新
纵览
文档2024/1/10¶<
- 2024/1/9¶
+2024/1/14¶
- @@ -789,7 +789,7 @@
更新
纵览
文档2024/1/9¶
- 2024/1/8¶
+2024/1/10¶
- @@ -797,16 +797,15 @@
更新
纵览
文档2024/1/8¶
- 2024/1/6¶
+2024/1/9¶
- -
更新
纵览
文档
source/_static/css
中增加custom_content.css
和custom_sidebar_drawer.css
自定义css
文件。用于将文章区域变宽,看着舒服。- 2024/1/5¶
+2024/1/8¶
- @@ -814,15 +813,16 @@
更新
纵览
文档2024/1/5¶
- 2024/1/4¶
+2024/1/6¶
- +
更新
纵览
文档
source/_static/css
中增加custom_content.css
和custom_sidebar_drawer.css
自定义css
文件。用于将文章区域变宽,看着舒服。- 2024/1/3¶
+2024/1/5¶
- @@ -830,7 +830,23 @@
更新
纵览
文档2024/1/3¶
- +2024/1/2¶
+2024/1/4¶
++++
+- +
更新
纵览
文档+ +2024/1/3¶
++++
+- +
更新
纵览
文档+ -2024/1/2¶
- @@ -846,32 +862,32 @@
更新
开始于 Vulkan SDK
文档2024/1/2¶
- 2023/11/4¶
++ -2023/11/4¶
更新
可调用着色器
文档- 2023/11/2¶
++ -2023/11/2¶
更新
glTF 场景
文档- 2023/11/1¶
++ -2023/11/1¶
更新
glTF 场景
文档- 2023/10/31¶
++ -2023/10/31¶
- @@ -879,24 +895,24 @@
增加
Visual Studio Code
文档2023/10/31¶
- 2023/10/28¶
++ -2023/10/28¶
更新
glTF 场景
文档- 2023/10/26¶
++ -2023/10/26¶
更新
glTF 场景
文档- 2023/10/24¶
++ -2023/10/24¶
- @@ -904,16 +920,16 @@
增加
glTF 场景
文档2023/10/24¶
- 2023/10/22¶
++ -2023/10/22¶
更新
纵览
文档- 2023/10/21¶
++ -2023/10/21¶
- @@ -922,32 +938,32 @@
更新
纵览
文档2023/10/21¶
- 2023/10/19¶
++ -2023/10/19¶
更新
纵览
文档- 2023/10/18¶
++ -2023/10/18¶
更新
纵览
文档- 2023/10/17¶
++ -2023/10/17¶
更新
相交着色器
文档- 2023/10/16¶
++ -2023/10/16¶
- @@ -956,40 +972,40 @@
增加
可调用着色器
文档2023/10/16¶
- 2023/10/15¶
++ -2023/10/15¶
更新
纵览
文档- 2023/10/12¶
++ -2023/10/12¶
更新
纵览
文档- 2023/10/10¶
++ -2023/10/10¶
更新
相交着色器
文档- 2023/10/8¶
++ -2023/10/8¶
更新
相交着色器
文档- 2023/10/7¶
++ -2023/10/7¶
- @@ -998,40 +1014,40 @@
增加
相交着色器
文档2023/10/7¶<
- 2023/10/6¶
++ -2023/10/6¶
更新
纵览
文档- 2023/10/4¶
++ -2023/10/4¶
更新
纵览
文档- 2023/10/3¶
++ -2023/10/3¶
更新
纵览
文档- 2023/9/25¶
++ -2023/9/25¶
更新
环境配置
文档- 2023/9/23¶
++ -2023/9/23¶
- @@ -1039,8 +1055,8 @@
增加
Android 平台适配
随笔文档2023/9/23¶<
- 2023/9/22¶
++ -2023/9/22¶
- @@ -1049,8 +1065,8 @@
更新
动态更新
文档2023/9/22¶<
- 2023/9/20¶
++ -2023/9/20¶
- @@ -1059,8 +1075,8 @@
增加
动态更新
文档2023/9/20¶<
- 2023/9/15¶
++ -2023/9/15¶
- @@ -1068,8 +1084,8 @@
更新
着色器绑定表
文档2023/9/15¶<
- 2023/9/14¶
++ -2023/9/14¶
- @@ -1077,16 +1093,16 @@
更新
Vulkan KHR 光线追踪标准
文档2023/9/14¶<
- 2023/9/13¶
++ -2023/9/13¶
更新
多重最近命中着色器
文档- 2023/9/12¶
++ -2023/9/12¶
- @@ -1095,8 +1111,8 @@
更新
反射
文档2023/9/12¶<
- 2023/9/7¶
++ -2023/9/7¶
- @@ -1105,16 +1121,16 @@
更新
实例化
文档2023/9/7¶
- 2023/9/4¶
++ -2023/9/4¶
更新
实例化
文档- 2023/9/1¶
++ -2023/9/1¶
- @@ -1122,24 +1138,24 @@
增加
实例化
文档2023/9/1¶
- 2023/8/31¶
++ -2023/8/31¶
更新
任意命中着色器(Any Hit Shaders)教程
文档- 2023/8/29¶
++ -2023/8/29¶
更新
相机抖动抗锯齿教程
文档- 2023/8/25¶
++ -2023/8/25¶
- @@ -1147,8 +1163,8 @@
更新
相机抖动抗锯齿教程
文档2023/8/25¶<
- 2023/8/24¶
++ -2023/8/24¶
- @@ -1157,80 +1173,80 @@
更新
NVIDIA Vulkan 光线追踪教程
文档2023/8/24¶
- 2023/8/23¶
++ -2023/8/23¶
更新
NVIDIA Vulkan 光线追踪教程
文档- 2023/8/4¶
++ -2023/8/4¶
更新
VK_KHR_ray_tracing_pipeline
文档- 2023/8/3¶
++ -2023/8/3¶
更新
VK_KHR_ray_tracing_pipeline
文档- 2023/8/1¶
++ -2023/8/1¶
更新
VK_KHR_ray_tracing_pipeline
文档- 2023/7/31¶
++ -2023/7/31¶
更新
WebGPU Shader Compiler
文档- 2023/7/29¶
++ -2023/7/29¶
更新
WebGPU Shader Compiler
文档- 2023/7/28¶
++ -2023/7/28¶
更新
WebGPU Shader Compiler
文档- 2023/7/27¶
++ -2023/7/27¶
更新
WebGPU Shader Compiler
文档- 2023/7/26¶
++ -2023/7/26¶
更新
WebGPU Shader Compiler
文档- 2023/7/25¶
++ -2023/7/25¶
- @@ -1240,8 +1256,8 @@
更新
WebGPU Shader Compiler
文档2023/7/25¶
- 2023/7/24¶
++ -2023/7/24¶
- @@ -1252,24 +1268,24 @@
增加
WebGPU
文件夹,用于存储WebGPU
的可执行文件2023/7/24¶
- 2023/7/21¶
++ -2023/7/21¶
更新
VK_KHR_ray_tracing_pipeline
文档- 2023/7/17¶
++ -2023/7/17¶
更新
VK_KHR_ray_tracing_pipeline
文档- 2023/7/14¶
++ -2023/7/14¶
- @@ -1277,41 +1293,25 @@
更改总站访问统计方式。从
PV
改为UV
统计2023/7/14¶
- -2023/7/10¶
----
-- -
更新
纵览
文档- -
更新
开始于 Vulkan SDK
文档- 2023/7/9¶
----
-- -
更新
纵览
文档- 2023/7/8¶
+2023/7/10¶
- +
更新
纵览
文档更新
开始于 Vulkan SDK
文档- 2023/7/4¶
+2023/7/9¶
-
- +
更新
VK_KHR_buffer_device_address
文档更新
纵览
文档- 2023/7/2¶
+2023/7/8¶
- @@ -1319,24 +1319,23 @@
更新
纵览
文档2023/7/2¶<
- 2023/6/30¶
+2023/7/4¶
-
- +
更新
纵览
文档更新
VK_KHR_buffer_device_address
文档- 2023/6/29¶
+2023/7/2¶
- -
更新
纵览
文档更新
开始于 Vulkan SDK
文档- 2023/6/28¶
+2023/6/30¶
- @@ -1344,16 +1343,16 @@
更新
纵览
文档2023/6/28¶
- 2023/6/27¶
+2023/6/29¶
-
将浏览数量合理安排至页脚两侧
- +
更新
纵览
文档更新
开始于 Vulkan SDK
文档- 2023/6/26¶
+2023/6/28¶
- @@ -1361,15 +1360,16 @@
更新
纵览
文档2023/6/26¶
- 2023/6/25¶
+2023/6/27¶
+
将浏览数量合理安排至页脚两侧
更新
纵览
文档- 2023/6/24¶
+2023/6/26¶
- @@ -1377,75 +1377,75 @@
更新
纵览
文档2023/6/24¶
- 2023/6/23¶
+2023/6/25¶
-
更新
开始于 Vulkan SDK
文档更新
纵览
文档- 2023/6/21¶
+2023/6/24¶
-
- -
更新
VK_KHR_buffer_device_address
文档- +
更新
VK_KHR_acceleration_structure
文档更新
纵览
文档- 2023/6/20¶
+2023/6/23¶
-
- +
增加
VK_KHR_buffer_device_address
文档- +
更新
开始于 Vulkan SDK
文档更新
纵览
文档- 2023/6/15¶
+2023/6/21¶
+
更新
VK_KHR_buffer_device_address
文档- -
更新
VK_KHR_acceleration_structure
文档增加
VK_KHR_deferred_host_operations
文档- 2023/6/14¶
+2023/6/20¶
-
- +
更新
VK_KHR_acceleration_structure
文档增加
VK_KHR_buffer_device_address
文档- 2023/6/13¶
+2023/6/15¶
-
- -
更新
Vulkan KHR 光线追踪标准
文档- +
创建单独的
VK_KHR_acceleration_structure
文档- +
更新
VK_KHR_acceleration_structure
文档增加
VK_KHR_deferred_host_operations
文档- 2023/6/12¶
+2023/6/14¶
-
- +
更新
Vulkan KHR 光线追踪标准
文档更新
VK_KHR_acceleration_structure
文档- 2023/6/11¶
+2023/6/13¶
- +
更新
Vulkan KHR 光线追踪标准
文档创建单独的
VK_KHR_acceleration_structure
文档- 2023/6/10¶
+2023/6/12¶
- @@ -1453,7 +1453,7 @@
更新
Vulkan KHR 光线追踪标准
文档2023/6/10¶
- 2023/6/9¶
+2023/6/11¶
- @@ -1461,7 +1461,7 @@
更新
Vulkan KHR 光线追踪标准
文档2023/6/9¶<
- 2023/6/8¶
+2023/6/10¶
- @@ -1469,7 +1469,7 @@
更新
Vulkan KHR 光线追踪标准
文档2023/6/8¶<
- 2023/6/7¶
+2023/6/9¶
- @@ -1477,7 +1477,7 @@
更新
Vulkan KHR 光线追踪标准
文档2023/6/7¶<
- 2023/6/6¶
+2023/6/8¶
- @@ -1485,33 +1485,32 @@
更新
Vulkan KHR 光线追踪标准
文档2023/6/6¶<
- 2023/6/5¶
+2023/6/7¶
-
- -
增加
随笔
栏目,用于记录学习随笔。- +
增加
Vulkan KHR 光线追踪标准
文档更新
Vulkan KHR 光线追踪标准
文档- 2023/6/4¶
+2023/6/6¶
-
- +
更新
NVIDIA Vulkan 光线追踪教程
文档更新
Vulkan KHR 光线追踪标准
文档- 2023/6/3¶
+2023/6/5¶
-
- -
更新
NVIDIA Vulkan 光线追踪教程
文档- +
增加
RTX 着色器绑定表的三种方式
文档- +
增加
随笔
栏目,用于记录学习随笔。增加
Vulkan KHR 光线追踪标准
文档- 2023/6/2¶
+2023/6/4¶
- @@ -1519,15 +1518,16 @@
更新
NVIDIA Vulkan 光线追踪教程
文档2023/6/2¶<
- 2023/6/1¶
+2023/6/3¶
- +
更新
NVIDIA Vulkan 光线追踪教程
文档增加
RTX 着色器绑定表的三种方式
文档- 2023/5/31¶
+2023/6/2¶
- @@ -1535,7 +1535,7 @@
更新
NVIDIA Vulkan 光线追踪教程
文档2023/5/31¶
- 2023/5/30¶
+2023/6/1¶
- @@ -1543,7 +1543,7 @@
更新
NVIDIA Vulkan 光线追踪教程
文档2023/5/30¶
- 2023/5/29¶
+2023/5/31¶
- @@ -1551,7 +1551,7 @@
更新
NVIDIA Vulkan 光线追踪教程
文档2023/5/29¶
- 2023/5/28¶
+2023/5/30¶
- @@ -1559,7 +1559,7 @@
更新
NVIDIA Vulkan 光线追踪教程
文档2023/5/28¶
- 2023/5/27¶
+2023/5/29¶
- @@ -1567,7 +1567,7 @@
更新
NVIDIA Vulkan 光线追踪教程
文档2023/5/27¶
- 2023/5/26¶
+2023/5/28¶
- @@ -1575,7 +1575,7 @@
更新
NVIDIA Vulkan 光线追踪教程
文档2023/5/26¶
- 2023/5/25¶
+2023/5/27¶
- @@ -1583,7 +1583,7 @@
更新
NVIDIA Vulkan 光线追踪教程
文档2023/5/25¶
- 2023/5/24¶
+2023/5/26¶
- @@ -1591,7 +1591,7 @@
更新
NVIDIA Vulkan 光线追踪教程
文档2023/5/24¶
- 2023/5/23¶
+2023/5/25¶
- @@ -1599,7 +1599,23 @@
更新
NVIDIA Vulkan 光线追踪教程
文档2023/5/23¶
- +2023/5/22¶
+2023/5/24¶
++++
+- +
更新
NVIDIA Vulkan 光线追踪教程
文档+ +2023/5/23¶
++++
+- +
更新
NVIDIA Vulkan 光线追踪教程
文档+ -2023/5/22¶
- @@ -1611,24 +1627,24 @@
增加
sphinx_design
的sphinx
的扩展2023/5/22¶
- 2023/5/21¶
++ -2023/5/21¶
更新
NVIDIA Vulkan 光线追踪教程
文档- 2023/5/20¶
++ -2023/5/20¶
更新
NVIDIA Vulkan 光线追踪教程
文档- 2023/5/19¶
++ -2023/5/19¶
- @@ -1636,8 +1652,8 @@
增加
source/application
文件夹,用于存放Vulkan
应用文档。2023/5/19¶
- 2023/5/18¶
++ -2023/5/18¶
- @@ -1645,8 +1661,8 @@
更新
开始于 Vulkan SDK
文章2023/5/18¶
- 2023/5/17¶
++ -2023/5/17¶
- @@ -1654,8 +1670,8 @@
更新
开始于 Vulkan SDK
文章2023/5/17¶
- 2023/5/16¶
++ -2023/5/16¶
- @@ -1664,8 +1680,8 @@
更新
纵览
文章2023/5/16¶
- 2023/5/15¶
++ -2023/5/15¶
- @@ -1677,8 +1693,8 @@
增加
纵览
文章2023/5/15¶
- 2023/5/14¶
++ -2023/5/14¶
- @@ -1688,8 +1704,8 @@
文献
中增加序言
章节2023/5/14¶
- 2023/5/12¶
++ -2023/5/12¶
- @@ -1698,8 +1714,8 @@
修改
.github/workflows/release.yml
部署脚本和./source/conf.py
配置文件,使其支持拷贝代码按钮2023/5/12¶
- 2023/5/11¶
++ -2023/5/11¶
- @@ -1709,16 +1725,16 @@
增加
markdownTest.md
,用于测试Sphinx
支持Markdown
2023/5/11¶
- 2023/5/10¶
++ -2023/5/10¶
增加
test.rst
,用于学习测试reStructuredText
语法- 2023/5/9¶
++ -2023/5/9¶
- @@ -1726,8 +1742,8 @@
README.md
中增加文档链接2023/5/9¶<
- 2023/5/8¶
++ 2023/5/8¶
- + diff --git a/DeviceQueue.html b/DeviceQueue.html index 477b37a..82e4b01 100644 --- a/DeviceQueue.html +++ b/DeviceQueue.html @@ -6,7 +6,7 @@ - +
- @@ -1804,172 +1820,174 @@
创建此项目仓库
2023/5/8¶<
@@ -1982,7 +2000,7 @@
- 更新日志
-
- 2024/9/14
-- 2024/9/6
-- 2024/9/3
-- 2024/8/29
-- 2024/5/21
-- 2024/5/18
-- 2024/5/17
-- 2024/5/13
-- 2024/5/11
-- 2024/5/7
-- 2024/4/29
-- 2024/4/25
-- 2024/4/23
-- 2024/4/20
-- 2024/4/18
-- 2024/4/17
-- 2024/4/16
-- 2024/4/15
-- 2024/4/14
-- 2024/4/13
-- 2024/4/10
-- 2024/4/9
-- 2024/4/6
-- 2024/4/2
-- 2024/3/31
-- 2024/3/29
-- 2024/3/28
-- 2024/3/27
-- 2024/3/26
-- 2024/3/24
-- 2024/3/23
-- 2024/3/19
-- 2024/3/17
-- 2024/3/16
-- 2024/3/15
-- 2024/3/14
-- 2024/3/10
-- 2024/3/9
-- 2024/3/3
-- 2024/2/27
-- 2024/2/21
-- 2024/2/17
-- 2024/2/16
-- 2024/2/8
-- 2024/2/7
-- 2024/2/5
-- 2024/2/4
-- 2024/2/3
-- 2024/2/2
-- 2024/2/1
-- 2024/1/30
-- 2024/1/28
-- 2024/1/25
-- 2024/1/20
-- 2024/1/14
-- 2024/1/10
-- 2024/1/9
-- 2024/1/8
-- 2024/1/6
-- 2024/1/5
-- 2024/1/4
-- 2024/1/3
-- 2024/1/2
-- 2023/11/4
-- 2023/11/2
-- 2023/11/1
-- 2023/10/31
-- 2023/10/28
-- 2023/10/26
-- 2023/10/24
-- 2023/10/22
-- 2023/10/21
-- 2023/10/19
-- 2023/10/18
-- 2023/10/17
-- 2023/10/16
-- 2023/10/15
-- 2023/10/12
-- 2023/10/10
-- 2023/10/8
-- 2023/10/7
-- 2023/10/6
-- 2023/10/4
-- 2023/10/3
-- 2023/9/25
-- 2023/9/23
-- 2023/9/22
-- 2023/9/20
-- 2023/9/15
-- 2023/9/14
-- 2023/9/13
-- 2023/9/12
-- 2023/9/7
-- 2023/9/4
-- 2023/9/1
-- 2023/8/31
-- 2023/8/29
-- 2023/8/25
-- 2023/8/24
-- 2023/8/23
-- 2023/8/4
-- 2023/8/3
-- 2023/8/1
-- 2023/7/31
-- 2023/7/29
-- 2023/7/28
-- 2023/7/27
-- 2023/7/26
-- 2023/7/25
-- 2023/7/24
-- 2023/7/21
-- 2023/7/17
-- 2023/7/14
-- 2023/7/10
-- 2023/7/9
-- 2023/7/8
-- 2023/7/4
-- 2023/7/2
-- 2023/6/30
-- 2023/6/29
-- 2023/6/28
-- 2023/6/27
-- 2023/6/26
-- 2023/6/25
-- 2023/6/24
-- 2023/6/23
-- 2023/6/21
-- 2023/6/20
-- 2023/6/15
-- 2023/6/14
-- 2023/6/13
-- 2023/6/12
-- 2023/6/11
-- 2023/6/10
-- 2023/6/9
-- 2023/6/8
-- 2023/6/7
-- 2023/6/6
-- 2023/6/5
-- 2023/6/4
-- 2023/6/3
-- 2023/6/2
-- 2023/6/1
-- 2023/5/31
-- 2023/5/30
-- 2023/5/29
-- 2023/5/28
-- 2023/5/27
-- 2023/5/26
-- 2023/5/25
-- 2023/5/24
-- 2023/5/23
-- 2023/5/22
-- 2023/5/21
-- 2023/5/20
-- 2023/5/19
-- 2023/5/18
-- 2023/5/17
-- 2023/5/16
-- 2023/5/15
-- 2023/5/14
-- 2023/5/12
-- 2023/5/11
-- 2023/5/10
-- 2023/5/9
-- 2023/5/8
+- 2024/11/5
+- 2024/10/29
+- 2024/9/14
+- 2024/9/6
+- 2024/9/3
+- 2024/8/29
+- 2024/5/21
+- 2024/5/18
+- 2024/5/17
+- 2024/5/13
+- 2024/5/11
+- 2024/5/7
+- 2024/4/29
+- 2024/4/25
+- 2024/4/23
+- 2024/4/20
+- 2024/4/18
+- 2024/4/17
+- 2024/4/16
+- 2024/4/15
+- 2024/4/14
+- 2024/4/13
+- 2024/4/10
+- 2024/4/9
+- 2024/4/6
+- 2024/4/2
+- 2024/3/31
+- 2024/3/29
+- 2024/3/28
+- 2024/3/27
+- 2024/3/26
+- 2024/3/24
+- 2024/3/23
+- 2024/3/19
+- 2024/3/17
+- 2024/3/16
+- 2024/3/15
+- 2024/3/14
+- 2024/3/10
+- 2024/3/9
+- 2024/3/3
+- 2024/2/27
+- 2024/2/21
+- 2024/2/17
+- 2024/2/16
+- 2024/2/8
+- 2024/2/7
+- 2024/2/5
+- 2024/2/4
+- 2024/2/3
+- 2024/2/2
+- 2024/2/1
+- 2024/1/30
+- 2024/1/28
+- 2024/1/25
+- 2024/1/20
+- 2024/1/14
+- 2024/1/10
+- 2024/1/9
+- 2024/1/8
+- 2024/1/6
+- 2024/1/5
+- 2024/1/4
+- 2024/1/3
+- 2024/1/2
+- 2023/11/4
+- 2023/11/2
+- 2023/11/1
+- 2023/10/31
+- 2023/10/28
+- 2023/10/26
+- 2023/10/24
+- 2023/10/22
+- 2023/10/21
+- 2023/10/19
+- 2023/10/18
+- 2023/10/17
+- 2023/10/16
+- 2023/10/15
+- 2023/10/12
+- 2023/10/10
+- 2023/10/8
+- 2023/10/7
+- 2023/10/6
+- 2023/10/4
+- 2023/10/3
+- 2023/9/25
+- 2023/9/23
+- 2023/9/22
+- 2023/9/20
+- 2023/9/15
+- 2023/9/14
+- 2023/9/13
+- 2023/9/12
+- 2023/9/7
+- 2023/9/4
+- 2023/9/1
+- 2023/8/31
+- 2023/8/29
+- 2023/8/25
+- 2023/8/24
+- 2023/8/23
+- 2023/8/4
+- 2023/8/3
+- 2023/8/1
+- 2023/7/31
+- 2023/7/29
+- 2023/7/28
+- 2023/7/27
+- 2023/7/26
+- 2023/7/25
+- 2023/7/24
+- 2023/7/21
+- 2023/7/17
+- 2023/7/14
+- 2023/7/10
+- 2023/7/9
+- 2023/7/8
+- 2023/7/4
+- 2023/7/2
+- 2023/6/30
+- 2023/6/29
+- 2023/6/28
+- 2023/6/27
+- 2023/6/26
+- 2023/6/25
+- 2023/6/24
+- 2023/6/23
+- 2023/6/21
+- 2023/6/20
+- 2023/6/15
+- 2023/6/14
+- 2023/6/13
+- 2023/6/12
+- 2023/6/11
+- 2023/6/10
+- 2023/6/9
+- 2023/6/8
+- 2023/6/7
+- 2023/6/6
+- 2023/6/5
+- 2023/6/4
+- 2023/6/3
+- 2023/6/2
+- 2023/6/1
+- 2023/5/31
+- 2023/5/30
+- 2023/5/29
+- 2023/5/28
+- 2023/5/27
+- 2023/5/26
+- 2023/5/25
+- 2023/5/24
+- 2023/5/23
+- 2023/5/22
+- 2023/5/21
+- 2023/5/20
+- 2023/5/19
+- 2023/5/18
+- 2023/5/17
+- 2023/5/16
+- 2023/5/15
+- 2023/5/14
+- 2023/5/12
+- 2023/5/11
+- 2023/5/10
+- 2023/5/9
+- 2023/5/8
2023/5/8¶<
设备队列 - Vulkan入门精要 @@ -544,7 +544,7 @@示例¶<
环境配置 - Vulkan入门精要 @@ -407,7 +407,7 @@环境配置
-
- +
在
Properties
页面中依次点击 ,打开头文件目录配置页面。在
Properties
页面中依次点击 ,打开头文件目录配置页面。
作为新一代的图形 API
,可以说完全重新设计了架构,摒弃了 OpenGL
的基于上下文的架构执行指令,而是使用基于 CommandBuffer
指令缓存推送到设备工作 Queue
队列的方式,进行指令执行。支持 OpenGL
不支持的多线程和硬件光线追踪。在 OpenGL
中对于函数的获取,
有的用 GLEW
有的用 GLAD
有的函数获取在某些平台甚至都是么棱两可的, Vulkan
中规避了该诟病,使用统一的接口获取所有接口函数。明确绘制结果如何呈现,而不是像 OpenGL
那样有默认的颜色、深度缓存。等等,可以说 Vulkan
和 OpenGL
是完全不一样的,
硬要说 Vulkan
与 OpenGL
之间是什么关系,可以说 Vulkan
是将 OpenGL
中的很多原本由驱动负责的任务,现在将其开放出来由 Vulkan
开发者自己管理,这也就是为什么很多人觉得 Vulkan
困难的原因,使用 Vulkan
开发总有一种开发 OpenGL
驱动的感觉,但好处是架构清晰,性能优良,完全可以基于 Vulkan
去
-实现 OpenGL
的接口,反之则不行。要说 Vulkan
与 OpenGL
之间有什么相同点?确切说,除了图新学上统一的概念在 Vulkan
与 OpenGL
中是相同的(比如顶点属性,顶点着色器,片元着色器等等),其他没有任何相似的地方。读者完全
+实现 OpenGL
的接口,反之则不行。要说 Vulkan
与 OpenGL
之间有什么相同点?确切说,除了图形学上统一的概念在 Vulkan
与 OpenGL
中是相同的(比如顶点属性,顶点着色器,片元着色器等等),其他没有任何相似的地方。读者完全
可以把 Vulkan
当做全新的架构去学,不需要提前学完 OpenGL
,当然如果提前了解了 OpenGL
,对于 Vulkan
中的一些概念是相通的,会对理解起一些帮助。但是读者放心,您在学习本教程时不需要会 OpenGL
也可以理解其中的奥妙。
Vulkan
与 DirectX 12
顶层加速结构用于相交查询
rayFlags
控制光线追踪的位域
8
比特的剔除遮罩 culling mask
,加速结构的每一个实体都会有一个 8
比特的遮罩。这个实体遮罩将会与该遮罩值按位与,如果结果为 0
将会忽略该交点。我们没有利用该特性,所以这里我们给 0xFF
遮罩值,并且帮助类会设置每一个实体的遮罩为 0xFF
。
-sbtRecordOffset
和 sbtRecordStride
用于控制每一个实体的 hitGroupId
( VkAccelerationStructureInstanceKHR::instanceShaderBindingTableRecordOffset
)是如何从底层加速结构命中组数组中获取命中组的。由于我们目前只有一个命中组,所以两个都设置成 0
。其中的细节相当复杂,可以通过阅读 Will Usher’s article 了解更多。
+sbtRecordOffset
和 sbtRecordStride
用于控制每一个实体的 hitGroupId
( VkAccelerationStructureInstanceKHR::instanceShaderBindingTableRecordOffset
)是如何从底层加速结构命中组数组中获取命中组的。由于我们目前只有一个命中组,所以两个都设置成 0
。其中的细节相当复杂,可以通过阅读 Will Usher's article 了解更多。
missIndex
表示底层加速结构的未命中着色器组的索引,当没有与任何实体相交时将会调用该索引对应的未命中着色器。
光线的起点,最小范围,方向和对打范围。
该着色器中声明的负载位置,本例中 location = 0
。这个编译期间的常数建立了 rayPayloadInEXT
的调用者和被调用关系,使得允许我们可以选择着色器在哪输出。作为 traceRayEXT
直接的结果执行着色器(被调用者),其中的 rayPayloadInEXT
参数将会成为 traceRayEXT
调用者规定的 rayPayloadEXT
位置别名( alias
)。为了能够更好的运行,两个参数都应该是相同的结构体。这允许我们运行时决定着色器的输出往哪里写,这对于逆向光线追踪非常有用处。
@@ -2688,7 +2688,7 @@ 15 拓展延伸
-
+
diff --git a/Literature/NVIDIAVulkanRayTracingTutorial/extensions/Animation.html b/Literature/NVIDIAVulkanRayTracingTutorial/extensions/Animation.html
index e29ff0c..874abac 100644
--- a/Literature/NVIDIAVulkanRayTracingTutorial/extensions/Animation.html
+++ b/Literature/NVIDIAVulkanRayTracingTutorial/extensions/Animation.html
@@ -6,7 +6,7 @@
-
+
动态更新 - Vulkan入门精要
@@ -858,7 +858,7 @@ 底层加速结构的更新
-
+
diff --git a/Literature/NVIDIAVulkanRayTracingTutorial/extensions/AnyHitShaders.html b/Literature/NVIDIAVulkanRayTracingTutorial/extensions/AnyHitShaders.html
index c342c51..90816d3 100644
--- a/Literature/NVIDIAVulkanRayTracingTutorial/extensions/AnyHitShaders.html
+++ b/Literature/NVIDIAVulkanRayTracingTutorial/extensions/AnyHitShaders.html
@@ -6,7 +6,7 @@
-
+
任意命中着色器(Any Hit Shaders)教程 - Vulkan入门精要
@@ -799,7 +799,7 @@ 光追管线
-
+
diff --git a/Literature/NVIDIAVulkanRayTracingTutorial/extensions/CallableShaders.html b/Literature/NVIDIAVulkanRayTracingTutorial/extensions/CallableShaders.html
index df11a5e..6c90d28 100644
--- a/Literature/NVIDIAVulkanRayTracingTutorial/extensions/CallableShaders.html
+++ b/Literature/NVIDIAVulkanRayTracingTutorial/extensions/CallableShaders.html
@@ -6,7 +6,7 @@
-
+
可调用着色器 - Vulkan入门精要
@@ -698,7 +698,7 @@ 调用可调用着色器
-
+
diff --git a/Literature/NVIDIAVulkanRayTracingTutorial/extensions/Instances.html b/Literature/NVIDIAVulkanRayTracingTutorial/extensions/Instances.html
index 64b9be1..83c6c3e 100644
--- a/Literature/NVIDIAVulkanRayTracingTutorial/extensions/Instances.html
+++ b/Literature/NVIDIAVulkanRayTracingTutorial/extensions/Instances.html
@@ -6,7 +6,7 @@
-
+
实例化 - Vulkan入门精要
@@ -634,7 +634,7 @@ hello_vulkan.cpp
-
+
diff --git a/Literature/NVIDIAVulkanRayTracingTutorial/extensions/IntersectionShader.html b/Literature/NVIDIAVulkanRayTracingTutorial/extensions/IntersectionShader.html
index 4e89a36..d0b4e32 100644
--- a/Literature/NVIDIAVulkanRayTracingTutorial/extensions/IntersectionShader.html
+++ b/Literature/NVIDIAVulkanRayTracingTutorial/extensions/IntersectionShader.html
@@ -6,7 +6,7 @@
-
+
相交着色器 - Vulkan入门精要
@@ -924,7 +924,7 @@ raytrace2.rchit
-
+
diff --git a/Literature/NVIDIAVulkanRayTracingTutorial/extensions/JitterCamera.html b/Literature/NVIDIAVulkanRayTracingTutorial/extensions/JitterCamera.html
index 1cd5fac..6c7345d 100644
--- a/Literature/NVIDIAVulkanRayTracingTutorial/extensions/JitterCamera.html
+++ b/Literature/NVIDIAVulkanRayTracingTutorial/extensions/JitterCamera.html
@@ -6,7 +6,7 @@
-
+
相机抖动抗锯齿教程 - Vulkan入门精要
@@ -663,7 +663,7 @@ 光线生成着色器中的多采样
-
+
diff --git a/Literature/NVIDIAVulkanRayTracingTutorial/extensions/MultipleClosestHitShaders.html b/Literature/NVIDIAVulkanRayTracingTutorial/extensions/MultipleClosestHitShaders.html
index 9851157..c421862 100644
--- a/Literature/NVIDIAVulkanRayTracingTutorial/extensions/MultipleClosestHitShaders.html
+++ b/Literature/NVIDIAVulkanRayTracingTutorial/extensions/MultipleClosestHitShaders.html
@@ -6,7 +6,7 @@
-
+
多重最近命中着色器 - Vulkan入门精要
@@ -747,7 +747,7 @@ createRtShaderBindingTable
-
+
diff --git a/Literature/NVIDIAVulkanRayTracingTutorial/extensions/RayQuery.html b/Literature/NVIDIAVulkanRayTracingTutorial/extensions/RayQuery.html
index fd8f5f0..5213c74 100644
--- a/Literature/NVIDIAVulkanRayTracingTutorial/extensions/RayQuery.html
+++ b/Literature/NVIDIAVulkanRayTracingTutorial/extensions/RayQuery.html
@@ -6,7 +6,7 @@
-
+
光线查询 - Vulkan入门精要
@@ -549,7 +549,7 @@ 片元着色器
-
+
diff --git a/Literature/NVIDIAVulkanRayTracingTutorial/extensions/Reflections.html b/Literature/NVIDIAVulkanRayTracingTutorial/extensions/Reflections.html
index cd63887..fb8e54a 100644
--- a/Literature/NVIDIAVulkanRayTracingTutorial/extensions/Reflections.html
+++ b/Literature/NVIDIAVulkanRayTracingTutorial/extensions/Reflections.html
@@ -6,7 +6,7 @@
-
+
反射 - Vulkan入门精要
@@ -672,7 +672,7 @@ 控制递归深度
-
+
diff --git a/Literature/NVIDIAVulkanRayTracingTutorial/extensions/glTFScene.html b/Literature/NVIDIAVulkanRayTracingTutorial/extensions/glTFScene.html
index 7479fe9..6e6de9b 100644
--- a/Literature/NVIDIAVulkanRayTracingTutorial/extensions/glTFScene.html
+++ b/Literature/NVIDIAVulkanRayTracingTutorial/extensions/glTFScene.html
@@ -6,7 +6,7 @@
-
+
glTF 场景 - Vulkan入门精要
@@ -1061,7 +1061,7 @@ 光线生成
-
+
diff --git a/Literature/TheRTXShaderBindingTableThreeWays.html b/Literature/TheRTXShaderBindingTableThreeWays.html
index 5272de0..08ce6b8 100644
--- a/Literature/TheRTXShaderBindingTableThreeWays.html
+++ b/Literature/TheRTXShaderBindingTableThreeWays.html
@@ -6,7 +6,7 @@
-
+
RTX 着色器绑定表的三种方式 - Vulkan入门精要
@@ -400,7 +400,7 @@ RTX 着色器绑定表的三种方式
-
+
diff --git a/Literature/Vulkan-GuideRayTracing.html b/Literature/Vulkan-GuideRayTracing.html
index e63e374..6b8fb2e 100644
--- a/Literature/Vulkan-GuideRayTracing.html
+++ b/Literature/Vulkan-GuideRayTracing.html
@@ -6,7 +6,7 @@
-
+
光线追踪 - Vulkan入门精要
@@ -592,7 +592,7 @@ 多用设备本地的内存
-
+
diff --git a/Literature/VulkanRayTracingFinalSpecificationRelease.html b/Literature/VulkanRayTracingFinalSpecificationRelease.html
index 74e3a5f..29f000c 100644
--- a/Literature/VulkanRayTracingFinalSpecificationRelease.html
+++ b/Literature/VulkanRayTracingFinalSpecificationRelease.html
@@ -6,7 +6,7 @@
-
+
Vulkan 光线追踪最终标准发布 - Vulkan入门精要
@@ -579,7 +579,7 @@ 结论和资源
-
+
diff --git a/Literature/index.html b/Literature/index.html
index c110d5e..7e05c4b 100644
--- a/Literature/index.html
+++ b/Literature/index.html
@@ -6,7 +6,7 @@
-
+
文献 - Vulkan入门精要
@@ -448,7 +448,7 @@ 文献¶<
-
+
diff --git a/Literature/vk_mini_path_tracer.html b/Literature/vk_mini_path_tracer.html
index 47e170c..b3c9514 100644
--- a/Literature/vk_mini_path_tracer.html
+++ b/Literature/vk_mini_path_tracer.html
@@ -6,7 +6,7 @@
-
+
Vulkan迷你路径追踪 - Vulkan入门精要
@@ -400,7 +400,7 @@ Vulkan迷你路径追踪
-
+
diff --git a/LogicDevice.html b/LogicDevice.html
index 01efdef..8aedeec 100644
--- a/LogicDevice.html
+++ b/LogicDevice.html
@@ -6,7 +6,7 @@
-
+
逻辑设备 - Vulkan入门精要
@@ -865,7 +865,7 @@ 示例¶
-
+
diff --git a/Memory.html b/Memory.html
index 63f2048..26e934a 100644
--- a/Memory.html
+++ b/Memory.html
@@ -6,7 +6,7 @@
-
+
内存 - Vulkan入门精要
@@ -1270,7 +1270,7 @@ vkGetDeviceMemoryCommitment¶
通过之前 vkGetPhysicalDeviceMemoryProperties(...)
函数我们可以获取到设备的内存信息,现在我们就可以通过这些信息进行内存分配了。为此 Vulkan
为我们提供了 vkAllocateMemory(...)
函数进行内存分配。该函数定义如下:
-vkAllocateMemory¶
+vkAllocateMemory¶
// 由 VK_VERSION_1_0 提供
VkResult vkAllocateMemory(
VkDevice device,
@@ -1840,7 +1840,7 @@ 设备内存同步到虚拟内存
-
+
diff --git a/Overview.html b/Overview.html
index befa78a..f2cec32 100644
--- a/Overview.html
+++ b/Overview.html
@@ -6,7 +6,7 @@
-
+
纵览 - Vulkan入门精要
@@ -920,8 +920,8 @@ VkInstanceCreateInfo初次学习 Vulkan
时会有个疑问: VkInstanceCreateInfo
已经是一个结构体了为什么还有使用 sType
再指定一遍结构体类型呢?而且 Vulkan
中几乎所有的结构体内都声明了 sType
成员,为什么?
这就不得不说明一下 Vulkan
的扩展模块了。随着时代的发展,类似于 VkInstanceCreateInfo
结构体中的数据可能并不满足于技术背景,需要进行扩展,为此 Vulkan
引入了 pNext
成员, Vulkan
中几乎所有的结构体内都声明了 pNext
成员,而 pNext
为 const void*
类型,这也就是说 pNext
可以
指向任意一个类型对象的数据地址。由于 Vulkan
中几乎所有的结构体内都声明了 pNext
成员,这样每个结构体都可以使用 pNext
指向下一个 Vulkan
的结构体,这样一个接着一个将结构体进行串链就形成了一个扩展链。
-
- flowchart LR
+
+ flowchart LR
subgraph VkInstanceCreateInfo
direction TB
VkInstanceCreateInfo_sType["sType = VkStructureType::VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"]
@@ -946,7 +946,7 @@ VkInstanceCreateInfo这样驱动就可以根据 pNext
指针链遍历所有的结构体数据了,但是有一个问题 pNext
只是个 void*
指针,驱动在获取到 pNext
指向的地址时并不知道这个地址应该按照哪种结构体类型进行解析,这时 sType
的作用就体现出来了,驱动获取该地址下的 sType
的数据,这样驱动就知道如何解析此块地址了。
+
这样驱动就可以根据 pNext
指针链遍历所有的结构体数据了,但是有一个问题 pNext
只是个 void*
指针,驱动在获取到 pNext
指向的地址时并不知道这个地址应该按照哪种结构体类型进行解析,这时 sType
的作用就体现出来了,驱动获取该地址下的 sType
的数据,这样驱动就知道如何解析此块地址了。
// 驱动内部可能的实现
const void* pNext = 某个结构体的地址;
@@ -1128,8 +1128,8 @@ 获取支持的 Vulkan 版本Vulkan 1.0 中硬件设备是有相关的 Layer
功能的,但用处不大,比较鸡肋,后来 Vulkan
标准组将硬件设备的 Layer
遗弃,但对外的接口还保留着。
由于在支持 Vulkan 1.0
的实现中 vkCreateInstance
可能由于 VK_ERROR_INCOMPATIBLE_DRIVER
失败返回,所以需要在调用 vkCreateInstance
之前获取支持的 Vulkan
版本。获取流程如下:
-
- flowchart TD
+
+ flowchart TD
TryToGetvkEnumerateInstanceVersion["尝试获取 vkEnumerateInstanceVersion 函数接口实现"]
IsNull{"是否为 NULL"}
SupportVulkan_1_0["支持Vulkan 1.0"]
@@ -1138,7 +1138,7 @@ 获取支持的 Vulkan 版本
+
vkEnumerateInstanceVersion¶
vkEnumerateInstanceVersion
函数定义如下:
// 由 VK_VERSION_1_1 提供
@@ -1698,15 +1698,15 @@ 内存分类
这里可以看出内存条上的内存和 GPU
上的显存都属于 Vulkan
可访问的内存范畴。
在 Vulkan
中我们往往在 Host
端将数据准备好,之后使用 GPU
设备访问该数据进行计算。然而 Host
端准备的数据只有 CPU
能够访问, GPU
设备并不能直接访问 Host
端内存,为此 Vulkan
标准中为我们提供了可被 GPU
访问的 Host
端内存。
也就是说这一部分内存既可以被 Host
端访问也可以被 Device
端访问。一般来说,我们会先将 Host
端的数据拷贝至可以被 Host
端访问也可以被 Device
端访问的内存中,之后再将这部分数据拷贝至 Device
端内存中被 GPU
访问使用。
-
- flowchart LR
+
+ flowchart LR
Host["Host 端\n(使用 new 或 malloc 分配内存)"]
HostAndDevice["Host 端与 Device 都可访问的内存"]
Device["Device 端内存"]
Host--拷贝-->HostAndDevice--"(总线)拷贝"-->Device
-
+
既然数据在 Host
端与 Device
端都可以访问的内存中,为什么还需要拷贝至 Device
端中?
在硬件层面 Host
端与 Device
端都可以访问的内存,这类内存对于 CPU
这种处理连续内存非常友好,而像 GPU
这种大量并行计算的设备来说就不尽人意了,拷贝至 Device
端中的目的是将这一步分数据转换成设备友好的内存结构,提高内存读写性能。
Vulkan
中可以在 GPU
设备上直接访问 Host
端与 Device
都可访问的内存。只不过我们经常将这部分内存数据拷贝至 GPU
专属内存中提高性能。
@@ -2747,8 +2747,8 @@ 资源与内存Vulkan 中创建一个资源( VkImage
或 VkBuffer
)仅仅表示一个资源符号,其内部仅有对于该资源的描述,没有确切的内存空间。所以在创建资源之后需要绑定一个内存,这样就给了该资源完整的一生。 ✧(๑≖ ◡ ≖๑)
在创建完资源后,需要绑定内存,这就需要创建内存,创建内存需要设置 VkMemoryAllocateInfo::allocationSize
内存分配的大小。但是此时该资源需要多大的内存呢? Vulkan
为我们提供了两个函数来获取相应资源需要的内存信息:
-vkGetBufferMemoryRequirements(…) 获取缓存资源需要的内存信息
-vkGetImageMemoryRequirements(…) 获取图片资源需要的内存信息
+vkGetBufferMemoryRequirements(...) 获取缓存资源需要的内存信息
+vkGetImageMemoryRequirements(...) 获取图片资源需要的内存信息
这两个函数的定义如下:
@@ -2826,8 +2826,8 @@ memoryTypeBits
资源与内存的绑定¶
现在我们知道如何创建资源和内存,并且能够获取到在哪个内存类型(堆)上分配内存。如此,我们就可以进行资源绑定了。大致流程如下:
-
- flowchart TB
+
+ flowchart TB
CreateResource["创建资源"]
GetMemoryRequirement["获取资源的内存要求"]
@@ -2837,7 +2837,7 @@ 资源与内存的绑定VkBuffer 的话,现在我们需要筛选要在哪一个内存类型(堆)上分配内存,如下:
+
假如说我们现在已经成功创建了一个 VkBuffer
的话,现在我们需要筛选要在哪一个内存类型(堆)上分配内存,如下:
VkDevice device = 逻辑设备句柄;
VkBuffer buffer = 之前成功创建的缓存资源句柄;
@@ -4028,7 +4028,7 @@ vkWaitForFences
-
+
@@ -4039,8 +4039,14 @@ vkWaitForFences
-
-
+
+
+
+
+