You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mapbox-sdk/Shaders/RasterWithTransparencyShade...

106 lines
2.3 KiB

6 months ago
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "Mapbox/Raster With Transparency"
{
Properties
{
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "blue" {}
_Alpha ("Alpha", Float) = 1
}
Category
{
Tags { "Queue"="Transparent" "RenderType"="Transparent" }
Blend SrcAlpha OneMinusSrcAlpha
Cull Off Lighting Off ZWrite Off
SubShader
{
Pass
{
BindChannels
{
Bind "Color", color
Bind "Vertex", vertex
Bind "TexCoord", texcoord
}
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_particles
#pragma fragmentoption ARB_precision_hint_fastest
#include "UnityCG.cginc"
// Use shader model 3.0 target, to get nicer looking lighting
#pragma target 3.0
sampler2D _MainTex;
float _Alpha;
float4 _MainTex_ST;
fixed4 _Color;
struct vertexIn
{
float4 vertex : POSITION;
float4 texcoord : TEXCOORD0;
fixed4 color : COLOR;
UNITY_VERTEX_INPUT_INSTANCE_ID
6 months ago
};
struct vertexOut
{
float4 pos : SV_POSITION;
float2 uv : UV_COORD0;
float4 color : COLOR;
float2 screenspaceUv : UV_COORD1;
UNITY_VERTEX_INPUT_INSTANCE_ID
UNITY_VERTEX_OUTPUT_STEREO
6 months ago
};
vertexOut vert(vertexIn v)
{
vertexOut o;
UNITY_SETUP_INSTANCE_ID(v); //Insert
UNITY_INITIALIZE_OUTPUT(vertexOut, o); //Insert
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); //Insert
6 months ago
o.pos = UnityObjectToClipPos (v.vertex);
o.color = v.color;
o.uv = v.texcoord.xy;
o.screenspaceUv = o.pos.xy;
return o;
}
fixed4 frag(vertexOut o) : SV_Target
{
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(o);
6 months ago
float2 uv = TRANSFORM_TEX(o.uv, _MainTex);
fixed4 texColor = tex2D(_MainTex, uv);
fixed4 color = o.color * texColor;
// check how much color used for transparency equals c.rgb in range 0..1
// 1=no match, 0=full match
fixed3 delta = texColor.rgb - _Color.rgb;
float match = dot(delta,delta);
float threshold = step(match,0.1);
color.a = (1 - ((threshold) * (1 -_Color.a))) * _Alpha;
return color;
}
ENDCG
}
}
}
FallBack "Diffuse"
}