シェーダーのコンパイル

進捗報告

  • S式からシェーダーコードを生成する簡単なDSLを用意
  • シェーダーのコンパイルとプログラムリンクまで整備

design-scheme

入力(shape)に対して出力を計算する箇所をdesignと呼ぶ事にしたので、
そのDSLをdesign-schemeとすることにしました。
現状、最適化やハードウェアに近い箇所までのチューニングは考えてないので、
下記のようにシンプルな記法までのサポートにしています。
(今後の実装の中で必要になれば追加していきます)

(version 410)
(in 0 vec2 pos)
(uniform mat4 mproj)
(begin
  (set! gl_Position (* mproj (vec4 pos 0 1))))

gl_PositionはGLSLの構文がそのまま出ているので、
いずれ専用のシンボルを割り当てておきたいですね。

次にすること

UseProgram, Uniformの整備

designを実際に使用するまでの流れに関して思想中です。
シェーダーを運用していくにあたって、
currentのプログラム切替とuniformの設定が必要なので、
ここらへんを分かりやすく運用できないかと思っています。

Shapeの整備

入力ジオメトリは古いOpenGLのようにストリーム入力を標準にするつもりですが、
バッファの運用が必要なので、どうやってメモリ管理しようかと考えています。