如何将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 {}
}
}
您可以使用在Pass {}
中添加的属性,该属性应至少包含一个顶点和一个片段着色器(或曲面着色器)。
在过程中,您定义了一个与属性同名的sampler2D
,因此可以在着色器函数中使用它。
unitys文档中有一些着色器示例: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
}
所以以类似的方式设置颜色。(很抱歉,我还没有使用这样结构的着色器,只有顶点/片段着色器,所以你必须尝试它是否有效和/或阅读unity提供的示例,或者等待更有专业知识的人的另一个答案:)
正如xyLe_在他的帖子中所建议的,在Pass{}
块中,我添加了以下代码,它起了作用:
SetTexture [_MainTex] {
constantColor [_Color]
Combine texture * primary DOUBLE, texture * constant
}