Unity在shader中获取模型的三角形id
最近做项目是需要实现一个给模型涂色的功能,一开始打算直接用模型顶点记录颜色,但这样的话没法做到每个面单独涂色,因为模型顶点是在面与面之间共享的。
后来想到既然涂色的对象是面,那能不能我在shader获取到三角形的id, 再通过cpu传入的面的颜色数据涂色呢?Unity其实是提供了相关CG语义的:SV_PrimitiveID
,使用方法如下:
float4 frag(v2f i, uint triangleID : SV_PrimitiveID) : SV_Target
{
float4 paint = _ColorBuffer[triangleID];
return