Aqoole_Hateenaの技術日記

vulkan+raytraceで色々描いてます

モデルの描画(Android + Ray Tracing)

モデルのレンダリング

f:id:Aqoole_Hateena:20220416224801p:plain
2
f:id:Aqoole_Hateena:20220416224732p:plain
1

思ったのと違うが、stbi_loadが使えない影響でstbi_load_from_memoryにしているからだろうか?
ただ部位ごとにはtextureで区切れているので、今はこれでよしとしようか。
ガラスで透過した絵が簡単に描けるところもray tracingの強み。

お借りしているモデルはこちら
https://skfb.ly/6S9UN
LICENSE Creative Commons Attribution
https://creativecommons.org/licenses/by/4.0/legalcode

今後の課題

単純な配列をshaderに渡せなかったので、今はmtl(マテリアル)の区切り位置のoffsetを決め打ちでハードコーディングしているので、shaderに渡せるようにしたい。
そのために、

#extension GL_EXT_scalar_block_layout : enable
#extension GL_EXT_nonuniform_qualifier : enable
#extension GL_GOOGLE_include_directive : enable
layout(binding = 3, set = 0, scalar) buffer Vertices {Vertex3D v[];} vertices[];
layout(binding = 4, set = 0) buffer Indices {uint i[];} indices[];

このあたりの、拡張機能を用いてのshaderにbufferを渡している部分の調査と理解が必要。

オブジェクトが増えてくると、descriptor setとかlayoutとかのvulkan側のコーディングが大変になってくるので、何か工夫したい。
pipelineを分けるとか?