- Home /
Single model draws incorrectly when using transparency.
Here is the model rendered via diffuse:
Here it is using Transparency:
http://i.imgur.com/nSro7BP.png
As you can see, parts of the model now draw on top of each other...
I've tried all sorts of methods I've found via google and this site but none of them are full proof.
Cutout seems to draw the tank correctly, but then there's issues where multiple objects then don't get ordered properly when drawn.
I've been writing my own shader to cause various fade in/out effects:
http://i.imgur.com/PBZXlQv.gif
http://i.imgur.com/NBOXZal.gif
This is the shader so far:
Shader "Custom/anotherShader" {
Properties {
_MainTex ("Texture", 2D) = "white" {}
_Dissolve ("Dissolve", 2D) = "white" {}
_Emission ("Emission", 2D) = "white" {}
_Amount ("Amount", float) = 0
_Thickness ("Thickness", float) = 0.2
_Colour ("Colour", Color) = (1,1,1,1)
}
SubShader {
Tags { "Queue"="Transparent"}
LOD 200
CGPROGRAM
#pragma surface surf Lambert alpha
sampler2D _MainTex;
sampler2D _Dissolve;
sampler2D _Emission;
float4 _Colour;
float _Amount;
float _Thickness;
struct Input {
float2 uv_MainTex;
float2 uv_Dissolve;
float2 uv_Emission;
};
void surf (Input IN, inout SurfaceOutput o) {
half4 c = tex2D (_MainTex, IN.uv_MainTex);
half4 d = tex2D (_Dissolve, IN.uv_Dissolve);
half4 e = tex2D (_Emission, IN.uv_Emission);
o.Albedo = c.rgb;
o.Alpha = 1;
if(d.r < _Amount)
{
o.Alpha = 100;
o.Albedo = _Colour.rgb;
}
if(d.r < _Amount + _Thickness)
{
o.Emission = (_Colour.rgb * (_Thickness / ( d.r - _Amount)));
}
else
{
o.Emission = _Colour * e.r;
}
}
ENDCG
}
FallBack "Diffuse"
}
I know the Shader isn't that efficient but this is my first time writing a shader.
Your answer
Follow this Question
Related Questions
GameObject not receiving shadows 0 Answers
Transparent shader for Android 1 Answer
Rendering an entire object as transparent 1 Answer
Multiple transparency - is solution exists? 0 Answers
Adding transparency to a shadow 1 Answer