统一结合2个着色器
Combining 2 shaders in unity
我的游戏中有一个球体,我需要在其内部添加纹理。
为此,我使用了一个特定的脚本。
我还希望能够使用另一个脚本中的函数淡入淡出纹理。
但是我无法组合这些脚本。无论我怎么尝试,图像都没有显示在球体内。
着色器是:
内部翻转:
Shader "Flip Normals" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "RenderType" = "Opaque" }
Cull Front
CGPROGRAM
#pragma surface surf Lambert vertex:vert
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
float4 color : COLOR;
};
void vert(inout appdata_full v)
{
v.normal.xyz = v.normal * -1;
}
void surf (Input IN, inout SurfaceOutput o) {
fixed3 result = tex2D(_MainTex, IN.uv_MainTex);
o.Albedo = result.rgb;
o.Alpha = 1;
}
ENDCG
}
Fallback "Diffuse"
}
和推子:
Shader "Custom/AlphaBlendTransition" {
Properties {
_Blend ("Blend", Range (0, 1) ) = 0.0
_BaseTexture ("Base Texture", 2D) = "" {}
_OverlayTexture ("Texture 2 with alpha", 2D) = "" {}
}
SubShader {
Pass {
SetTexture[_BaseTexture]
SetTexture[_OverlayTexture] {
ConstantColor (0,0,0, [_Blend])
combine texture Lerp(constant) previous
}
}
}
}
是否可以组合这些着色器,同时仍然从球体内部查看纹理?
有一种方法可以避免两者都需要。您可以使用任何 3D 建模软件导出具有翻转法线的球体,然后将其导入 Unity 以仅应用一个 material 与 AlphaBlendTransition 着色器。
我的游戏中有一个球体,我需要在其内部添加纹理。 为此,我使用了一个特定的脚本。 我还希望能够使用另一个脚本中的函数淡入淡出纹理。
但是我无法组合这些脚本。无论我怎么尝试,图像都没有显示在球体内。
着色器是:
内部翻转:
Shader "Flip Normals" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "RenderType" = "Opaque" }
Cull Front
CGPROGRAM
#pragma surface surf Lambert vertex:vert
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
float4 color : COLOR;
};
void vert(inout appdata_full v)
{
v.normal.xyz = v.normal * -1;
}
void surf (Input IN, inout SurfaceOutput o) {
fixed3 result = tex2D(_MainTex, IN.uv_MainTex);
o.Albedo = result.rgb;
o.Alpha = 1;
}
ENDCG
}
Fallback "Diffuse"
}
和推子:
Shader "Custom/AlphaBlendTransition" {
Properties {
_Blend ("Blend", Range (0, 1) ) = 0.0
_BaseTexture ("Base Texture", 2D) = "" {}
_OverlayTexture ("Texture 2 with alpha", 2D) = "" {}
}
SubShader {
Pass {
SetTexture[_BaseTexture]
SetTexture[_OverlayTexture] {
ConstantColor (0,0,0, [_Blend])
combine texture Lerp(constant) previous
}
}
}
}
是否可以组合这些着色器,同时仍然从球体内部查看纹理?
有一种方法可以避免两者都需要。您可以使用任何 3D 建模软件导出具有翻转法线的球体,然后将其导入 Unity 以仅应用一个 material 与 AlphaBlendTransition 着色器。