![見出し画像](https://assets.st-note.com/production/uploads/images/51100524/rectangle_large_type_2_a598ab12a225d89680db58999375949a.jpeg?width=1200)
日曜プログラム Vulkan勉強中
ってことでいよいよ描画のライブラリをOpenGLからVulkanに変更すべく勉強中。総本山はこちら。
Windows/Linux/Android に対応できるよう。MacOS/iOSはむにゃむにゃしないとダメみたい。
ひとまずはいわゆる赤本となるのか。悩み中。
2016年発表以来5年経つけど日本語の書籍は皆無の模様。CG科の学生さんたちビジネスチャンスなのでは?(BOOTHにはいくつかある模様)
チュートリアルはとりあえず↑このサイトを読んでいくのがよさそう。
VulkanSDKに、GLFWとGLMを持ってきて、pngのローダーとしてstb_image.h、objのローダーとしてtiny_obj_loader.h、そして最後のmultisamplingのサンプルプログラムを足せば、一通り動くものが出来上がります。
サンプルデータとしては、おなじみsketchfabよりviking roomさんを使用しているようです。
これから再びVulkan版のglTF2のViewerと粒子プログラムを作成しようとしているとこで、様々な疑問が沸き起っているところ。
◆GLSLのサブルーチンは使えるのか?
Entry Point は複数設定できると書いてあるけど、結局は1個しか設定できないよう
様々といいつつまだ一個しかなかった。初期設定とかすさまじく多すぎてよくわかんないのが実際のところ。
とりあえずEntry Point の名前を変える方法のメモ。
"$(VK_SDK_PATH)\Bin\glslangValidator.exe" -V "%(Identity)" -e mainx --sep main -o "$(SolutionDir)shaders\%(Filename).spv"
glslangValidator で、-e alternative --sep main とすると、シェーダー側のEntry Point が alternative に変わる。ほんで、
VkPipelineShaderStageCreateInfo vssi;
vssi.pName = "alternative";
にてOK。でもどうせ複数設定できないので意味ない。じゃあなんで変えれるようにしてるんだよ!(笑)
HLSLなら複数のソースからバイトコンパイルしたものをmergeできるようなことも書いてあるけど、それじゃ意味ないだろ!