01b. The-Forge 入門教程 - Vulkan
上一篇繪制三角形的教程作為系列第一篇教程,會(huì)稍微詳細(xì)一些。但是這一篇教程開始,已經(jīng)出現(xiàn)過(guò)的代碼就不會(huì)再贅述。在繪制三角形之外,我個(gè)人覺(jué)得The-Forge還有一些細(xì)節(jié)可以講解,但是和渲染關(guān)系又不是很大,所以放在第01講和02講之間,作為補(bǔ)充知識(shí)點(diǎn)。以實(shí)用技巧為主,大家也可以不去過(guò)分深究其原理。本節(jié)的內(nèi)容是如何將項(xiàng)目由DX切換成vulkan。這樣,一些對(duì)DX12不是很熟,但是對(duì)vulkan更加熟悉一些的朋友,在使用渲染debugger的時(shí)候可以更加順手一些。
如果用The-Forge提供的Demo,其實(shí)很簡(jiǎn)單,只要將運(yùn)行配置由DebugDx切換到DebugVk,再編譯運(yùn)行,就可以將渲染API由DX12切換到Vulkan。但是,如果是自己的工程,就需要做一些配置。
首先需要VS構(gòu)建DebugVk版本的The-Forge
將library path由?The-Forge\Examples_3\Unit_Tests\PC Visual Studio 2017\x64\DebugDx 切換到?The-Forge\Examples_3\Unit_Tests\PC Visual Studio 2017\x64\DebugVk
依賴庫(kù)去掉RendererDX12.lib,添加?RendererVulkan.lib,SpirvTools.lib,vulkan-1.lib
將宏定義中的?DIRECT3D12 切換為?VULKAN
到此,構(gòu)建運(yùn)行即可。c++代碼本身不需要做任何改動(dòng)。
不過(guò),運(yùn)行時(shí)會(huì)發(fā)現(xiàn)shader無(wú)法編譯,這是因?yàn)門he-Forge默認(rèn)要求Vulkan下使用GLSL而非HLSL,你當(dāng)然可以選擇將shader用GLSL重寫一遍,不過(guò)The-Forge也提供了一個(gè)更好的選擇,將shader從HLSL轉(zhuǎn)換為GLSL
在實(shí)際開發(fā)中,我個(gè)人也更偏向于使用HLSL而非GLSL
Common_3\ThirdParty\OpenSource\hlslparser\Parser\Parser.sln
編譯并允許,可以得到HLSL到GLSL/MSL的轉(zhuǎn)換器,支持webUI和命令行兩種使用方式,本文先以webUI為例


將HLSL的vs和ps分別轉(zhuǎn)換為GLSL的VS和FS即可。并且,相比主流的HLSLcc,The-Forge生成的GLSL/MSL,可讀性意外的非常不錯(cuò)。
將轉(zhuǎn)換后的GLSL代碼放到<exe路徑>/shaders/vk下,編譯運(yùn)行程序,可以得到結(jié)果
