Черная текстура на Android (шейдер)
Добавлено: 01 фев 2021, 01:05
Перешёл на Unity 2020.2.1f1, после загрузки проекта некоторые текстуры (с определенными шейдерами) отображают черный цвет. В чем может быть проблема? Прочитал много решений, например поменять настройки проекта, настройки графики для Android, но ни одно не помогло.
Ниже код проблемных шейдеров.
Shader "XRay"
Shader "Transmission"
Ниже код проблемных шейдеров.
Shader "XRay"
Синтаксис:
Используется csharp
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"
{
_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"
Синтаксис:
Используется csharp
{
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"
}
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"
}