Aqoole_Hateenaの技術日記

vulkan+raytraceで色々描いてます

glTFモーフィング描画(アルファテストあり)

glTFモーフィング(アルファテストあり)

アルファテストを用いて透明 or notを判定することにより、必要な部分だけを取り出してモーフィングアニメーションすることができた。

モデルの権利表記
https://sketchfab.com/3d-models/yard-grass-3a67e76decc849c694c228eb590a9902
ライセンス:CC Atribution
https://creativecommons.org/licenses/by/4.0/legalcode

レイトレーシングでのアルファテスト

Googleで調べてみると色々な人が書いているが、レイトレーシングでのアルファテストはanyhit shaderを用いることで達成できる。
anyhit shader内でアルファテストを行い、もし透明な部分にヒットしている場合には

ignoreIntersectionEXT

を用いて交差判定を無視する。
これを用いると、その判定は無視してrayは直進し直し、次の判定に進む。

注意点としては
Khronos Blog - The Khronos Group Inc
にある通り、ignoreIntersectionEXT()ではなくignoreIntersectionEXTを用いる。

instead of appearing as ignoreIntersectionEXT(); it is now simply ignoreIntersectionEXT; when used in a shader.

その他、any hit shaderの実装方法についてはnvidia様が作成しているvulkan raytracing tutorialが参考になる。
github.com