YoshikuniJujo on Nostr: #vulkan #Vulkan ...
#vulkan #Vulkan
シェーダーに(頂点以外の)データを渡す方法には、(すくなくとも)4通りある。
* Specialization Constant (特殊化定数)
* Push Constant
* Uniform Buffer Object
* Storage Buffer Object
だ。
Specialization Constantはひとつのプロセスのなかで値が変化しない場合に使う。Pipelineを作るときに決めてしまう値だ。
Push Constantは小さな値を手軽に使える。Specialization Constantと異なり、vkCmdPushConstantsで表示ごとに変化させることができる。
Uniform Buffer Objectは、それほど大きくないデータを渡すときに使える。Storage Buffer Objectより多少速いらしい。
Storage Buffer Objectはより大きなデータを渡すことができる。また、シェーダー側からの書き込みができる。
Published at
2024-05-09 03:06:41Event JSON
{
"id": "43923aaf85008a43b47439214f7638dc81e5998a2e48f2a7a9e8ea208e59e988",
"pubkey": "ef89ee45550f7377284d31e49fc57e5732ffc2b95a7bf35d0f1291d6fa278758",
"created_at": 1715216801,
"kind": 1,
"tags": [
[
"t",
"vulkan"
],
[
"t",
"Vulkan"
]
],
"content": "#vulkan #Vulkan\n\nシェーダーに(頂点以外の)データを渡す方法には、(すくなくとも)4通りある。\n\n* Specialization Constant (特殊化定数)\n* Push Constant\n* Uniform Buffer Object\n* Storage Buffer Object\n\nだ。\n\nSpecialization Constantはひとつのプロセスのなかで値が変化しない場合に使う。Pipelineを作るときに決めてしまう値だ。\n\nPush Constantは小さな値を手軽に使える。Specialization Constantと異なり、vkCmdPushConstantsで表示ごとに変化させることができる。\n\nUniform Buffer Objectは、それほど大きくないデータを渡すときに使える。Storage Buffer Objectより多少速いらしい。\n\nStorage Buffer Objectはより大きなデータを渡すことができる。また、シェーダー側からの書き込みができる。",
"sig": "6ab367918dd7966b30e0977c2f48d624c56686cd545d7234b1107288f3ca2638c03fb006a3140837486024e4879c8cc7a6f34c4db4278cf908342a9046533823"
}