|
|
|
@ -7,7 +7,7 @@
|
|
|
|
|
|
|
|
|
|
![ベスト・キッド(1984)](mr_miyagi.jpg)
|
|
|
|
|
|
|
|
|
|
私たちにとってミヤギさんの壁に当たるものは、下記に示すコードの枠組みです。この枠組みを使って、正規化されたx座標の値を2種類の方法で目に見えるようにしてみます。1つめの方法では色の明るさを使い(黒から白への綺麗なグラデーションを見てください)、2つめでは緑色の線を描画します(ここではx座標の値をそのままy座標に割り当てています)。plot関数のことは今はあまり気にしないでください。すぐ後で詳しく説明します。
|
|
|
|
|
私たちにとってミヤギさんの壁に当たるものは、下記に示すコードの枠組みです。この枠組みを使って、正規化されたx座標の値を2種類の方法で目に見えるようにしてみます。1つめの方法では色の明るさを使い(黒から白への綺麗なグラデーションを見てください)、2つめでは緑色の線を描画します(ここではx座標の値をそのままy座標に割り当てています)。```plot``` 関数のことは今はあまり気にしないでください。すぐ後で詳しく説明します。
|
|
|
|
|
|
|
|
|
|
<div class="codeAndCanvas" data="linear.frag"></div>
|
|
|
|
|
|
|
|
|
@ -49,7 +49,7 @@ GLSLには他にも、値を変化させるのに使うことができるネイ
|
|
|
|
|
float y = smoothstep(0.2,0.5,st.x) - smoothstep(0.5,0.8,st.x);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
(訳注:おまけ。plot関数を理解するには引き算の片側を消して```smoothstep(0.2,0.5,st.x)```もしくは```smoothstep(0.5,0.8,st.x)```だけにしてみるのも良いと思います。2つのグラフの位置が少しずれていて、引き算をすると真ん中だけが残されるのが分かりますね。20行目の```smoothstep( pct-0.02, pct, st.y) -
|
|
|
|
|
(訳注:おまけ。```plot``` 関数を理解するには引き算の片側を消して ```smoothstep(0.2,0.5,st.x)``` もしくは ```smoothstep(0.5,0.8,st.x)``` だけにしてみるのも良いと思います。2つのグラフの位置が少しずれていて、引き算をすると真ん中だけが残されるのが分かりますね。20行目の ```smoothstep( pct-0.02, pct, st.y) -
|
|
|
|
|
smoothstep( pct, pct+0.02, st.y)``` でも同じことを試してみましょう。)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -69,11 +69,11 @@ GLSLには他にも、値を変化させるのに使うことができるネイ
|
|
|
|
|
|
|
|
|
|
下記を試して何が起きるか見てみましょう。
|
|
|
|
|
|
|
|
|
|
* ```sin```を計算する前に時間の値(```u_time```)をxに足してみましょう。x座標に沿った動きを身につけましょう。
|
|
|
|
|
* ```sin``` を計算する前に時間の値(```u_time```)をxに足してみましょう。x座標に沿った動きを身につけましょう。
|
|
|
|
|
|
|
|
|
|
* ```sin``` を計算する前に、xに ```PI``` を掛けてみましょう。波の幅が縮まり、xが 2 進むごとにyが1サイクル上下するのを確認しましょう。
|
|
|
|
|
|
|
|
|
|
* ```sin```を計算する前に時間の値(```u_time```)をxに掛けてみましょう。周波数が次第に増えて波の幅が狭くなっていく様子を見てください。u_timeが既に大きくなりすぎていてグラフが読めないほどになってしまっているかもしれないので注意してください。(訳注:もしグラフが線ではなく黒い靄のようなノイズになってしまう場合は、一度ページをリロードしてからもう一度試してください。u_timeはページを読み込んでからの累積時間なので、ここまで読み進める間にかなり大きな値になっている可能性があります)。
|
|
|
|
|
* ```sin```を計算する前に時間の値(```u_time```)をxに掛けてみましょう。周波数が次第に増えて波の幅が狭くなっていく様子を見てください。u_timeが既に大きくなりすぎていてグラフが読めないほどになってしまっているかもしれないので注意してください。(訳注:もしグラフが線ではなく黒い靄のようなノイズになってしまう場合は、一度ページをリロードしてからもう一度試してください。u_timeはページを読み込んでからの累積時間なので、ここまで読み進める間にかなり大きな値になっている可能性があります)。
|
|
|
|
|
|
|
|
|
|
* ```sin(x)``` に 1.0 を足してみましょう。値が 0.0 から 2.0 の間に収まるように波の位置が上にずれる様子を見てください。
|
|
|
|
|
|
|
|
|
@ -115,7 +115,7 @@ GLSLには他にも、値を変化させるのに使うことができるネイ
|
|
|
|
|
|
|
|
|
|
スパイスや珍しい食材を集めるシェフのように、デジタルアーティストやクリエィティブコーダーは自らシェイピング関数に取り組むのが大好きです。
|
|
|
|
|
|
|
|
|
|
[Iñigo Quiles](http://www.iquilezles.org/)は便利な関数の[素晴らしいコレクション](http://www.iquilezles.org/www/articles/functions/functions.htm)を持っています。 [この記事](http://www.iquilezles.org/www/articles/functions/functions.htm)をまず読んでから、下記にあるGLSLへの翻訳を見てみましょう。浮動小数点の数値に「.(小数点)」を追加したり、Cの関数をGLSL特有の関数名で置き換える、例えば```powf()```の代わりに```pow()```を使うなどの細かな変更点に注意してください。
|
|
|
|
|
[Iñigo Quiles](http://www.iquilezles.org/)は便利な関数の[素晴らしいコレクション](http://www.iquilezles.org/www/articles/functions/functions.htm)を持っています。 [この記事](http://www.iquilezles.org/www/articles/functions/functions.htm)をまず読んでから、下記にあるGLSLへ翻訳したバージョンを見てみましょう。浮動小数点の数値に「.(小数点)」を追加したり、Cの関数をGLSL特有の関数名で置き換える、例えば ```powf()``` の代わりに ```pow()``` を使うなどの細かな変更点に注意してください。
|
|
|
|
|
|
|
|
|
|
* [Impulse](../edit.html#05/impulse.frag)
|
|
|
|
|
* [Cubic Pulse](../edit.html#05/cubicpulse.frag)
|
|
|
|
|