Diamond Tiles のコードを勝手にレビューしてみよう。関数 offset は一行で書ける:

vec2 offset(vec2 st, vec2 dist){
    const float edge = .5;
    return step(-edge, -st) * (st + edge) + step(edge, st) * (st - edge);
}

疲れたので YouTube を観て休憩。

DeepL のインストール場所がわからずにハマる。

C:\Users\USERNAME\AppData\Local\DeepL

だ。忘れぬようにここに記しておく。Windows のスタートメニューをカスタマイズできればいいのだが。

2:30 就寝。

7:05 起床。納豆とコロッケドッグを食す。出勤。

7:45 現場。不燃ゴミの日。電子レンジがゴミ置き場に放置されているが、これは無理がある。 金曜並にゴミが増えているので前処理。館内清掃。掃除機は便利だが持ち運びに難がある。 隣の植え込みが落ち葉が増殖するのを対策してくれている婦人がいてありがたい。

10:05 撤収。

イトーヨーカドー曳舟店。体温チェックと手洗い。

曳舟の部屋。PC を起動。

Windows のスタートメニューに項目を追加する方法を調べる。 How to Open the Start Menu Folder in Windows 7 or 10 によると、

%appdata%\Microsoft\Windows\Start Menu

に DeepL.exe へのショートカットリンクを追加するだけで良さそうだ。 試す。スタートメニューに出てきた。これで次回再起動時には慌てない。

  • The Book of Shaders: Patterns: 問題を解くか。
    • 偶数・奇数の公式: step(1., mod(x, 2.)). これを変数変換したり合成したりして符号生成の公式 2. * step(1., mod(x, 2.)) - 1. などを錬成できる。
    • Take 1: 座標軸沿いにグルグル回す。

      float limit = fract(u_time * .3);
      float dist = limit * 2.;
      if(limit > .5){
          st.x += dist * (2. * step(1., mod(st.y, 2.)) - 1.);
      }else{
          st.y += dist * (2. * step(1., mod(st.x, 2.)) - 1.);
      }
      
    • Take 2: if 文を非条件文に置き換える。コツをだんだんつかめてきた。

      st += (dist * (2. * step(1., mod(st, 2.)) - 1.)
          // (1, 0) or (0, 1)
          * vec2(1. - step(.5, limit), step(.5, limit))).yx;
      

    これで Offset Patterns の節を履修したことにする。

12:00 おやつ。YouTube でゲーセンミカドの昔一度観たプレイビデオを垂れ流しながらシェーダーを学ぶ。

13:30 昼寝。

16:30 起床。今日もハローワークに行けないことが確定した。外出。

スカイツリータウン二階。書店で週刊新潮の後ろのマンガだけチェック。トイレに移動して腸の中身を少し出す。 どうして全部出てくれないのだろう。

押上駅バス停。バスに乗る。錦糸公園前で降りる。

17:30 オリナス錦糸町。二階ベンチで休憩ののち地下へ下りる。

18:00 タイトー F ステーションオリナス錦糸町店。MJ プロ卓東風戦 6 クレ。 前半のクレジットで全然アガれず焼鳥が続く。粘って後半面白いゲームになったのは幸いだ。

あるゲームの東一局。対面親が発と中をポン。卓に緊張が走るが、私の手牌で白が対子になる。 赤もあって打点も見込める。いい感じに白と親の現物の一索とのシャンポンでテンパイ。 リーチを掛けて全員の頭に「?」を付けてやがて高目ツモアガリ。たいへん気持ちがいい。

【SCORE】
合計SCORE:+71.3

【最終段位】
四人打ち段位:賢王 幻球:7

【12/2の最新8試合の履歴】
1st|---*--**
2nd|*-*--*--
3rd|-*------
4th|----*---
old         new

【順位】
1位回数:3(27.27%)
2位回数:3(27.27%)
3位回数:4(36.36%)
4位回数:1(9.09%)
平均順位:2.27

プレイ局数:52局

【打ち筋】
アガリ率:17.31%(9/52)
平均アガリ翻:3.56翻
平均アガリ巡目:10.89巡
振込み率:3.85%(2/52)

【12/2の最高役】
・跳満

トップで次のゲームが無料になるが、時間が危ないので次のゲームを断って席を立つ。残念だ。

20:25 カスミオリナス錦糸町店。475 円。クーポンゲット。

  • 炊き込み鶏五目ご飯大
  • イカリング唐揚げ
  • ブラックチョコ (2)

外へ出ると小雨が降っている。聞いていない。

20:45 ビッグエー墨田業平店。271 円。

  • ピザパン
  • 絹豆腐
  • シーフードヌードル
  • ミニスイートクロワッサン (5)

20:55 曳舟の部屋。片付けてから入浴。

21:35 風呂から出て PC を起動して晩飯にする。

インターネット作業。メールなし。Truchet Tiles の節をやる。

  • ブラウザーが対応する GLSL では配列がまともに使えないようだ。
  • Conditionals in shaders - OpenGL - Khronos Forums: 今やっているテーマがまさに偶数奇数で分岐する処理なので、やはり if 文を回避する方針がまともだ。
  • GLSL は関数のオーバーロードができる。組み込み関数のほとんどがそうだ。