グラフベースのマテリアルシステムで、さまざまな入力および出力タイプをどのようにサポートできますか?
私のようなどのように材料系のまわりで私の頭をラップしようとしているこの、これは実装されています。これらの強力でユーザーフレンドリーなグラフのようなシステムは、プログラマーと非プログラマーの両方がシェーダーをすばやく作成できるようにする方法として比較的一般的であるようです。ただし、グラフィックスプログラミングの私の比較的限られた経験から、私はそれらがどのように機能するか完全にはわかりません。 バックグラウンド: そのため、以前に単純な OpenGLレンダリングシステムをプログラミングしたことがある場合は、通常、手動で作成した静的GLSLファイルからシェーダーを読み込み、コンパイル、リンクするMaterialクラスを作成します。また、通常、このクラスを、GLSLの統一変数にアクセスするための単純なラッパーとして作成します。簡単な例として、基本的な頂点シェーダーとフラグメントシェーダーがあり、テクスチャを渡すための追加の均一なTexture2Dがあるとします。私のMaterialクラスは、これら2つのシェーダーをマテリアルに読み込んでコンパイルし、その時点から、そのシェーダーのTexture2Dユニフォームを読み書きするための単純なインターフェイスを公開します。 このシステムをもう少し柔軟にするために、私は通常、任意の名前/タイプのユニフォームを渡すことができるようにシステムを記述します[ie:SetUniform_Vec4( "AmbientColor"、colorVec4);]。これは均一な材料中に存在する場合、「colorVec4」と呼ばれる特定の4DベクトルにAmbientColorを均一に設定します。]。 class Material { private: int shaderID; string vertShaderPath; string fragSahderPath; void loadShaderFiles(); //load shaders from files at internal paths. void buildMaterial(); //link, compile, buffer with OpenGL, etc. public: void SetGenericUniform( string uniformName, int param ); void SetGenericUniform( string uniformName, float param ); void SetGenericUniform( …