- Home /
Question by
ALEKS_WHITE · Feb 01, 2021 at 10:10 PM ·
androidshadermaterialblack
Black texture on Android (shader)
Moved my project to Unity 2020.2. 1f1. After loading the project, some materials (with specific shaders) are rendered black, but only on my Android devices (In editor is ok) What could be the problem? I read a lot of solutions, for example to change the project settings, graphics settings for Android, but no one of them not helped. The code of the problematic shaders:
Shader "XRay"
Properties
{
_Color("Color", Color) = (0.26,0.19,0.16,0.0)
_Offset("Offset", Range(0.0,1.0)) = 0.0
_Scale("Scale", Range(0.0,10.0)) = 1.0
_RimPower("Rim Power", Range(0.1,8.0)) = 3.0
}
SubShader{
Cull Back
ZWrite Off
Blend OneMinusDstColor One // Soft Additive
Tags { "RenderType" = "Transparent" "Queue" = "Transparent" }
CGPROGRAM
#include "HoloCP.cginc"
#pragma surface surf Lambert
struct Input {
fixed3 viewDir;
fixed3 worldPos;
};
fixed4 _Color;
fixed _Offset;
fixed _Scale;
fixed _RimPower;
void surf(Input IN, inout SurfaceOutput o) {
half rim = 1.0 - saturate(dot(normalize(IN.viewDir), o.Normal));
o.Emission = saturate(_Color.rgb * (_Offset + _Scale * pow(rim, _RimPower)));
}
ENDCG
}
Fallback "Diffuse"
Shader "Transmission"
{
Properties
{
_Color("Color", Color) = (0.26,0.19,0.16,0.0)
_Offset("Offset", Range(0.0,1.0)) = 0.0
_Scale("Scale", Range(0.0,10.0)) = 1.0
_RimPower("Rim Power", Range(0.1,8.0)) = 3.0
[Header(Transmission)]
_TransmissionPlane("Plane", Vector) = (0.0, 1., 0.0, 0.0)
_Range("Range", Range(1.0,10.0)) = 1.0
_Speed("Speed", Range(-10., 10.)) = -5.0
}
SubShader
{
Tags { "RenderType" = "Transparent" "Queue" = "Transparent-1" }
Blend OneMinusDstColor One
Pass
{
Cull Off
ZWrite Off
Blend OneMinusDstColor One // Soft Additive
Tags{ "RenderType" = "Transparent" "Queue" = "Transparent" }
CGPROGRAM
#include "HoloCP.cginc"
#pragma vertex vert
#pragma fragment frag
fixed4 _Color;
fixed _Offset;
fixed _Scale;
fixed _RimPower;
fixed3 _TransmissionPlane;
fixed _Range;
fixed _Speed;
struct v2f
{
fixed4 viewPos : SV_POSITION;
fixed3 normal: NORMAL;
fixed3 worldSpaceViewDir: TEXCOORD0;
fixed4 world : TEXCOORD1;
fixed2 offset: TEXCOORD2;
UNITY_VERTEX_OUTPUT_STEREO
};
v2f vert(appdata_base v)
{
UNITY_SETUP_INSTANCE_ID(v);
v2f o;
o.viewPos = UnityObjectToClipPos(v.vertex);
o.worldSpaceViewDir = WorldSpaceViewDir(v.vertex);
o.normal = normalize(mul(unity_ObjectToWorld, fixed4(v.normal, 0.0)).xyz);
o.world = mul(unity_ObjectToWorld, v.vertex);
fixed3 transmissionDir = normalize(_TransmissionPlane.xyz);
o.offset.x = dot(o.world, transmissionDir);
o.offset.y = abs(dot(o.normal, transmissionDir));
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
return o;
}
fixed4 frag(v2f i) : COLOR
{
fixed4 o = 0;
half rim = 1. - abs(dot(normalize(i.worldSpaceViewDir), i.normal));
o.rgb = saturate(smoothstep(1., 0.75, i.offset.y) * (0.5 + 0.5 * sin(62.8 * i.offset.x * _Range + _Time.w * _Speed)) * _Color.rgb * (_Offset + _Scale * pow(rim, _RimPower)));
return o;
}
ENDCG
}
}
FallBack "Diffuse"
}
P.S. everything worked before that
Comment
Your answer
Follow this Question
Related Questions
Black Material if Use Mip level?!! 0 Answers
Transparent material on iPhone Android 3 Answers
Material SetColor in a loop not working on Android 1 Answer
Unity 3D - Material or Shader issue 1 Answer