GLSLで画像のぼかしやノイズ


前回のぼかし・平滑化と似た処理になりますが、ノイズをなくすのではなく逆に追加して認識しにくくするのが目的です。

今回はノイズ追加、乱反射、RGB分離を行います。

ノイズの追加

乱数は「GLSL 乱数」で最初に出てくるものをお借りします。

fractx-floor(x))を返すので値域[0 ~ 1]の乱数です。

値域を[0.5 ~ 1.5]にずらして画素値にかけています。

 

あるいはこんな感じにRGBごとに違う乱数を使ってカラーノイズを乗せます。

スウィズル演算子で乱数のタネを変えることによって異なる色を作っています。

uv.xx(uv.yy)のように片方座標だけを使うと縦ノイズや横ノイズにもなります。

乱反射ノイズ

表示座標からずれた所の画素値を使うことで面影を残しながらノイズを出します。

randで作った乱数の値域を[-R ~ R]に変換して表示画素の座標に利用します。

スウィズル演算子を逆にしていますが、こうしないと取得する画素座標が注目画素の斜め方向に限定されます。それはそれで味があるともいえるけど。

すりガラス越し(乱反射)のようになりました。

前回のBlurをした後にこれを使うと少しマイルドになる(逆順でするとサイズにもよりますがただのBlurに近くなります)。

RGBの分離

RGBを分離して順番に並べるような形で表示します。

昔のディスプレイのようになります。

 

もしくはよくある表現としてRGBをそれぞれ別方向にずらす。

距離をDとしてRが上、Gが左下、Bが右下に動くような座標にしてみます。

0.866≒√3/2です。

 

他にもいろいろあるので気が向いたらどんどん書いていきます。


コメントを残す

メールアドレスが公開されることはありません。