TSLへの移行
three.jsではWebGPUのサポート拡大に伴い、TSL(TypeScript Shader Language)への移行が開始された。 https://github.com/mrdoob/three.js/wiki/Three.js-Shading-Language https://threejs.org/examples/?q=tsl#webgpu_tsl_transpiler
各種マテリアルをTSLに移植する。 TSLの各種ドキュメント、トランスパイラなどが揃ってから挑戦する。 TSLは2024/05/30時点で開発途上のため、APIの破壊的変更の可能性があることに注意
TSLに関する部分的な実験は https://github.com/MasatoMakino/threejs-lab を参照すること。
uniform, attributeの参照、およびfbmの関数化が実装できた。 残課題としてpositionの編集(膨らませる)、タイマーアニメーションなどがある。
related : #123 RimBasicMaterialをNodeマテリアルで書き換え。
WebGPURenderer / TSLMaterialと、WebGLRenderer / ShaderMaterialを同一エントリーポイントで出力することが難しい。 three.webgpu.jsがthree.module.jsとバッティングするため。
現状では、three.webgpu.jsを参照するプロジェクトと、three.module.jsを参照するプロジェクトを完全に分離しなければ理想的な結果が出ない。
今後考えられる展開は
- three.module.jsにwebgpuサポートが統合される
- three.module.js + webgpuの混合importが可能になる
- three.module.jsが廃止されて、three.webgpu.jsが新世代のデフォルトエントリーポイントになる
3の場合、ShaderMaterialとNodeMaterialの同一パッケージでの提供は不可能になるため、Nodeマテリアルは新規リポジトリに移行する。