SceneKitのパーティクルをMetalでカスタムレンダリングする
SCNParticleSystemでつくったパーティクルを扱う一般的な手法としては、SCNViewを使い、sceneプロパティに渡すSCNSceneオブジェクトのrootNodeにaddParticleSystemするか、addParticleSystemしたSCNNodeオブジェクトをrootNodeにaddChildNodeする。で、SceneKitは内部でMetalを使っているので、これだけでも「Metalでレンダリングしている」とは言える。
これとは別に、SCNViewを使いたくないケースがある。既にMetalを使ったレンダリングパイプラインがあって、そこにひとつのパスとしてパーティクルエフェクトを挟み込みたい、そのシーンをビューに表示したいわけじゃない、みたいなケース。この場合は、SCNViewを使わず、SCNRendererを使うことになる。
以下、その「SCNRendererを使ってシーンをレンダリングする」実装。(そう、実はSCNParticleSystemが追加されたシーンごとレンダリングするだけなので、パーティクル云々は関係ない。記事タイトルとしては「SCNSceneをMetalでカスタムレンダリングする」や「SCNSceneをSCNViewを使わずSCNRendererでレンダリングする」の方がふさわしい)
SCNRenderer, SCNSceneのセットアップ
最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/