2016-11-12 198 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變量中的所有內容都被插值並傳遞給片段或表面函數。

謝謝。