draw(tokyo); #3でGLSLライブコーディングによるVJをしました
2025/10/12に渋谷のclubasiaでオーディオビジュアルイベントdraw(tokyo); #3が開催されました。
さだきち(@sadakkey)さんのDJにVJとして出演し、前回のdraw(tokyo); #2に引き続き、Sh4derJockeyを使ったGLSLライブコーディングによるVJを行いました。
本記事では、前回からの改善点と当日の振り返りを紹介します。
パフォーマンスの動画
本番時のフルバージョンの画面録画です。
観客の方が撮影してくださったライブ映像です。臨場感や会場の雰囲気が伝わってきます。
draw(tokyo); #3 at clubasia の画面録画をYouTubeにて公開しました!
— がむ (@gam0022) October 13, 2025
DJ @sadakkey × VJ @gam0022
VJは全部GLSLシェーダーです🔥
ライブコーディングと事前の作り込みのハイブリッド方式でやりました!
FULL版はYouTubeから👇️https://t.co/Vz5R4LwB3j pic.twitter.com/jdxOFOuHWH
draw(tokyo); #3 at clubasia のライブ映像を公開しました!
— がむ (@gam0022) October 22, 2025
観客撮影の動画なので、臨場感や会場の雰囲気が伝わってきます🔥
DJ @sadakkey × VJ @gam0022
VJは全部GLSLシェーダーです🔥#function_draw #GLSL #LiveCoding
FULL版はYouTubeから👇https://t.co/4v5LBpJv2f pic.twitter.com/LN4jJNdiSP
draw(tokyo); #2からの改善点
システムの基本構成はdraw(tokyo); #2と同様ですが、シーンやポストエフェクトを追加したほか、いくつかの改善を加えました。
MIDIコントローラーのレイアウト整理
前回はMIDIコントローラー(nanoKONTROL2)のボタン・スライダーの割り当てが整理しきれていない部分がありましたが、今回はカテゴリー別に整理しました。
レイアウトを整理したことで、本番中に目当てのボタンをすぐに操作できるようになりました。

各ボタンごとの詳細は下の図のようにしました。

ドロップ前の上昇音などで映像のスピードが加速していく演出については、スライダー1の「BPM調整」で手動でBPMを合わせていました。
スライダー0の点滅(ポストエフェクトのカテゴリー)とスライダー1のBPM調整(システムのカテゴリー)が並んでいるのは違和感を覚えるかもしれませんが、この2つは同時に値を上げる調整をすることが多いので、操作性向上のために意図的に隣に配置しました。
シーン切り替え時のbeat位相リセット
draw(tokyo); #2の課題として、beatの位相(開始タイミング)をリセットする機能がなかったので、Sh4derJockeyのtime(時間)をリセットすることでしか音楽と映像のタイミングを合わせる手段がなく、不便でした。
Sound2Lightで音楽のBPMは自動取得していますが、位相については自動的に同期させるための仕組みは今回も実装しませんでした。
今回はシーンを切り替えると同時にbeatカウンターをリセットする仕組みを追加しました。これにより、曲の切り替わりに合わせてシーンを切り替えることによって位相を合わせることができ、音楽と映像の同期がやりやすくなりました。
WORMHOLEなど既知BPMの楽曲への対応
今回のセットでは、さだきちさんと一緒に制作したデモシーン作品「WORMHOLE」と「Transcendental Cube」の楽曲を使いました。
これらの楽曲はBPMが既知なため、Sound2Lightを使ったBPM自動同期を一時的に停止し、事前に決めたBPMに固定する仕組みを用意しました。
なぜかこの2曲はSound2LightのBPM検出がうまくいかないという理由もありました。
また、楽曲の特定タイミングにbeatカウンターを同期させる専用の仕組みも実装し、曲の展開や盛り上がりに合わせた演出ができるようにしました。
UVを引き伸ばすポストエフェクト
今回は万華鏡やミラーなどUVを加工する系のポストエフェクトを数多く追加しましたが、その中でもUVを引き伸ばすポストエフェクトは実装が簡単な割に効果的で個人的にお気に入りです。
線に引き伸ばされるエフェクト、UVを引き伸ばしているだけなので一瞬で実装できるんですが、なかなかコスパが良いと思います。#function_draw https://t.co/SGCs3zZoii pic.twitter.com/T7dweI2h3O
— がむ (@gam0022) October 14, 2025
// UVをclampして引き延ばす
float a = 2 * (fract(beat) - 0.5);
uv.y = clamp(uv.y, -1 + a, a);
WORMHOLEのテキストに利用したシェーダーと原理は同じです。詳しくは次の記事の「演出3: 出現と消失アニメーション」を参考にしてください。
まとめ
久しぶりにさだきちさんと一緒に活動できて、とても楽しかったです。
とくに、WORMHOLEのdraw(tokyo); #3 versionのアレンジがすごくカッコよくてテンションが上がりました。
こちらはWORMHOLEの前後だけ切り取った動画です。
会場に足を運んでくださった皆さん、クルーやスタッフの方々、そしてさだきちさん、最高のイベントをありがとうございました!
スライドによるVJ解説
レイトレ合宿11のセミナーでGLSL VJについて発表した時のスライドです。
X(Twitter)の反応
カッコよすぎる
— と り🐔 (@t0rry_) October 12, 2025
#function_draw pic.twitter.com/GOSSemEskG
ギュンギュン… #function_draw pic.twitter.com/IwjU30bRgj
— sdhizumi / S.Kudo@M3 R-02b (@sdhizumi) October 12, 2025
#function_draw ウオー pic.twitter.com/6DHiAmMFZ1
— tktk | てけてけ (@tktk_1) October 12, 2025
#function_draw
— Saina(さいな) (@SainaKey) October 12, 2025
好きなハウス流れて神 pic.twitter.com/zJmYOg2xsn
#function_draw
— Saina(さいな) (@SainaKey) October 12, 2025
贅沢すぎる@sadakkey × @gam0022 pic.twitter.com/FVqyNrukaI
Related Posts
draw(tokyo); #2でVJデビュー!(GLSLライブコーディング)
3/22に渋谷のCIRCUS TOKYOでオーディオビジュアルイベントdraw(tokyo);#2が開催されました。
『WebGL 総本山 + normalize.fm あわせて13周年感謝祭』でGLSLライブコーディングしました
『WebGL 総本山 + normalize.fm あわせて13周年感謝祭』の夜の部のShader JamsでGLSLのシェーダーライブコーディングしました。
慶應大学SFCの講義でシェーダーについて話しました
巴山先生の慶應大学SFCの講義「CGと数学」にゲストでお呼びいただき、シェーダーやデモシーンについてお話ししてきました。
SESSIONS 2024参加記録(セミナー登壇・ShaderJam解説・Realtime Graphics)
これはSESSIONS Advent Calendar 2024の11日目の記事です。
SESSIONS 2024のRealtime Graphicsコンペティションで3位入賞しました(グラフィックス解説)
これはSESSIONS Advent Calendar 2024の2日目の記事です。
Books
ブログ執筆者の著書





