Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
シェーダーもGoで書く! Ebitengineで作る リアルタイムGPUシェーダーエディタ
Search
cyokozai
June 13, 2026
Technology
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
シェーダーもGoで書く! Ebitengineで作る リアルタイムGPUシェーダーエディタ
https://github.com/cyokozai/kagelife
cyokozai
June 13, 2026
More Decks by cyokozai
See All by cyokozai
そりゃあ、BoFぞなもし
yusuke427
0
50
若手_学生エンジニアがテックカンファレンスに参加すべき5つの理由.pdf
yusuke427
0
38
10Gb ルータを作るための下準備
yusuke427
0
36
アウトプットの質を高めるために僕はLTをやめた
yusuke427
0
34
年末なのでオンプレ Kubernetes クラスタをアップグレードしよう
yusuke427
0
23
さくらのクラウド AppRun と GitHub Actions でお手軽サーバレス構築
yusuke427
2
140
塩漬けになったVM それ、Kubernetesで動かせますよ
yusuke427
2
250
KubeVirt の Live Migration をやってみる | Try KubeVirt's Live Migration on Nekko Cloud
yusuke427
2
740
学生プライベートクラウドはKubeVirt の夢を見るか?
yusuke427
1
200
Other Decks in Technology
See All in Technology
まちスペース®とデジタルツインと「まちづくり」
hiro_ogi
0
110
『三匹の子ぶた』から学ぶネットワークセキュリティの昔と今 / Network Security: Then and Now Through the Lens of The Three Little Pigs
nttcom
1
1.9k
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
2
2.5k
ハーレムエンジニアリング
kazuma777777
0
150
モバイルアプリ開発概論2026
recruitengineers
PRO
5
580
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
6
1.2k
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.2k
【CEDEC2026】『ウマ娘 プリティーダービー』 英語版のキャラクターの方言や口調をローカライズするための創造的アプローチ
cygames
PRO
2
720
事業価値と Engineering 2026年度版
recruitengineers
PRO
49
23k
PLATEAU で バーチャル花火大会
tatsuya1970
0
150
Flutterをカメラで動かしたかった話
sony
1
140
LanceDB入門
mocobeta
7
490
Featured
See All Featured
Docker and Python
trallard
47
4.1k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
480
My Coaching Mixtape
mlcsv
0
220
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
470
Paper Plane
katiecoart
PRO
2
53k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Designing Powerful Visuals for Engaging Learning
tmiket
1
490
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.2k
Crafting Experiences
bethany
1
250
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
200
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Transcript
シェーダーもGoで書く! Ebitengineで作る リアルタイムGPUシェーダー エディタ 2026.06.13 Ramble vol.3
目次 • 自己紹介 • VJ に憧れて • Ebitengineとは • 個人開発のVJツール”KageLife”の紹介
• (時間があれば)デモ
井上 裕介 a.k.a cyokozai 千葉工業大学大学院 情報科学研究科 情報科学専攻 修士2年 ❏ ネットワークコンテンツ研究会
Nekko Cloud Team ❏ 株式会社スリーシェイク sreake事業部 学生インターン ❏ クラウドネイティブ会議実行委員
趣味: DJ (House, EDM, etc) クラウドネイティブ会議の 懇親会でもDJを担当しました
VJ に憧れて
VJ (Video Jockey) • 音楽に合わせてリアルタイムに 映像を演出・操作する役割 • 映像クリップ, CG, カメラの映像
などをその場でミックス • 近年ではシェーダ言語を使った パフォーマンスも有名 https://www.youtube.com/watch?v=vCMrviGfzpE&list=RDvCMrviGfzpE&start_radio=1 Goodbye FROGにて落合氏による DJ / VJ の様子
VJもできるように なりたい
KodeLife • Hexler社が開発しているリアルタイム のGPUシェーダーエディタ • コードをタイピングした瞬間に裏で コンパイルされ即座に映像出力 • コーディングしながらVJできて体験 が良い
https://hexler.net/kodelife
シェーダー言語 (Shader Language) • GPUに対して画面への描画方法や計算を指示するための プログラミング言語 • 代表的な言語 ◦ GLSL:
OpenGLやWebGLで標準的に使われる ◦ HLSL: WindowsのDirectX環境で使用、PCゲーム開発などが主流 ◦ WGSL: 次世代のWeb描画規格であるWebGPU向けに設計された https://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E
GLSLの特徴 • 並列処理を前提に組まれた言語 • 画面上の座標と最終的な色を計算し出力することに特化 • 空間座標や色を表現するベクトル (vec3, vec4) や回転など
を計算する行列 (mat4) などの数学用データ型を標準装備 • 構文はCに近いのでコツをつかめば....?🤔
シェーダー言語むっず.... • レンダリングエンジンの知識+線形代数 • パフォーマンスにはある程度慣れが必要 入門してすぐ挫折
Ebitengineとは
A dead simple 2D game engine for Go https://ebitengine.org/ja/
Ebitengine ぷちConf #4 に参加したことがきっかけ • Ebitengineを使ったシェーダーのデモを 見て「これだ」と思った • 1つのコードで全ての環境で動かせる! •
Goライクなシェーダー言語 Kage がある! • ついでにGoを書く練習になるぞ
個人開発のVJツール ”KageLife”の紹介
KageLifeとは • Goの構文でシェーダーを操作するレンダリングエンジン • Kage言語を用いてシェーダーを操作する • 編集→コンパイル→映像出力が可能 • エディタ機能は省いている https://github.com/cyokozai/kagelife
//kage:unit pixels package main var Resolution vec2 func Fragment(dstPos vec4,
srcPos vec2, color vec4) vec4 { uv := dstPos.xy / Resolution return vec4(uv.x, uv.y, 0.0, 1.0) } Kage言語とGLSLの比較 kage #version 300 es precision highp float; uniform vec2 Resolution; out vec4 FragColor; void main() { vec2 uv = gl_FragCoord.xy / Resolution; FragColor = vec4(uv.x, uv.y, 0.0, 1.0); } GLSL
今後実装していく機能 • MIDI 連携 • Ableton などの DAW と連携 •
一部APIをGUI操作可能に • その他、欲しい機能募集
デモ