我是Shader编程中的新手。 我创建了一个带有径向渐变的简单着色器,当它们相交时,我希望增加交叉度。 我想要这样的效果:
SubShader {
Tags { "Queue" = "Geometry+10" }
Pass{
ColorMask rgb
//ZWrite On
Blend Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
float4 _Color;
float4 _ColorDark;
float _Radius;
//float _Offset;
float _Strength;
struct vertexInput {
float4 vertex : POSITION;
};
struct vertexOutput {
float4 pos : SV_POSITION;
float4 posInObjectCoords : TEXCOORD0;
};
vertexOutput vert(vertexInput input)
{
vertexOutput output;
output.pos = mul(UNITY_MATRIX_MVP, input.vertex);
output.posInObjectCoords = input.vertex;
return output;
}
float4 frag( vertexOutput input) : COLOR
{
float z = input.posInObjectCoords.z * input.posInObjectCoords.z ;
float x = input.posInObjectCoords.x * input.posInObjectCoords.x ;
float r = _Radius * _Radius;
float alf = (x+z) / r;
return float4 (_ColorDark.r , _ColorDark.g ,_ColorDark.b, alf * _Strength);
}
ENDCG
}
}
是的,也许代码不是那么美,但对于测试来说它很有用。 谢谢你的回答!
答案 0 :(得分:1)
只需使用添加剂混合代替alpha混合。
Blend SrcAlpha One
或Blend One One
答案 1 :(得分:0)
试试这个
...
Tags { "Queue" = "Transparent" }
Pass{
ColorMask rgb
//ZWrite On
Blend SrcAlpha OneMinusSrcAlpha
...