見出し画像

「つぶやきGLSLと形で覚えるpow」 - テルメモ


はじめに


GLSL初学者のpow関数のメモです。
関数の情報を集めて勉強しています、書きかけのメモです。
(追加で調べたらアップデートします)

powの基本


GLSLの組み込み関数を読む時に
いつも参考にさせていただいている記事のpowを見ると。

> pow(x, y)
xのy乗を返す
参考: GLSLについてのメモ

自然数の何乗って、累乗って言って、それを冪演算(べきえんざん)って言うんだって。

参考: Wikipedia 冪乗
二つの数に対して定まる数学的算法で、その結果は冪 (power) と呼ばれる。
自然数nを冪指数とする冪演算は累乗に一致する。

https://ja.wikipedia.org/wiki/%E5%86%AA%E4%B9%97

The Book of Shaders の図解

https://thebookofshaders.com/glossary/?search=pow

つぶやきGLSLで試す

いつもの青色強めのシンプルな、powテスト。
1.0から引いているのは色を逆転させているから。

void main(){
vec2 p=(gl_FragCoord.xy*2.-r)/min(r.y,r.x);
p = pow(sin(p*t), sin(p*t));
gl_FragColor=vec4(1.-p.x,1.-p.y,1,1);
}

fractは分割されて表示されて、modは不思議な格子状に描かれた
powは境界線が曖昧でぼやけた格子状が描かれた。

なぜかは詳細は分かりません。

関数作って、smoothstepとかでこれを曲げられるのではないかとかくらいまで考えた。
のでやってみたが、多分smoothstepの使い方が違う。ちょっぴり変化あり。数学的処理をもっと学ぶべき。

smoothstepによって色がはっきり出るようになったので、0.1あたりで入っていたものが、0.7-9くらいのものが入るようになったのかも。


void main(){
vec2 p=(gl_FragCoord.xy*2.-r)/min(r.y,r.x);
 p = pow(smoothstep(.5,.1,sin(p*t)), smoothstep(1.,.1,sin(p*t)));
 gl_FragColor=vec4(abs(1.-p.x),abs(1.-p.y),1,1);
}

今日もやっぱりよくわからんぜ。

この記事が気に入ったらサポートをしてみませんか?