インターネットをフラフラしてから寝る。

2:30 就寝。夜ふかしをしてしまった。

10:25 起床。体がたいへんだるい。月曜朝の体調だ。納豆と赤飯を食らう。 赤飯を口にした後に野菜ジュースを飲むと妙な味がするのはなぜだ。

10:45 PC に着手。ダライアスの続きを聴きながらゆうべの文書を読む。

コマンドラインツールの pytube でダウンロードしてみたら 404 エラーが返る。フラグの渡し方にクセがあって、 URL の直前に --audio オプションなどのデフォルト値でも指定値でも働くものを置いてはいけないようだ。

13:35 おやつ休憩。

外出。イトーヨーカドー曳舟店で体温チェック。それから水戸街道へ移動。 よくわからないバス停から浅草寿町行きに乗る。そのまま終点へ。国際通りの東側に出るのか。 横断歩道を渡って西側へ。今度は千住車庫行きのバスに乗る。見慣れた風景だ。 南千住六丁目という停留所で降りる。ここが私の目的地の最寄りのバス停に違いない。

15:20 荒川区南千住図書館。元気そうで何より。メインの三階に行く前に一階でトイレ。 紙に何か書いて階段を上がる。懐かしの図書館。以下のものをチェックして館内を巡る:

  • 朝刊(産経)
  • 月刊ホビージャパン 2021.7 号。いつも裏から読む。女体フィギュアの写真。
  • 月刊小説すばる 2021.7 号。みうらじゅん&宮藤官九郎対談と増田こうすけ先生のまんが。

16:00 退館。日光街道へ戻って逆側のバスに乗る。浅草寿町で降りる。既視感がすごい。 今度は浅草通りのバス停に移動して上野松坂屋前行きに乗る。終点まで。 中央通りの横断歩道を渡る。富士そばがもぬけの殻。徒歩で外神田へ向かう。 途中、練成公園でタオルを湿らせる。

17:00 秋葉原 HEY 二階。イルベロに興じる。4 クレ消費。 おとといとは別人のように調子が良い。お座り一発目のプレイで一面、二面の自己ベストを明らかに更新して驚く。 特に二面寿司ボス撃破後の 2.8 億オーバーというのはもう出ないまである。四面で凡スコアに落ちぶれたが。 とにかく、この調子でラス面のオシシ撃破を安定させたいものだ。

19:55 退店。小川町駅へ。地下鉄で押上駅に移動。降りる。

20:45 ビッグエー墨田業平店。528 円。甘味を忘れる。

  • 下町風の超大盛ペペロンチーノ
  • 絹豆腐 (2)
  • 大きなおむすび鮭
  • コロッケドッグ
  • コッペパンブリーベリー

20:55 曳舟の部屋に戻る。シャワーを浴びる。風呂から出て PC と晩飯。 ペペロンチーノを未開封のままあぐらをかいた腿の上に乗せてゼラチンを体温で溶かす。

21:55 晩飯終了。写真整理をしてからインターネットに接続する。

  • Twitter に日曜恒例のネタを投稿。次回は足立区北千住図書館だと期待されているだろうが、 それまでの平日に面接があり、その最寄りの図書館になるだろう。
  • 【BPL 2021】ファーストステージ第3試合・第4試合 SILKHAT vs GAME PANIC / レジャーランド vs ROUND1 - YouTube
  • An intro to modern OpenGL
    • Shaders
      • Shaders in OpenGL are written in a language called GLSL (GL Shading Language)

      • そういうわけで GLSL コードは周囲のコードから「浮く」。
      • gl_Position は GLSL が用意した変数の一つ。頂点のスクリーン空間での位置を割り当てるためのものだ。
      • The #version directive indicates the GLSL version of the following source code; our #version declares that we’re using GLSL 1.10. (GLSL versions are pretty tightly tied to OpenGL versions; 1.10 is the version that corresponds to OpenGL 2.0.)

      • GLSL does away with pointers and most of C’s sized numeric types, keeping only the bool, int, and float types in common, but it adds a suite of vector and matrix types up to four components in length.

      • The vec2 and vec4 types you see here are two- and four-component vectors of floats, respectively.

      • A type name can also be used as a constructor function for that type; you can construct a vector from either a single scalar value, which will be repeated into all the components of the vector, or from a combination of vectors and scalars, whose components will be strung together to form a larger vector.

      • GLSL’s math operators and many of its builtin functions are defined on these vector types to do component-wise math.

      • シェーダーはグローバル変数を用いて周囲のグラフィックスパイプラインと通信する。
      • In a fragment shader, some things change slightly.

      • フラグメントシェーダーでは gl_FragColor が最も重要な変数。
      • Like buffers and textures, shader and program objects are named by GLuint handles.

      • GLSL プログラムをバイナリーにプリコンパイルする標準的な方法はない。 毎回ソースコードからシェーダーをビルドする。
      • GLSL コンパイルの結果を確認すること。glGetShaderXXXX のような名前の関数がいくつかあり、それを用いる。
      • If shader objects are the object files of the GLSL build process, then program objects are the finished executables.

        • 名言。
      • リンクの結果も確認すること。
      • 関数 glGetUniformLocationglGetAttribLocation は引数がわかりにくい。
    • Rendering
      • OpenGL のアプローチは、レンダリングの設定すべてを状態機械としてレイアウトするというものだ。
      • glUseProgram はシェーダープログラムをアクティブにするものだ。
      • glUniformXXX のような名前の関数は、uniform 変数への代入を行うものだ。
      • テクスチャーをサンプラーに割り当てるのは少々複雑だ。
      • glVertexAttrib 系関数はシェーダー以前の OpenGL プログラミングと同様に使えるようだ。
      • glDrawElements も同じ感覚で使う。
      • そういえば glutSwapBuffers のようなことは WebGL ではどう実現するのだろう。
      • I would highly recommend looking instead at the spec for OpenGL 3.1 or later, being sure to look at the “core profile” specs rather than the ones for the “compatibility profiles”.