- Home /
Separate Alpha and Color Textures for CutOut Shader
Hi,
I've spent two days trying to get this work. I wanted to modify the built-in CutOut diffuse shader so that it has two texture slots. One for Diffuse Color, the other for Alpha(cutout). That would make it possible to move the diffuse texture along UVs or tile it while alpha cutout stays in place.
I've briefly studied some shaders and have modified some masking shader (from shaders wiki) to separate those channels. But the problem is that it doesn't work with Depth Of Field Effect.
Then I've tried strumpy shader editor and have successfully made a cutout shader but again, it doesn't work with DOF :(
Here's the image: [on the right is Unity built-in cutout diffuse shader on a plane and it works with DOF, on the left is what I get when I make a cutout shader in strumpy's editor]
Does anyone know what is that magic shader property that makes built-in cutout shaders work with DOF? I can't seem to find it. And two days ago, I didn't know anything about shaders (just to give you some info about my expertize). I plan on learning coding shaders but this is currently the only customization i need and it turned out to be a discouraging stumbling block :)
Thank you for your time you spent reading this.
O$$anonymous$$, I've managed to do it! I've downloaded a built-in cutout shader and added a texture for rgb only.
It works but it doesn't answer the question - what is it that makes it work with DOF? If someone knows, I'd still like to know what it is :)
Also, I've found out that the strumpy shader (left) works when in deferred rendering.
Answer by RyanBHI · Dec 18, 2014 at 09:57 PM
If anyone else is having issues with custom cutout shaders and depth of field, this may help. Depth of field is rendered using a replacement shader, so to have your custom cutout shader render correctly you need to have two things to have the replacement shader render as you'd expect:
RenderType set to TransparentCutout
A shader float property called _Cutoff that contains the alpha cutoff to use
And thats it, it should render your alpha cut stuff properly.
Properties
{
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
_Color ("Tint", Color) = (1,1,1,1)
_Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
}
SubShader
{
Tags
{
"Queue"="Transparent"
"IgnoreProjector"="True"
"RenderType"="TransparentCutout"
"PreviewType"="Plane"
"CanUseSpriteAtlas"="True"
}
... your shader code here ...
}
Your answer
Follow this Question
Related Questions
Unity2D: Stretching Where Alpha Should Be 1 Answer
Merging (alpha) Unlit shader with Cutout shader 3 Answers
Color To Alpha shader for android not working 0 Answers
Transparent cutout shader for circular timer from Photoshop PNG is too messy/sloppy 1 Answer
How to add alpha cutout shader to this curveworld shader 1 Answer