Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Scala 3 で GLSL のための c-like-for を実装してみた

Scala 3 で GLSL のための c-like-for を実装してみた

【オフライン】Scalaわいわい勉強会 #5【東京】
https://scala-tokyo.connpass.com/event/344598/

TATSUNO Yasuhiro

March 14, 2025
Tweet

More Decks by TATSUNO Yasuhiro

Other Decks in Programming

Transcript

  1. 自己紹介 - TATSUNO Yasuhiro @exoego on GitHub & Twitter(𝕏) -

    データ分析系 SaaS の Stuff Software Engineer - 趣味で Scala Steward のメンテナンスなどをしています - 東京のおいしいカレー屋を食べて帰りたいので教えてく ださい
  2. ゲームにおける Shader とはなんぞや 2D や 3D のグラフィックスを計算で加工する仕組み 光と影、質感、画面効果などを与えられる、らしい https://www.reddit.com/r/admincraft/comments/k4pibq/made_a_comparison_of_the_3_most_popular_shaders/ Minecraft

    における光源や水表現の強化 https://www.reddit.com/r/RetroGamePorn/comments/10k40am/jet_set_radio_wi thout_celshaded_graphics_is_cursed/#lightbox Jet Set Radio におけるトゥーンレンダリング
  3. Scala ゲームエンジン Indigo で Shader はどう使う? ultraviolet という Scala 3

    to GLSL トランスパイラーが Scala コードを GLSL に変換してくれる !!!!
  4. ultraviolet で生成する GLSL Shader 型は単純な関数 c-like な for cfor(初期状態, 継続条件,

    次の状態) 中身こんな感じ。えっ普通…? これが GLSL WebGL で実行できる ここで魔法が起きます
  5. 魔法の中身 = Scala 3マクロ ≒ コンパイル時の AST 変 換 fragment.toGLSL[T]

    は cfor コードから GLSL 文字列を コンパイル時に生成 入力:Shader インスタンスの AST 出力:別の AST 今回は GLSL インスタンス