ネッシーの心境

慣れない世界を必死に泳ぐ、息継ぎの記録

夢の先の夢をさがす

眠れない夜はいつも、ぐるぐると湧き出る思考とスマホの使用を天秤にかける。

スマホを寝る前に使うことがよろしくないことは重々承知なのだが、思考サーバー過剰運転が常な人間にとっては、むしろぼーっとしている方が頭が冴えていく。 だから気持ちが沈まないように、眠れない時間をなるべく楽しむことを選ぶ。

そんなある晩、YouTubeの謎のおすすめセンスにより目に飛び込んできたのが、3年前に放送された某オーディション番組だった。 同年代(最年少練習生が同い年)ということもあり、親近感に近い感情が生まれて、自分との共通項を探すようにして観始めた。

放送当時は私も彼らもまだ学生。懸命に夢を追う姿を見て、なんだか自分の高校時代を思い出した。

高校3年の頃、どうしてもエンジニアになりたかった。

本棚には大学受験と薬学の本ばかり。急な方向転換だった。ずっと積み上げてきた受験勉強と学部の予習が無駄になってしまうと、思ったこともあったし言われたこともある。でもどうでもよかった。自分にはプログラミングの道しかないと思っていた。

ジャンルは全く違うが、当時の自分には彼らのような覚悟と熱意がたしかにあった。最終回で夢を叶えた11人と、よく似た感情を通ったことがあるはずだった。

夢を叶えることはこんなにも素晴らしいことで、その軌跡の先に今だって立っている。 犠牲を厭わずにずっと目指してきた道で生きているというのに、何をうじうじ悩んでいるのだろう。過去の自分に申し訳ないし、なんだか恥ずかしくなった。

最終回放送後のインタビューで、未来を語る11人がとてもかっこよかった。高校時代や今の会社を目指していた頃の、自分が語っていた未来の展望もちょっと思い出した。

夢を具体化することは、漠然と思い描いていた大きな夢を叶えた人の特権かもしれない。叶えて終わりではなく、焦点をどんどん絞っていくだけだ。

そう気づけただけで、今やるべきことが少し見える。もう一度なにかに憧れたい。

一晩かけて変わりたい

最近、ちょっとしたスランプに陥っている。

思うように打ち込めず、どうすれば今より上のレベルに行けるのだろう?とずっと悩みっぱなしで、勉強のしかたがわからなくなった。

これまではそんなことを考えなくても、心の赴くままに書き殴るだけで少しずつ進歩できていた。 でも今は、自由な個人開発となると、コードを書き始めても、すぐに手が止まってしまったり。頭が真っ白になって思考をおし進められない。

そんな不調の背景には、確実に不眠症の悪化も関係している。 でもきっとそれだけじゃないし、100%そのせいにしてしまうのは悲しい。

だから今は、自分のマインドの変化を辿っている。これから良い軌道を描けるように、過去から今への変遷を理解しておきたいのだ。


このブログはそもそも、技術ブログとして始めたわけじゃない。

これまでは趣味がプログラミングしかなかったものだから、趣味ブログが技術ブログっぽくなってしまっていただけ。

なので、本来は気兼ねなく日常の嗜好や思考について語る場である。その本旨を今後ようやく、体現することになる。

6日目 脱・茶柱記念日

ついに!

https://tetracalibers.github.io/webgl-practice-ground/alive-particle-following-mouse/

なんでこれ描こうとしてあの茶柱ができたのかw(もちろん色は変えているけど)

真相としてはおそらくインタリーブ配列への格納順序の問題で、インタリーブ配列から取り出した粒子の寿命データ・年齢データを速度データとして使ってしまっていたっぽい?

寿命と年齢は線形に変化するので、ランダム性がなくなって直線状に粒子が配置されてしまっていた…といったところか。(たぶん)

読み込みバッファと書き込みバッファをスワップしながらTransform Feedbackでパーティクルを描く基盤(自作ユーティリティクラス)ができたので、そのクラスを使ってwgld.orgさんのGPGPUデモも再現実装してみる。

wgld.org

再現版。せっかくなのでタッチデバイスにも対応させてみた。

https://tetracalibers.github.io/webgl-practice-ground/particle-spread-texture/

wgld.orgさんの解説とは実装方法をいろいろ変えている。

頂点・色・速度データをインタリーブ配列化したり(この作業はChatGPTにやってもらった)、VAOを使ってbind周りの処理を簡略化したり、スワップのロジックを変えたり。

基盤の実装を固めるにあたって、めっちゃお世話になったのが次の記事。

gpfault.net

この記事がなかったら絶対諦めていた。

Transform Feedbackの動作自体、この記事のおかげで理解できた…update用のフラグメントシェーダがno-opだったなんて。必死にいじっていたよそこ。

そしてこの記事読んでて思い出した。GLSLでのパーリンノイズの実装、諦めたきりだったな。

もっとパーティクルをいじりたいけど、ランダム性を持たせる上で武器が足りない。勾配ノイズとか勉強してから出直そう

5日目 うれしくない茶柱

Transform FeedbackでVAOをスワップしながらパーティクルを描く実装、とりあえずエラーは吐かないようになったけれど…

白い粉が湧き出るパーティクルを描いたつもりが、時間経過とともにだんだん伸びていく茶柱爆誕

あ〜なんかめちゃくちゃ微小領域で粒子が増殖しているんだろうなー…

…まあ…VAOスワップの仕組みはできたのでだいぶ前進…

……

(パーティクルの成果が出せるまでは、このブログはTwitterの代わり程度のゆるゆる品質が続く予報です)

4日目 始まりの質

朝6時半〜8時の朝活習慣。最近のお題は「WebGLとGLSLを使って何かしら描く」

しかし、朝活でWebGL/GLSLを触るのはなかなかのリスキーゲームですな。ここでバグを踏んでしまえば、結構モヤモヤしたまま一日をスタートすることになるのですよ…(非情なことにバグ踏まない方が奇跡)

こんな話題を取り上げる時点で、今朝なにがあったのかは大体お察し。VBOを切り替えながらTransform Feedbackでパーティクルを描く実装に苦戦中。

3日目 古の情熱を思い出す

今日は久々に3Dを。Transform Feedbackを使ったパーティクル実装ヘルパークラスを書いたりとか。

https://tetracalibers.github.io/webgl-practice-ground/particle-wave-texture/

綺麗。

実はこれは偶然の産物。

自作のクォータニオン・行列計算ライブラリのAPIを失念して、適当に変な組み合わせで書いた結果生まれたもの。

本来作りたかったのはこれ。

https://tetracalibers.github.io/webgl-practice-ground/animate-wave-mesh-texture/

…wgld.orgさんのTransform Feedbackの解説サンプルを、自作WebGLラッパーライブラリで書いてみただけ…

wgld.org

自作WebGLラッパーライブラリはまだまだ育てている段階。

でもなあ、こうして自分ですらAPIを忘れてしまうのなら、そろそろドキュメントでも作ってみても良いかも。

自分の書いたコードを、その原理を、うまく言語化できるようになりたい。

昔は教材作りが好きだったな。社内勉強会で配布したりとか。そこまでしないと理解したとは言えないと思っていた。

ついていくのに精一杯だと、いつまで言い続けるつもりなんだろう。 そろそろ、あの頃みたいに、もう一度言語化に夢中になってみようか。

2日目 最近のNPR(GLSLによる絵画風画像加工)

最近はイラストソフトやレタッチソフトの仕組みに興味があり、ブラウザ上で動作するそんな感じのものをいつかつくれたらいいな〜とぼやぼや考えているところ。

今年の3月あたりからゆるくWebGLとGLSLを触り始め、先週の土曜からはNon-Photorealistic Renderingっぽいものをやっているので、今後ぼちぼちログを残していけたらと思います。

今日は初回なので、ちょっと駆け足。仕組み的な話は追々できたらと。

はじめてのNPR - クレヨンか?水彩か…?

デモ(注:resize処理が雑なので画像を切り替えるとアウトな状態に…) https://tetracalibers.github.io/webgl-practice-ground/watercolor-pencil-image/

はじめて階調変換やエッジ検出を組み合わせて絵画っぽい加工を試してみたもの。

元画像 www.beiz.jp

GLSLによる加工後。クレヨン画と水彩画を混ぜたような謎のタッチ

色を抜くとこんな感じ。

輪郭はクレヨンっぽいのです。

(あぁ、正体がバレる…)

これはちょっと、灰っぽさがある。

他にも。

でもスマホだと粒が荒すぎて綺麗には見えません。

コードはこちら。 github.com

2つめのNPR - デッサン風?

デモ https://tetracalibers.github.io/webgl-practice-ground/gray-pencil-image/

一旦色をつけるのは諦めて、もう少し輪郭の粒が細やかになるように改良したもの。

拡大すると渦にも見える、乱数特有のアーティファクトをどう無くすかが課題。

わずかにGaussian Blurをかけるか…うーん。もっと根本的な計算の時点でどうにかならないかな。

コードはこちら。

github.com

鉛筆画といってもいろいろあるので、漫画のようにもっとストローク本数が少なくて輪郭がはっきりしたイラスト風加工フィルタも書いてみたい。

流れで色鉛筆イラスト風フィルタも書こうとしたけど、色をつけるとなるとなかなか厄介…階調数低減しちゃうと水彩っぽくなってしまうわけだし。その点に関しては引き出しが足りないなあ。

滲みをつくらないように色のムラをつくるにはどうしたらいいだろう。と考え中。