2016-11-12 195 views
0

我已将顶点颜色分配给Maya(Image1)的平面,并使用显示顶点颜色的VertexColorShader将其导出到Unity。顶点颜色无法正常工作

我预计结果会像Image3,但是发生的事情是它像Image2一样出来。

请看看这些图像。

Image1, Image2, Image3

我着色器是相当简单的。它只是使顶点颜色可见。

vert函数获取每个顶点颜色并将其存储在输出变量中。

surf函数从变量中检索颜色并将其设置为片段的颜色。我认为结果会像Image3(我用Photoshop制作这个图像),但实际上是以Image2的形式出现的。

Image1, Image2, Image3

怎么来的?

顶点之间的每个片断都不知道它的颜色,因为vert函数没有在顶点之间调用,所以我认为除了顶点的位置之外,plain的颜色几乎是白色的。

请问谁解释我为什么会发生这种情况?

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 
    } 
} 

干杯,

技术

+0

你的颜色敏感的眼睛的荣誉,但我真的没有看到区别.. ?? – Absinthe

+0

感谢您的回复。你没有看到Image2和Image 3之间的区别?真的吗? – tech

+0

2和3比较苹果和梨,一个是特克斯地图,一个是垂直 – Absinthe

回答

0

好吧,我得到了答案。

存储在顶点函数out变量中的所有内容都被插值并传递给片段或表面函数。

谢谢。