2016-03-15 6 views
0

Могу ли я сделать разные цвета для каждого экземпляра вершины этого шейдера? мне нужно отправить экземпляр o.output в цвет фрагмента? Это реализация Unity3d HLSL, работающая Graphics.DrawProcedural (MeshTopology.LineStrip);HLSL-фрагмент шейдера разного цвета для каждой вершины?

 #pragma fragment frag 
     #include "UnityCG.cginc" 

       StructuredBuffer<float3> buf_Points; 
       StructuredBuffer<float3> buf_Positions; 

       struct ps_input { 
        float4 pos : SV_POSITION; 
       }; 

       ps_input vert (uint id : SV_VertexID, uint inst : SV_InstanceID) 
       { 
        ps_input o; 
        float3 worldPos = buf_Points[id] + buf_Positions[inst]; 
        o.pos = mul (UNITY_MATRIX_VP, float4(worldPos,1.0f)); 
        return o; 
       } 

       float4 frag (ps_input i) : COLOR 
       { 
        return float4(1,0,0,1); 
       } 

       ENDCG 

ответ

0

Я решил его, это то, что такого рода:

 struct ps_input { 
      float4 pos : SV_POSITION ; 
      float4 col : COLOR; 
     }; 

     ps_input vert (uint id : SV_VertexID, uint inst : SV_InstanceID) 
     { 
      bla 

      o.pos = mul (UNITY_MATRIX_VP, float4(worldPos,1.0f)); 
      o.col = float4(sin(inst),0,0,1); 
      return o; 
     } 

     float4 frag (ps_input i) : COLOR 
     { 
      return i.col;//float4(0.7f,.7f,.7f,1); 
     } 

     ENDCG 
Смежные вопросы