ポストプロセスマテリアルで中心以外をぼかす(7) ラジアルブラーでぼかす
「海外フォーラムでラジアルブラーという、中心から広がるようなボカシ方の、カスタムマテリアルを見つけたから、今日はそれを試してみた。中心からだんだんボケていくというのは、こっちのイメージが近いんじゃないかと思って」
妹「それはいいと思うけど、なんかカクカクしてるね」
「これもある程度ピクセル数を省くために、飛び飛びで調べてるから、どうしてもそのぶん粗さはある。あとそもそもこのマップがよくなかったなと。元がカクカクしすぎてる」
妹「それはたしかに」
「こんな感じでやってるんだけど、ちょっと前の投稿だから、今のバージョンだと正常に動作しない箇所があったので少し手直しをしてある」
UE4.15対応版
float2 ScreenMult = View.ViewSizeAndSceneTexelSize.xy / View.RenderTargetSize; int TexIndex = 14; float samples[10] = {-0.08,-0.05,-0.03,-0.02,-0.01,0.01,0.02,0.03,0.05,0.08}; float2 dir = ScreenMult * float2(0.5,0.5) - UV; float4 sum = SceneTextureLookup(UV, TexIndex, false); float2 pos = float2(0.0,0.0); for(int i = 0; i<10; i++) { pos = UV + dir * samples[i] * sampleDist; max(min(pos, ScreenMult * float2(1.0, 1.0)), float2(0.0,0.0)); sum += SceneTextureLookup(pos, TexIndex, false); } sum *= 1.0/11.0; return sum;
「主な変更点は、ScreenMultを計算していた部分を削除して、外部からピンをつなぐようにしたこと。ここは書き方がかわってるんだけど、新しい書き方がわからなかったから、ノードで計算してからつないでる。あとはTexピンは一昨日書いた理由で入ってるダミーだから削除した」
妹「このプログラムなんか色ついてるんだけど」
「見やすいようにした。ブログの機能で、プログラム的の変数とか関数とかを自動的に違う色で表示してくれる。java用の設定だから微妙に塗れてない場所もあるけど。編集に使うメモ帳みたいなやつも、プログラマ用のは色分けに対応してる。色ついてないと読むのに余計時間かかるから」
妹「そういうって色は勝手につくの?」
「HLSLモードとか最初に設定したらあとは勝手につく。書き直すたびに文法チェックしてるから、誤植とかあるとその前後も含めて変な色になったりするけど。UE4のプロパティ欄で直接書くより、そういうので書いた方がわかりやすいし、使いやすくもある」
「パラメータ調整をして真ん中だけ写るようにしたやつ……なんだけど、どうも写真うつりが悪いというか、動いてるのを見るともう少しまともに見えるんだけど。動画にした方がいいかも」