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のサンプルコードが超絶参考になったわ。
頭と尻尾はくれてやる! / 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
https://ringsbell.blog.fc2.com/tb.php/972-657c4073