SlideShare uma empresa Scribd logo
1 de 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ピクセルにまで神経を尖らせるつもりで!!
ありがとう
ございました

Mais conteúdo relacionado

Mais procurados

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

Mais procurados (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弾「本かきました」
 

Semelhante a ポストフィルタ論

Watson summit 公開用
Watson summit 公開用Watson summit 公開用
Watson summit 公開用Izumi Akiyama
 
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)ミルク株式会社
 
ゲーム屋ですがこんな風にXD使ってます(Xd勉強会20180316)
ゲーム屋ですがこんな風にXD使ってます(Xd勉強会20180316)ゲーム屋ですがこんな風にXD使ってます(Xd勉強会20180316)
ゲーム屋ですがこんな風にXD使ってます(Xd勉強会20180316)Kaku Okuda
 
ゲーム情報設計における「霧」との戦い
ゲーム情報設計における「霧」との戦いゲーム情報設計における「霧」との戦い
ゲーム情報設計における「霧」との戦い裕哉 駒場
 
ポコロンダンジョンズを彩るアニメーションノウハウ
ポコロンダンジョンズを彩るアニメーションノウハウポコロンダンジョンズを彩るアニメーションノウハウ
ポコロンダンジョンズを彩るアニメーションノウハウGameCreators,CyberAgent
 
20140613 tanakaseigo dist3
20140613 tanakaseigo dist320140613 tanakaseigo dist3
20140613 tanakaseigo dist3Seigo Tanaka
 
20181016 ceatec2018 meti_session_nico_ito
20181016 ceatec2018 meti_session_nico_ito20181016 ceatec2018 meti_session_nico_ito
20181016 ceatec2018 meti_session_nico_itoAkihiro ITO
 
ゲームAI製作のためのワークショップ(I)
ゲームAI製作のためのワークショップ(I)ゲームAI製作のためのワークショップ(I)
ゲームAI製作のためのワークショップ(I)Youichiro Miyake
 
2015/06/13 第6回G-Study発表資料 プログラミング?コーディング?
2015/06/13 第6回G-Study発表資料 プログラミング?コーディング?2015/06/13 第6回G-Study発表資料 プログラミング?コーディング?
2015/06/13 第6回G-Study発表資料 プログラミング?コーディング?Tsuyoshi Yoshida
 
[クリエイティブハント2018]LT 道場破りしたらできちゃった/// #ゴーハント
[クリエイティブハント2018]LT 道場破りしたらできちゃった/// #ゴーハント[クリエイティブハント2018]LT 道場破りしたらできちゃった/// #ゴーハント
[クリエイティブハント2018]LT 道場破りしたらできちゃった/// #ゴーハントHiroyuki Ishikawa
 
コミュニティを持って学んだ交流できる”場”の6つのポイント
コミュニティを持って学んだ交流できる”場”の6つのポイントコミュニティを持って学んだ交流できる”場”の6つのポイント
コミュニティを持って学んだ交流できる”場”の6つのポイントHiroyuki Ishikawa
 
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 / TOKYOGame Tools & Middleware Forum
 
Sj16 組込アジャイル徹底分析
Sj16 組込アジャイル徹底分析Sj16 組込アジャイル徹底分析
Sj16 組込アジャイル徹底分析akihiro tanaka
 
【Unite Tokyo 2018】とても楽しい!HoloLensとUnity、テーマパークのMRゲーム開発について
【Unite Tokyo 2018】とても楽しい!HoloLensとUnity、テーマパークのMRゲーム開発について【Unite Tokyo 2018】とても楽しい!HoloLensとUnity、テーマパークのMRゲーム開発について
【Unite Tokyo 2018】とても楽しい!HoloLensとUnity、テーマパークのMRゲーム開発についてUnityTechnologiesJapan002
 
それを早く言ってよ〜パフォーマンスを出すエフェクト制作のポイント
それを早く言ってよ〜パフォーマンスを出すエフェクト制作のポイントそれを早く言ってよ〜パフォーマンスを出すエフェクト制作のポイント
それを早く言ってよ〜パフォーマンスを出すエフェクト制作のポイントMakoto Goto
 
freee部meetup資金調達編_イデアラボ澤井様
freee部meetup資金調達編_イデアラボ澤井様freee部meetup資金調達編_イデアラボ澤井様
freee部meetup資金調達編_イデアラボ澤井様freee部
 
ゲームの中の人工知能
ゲームの中の人工知能ゲームの中の人工知能
ゲームの中の人工知能Youichiro Miyake
 
if-up 2017 | B3:GPSとIoT〜位置情報取得で押さえるポイント〜
if-up 2017 | B3:GPSとIoT〜位置情報取得で押さえるポイント〜if-up 2017 | B3:GPSとIoT〜位置情報取得で押さえるポイント〜
if-up 2017 | B3:GPSとIoT〜位置情報取得で押さえるポイント〜SORACOM,INC
 

Semelhante a ポストフィルタ論 (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〜位置情報取得で押さえるポイント〜
 

ポストフィルタ論