Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
画像処理から始めるコンピュートシェーダ / Introduction to Image Pro...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
sotanmochi
September 23, 2019
Technology
2.8k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
画像処理から始めるコンピュートシェーダ / Introduction to Image Processing using Compute Shader
UniteEve2のLT登壇資料
sotanmochi
September 23, 2019
More Decks by sotanmochi
See All by sotanmochi
URP/HDRPを使ったVRM対応アプリの開発方法 / VRM Importer Extension
sotanmochi
0
1.8k
Diminished Reality 入門 / Introduction to Diminished Reality
sotanmochi
2
9.7k
Unityでテクスチャにお絵描きするための線分描画アルゴリズムの話 / Line drawing algorithm using fragment shader
sotanmochi
2
4.1k
MagicOnionでマルチプレイゲームを作ってみる / Introduction to developing multiplayer games using MagicOnion
sotanmochi
1
2.7k
SmartRig Bipedを使ってみよう / Introduction to SmartRig Biped
sotanmochi
0
3.6k
VRMを使ったAR/MR撮影ツールを試作開発してみた話 / Prototype of Mobile Mixed Capture
sotanmochi
0
1.9k
リアルとバーチャルの融合によって越えられない壁を壊す / TechCafe vol.8 LT
sotanmochi
0
300
ユニティちゃんと鬼ごっこができるMRゲームと戦術位置解析システム / Mixed reality game and tactical position analysis
sotanmochi
0
760
Research modeで取得した深度(Depth)データを可視化する / Depth data visualization for Hololens RS4 Research mode
sotanmochi
0
220
Other Decks in Technology
See All in Technology
Don't write the architecture only in the prompt.
neohsu
0
280
キヨさん67歳 AIコーディングエージェント物語
happysamurai294
0
140
Snowflake でできることが増えたら、 ABAC が必要になった
kaeton
0
130
Adversary Infrastructure Hunting101
disconinja
0
180
"計画的無茶振り"を通してAIネイティブ世代の新人を育てる
subroh0508
1
130
Vue で書く 空間コンピューティング、TresJS と WebXR を使ったXR デバイスのフロントエンド開発
hiranuma
0
140
基本から分かる!AWSセキュリティ運用の考え方と任せ方
cmusudakeisuke
1
280
バイブコーディングの特徴と「コケて直す」ループ
happysamurai294
0
130
LLMの知識とAIエージェント
happysamurai294
0
140
[re:Invent2026事前勉強会(有志開催)]続きは、ラスベガスの廊下で / continue-in-the-vegas-hallway
sh_fk2
0
450
外国人エンジニアがVueプロトタイプで仕様を合わせている話 / Vue Fes Japan 2026 LT
eluwing
0
330
AI AgentによるEmbedded SREの取り組み
tgidgd
1
300
Featured
See All Featured
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Navigating Team Friction
lara
192
16k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
440
Fireside Chat
paigeccino
43
4.1k
HDC tutorial
michielstock
2
990
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
750
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
410
Transcript
2019/09/23 Soichiro Sugimoto sotan (@sotanmochi) 画像処理から始めるコンピュートシェーダ
2 自己紹介 杉本 宗一郎(Soichiro Sugimoto) sotan (@sotanmochi) xR系Unityエンジニア xRに関する応用研究・プロトタイプ開発 ・DR(Diminished Reality:隠消現実感)の研究
・VR/ARのアプリケーション開発
コンピュートシェーダで画像処理を実装した例 カメラ画像をイラスト風に変換するフィルター(試作開発中) 3 Before After 動画1:https://youtu.be/gxmsS83Uens 動画2:https://youtu.be/5ffZ56EAlXA
コンピュートシェーダ GPUをグラフィックス描画以外の汎用的な目的で活用できるようにする仕組み (GPGPUのための仕組み) 大量のデータを並列処理する汎用的なプロセッサとしてGPUを活用できる 通常のレンダリングパイプラインと切り離された独立したシェーダ (ラスタライザなどのグラフィックス処理が走らない) HDRPのポストエフェクトやVisual Effect Graphのパーティクルに使われている 4
コンピュートシェーダで画像処理を実装する ピクセル単位の並列化によって画像処理を高速化 5 逐次処理のイメージ 並列処理のイメージ
コンピュートシェーダで画像処理を実装する 基本的な考え方 ・全体の処理の流れはCPU側で実装 ・ピクセルごとの処理(データを並列処理する部分)はGPU側で実装 ・画像全体に対する処理の終了を待つ箇所はカーネルを分けて実装 6
実装例のコードを見ながら 基本的な考え方やポイントを確認していきます (※アルゴリズムの中身は気にしない) 7
コンピュートシェーダで画像処理を実装する カメラ画像をイラスト風に変換するフィルター処理の実装例 8 バイラテラルフィルタ エッジ検出 乗算(BF and エッジ) BF+エッジ+コントラスト調整 バイラテラルフィルタ
エッジ検出(ソーベルフィルタ) 乗算(BF and エッジ) コントラスト調整(トーンカーブ)
コンピュートシェーダで画像処理を実装する 全体の処理の流れはCPU側(C#スクリプト)で実装 9 バイラテラルフィルタ エッジ検出(ソーベルフィルタ) 乗算(BF and エッジ) コントラスト調整(トーンカーブ) フィルタ処理を順番に呼び出している
コンピュートシェーダで画像処理を実装する 全体の処理の流れはCPU側(C#スクリプト)で実装 10 バイラテラルフィルタ エッジ検出(ソーベルフィルタ) 乗算(BF and エッジ) コントラスト調整(トーンカーブ) フィルタ処理を順番に呼び出している
処理の複雑さの都合により 詳細なコードは 実際の処理と逆順で見ていきます
コンピュートシェーダで画像処理を実装する 全体の処理の流れはCPU側(C#スクリプト)で実装 11 バイラテラルフィルタ エッジ検出(ソーベルフィルタ) 乗算(BF and エッジ) コントラスト調整(トーンカーブ) データをセットした後、コンピュートシェーダ(指定したカーネル)を実行する
コンピュートシェーダで画像処理を実装する ピクセルごとの処理(データを並列処理する部分)はGPU側で実装 12 バイラテラルフィルタ エッジ検出(ソーベルフィルタ) 乗算(BF and エッジ) コントラスト調整(トーンカーブ) 1つのグループにつき16x16=256並列で
実行される(並列数の上限はデバイスによる) 1つのピクセルに対する処理
コンピュートシェーダの並列処理のモデル 画像出典: Direct Compute – Bring GPU Computing to the
Mainstream https://www.nvidia.com/content/GTC/documents/1015_GTC09.pdf 13
コンピュートシェーダの並列処理のモデル 画像出典: Direct Compute – Bring GPU Computing to the
Mainstream https://www.nvidia.com/content/GTC/documents/1015_GTC09.pdf 14 1つのグループにつき THREADS_X × THREADS_Y の並列数で 実行される(並列数の上限はデバイスによる)
コンピュートシェーダで画像処理を実装する 全体の処理の流れはCPU側(C#スクリプト)で実装 15 バイラテラルフィルタ エッジ検出(ソーベルフィルタ) 乗算(BF and エッジ) コントラスト調整(トーンカーブ) Thread
Groups X = 80 Thread Groups Y = 45 指定したスレッドグループ数でコンピュートシェーダ(カーネル)を実行する 1つのグループにつき16x16=256並列で実行される時 ・X方向のスレッド数:16 ・Y方向のスレッド数:16 1280x720の解像度の画像全体を処理するために必要な グループ数 ・X方向:1280 / 16 = 80 ・Y方向: 720 / 16 = 45
コンピュートシェーダで画像処理を実装する ピクセルごとの処理(データを並列処理する部分)はGPU側で実装 16 バイラテラルフィルタ エッジ検出(ソーベルフィルタ) 乗算(BF and エッジ) コントラスト調整(トーンカーブ) 全てのスレッドの中から
実行中のスレッドを識別できるID (画像のピクセル位置に相当) 1つのピクセルに対する処理
コンピュートシェーダで画像処理を実装する 画像全体に対する処理の終了を待つ箇所はカーネルを分けて実装 (グローバル同期(異なるスレッドグループ間の同期)が必要なため) 17 バイラテラルフィルタ エッジ検出(ソーベルフィルタ) 乗算(BF and エッジ) コントラスト調整(トーンカーブ)
エッジ検出処理では、グレースケールに変換後、フィルタ処理を実行している
コンピュートシェーダで画像処理を実装する 画像全体に対する処理の終了を待つ箇所はカーネルを分けて実装 (グローバル同期(異なるスレッドグループ間の同期)が必要なため) 18 バイラテラルフィルタ エッジ検出(ソーベルフィルタ) 乗算(BF and エッジ) コントラスト調整(トーンカーブ)
BFの反復はCPU側で制御 データをセットして実行 × N回
コンピュートシェーダで画像処理を実装する カメラ画像をイラスト風に変換するフィルター処理の実装例 19 バイラテラルフィルタ エッジ検出 乗算(BF and エッジ) BF+エッジ+コントラスト調整 バイラテラルフィルタ
エッジ検出(ソーベルフィルタ) 乗算(BF and エッジ) コントラスト調整(トーンカーブ)
まとめ コンピュートシェーダはGPUを汎用的な並列処理に活用できる仕組み ピクセル単位の並列化によって画像処理を高速化できる 基本的な考え方 ・全体の処理の流れはCPU側で実装 ・ピクセルごとの処理(データを並列処理する部分)はGPU側で実装 ・画像全体に対する処理の終了を待つ箇所はカーネルを分けて実装 20
ありがとうございました
Appendix
コンピュートシェーダを始めるための参考資料 Unity Graphics Programming vol.1 第2章 ComputeShader入門 https://indievisuallab.stores.jp/items/59edf11ac8f22c0152002588 Hello, DirectCompute
https://www.slideshare.net/dasyprocta/hello-direct-compute Direct Compute – Bring GPU Computing to the Mainstream https://www.nvidia.com/content/GTC/documents/1015_GTC09.pdf Compute Shader Magic ~あなたの描画エンジンでコンピュートシェーダを活用するアイデア(CEDEC 2013) https://cedil.cesa.or.jp/cedil_sessions/view/1002 23
コンピュートシェーダで画像処理を実装? なぜコンピュートシェーダを使う? 画像処理ならピクセルシェーダ(フラグメントシェーダ)で実装できるのでは? 24
コンピュートシェーダの利点 コンピュートシェーダを使った演算にはピクセルシェーダに比べて 以下のような利点がある ・出力先リソースの任意の位置に書き込み可能 ・データ共有やスレッド間同期のメカニズム ・指定した数のスレッドを明示的に起動でき、パフォーマンスを最適化できる ・描画パイプラインと無関係なので、コードの保守が簡単 (参考:「DirectX11 3Dプログラミング [改訂版]
第2部21章(p.332)」) 25
コンピュートシェーダで画像処理を実装する 画像全体に対する処理の終了を待つ箇所はカーネルを分けて実装 (グローバル同期(異なるスレッドグループ間の同期)が必要なため) 26 バイラテラルフィルタ エッジ検出(ソーベルフィルタ) 乗算(BF and エッジ) コントラスト調整(トーンカーブ)
エッジ検出処理では、グレースケールに変換後、フィルタ処理を実行している
コンピュートシェーダで画像処理を実装する ピクセルごとの処理(データを並列処理する部分)はGPU側で実装 27 バイラテラルフィルタ エッジ検出(ソーベルフィルタ) 乗算(BF and エッジ) コントラスト調整(トーンカーブ) 周囲のピクセル値を使って計算
コンピュートシェーダで画像処理を実装する 画像全体に対する処理の終了を待つ箇所はカーネルを分けて実装 (グローバル同期(異なるスレッドグループ間の同期)が必要なため) 28 バイラテラルフィルタ エッジ検出(ソーベルフィルタ) 乗算(BF and エッジ) コントラスト調整(トーンカーブ)
BFの反復はCPU側で制御 データをセットして実行 × N回
コンピュートシェーダで画像処理を実装する ピクセルごとの処理(データを並列処理する部分)はGPU側で実装 29 周囲のピクセル値を使って計算
END