3/20

日記

2026/03/20

GLSL

vec3配列

  vec3[4] colors = vec3[] (
    vec3(1.0, 0.0, 0.0),
    vec3(0.0, 1.0, 0.0),
    vec3(0.0, 0.0, 1.0),
    vec3(1.0, 1.0, 0.0)
  );

ボロノイノイズ

複数の点をループさせて、その距離から色付するのをセルラーノイズという。
すべてのピクセルで点の数だけループさせるので、重い。

ボロノイノイズは、周辺のグリッドセル(3x3)だけ見れば良いので、ループ回数が少なく効率的。

  vec2 i_st = floor(st);
  vec2 f_st = fract(st);

  float m_dist = 1.0;

  for(int y = -1; y <= 1; y++) {
    for(int x = -1; x <= 1; x++) {
      vec2 neighbor = vec2(float(x), float(y));
      vec2 point = random2(i_st + neighbor);
      point = sin(uTime + point * 6.3465) * 0.5 + 0.5;

      vec2 diff = neighbor + point - f_st;
      float dist = length(diff);

      m_dist = min(m_dist, dist);
    }
  }

  color += m_dist;

こんだけの行で美しい動きとか使えるのかと感動。

floor int 違い

floorは負の方へ切り捨てする。
intは0の方向へ切り捨てする。

よって、
正の数なら同じ結果。
負の数だと違う。

fract(-1.5) = -2
int(-1.5) = -1

uProgress(0,1)からprogress(0,1,0)

float progress = 1.0 - abs((uProgress - 0.5) * 2.0);としていたが、sinでいけたな。
float progress = sin(uProgress * 3.14159265);

こっちのが滑らか

ポートフォリオ制作

戻る進むボタンだと瞬時にURLが変わるためNavigateを呼ばなくて良かったんだ。進む・戻るボタンでもちゃんと動作するようになったかな。

内省

一日の終わる前に今日の復習と、次の日の予定立てと、日記(このサイト)書く時間設けよう。
だいたい10分くらいだろう。この10分超大事な気がする。

国民健康保険料が届いて、高すぎて絶句。間違えてないか月曜確認しに行く。