2017-12-08 19 views
0

私の質問は、頂点カラーデータをシェーダプログラムに統一的に渡す方法です。 OpenGLのC++コードとは異なり、属性を定義してシェーダプログラムとリンクします。頂点の色情報をGLSLシェーダプログラムに渡す方法Unity

例:

float vertices [] 
{ 
    //vertex pos     //vertex color 
    .0.0, 1.0, 0.0,     1.0, 0.0, 0.0, 
    1.0, 2.0, 1.0     0.0, 1.0, 0.0 
} 

した後、我々はサイズに基づいて、それを解析してデータを渡し、頂点バッファにサイズを相殺。 "gl_vertex"はすべての頂点位置データを取りますが、カラーデータも渡したいので、フラグメントシェーダーで使用できます。

私はこのような何かをしたい、

//vertex shader 
in vec4 color 
out vec4 Color 
void main() 
{ 
gl_Position = gl_vertex //working fine 
Color = color //expecting 
} 

//fragment shader 
out vec4 fragcolor 
in vec4 Color 
void main() 
{ 
outColor = Color 
} 
+0

3Dモデルからシェーダーへの頂点カラーを意味しますか? – Programmer

+0

ユニティマニュアルを読むことをお勧めします。 GLシェーダは、.shaderファイルで使用されるものとはまったく異なりますので、ここではOpenGLにタグを付けるべきではありません。最新のUnity Shader Referenceについては、https://docs.unity3d.com/Manual/SL-Reference.htmlを参照してください。 – finlaybob

+0

[GLSLを使用する](https://docs.unity3d.com/Manual/SL-GLSLShaderPrograms.html)しようとしていますか?この質問から完全には分かりません。 – Moira

答えて

1

頂点カラーは、[1]で説明したようにMeshを設定することができます。

シェーダで使用するには、メンバを頂点シェーダ入力構造体に追加し、[2]で説明したように: COLORで飾ります。

[1] Unity Scripting API; Mesh.colors; https://docs.unity3d.com/ScriptReference/Mesh-colors.html

[2] Unity Manual;頂点プログラムに頂点データを提供する。 https://docs.unity3d.com/560/Documentation/Manual/SL-VertexProgramInputs.html

関連する問題