vulkan在shader中打log
VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT
? ? ? ?在較新的vulkan版本中,添加了對(duì)debug_printf的支持,也就是說(shuō),現(xiàn)在可以在shader中打log了。
開(kāi)啟vulkan debug_printf
? ? ? ?debug_printf在vulkan中是VALIDATION_FEATURE,也就是說(shuō)可以通過(guò)和其他驗(yàn)證層一樣的方式來(lái)開(kāi)啟和關(guān)閉,非常方便。
注意,vulkan中開(kāi)啟debug_printf需要同時(shí)開(kāi)啟device擴(kuò)展VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME

(推薦)使用Vulkan Configurator
? ? ? ?在最近的vulkan sdk中,新添加了名為Vulkan Configurator的工具,可以很方便的在UI界面下配置vulkan的validation layer
使用環(huán)境變量
? ? ? ?和vulkan舊版本相兼容,debug_printf也可以通過(guò)配置環(huán)境變量開(kāi)啟
VK_LAYER_ENABLES=VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT
? ? ? ?通過(guò)設(shè)置環(huán)境變量VK_LAYER_ENABLES到VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT來(lái)全局開(kāi)啟debug_printf功能
在代碼中配置
? ? ? ?vulkan在代碼中配置debug_printf會(huì)稍微復(fù)雜一些,但是可以對(duì)每個(gè)程序?qū)崿F(xiàn)更精細(xì)的控制

shader中打log
GLSL

HLSL

GLSL中不要忘記
#extension GL_EXT_debug_printf : enable
,HLSL dxc編譯器如果開(kāi)啟優(yōu)化編譯器會(huì)crash,現(xiàn)在如果要在hlsl打log,請(qǐng)先關(guān)閉優(yōu)化
dxc -spirv -T vs_6_0 -E vert hlsl/shader.hlsl -Fo vert.spv -O0
最終效果
