Hi all, to be concise, this shader works fine in editor whereas in android is just the pinky error material.
I would appreciate some help.
Shader "Custom/Fresnel_Emissive"
{
Properties
{
_MainTex ("Main Texture", 2D) = "white" {}
_NormalMap ("Normal Map", 2D) = "white" {}
_NormalIntensity ("Normal Intensity", Range(0, 1)) = 0
_BaseColor("Base Color", color) = (1,1,1,1)
_Smoothness("Smoothness", Range(0,1)) = 0
_Metallic("Metallic", Range(0,1)) = 0
_FresnelColor("Fresnel Color", color) = (1,1,1,1)
_FresnelIntensity("Fresnel Intensity", Range(0,10)) = 0
_FresnelRamp("Fresnel Ramp", Range(0,10)) = 0
}
SubShader
{
Tags
{
"RenderType"="Opaque" "RenderPipeline" = "UniversalRenderPipeline"
}
LOD 100
Pass
{
HLSLPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
float4 normal : NORMAL;
float4 tangent : TANGENT;
float4 texcoord1 : TEXCOORD1;
};
struct v2f
{
float4 vertex : SV_POSITION;
float2 uv : TEXCOORD0;
float3 positionWS : TEXCOORD1;
float3 normalWS : TEXCOORD2;
float3 viewDir : TEXCOORD3;
DECLARE_LIGHTMAP_OR_SH(lightmapUV, vertexSH, 4);
float4 tangent : TEXCOORD5;
float3 bitangent : TEXCOORD6;
};
sampler2D _MainTex, _NormalMap;
CBUFFER_START(UnityPerMaterial)
float4 _MainTex_ST;
float4 _BaseColor;
float _Smoothness, _Metallic, _NormalIntensity;
float4 _FresnelColor;
float _FresnelIntensity, _FresnelRamp;
CBUFFER_END
v2f vert(appdata v)
{
v2f o;
o.positionWS = TransformObjectToWorld(v.vertex.xyz);
o.normalWS = TransformObjectToWorldNormal(v.normal.xyz);
o.tangent.xyz = TransformObjectToWorldDir(v.tangent.xyz);
o.tangent.w = v.tangent.w;
o.bitangent = cross(o.normalWS, o.tangent.xyz) * o.tangent.w;
o.viewDir = normalize(_WorldSpaceCameraPos - o.positionWS);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
o.vertex = TransformWorldToHClip(o.positionWS);
OUTPUT_LIGHTMAP_UV(v.texcoord1, unity_LightmapST, o.lightmapUV);
OUTPUT_SH(o.normalWS.xyz, o.vertexSH);
return o;
}
half4 frag(v2f i) : SV_Target
{
float3 normals = UnpackNormalScale(tex2D(_NormalMap, i.uv), _NormalIntensity);
float3 finalNormals = normals.r * i.tangent + normals.g * i.bitangent + normals.b * i.normalWS;
float fresnelAmount = 1 - max(0, dot(finalNormals, i.viewDir));
fresnelAmount = pow(fresnelAmount, _FresnelRamp) * _FresnelIntensity;
float3 fresnelColor = _FresnelColor * fresnelAmount;
half4 mainTex = tex2D(_MainTex, i.uv);
InputData inputdata = (InputData)0;
inputdata.positionWS = i.positionWS;
inputdata.normalWS = normalize(finalNormals);
inputdata.viewDirectionWS = i.viewDir;
inputdata.bakedGI = SAMPLE_GI(i.lightmapUV, i.vertexSH, inputdata.normalWS);
SurfaceData surfacedata;
surfacedata.albedo = mainTex * _BaseColor;
surfacedata.specular = 0;
surfacedata.metallic = _Metallic;
surfacedata.smoothness = _Smoothness;
surfacedata.normalTS = 0;
surfacedata.emission = fresnelColor;
surfacedata.occlusion = 1;
surfacedata.alpha = 0;
surfacedata.clearCoatMask = 0;
surfacedata.clearCoatSmoothness = 0;
return UniversalFragmentPBR(inputdata, surfacedata);
}
ENDHLSL
}
}
}