HLSL片段着色器对于每个顶点都有不同的颜色?
问题描述:
我可以为此着色器的每个顶点实例制作不同的颜色吗?我必须发送实例到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
答
我解决了它,它是这样的东西:
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