threejs-shader-materials icon indicating copy to clipboard operation
threejs-shader-materials copied to clipboard

TSLへの移行

Open MasatoMakino opened this issue 1 year ago • 3 comments

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の破壊的変更の可能性があることに注意

MasatoMakino avatar May 30 '24 00:05 MasatoMakino

TSLに関する部分的な実験は https://github.com/MasatoMakino/threejs-lab を参照すること。

uniform, attributeの参照、およびfbmの関数化が実装できた。 残課題としてpositionの編集(膨らませる)、タイマーアニメーションなどがある。

MasatoMakino avatar Jun 04 '24 05:06 MasatoMakino

related : #123 RimBasicMaterialをNodeマテリアルで書き換え。

MasatoMakino avatar Jun 27 '24 05:06 MasatoMakino

WebGPURenderer / TSLMaterialと、WebGLRenderer / ShaderMaterialを同一エントリーポイントで出力することが難しい。 three.webgpu.jsがthree.module.jsとバッティングするため。

現状では、three.webgpu.jsを参照するプロジェクトと、three.module.jsを参照するプロジェクトを完全に分離しなければ理想的な結果が出ない。

今後考えられる展開は

  1. three.module.jsにwebgpuサポートが統合される
  2. three.module.js + webgpuの混合importが可能になる
  3. three.module.jsが廃止されて、three.webgpu.jsが新世代のデフォルトエントリーポイントになる

3の場合、ShaderMaterialとNodeMaterialの同一パッケージでの提供は不可能になるため、Nodeマテリアルは新規リポジトリに移行する。

MasatoMakino avatar Dec 23 '24 03:12 MasatoMakino