SlideShare ist ein Scribd-Unternehmen logo
1 von 104
ポストフィルタ論
株式会社ロジカルビート
代表取締役 / 堂前 嘉樹
自己紹介
自己紹介
株式会社ロジカルビートの代表取締役・プログラマー。
2016年5月に法人設立。新横浜にあります。
ゲームプログラミング系の会社です。
スタッフ数6名。(2017/10)
個人としてはグラフィック系のプログラムが主戦場。
関連作は「いけにえと雪のセツナ」(スクウェア・エニックス)など。
書籍に「ゲームを動かす技術と発想」「ゲームを動かす数学・物
理」がある。
本日のテーマ
今回は
ポストフィルタについて
ポストフィルタがテーマ
今回はポストフィルタについて話を進めます。
「イメージエフェクト」「ポストエフェクト」など呼び名がたくさんありま
すが、「ポストフィルタ」で進めます。
3Dで描画したものを画像加工して、絵に様々な効果を加える
処理のことを指します。
2Dベースで処理。
Photoshopの「フィルタ」みたいなものだと思ってください。
Unityでの
簡単な使い方
少し前までのImage Effects導入方法
最近のImage Effects導入方法(2017から?)
Unityでの簡単な使い方
Unityにはいくつかポストフィルタが用意されています。
プロジェクトへの追加は容易。
Cameraに各ポストフィルタを追加することによって、簡単に利
用することが出来ます。
最近ではPost Processing Stackというのもあるらしいです。
触ったことなく未検証です。。。
中身を
見てみよう!
void OnRenderImage (RenderTexture source, RenderTexture
destination)
https://docs.unity3d.com/ja/current/Manual/ExecutionOrder.html
OnRenderImage
Camera内の通常の描画
Unityでの処理のされ方
サンプルとしてBloomのスクリプトを見てみます。
OnRenderImageでフックを掛けてCameraに対する絵をもらい、
その中で加工する流れ。
イベント関数順でも描画後を意味する。
Cameraにコンポーネントを着けるのは自然の流れ。
もう少し
詳しく見る
Temp
(一時バッファ)
Default Target
(表示バッファ)
テクスチャとして利用!
Unityでの描画処理
今回はColor Correction Curvesを例に取ります。
Cameraに映る3Dオブジェクトを一時的なRender Textureに描
画し、それをテクスチャとして、Default Targetに描く。
CameraのTarget Textureの項目がNoneの場合、通常はDefault
Targetに描画するが、OnRenderImageを含むコンポーネント(ポ
ストフィルタ)がある場合は内部的に一時バッファを利用する模様。
非常にシンプル!
ただし
注意点がひとつ
高負荷に
なりやすい!!
理由その1
フルカラーフォーマット
主体
Temp
(一時バッファ)
Default Target
(表示バッファ)
テクスチャとして利用!
ARGB32
理由その2
参照&描画ピクセル
数が多い
1280
720
Temp
(一時バッファ)
Default Target
(表示バッファ)
テクスチャとして利用!
1280×720
1280×720
いくつか重ねると
負荷も高くなる
ポストフィルタの負荷
ポストフィルタは総じてGPU負荷が高くなる!
CPU負荷はそんなにかからない。ピクセル負荷高し。
描いた画像をテクスチャとして利用するので、必然的にフルカ
ラー形式のテクスチャを扱うことになる。
モデルでは圧縮テクスチャを使えるが、そういうわけにいかない。
しかもサイズが大きい!
フレームの10%〜20%くらいは取られると考える。
対策
高負荷なピクセル描画を
少なくする
ぼかし処理
縮小コピー
合成
4→2に変更してみる
ぼかし処理
縮小コピー
合成
パラメータが
描画回数に関わる
こともある
縮小コピー ぼかし
わざわざ
縮小コピーを
挟むのは何故?
ぼかし
複数回テクスチャを参照する
(1ピクセル描くのに4回参照)
大きいテクスチャを参照すると
高負荷になりがち!
縮小コピー ぼかし
コピーは1ピクセルで
テクスチャを1回参照するだけ
4回参照するが、
小さいテクスチャから読み取っ
ているのでマシ
描画回数とピクセルの質
ポストフィルタを軽くする単純な指標として、描画回数を減らす
というのが挙げられる。
非常にわかりやすい。
しかし、負荷を下げるためにあえて単純コピーなどを行う方が
いい場合もある。
大きいテクスチャから読み取ると(テクスチャキャッシュの関係か
ら)遅くなるので。
絵的な質も上がることがある。
ブルーム
カラーコレクション
Temp
Temp
Temp
Default Target
ぼかし作成
ブルーム合成
カラーコレク
ション加工
描画を
減らせないか?
Temp
Temp
Temp
Default Target
ぼかし作成
ブルーム合成
カラーコレク
ション加工
Temp
Temp
Temp
Default Target
ぼかし作成
ブルーム合成
&
カラーコレク
ション加工
処理を統合する
スクリプト&シェーダを
自作する!!
処理の統合
複数のポストフィルタを掛け合わせると、無駄が生じやすい。
標準のものだとコンポーネントが分かれているため。
頑張っているとは思うが・・・。
とことん突き詰めると、ポストフィルタを自作するという選択肢も
考えなければならない。
用意されているものを使うよりもある意味、管理はしやすい。
もう少し
こだわってみる
Temp
(一時バッファ)
Default Target
(表示バッファ)
テクスチャとして利用!
1280×7201280×720
1280×720
3D部分は
解像度を減らしたい!
RenderTexture
(自前で用意)
Default Target
(表示バッファ)
テクスチャとして利用!
960x540960x540
1280×720
OnPostRenderで処理!!
(OnRenderImageはクセがある)
更に突き詰める
OnRenderImageを利用すると手軽だが、内部でどう処理され
ているか把握しづらい。
弊社ブログを参照:http://logicalbeat.jp/blog/601/
RenderTextureを自前管理する必要があるが、
OnPostRenderで処理する方が柔軟性が高くなるので、個人的
に強くオススメします。
第2部
ピクセルを突き詰める
バイリニア
(Bilinear)
キチンと
理解していますか?
( x, y ) ( x+1, y )
( x+1, y+1 )( x, y+1 )
A B
C D
( a, b )
( x, y ) ( x+1, y )
( x+1, y+1 )( x, y+1 )
A B
C D
( a, b )
R = lerp( lerp(A,B,a-x), lerp(C,D,a-x), b-y )
※lerp(a,b,c) : c=0ならaになり、c=1ならbになる関数
( x, y ) ( x+1, y )
( x+1, y+1 )( x, y+1 )
A B
C D
各カラーから1/4ずつもらう
(4カラーの平均になる)
バイリニア(Bilinear)の復習
テクスチャを参照する時の、一番シンプルなカラーの補間方法。
参照するポイントの近接4ピクセルを探り、その距離から線形補
間でカラーを算出する。
参照点がピクセルの中央だった場合はそのカラーになる。
参照点が4ピクセルの中心だった場合は、各カラーから4等分した
カラーが与えられる。(平均になる)
バッファコピー
絵を別のバッファに
描き移すことがある
等倍コピー
Texture Render Target
そのままコピーされる!
縦横が1/2のバッファにコピー
Texture Render Target
カラーの平均値としてコピー
縦横が1/4のバッファにコピー
Texture Render Target
カラーの欠損が発生してしまう
速いが画質にムラが出る
綺麗だが手間がかかる
バッファコピーとバイリニア
ポストフィルタではバッファをコピーするのが基本処理となる。
その際、同サイズのこともあれば縮小コピーなどもある。
コピーの際、どのピクセルを取ってきているかというのをきちん
と理解しておくと良い。
更にバイリニアがどう活きてくるか?
情報欠損を看過しても速度を取るか、それとも綺麗な絵を出す
か?
ガウシアンフィルタ
縮小コピー ぼかし
ここをぼかしたい!
1
16
1
16
1
16
1
16
2
16
2
16
2
16
2
16
4
16
9点サンプリングすると重い!!
1
4
1
4
1
4
1
4
4点サンプリングして4で割ればOK!!
ガウシアンフィルタ
ぼかし画像を作成するのに手軽なフィルタ。
自分自身のピクセルの比重を高く、山型になるように周辺も加
えて平均をとる手法。
3×3で行うのが手軽でよく使われる。
とは言え、テクスチャを9点サンプリングすると重い!!
バイリニアの特性を活かし、4点で済むようにする。
この考え方は他でも活かせる。
ピクセルの距離
1280×720の画像に対してブルームを掛けた様子
320×180(縦横1/4ずつ)の画像に対してブルームを掛けた様子
Texture (1/1) Texture (1/4)
「1ピクセル」で考えると広がってしまう!!
Texture (1/1) Texture (1/4)
理想解像度を想定してサンプリング
ピクセルの距離の考慮
レンダーターゲットやテクスチャのサイズが異なると、「1ピクセ
ル」の距離も変わってくる。
端末差(スマホ)、動的解像度などが要因。
ブルームやDOFで影響が出てくる。
理想の解像度を設定した上で、それを考慮したサンプリングを
しておくと良い。
シェーダ内で係数を持って処理すると良い。
気にしない、気にならないならやらなくても良い。
まとめ
まとめ
Unityを使ったポストフィルタを眺めてみました。
ポストフィルタの大まかな流れを把握しておく。
3D描画した後の画像を加工するという考え。
一時バッファも活用される。
ポストフィルタは重いということを理解する。
理由は様々ある。
軽くするための工夫をひねり出す。
まとめ
ピクセル単位の処理も気にしてみましょう。
改めて、バイリニアについて理解を深める。
なぁなぁで作ってしまわない。(ズレたりする)
1ピクセルにまで神経を尖らせるつもりで!!
ありがとう
ございました

Weitere ähnliche Inhalte

Was ist angesagt?

かわずと!第19回放送『吉里吉里講座』スライド
かわずと!第19回放送『吉里吉里講座』スライドかわずと!第19回放送『吉里吉里講座』スライド
かわずと!第19回放送『吉里吉里講座』スライド
tuna cook
 

Was ist angesagt? (8)

スマホと簡易ヘッドセットAryzonで光学シースルーAR
スマホと簡易ヘッドセットAryzonで光学シースルーARスマホと簡易ヘッドセットAryzonで光学シースルーAR
スマホと簡易ヘッドセットAryzonで光学シースルーAR
 
Ggg用
Ggg用Ggg用
Ggg用
 
かわずと!第19回放送『吉里吉里講座』スライド
かわずと!第19回放送『吉里吉里講座』スライドかわずと!第19回放送『吉里吉里講座』スライド
かわずと!第19回放送『吉里吉里講座』スライド
 
株メイト
株メイト株メイト
株メイト
 
研修におけるアナログゲーム活用
研修におけるアナログゲーム活用研修におけるアナログゲーム活用
研修におけるアナログゲーム活用
 
ARコンテンツ作成勉強会( #AR_Fukuoka )紹介
ARコンテンツ作成勉強会( #AR_Fukuoka )紹介ARコンテンツ作成勉強会( #AR_Fukuoka )紹介
ARコンテンツ作成勉強会( #AR_Fukuoka )紹介
 
3Dゲームをおもしろくする技術 CM第2弾
3Dゲームをおもしろくする技術 CM第2弾3Dゲームをおもしろくする技術 CM第2弾
3Dゲームをおもしろくする技術 CM第2弾
 
ゲーム技術の研究所 CM第1弾「本かきました」
ゲーム技術の研究所 CM第1弾「本かきました」ゲーム技術の研究所 CM第1弾「本かきました」
ゲーム技術の研究所 CM第1弾「本かきました」
 

Ähnlich wie ポストフィルタ論

20140613 tanakaseigo dist3
20140613 tanakaseigo dist320140613 tanakaseigo dist3
20140613 tanakaseigo dist3
Seigo Tanaka
 

Ähnlich wie ポストフィルタ論 (20)

Watson summit 公開用
Watson summit 公開用Watson summit 公開用
Watson summit 公開用
 
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)
 
ゲーム屋ですがこんな風にXD使ってます(Xd勉強会20180316)
ゲーム屋ですがこんな風にXD使ってます(Xd勉強会20180316)ゲーム屋ですがこんな風にXD使ってます(Xd勉強会20180316)
ゲーム屋ですがこんな風にXD使ってます(Xd勉強会20180316)
 
ゲーム情報設計における「霧」との戦い
ゲーム情報設計における「霧」との戦いゲーム情報設計における「霧」との戦い
ゲーム情報設計における「霧」との戦い
 
ポコロンダンジョンズを彩るアニメーションノウハウ
ポコロンダンジョンズを彩るアニメーションノウハウポコロンダンジョンズを彩るアニメーションノウハウ
ポコロンダンジョンズを彩るアニメーションノウハウ
 
20140613 tanakaseigo dist3
20140613 tanakaseigo dist320140613 tanakaseigo dist3
20140613 tanakaseigo dist3
 
20181016 ceatec2018 meti_session_nico_ito
20181016 ceatec2018 meti_session_nico_ito20181016 ceatec2018 meti_session_nico_ito
20181016 ceatec2018 meti_session_nico_ito
 
ゲームAI製作のためのワークショップ(I)
ゲームAI製作のためのワークショップ(I)ゲームAI製作のためのワークショップ(I)
ゲームAI製作のためのワークショップ(I)
 
2015/06/13 第6回G-Study発表資料 プログラミング?コーディング?
2015/06/13 第6回G-Study発表資料 プログラミング?コーディング?2015/06/13 第6回G-Study発表資料 プログラミング?コーディング?
2015/06/13 第6回G-Study発表資料 プログラミング?コーディング?
 
20121220 matsumoto
20121220 matsumoto20121220 matsumoto
20121220 matsumoto
 
[クリエイティブハント2018]LT 道場破りしたらできちゃった/// #ゴーハント
[クリエイティブハント2018]LT 道場破りしたらできちゃった/// #ゴーハント[クリエイティブハント2018]LT 道場破りしたらできちゃった/// #ゴーハント
[クリエイティブハント2018]LT 道場破りしたらできちゃった/// #ゴーハント
 
コミュニティを持って学んだ交流できる”場”の6つのポイント
コミュニティを持って学んだ交流できる”場”の6つのポイントコミュニティを持って学んだ交流できる”場”の6つのポイント
コミュニティを持って学んだ交流できる”場”の6つのポイント
 
Tango開発事例
Tango開発事例Tango開発事例
Tango開発事例
 
OPTPiX SpriteStudioと他社ツール比較(真)資料1 - 株式会社ウェブテクノロジ - GTMF 2018 OSAKA / TOKYO
OPTPiX SpriteStudioと他社ツール比較(真)資料1 - 株式会社ウェブテクノロジ - GTMF 2018 OSAKA / TOKYOOPTPiX SpriteStudioと他社ツール比較(真)資料1 - 株式会社ウェブテクノロジ - GTMF 2018 OSAKA / TOKYO
OPTPiX SpriteStudioと他社ツール比較(真)資料1 - 株式会社ウェブテクノロジ - GTMF 2018 OSAKA / TOKYO
 
Sj16 組込アジャイル徹底分析
Sj16 組込アジャイル徹底分析Sj16 組込アジャイル徹底分析
Sj16 組込アジャイル徹底分析
 
【Unite Tokyo 2018】とても楽しい!HoloLensとUnity、テーマパークのMRゲーム開発について
【Unite Tokyo 2018】とても楽しい!HoloLensとUnity、テーマパークのMRゲーム開発について【Unite Tokyo 2018】とても楽しい!HoloLensとUnity、テーマパークのMRゲーム開発について
【Unite Tokyo 2018】とても楽しい!HoloLensとUnity、テーマパークのMRゲーム開発について
 
それを早く言ってよ〜パフォーマンスを出すエフェクト制作のポイント
それを早く言ってよ〜パフォーマンスを出すエフェクト制作のポイントそれを早く言ってよ〜パフォーマンスを出すエフェクト制作のポイント
それを早く言ってよ〜パフォーマンスを出すエフェクト制作のポイント
 
freee部meetup資金調達編_イデアラボ澤井様
freee部meetup資金調達編_イデアラボ澤井様freee部meetup資金調達編_イデアラボ澤井様
freee部meetup資金調達編_イデアラボ澤井様
 
ゲームの中の人工知能
ゲームの中の人工知能ゲームの中の人工知能
ゲームの中の人工知能
 
if-up 2017 | B3:GPSとIoT〜位置情報取得で押さえるポイント〜
if-up 2017 | B3:GPSとIoT〜位置情報取得で押さえるポイント〜if-up 2017 | B3:GPSとIoT〜位置情報取得で押さえるポイント〜
if-up 2017 | B3:GPSとIoT〜位置情報取得で押さえるポイント〜
 

ポストフィルタ論