「つぶやき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);
}
今日もやっぱりよくわからんぜ。
この記事が気に入ったらサポートをしてみませんか?