FC2ブログ

頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


平面上の4隅の点の輝度をなめらかにつなぐ

The Book of Shaders: Noise
↑ここにあるんだが、、、4隅の点それぞれa,b,c,dという値があって、その中の位置x,yにおける値を得る、という問題。

4隅の点

↑こんなイメージ(画像は上記サイトより)。
もちろんスムーズに変化させたい。
上記リンク先のコードではこんな記述になってる。
return mix(a, b, u.x) +
            (c - a)* u.y * (1.0 - u.x) +
            (d - b) * u.x * u.y; // —(1)
って部分。なんだこりゃ?
a,b,c,dをうまく内分する式のはずなんだが、、、
なんのこっちゃと思って調べてみたんだが、こういうのをバリューノイズと言うそうな(※1)。

単に内分する点だよな?
float ab = mix(a, b, u.x);
float cd = mix(c, d, u.x);
return mix(ab , cd , u.y);// —(2)
だったらこれでわかりやすいし見やすくていいんじゃね?と思って実行すると同じような図柄が表示される。
バリューノイズ
↑こんなの。

念のために(2)式を手計算で式を紐解くと、、、(1)と同じになるのを確認した。
なおmixの定義は
T mix(T x, T y, T a) → x + (y – x ) * a
ってな感じでxとyを内分する点。

それにしても元のページ、なんであんな意味不明な表示してんだろう、、、🤔


※1 参考サイト
ノイズの話 - Pentanium Blog?

<< Kerasでの学習率設定  TopPage  SCNProgramのシェーダーで使える関数 >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/1195-f64231f8




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad