将纹理添加到未点亮的透明色彩着色器

时间:2016-08-03 11:29:25

标签: unity3d shader oculus cg

如何将Texture添加到Oculus API为褪色提供的后续着色器中:

Shader "Oculus/Unlit Transparent Color" {
Properties {
    _Color ("Main Color", Color) = (1,1,1,1)
    _MainTex ("Texture", 2D) = "white" {} //  I added this property to apply Texture. Where can I use it?
}

SubShader {
    Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
    LOD 100
    Fog {Mode Off}
    Cull Off
    ZWrite Off
    Blend SrcAlpha OneMinusSrcAlpha
    Color [_Color]

    Pass {}
}
}

2 个答案:

答案 0 :(得分:30)

您可以使用在Pass {}中添加的属性,该属性至少应包含顶点和片段着色器(或表面着色器)。

在传递中,您定义了一个与您的属性同名的sampler2D,因此您可以在着色器函数中使用它。

统一文档中有一些示例着色器: https://docs.unity3d.com/Manual/ShaderTut2.html
https://docs.unity3d.com/Manual/SL-SurfaceShaderExamples.html

修改
还有一个与您的结构类似的着色器示例:
https://docs.unity3d.com/Manual/ShaderTut1.html
根据这个,您可以添加类似

的内容
SetTexture [_MainTex] {
    // some properties
}

所以以类似的方式设置Color。 (对不起,我还没有使用像这样结构的着色器,只有顶点/片段着色器,因此你必须尝试它是否有效和/或读取统一提供的例子或等待具有更多专业知识的人的另一个答案:))

答案 1 :(得分:1)

在我的xyLe_Pass{}块中建议post我添加了以下代码并且它有效:

  SetTexture [_MainTex] {
            constantColor [_Color]
            Combine texture * primary DOUBLE, texture * constant
        }