【发布时间】:2016-11-12 11:46:21
【问题描述】:
我已使用 Maya (Image1) 将顶点颜色分配给平面,并使用显示顶点颜色的 VertexColorShader 将其导出到 Unity。
我预计结果会像 Image3,但结果却像 Image2。
请看看那些图片。
我的着色器相当简单。它只是使顶点颜色可见。
vert 函数获取每个顶点颜色并将其存储在输出变量中。
surf 函数从变量中检索颜色并将其设置为片段的颜色。
据我所知,由于每个顶点都会调用 vert 函数,所以我认为结果会像 Image3(我用 Photoshop 制作了这张图片),但实际上是 Image2。
怎么会?
顶点之间的每个片段都不知道它的颜色,因为顶点之间没有调用顶点函数,所以我认为除了顶点的位置之外,平原的颜色几乎是白色的。
谁能解释一下为什么会这样??
Shader "MyShader/VertexColorShader" {
Properties {
}
SubShader {
Tags { "RenderType"="Opaque" }
CGPROGRAM
#pragma surface surf Lambert vertex:vert
struct Input {
float4 vertColor;
};
void vert(inout appdata_full v, out Input o) {
UNITY_INITIALIZE_OUTPUT(Input, o);
o.vertColor = v.color;
}
void surf (Input IN, inout SurfaceOutput o) {
o.Albedo = IN.vertColor.rgb;
}
ENDCG
}
}
干杯,
技术
【问题讨论】:
-
感谢您对颜色敏感的眼睛,但我真的看不出有什么不同..??
-
感谢您的回复。您没有看到 Image2 和 Image 3 之间的区别?真的吗??
-
2和3比较苹果和梨,一个是tex map,一个是verts