Я новичок в программировании шейдеров. Я создал простой шейдер с радиальным градиентом, и когда они пересекаются, я хочу увеличить транспарентность. Я хотел бы что-то вроде этого эффекта: Прозрачный между двумя объектами (сетки?)
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
}
}
Да, возможно, код не так-то красота, но для тестов это полезно. Спасибо за любой ответ!
Спасибо, но это работает только с цветом. И почему аддитивное смешение визуализирует только красные и белые цвета? o.o – nipercop
Поместите его в очередь Transparent render, как @Stas BZ. – Geri