タイトルが示すように、特定のShaderMaterialをメッシュごとに再利用したいのですが、メッシュごとにユニフォームのセットが異なります(実際、一部のユニフォームはメッシュ間で異なる場合がありますが、必ずしもすべてではありません):可能ですか?
この状況でメッシュごとに完全なシェーダーマテリアルを作成する必要があるのはリソースの無駄のようです。単一の頂点/フラグメントシェーダープログラムを使用し、メッシュに応じて値が変化するさまざまなユニフォームを使用して構成するというアイデアです。 。メッシュごとに新しいShaderMaterialを作成すると、多くの重複が発生します(頂点+フラグメントプログラム+ Material / ShaderMaterialクラスの他のすべてのデータメンバー)。
エンジンがメッシュを描画する前にコールバックを呼び出すことができれば、ユニフォームを変更して、やりたいことを達成できます。もう1つの可能性は、共有ShaderMaterialへのポインターとメッシュの特定のユニフォームのみを保持する「LiteShaderMaterial」を持つことです。
私の質問はこれに関連していることに注意してください。同じジオメトリとマテリアルを持つ多くのメッシュですが、色を変更できますか?しかし、私は主にリソースの浪費を懸念しているので、それでも違います-パフォーマンスに関しては、エンジンはすべてに注意するのに十分スマートでなければならないので、複数のShaderMaterialを使用するか単一のShaderMaterialを使用するかで大きな違いはないと思います資料には同じプログラムがあり、gfxカードに再送信しないでください。
ありがとう