SlideShare a Scribd company logo
1 of 22
はじめての
こんぴゅうとしぇえだあ
〜Compute Shaderに入門してみた話〜
沼
わたしはだあれ?
名前:めーぷる
職種:Unityエンジニア
Twitter:@MapleSyrupCS6
ブログ:めーぷるのおもちゃばこ
担当カラー:あおとぱんだ
こんぴゅうとしぇえだあってなに?
GPUを使用して単純処理を並列化し、大量の演算を
高速に実行するために用いられる。
→つまりCPUでやると重たい処理を軽くできるもの
こんぴゅうとしぇえだあってなに?
よく例えられるのが、1人の天才と100人の凡人という話
1人の天才(CPU) 100人の凡人(GPU)
こんぴゅうとしぇえだあってなに?
1人100おばあちゃん 1人1おばあちゃん
疲れたおばあちゃん(ただし100人いる)をおんぶするというだけのタスク
こんぴゅうとしぇえだあってなに?
1人100おばあちゃん 1人1おばあちゃん
こっちのほうが負荷がすくないし早い↓↓
こんぴゅうとしぇえだあってなに?
ただし...コンピュートシェーダーの向いてるタスクは
ふつうのシェーダーと一緒で、すべてが独立して計算可能なもの
→あたえられたデータのみでみちびきだせるもの
まわりのことを一切気にせずに自分だけで計算を終えれるもの
いま助けているおばあちゃんしかわ
からない。
さっき助けてたおばあちゃん?
だれそれ?
となりにいるおばあちゃん?
なにそれ?
さすが凡人じ
ゃ...
なにができるの?
凹さん edomさん
パーティクルを扱うものが多そう
https://twitter.com/edo_m18/status/12017522463099084
81?s=20
https://www.youtube.com/watch?v=G-
4k8Zur7zY&feature=youtu.be
なにができるの?
他にも
・物理シミュレーション
・流体シミュレーション
・群シミュレーション
などに使われたりする
なんでシェーダーっていうの?
描画をあつかうシェーダーっていうものがあって
それを扱うGPUの膨大な演算能力が目をつけられて
描画を抜いた「計算のためだけのシェーダー」がうまれた
なんでシェーダーっていうの?
コンピュートシェーダー
= GPGPUのためのシェーダー
なんでシェーダーっていうの?
GPGPU
(General-Purpose computing on Graphics Processing Units)
→GPUを画面描画以外の汎用的な計算につかうこと
こんぴゅうとしぇえだで作ってみた
https://youtu.be/1QxyXRxmdMo
こんぴゅうとしぇえだで作ってみた
2箇所コンピュートシェーダーを使った
1.パーティクルの動き
2.頂点の取得
こんぴゅうとしぇえだで作ってみた
1.パーティクルの動き
パーティクルをコンピュートシェーダーで扱う方法は
edomさんの記事を参考にした↓↓
Compute ShaderとGraphics.DrawMeshInstancedIndirectを使ったレンダリングを理解する
こんぴゅうとしぇえだで作ってみた
パーティクルがキューブの方
向に飛んでいくように計算
Particle.compute
こんぴゅうとしぇえだで作ってみた
2.頂点の取得
・範囲内の頂点からパーティクルを出したい
・範囲内の頂点の色を変えたい
→頂点はふつう数万から数十万ある
こんぴゅうとしぇえだで作ってみた
GetVertex.cs GetVertex.Compute
頂点シェーダー
Particle.cs
触れてるか
どうかの判
定
頂点カラー
の変更
頂点の格納
メッシュの
頂点データ
人オブジェ
クトの位置
触れてる頂
点の配列
Particle.compute
パーティクル
の計算
GetVertex.Compute
こんぴゅうとしぇえだで作ってみた
・まずはCPUで実装してみる
→慣れてないところからいきなりコンピュートシェーダーで実装しようと
すると混乱してくるので、C#でまず実装したい内容を書いてそれをコンピ
ュートシェーダーに書き換えるというやりかたが混乱しにくい
・あきらめないこころ
→だんだんわけがわからなくなってきますがあきらめないこころがだいじ
コツ?
どうやって入門するの?
おすすめ記事など
IKD-Memberさん
https://qiita.com/IKD-
Member/items/f424b3e53a6482ca
b884
edomさん
https://edom18.hateblo.jp/entry/2019/11/25/0
81232
IndeieVisualLabさん
https://twitter.com/mattatz/status/12
54353324423307264
どうやって入門するの?
めーぷるのおもちゃばこ
っていうブログおすすめ
【Unity】Compute Shader入門①
〜オブジェクトを実際に動かしてみて完全に理解〜
https://www.wwwmaplesyrup-cs6.work/entry/MapleComputeTutorial1
おわり

More Related Content

What's hot

ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -
ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -
ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -Takehito Gondo
 
AndroidでARの夢を再び 〜ARCoreの導入から応用まで
AndroidでARの夢を再び 〜ARCoreの導入から応用までAndroidでARの夢を再び 〜ARCoreの導入から応用まで
AndroidでARの夢を再び 〜ARCoreの導入から応用までKenichi Takahashi
 
3次元計測とフィルタリング
3次元計測とフィルタリング3次元計測とフィルタリング
3次元計測とフィルタリングNorishige Fukushima
 
Pythonのシグナル処理
Pythonのシグナル処理Pythonのシグナル処理
Pythonのシグナル処理Atsuo Ishimoto
 
中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~ProjectAsura
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するTakahito Tejima
 
Assembly Definition あれやこれ
Assembly Definition あれやこれAssembly Definition あれやこれ
Assembly Definition あれやこれNakanoYosuke1
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編infinite_loop
 
Teslaにおけるコンピュータビジョン技術の調査
Teslaにおけるコンピュータビジョン技術の調査Teslaにおけるコンピュータビジョン技術の調査
Teslaにおけるコンピュータビジョン技術の調査Kazuyuki Miyazawa
 
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編Unity Technologies Japan K.K.
 
出張ヒストリア ブループリントを書くにあたって大切なこと
出張ヒストリア ブループリントを書くにあたって大切なこと出張ヒストリア ブループリントを書くにあたって大切なこと
出張ヒストリア ブループリントを書くにあたって大切なことhistoria_Inc
 
強化学習 DQNからPPOまで
強化学習 DQNからPPOまで強化学習 DQNからPPOまで
強化学習 DQNからPPOまでharmonylab
 
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -historia_Inc
 
優れた問いを見つける(中京大学講演)
優れた問いを見つける(中京大学講演)優れた問いを見つける(中京大学講演)
優れた問いを見つける(中京大学講演)cvpaper. challenge
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作るtorisoup
 
20190131 lidar-camera fusion semantic segmentation survey
20190131 lidar-camera fusion semantic segmentation survey20190131 lidar-camera fusion semantic segmentation survey
20190131 lidar-camera fusion semantic segmentation surveyTakuya Minagawa
 
【DL輪読会】マルチエージェント強化学習における近年の 協調的方策学習アルゴリズムの発展
【DL輪読会】マルチエージェント強化学習における近年の 協調的方策学習アルゴリズムの発展【DL輪読会】マルチエージェント強化学習における近年の 協調的方策学習アルゴリズムの発展
【DL輪読会】マルチエージェント強化学習における近年の 協調的方策学習アルゴリズムの発展Deep Learning JP
 

What's hot (20)

ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -
ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -
ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -
 
AndroidでARの夢を再び 〜ARCoreの導入から応用まで
AndroidでARの夢を再び 〜ARCoreの導入から応用までAndroidでARの夢を再び 〜ARCoreの導入から応用まで
AndroidでARの夢を再び 〜ARCoreの導入から応用まで
 
3次元計測とフィルタリング
3次元計測とフィルタリング3次元計測とフィルタリング
3次元計測とフィルタリング
 
Pythonのシグナル処理
Pythonのシグナル処理Pythonのシグナル処理
Pythonのシグナル処理
 
中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
 
Assembly Definition あれやこれ
Assembly Definition あれやこれAssembly Definition あれやこれ
Assembly Definition あれやこれ
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
 
UE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろうUE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろう
 
Teslaにおけるコンピュータビジョン技術の調査
Teslaにおけるコンピュータビジョン技術の調査Teslaにおけるコンピュータビジョン技術の調査
Teslaにおけるコンピュータビジョン技術の調査
 
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編
 
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
 
出張ヒストリア ブループリントを書くにあたって大切なこと
出張ヒストリア ブループリントを書くにあたって大切なこと出張ヒストリア ブループリントを書くにあたって大切なこと
出張ヒストリア ブループリントを書くにあたって大切なこと
 
強化学習 DQNからPPOまで
強化学習 DQNからPPOまで強化学習 DQNからPPOまで
強化学習 DQNからPPOまで
 
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow) UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
 
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
 
優れた問いを見つける(中京大学講演)
優れた問いを見つける(中京大学講演)優れた問いを見つける(中京大学講演)
優れた問いを見つける(中京大学講演)
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
 
20190131 lidar-camera fusion semantic segmentation survey
20190131 lidar-camera fusion semantic segmentation survey20190131 lidar-camera fusion semantic segmentation survey
20190131 lidar-camera fusion semantic segmentation survey
 
【DL輪読会】マルチエージェント強化学習における近年の 協調的方策学習アルゴリズムの発展
【DL輪読会】マルチエージェント強化学習における近年の 協調的方策学習アルゴリズムの発展【DL輪読会】マルチエージェント強化学習における近年の 協調的方策学習アルゴリズムの発展
【DL輪読会】マルチエージェント強化学習における近年の 協調的方策学習アルゴリズムの発展
 

はじめてのこんぴゅうとしぇえだあ〜ComputeShaderに入門してみた話〜

Editor's Notes

  1. 過去のデータとかを使うものはダメで、あたえられたデータのみでみちびきだせるもの(となりのピクセルとかって定数にできない、そういうのが絡んでくると向いてない) まわりのことを一切気にせずに自分だけで計算を終えれるもの
  2. じゃあ具体的にどういうことができるの?
  3. じゃあ具体的にどういうことができるの?
  4. GPU(グラフィックス・プロセッシング・ユニット)はもともと画面の描画に最適化されたプロセッサーでした。ディスプレイの各ピクセルの色を計算するために大量のデータに対して並列に単純な計算ができるよう設計されていたためです。近年になってGPUの演算性能の向上に伴い、GPUを画面描画以外の汎用的な計算に使おうという流れが出てきました。これをGPGPU(ジーピージーピーユー)といいます。現在、GPGPUは物理シミュレーションや機械学習、暗号通貨の発掘などさまざまな用途で計算に使われています。 コンピュートシェーダーはGPGPUのためのシェーダーで、GPUの演算性能を活かして高速に数値計算をするために追加されました。一般的な3DグラフィックスAPIの他のシェーダーと比較すると次のような用途の違いがあります。
  5. そのGPGPUを行うために作られた書き方の様式のひとつがコンピュートシェーダー もともとはピクセルを扱うためのGPUを使用することから、名残でシェーダーという名前がついている? コンピュートシェーダーはGPGPUのためのシェーダーで、GPUの演算性能を活かして高速に数値計算をするために追加されました。
  6. GPU(グラフィックス・プロセッシング・ユニット)はもともと画面の描画に最適化されたプロセッサーでした。ディスプレイの各ピクセルの色を計算するために大量のデータに対して並列に単純な計算ができるよう設計されていたためです。近年になってGPUの演算性能の向上に伴い、GPUを画面描画以外の汎用的な計算に使おうという流れが出てきました。これをGPGPU(ジーピージーピーユー)といいます。現在、GPGPUは物理シミュレーションや機械学習、暗号通貨の発掘などさまざまな用途で計算に使われています。 コンピュートシェーダーはGPGPUのためのシェーダーで、GPUの演算性能を活かして高速に数値計算をするために追加されました。一般的な3DグラフィックスAPIの他のシェーダーと比較すると次のような用途の違いがあります。
  7. こういう悪役いますよね、通ったとこの花全部枯らしてくみたいな そもそも頂点って数万から数十マンあるよね→処理負荷が高い
  8. IndieVisualLabいま無料配布されてまっせ