- Home /
Adapt alpha mask shader to gradual alpha increase with distance to object center
Hi! I'm very new to Shaders in Unity but have been able to develop something that resembles what I'm looking for. What I have done is create a shader that when applied to a texture and then to any object, when it intersects with any other object, an alpha mask is created in place of said intersection. Example with shader texture applied to a sphere.
Scene Shaded:
Scene Alpha Channel:
Shader Code:
Shader "Mask"
{
Properties {
_Color("Color", Color) = (1,1,1,1)
}
Category {
Tags {"RenderType" = "Opaque" "Queue"="Transparent"}
Color [_Color] // change alpha in material to tweak mask strength
SubShader
{
//Rendertype: Opaque, Transparent or Overlay all give same result...
//Queue is important here! Must be over 2500 to get front to back rendering, Overlay = 4000 (Transparent also works..)
Tags { "RenderType"="Opaque" "Queue" = "Overlay" }
LOD 100
ZWrite Off
//first pass sets the mask for the "front geometry"
Pass
{
ColorMask 0
Cull Back
ZTest Greater
Stencil {
Ref 1
Comp Always
Pass Replace
}
}
//second pass turn off culling, could be Cull Off or Cull Front (both acheive the same thing)
//use the mask from the first pass
Pass
{
Cull Off
ZTest Greater
ColorMask A
Stencil {
Ref 1
Comp NotEqual
}
}
// reset the stencil buffer so other objects dont mask out this one
Pass
{
//Cull Back
ZTest Greater
ColorMask 0
Stencil {
Ref 0
Comp Always
Pass Zero
}
}
}
}
}
Unfortunatly I would like to have the alpha value increase with the distance to the center of the object the texture is applied to (knowing that I want to have this texture applied to multiple different objects at the same time) in order to create a more subtle transition between the masked and non-masked surfaces, but I'm struggling a lot to achieve it, any idea on how I could solve my problem?
Thank you in advance :)
Your answer
Follow this Question
Related Questions
Using an object as a mask for another object (using Spine) 0 Answers
Merge 2 shaders 0 Answers
Image effect shader that masks spritelayer 1 Answer
Mask Shader and Shadow 2 Answers