頭と尻尾はくれてやる!

iOSアプリなどの開発日記です


Metalで二つのshaderを使う

Metalのお話ね。あ、昨日の早朝のWWDC keynoteでMetal for OS Xなるものが発表されたみたいだけど、ここでやってるのはiOSね。

頭と尻尾はくれてやる! / SwiftでBulletはやめにする
↑そんなわけでSwiftではなくObjective-CでMetalを扱う練習をやってるんだけど、ようやくSwiftでやってたことができてきたかなーってとこ。


↑例えばこれはPhong shader。


で、本題なんだけど、上のPhong shaderで描いたロボットのところに雪を降らせてみるってのをやろうとしたのよ。
雪ってのはparticleを使う、、、ってのはAPPLEのサンプルコードもあるしまあOKなのよ。


↑particleを使うとこんな感じ。ちなみにこれはまだSwiftだったけど。


このparticleを使う場合のshaderとロボット用のPhong shaderは当然別なので MTLRenderPipelineDescriptor オブジェクトもそれぞれ作ることになる。従ってここから作られる MTLRenderPipelineState オブジェクトも二つある。でも、MTLRenderPassDescriptor オブジェクトは一つでいい(最初これも二つ作って変なことになってたわ)。




↑ということで無事表示されたロボットと雪。

二つのshaderを扱う場合、MetalDeferredLightingってAPPLEのサンプルコードが超絶参考になったわ。
スポンサーサイト




<< Metalのブレンディング  TopPage  SwiftでBulletはやめにする >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
https://ringsbell.blog.fc2.com/tb.php/972-657c4073




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.