- Home /
Unlit with shadow for mobile
I was wondering if there's a way I could create an unlit version accepting to cast and receive shadows optimized for mobile. Below a shader I found but using it, my game lost 4 fps:
Shader "Custom/Unlit With Shadows" {
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
Tags {"Queue" = "Geometry" "RenderType" = "Opaque"}
Pass {
Tags {"LightMode" = "ForwardBase"}
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_fwdbase
#pragma fragmentoption ARB_fog_exp2
#pragma fragmentoption ARB_precision_hint_fastest
#include "UnityCG.cginc"
#include "AutoLight.cginc"
struct v2f
{
float4 pos : SV_POSITION;
float2 uv : TEXCOORD0;
LIGHTING_COORDS(1,2)
};
float4 _MainTex_ST;
v2f vert (appdata_tan v)
{
v2f o;
o.pos = mul( UNITY_MATRIX_MVP, v.vertex);
o.uv = TRANSFORM_TEX (v.texcoord, _MainTex).xy;
TRANSFER_VERTEX_TO_FRAGMENT(o);
return o;
}
sampler2D _MainTex;
fixed4 frag(v2f i) : COLOR
{
fixed atten = LIGHT_ATTENUATION(i); // Light attenuation + shadows.
//fixed atten = SHADOW_ATTENUATION(i); // Shadows ONLY.
return tex2D(_MainTex, i.uv) * atten;
}
ENDCG
}
Pass {
Tags {"LightMode" = "ForwardAdd"}
Blend One One
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_fwdadd_fullshadows
#pragma fragmentoption ARB_fog_exp2
#pragma fragmentoption ARB_precision_hint_fastest
#include "UnityCG.cginc"
#include "AutoLight.cginc"
struct v2f
{
float4 pos : SV_POSITION;
float2 uv : TEXCOORD0;
LIGHTING_COORDS(1,2)
};
float4 _MainTex_ST;
v2f vert (appdata_tan v)
{
v2f o;
o.pos = mul( UNITY_MATRIX_MVP, v.vertex);
o.uv = TRANSFORM_TEX (v.texcoord, _MainTex).xy;
TRANSFER_VERTEX_TO_FRAGMENT(o);
return o;
}
sampler2D _MainTex;
fixed4 frag(v2f i) : COLOR
{
fixed atten = LIGHT_ATTENUATION(i); // Light attenuation + shadows.
//fixed atten = SHADOW_ATTENUATION(i); // Shadows ONLY.
return tex2D(_MainTex, i.uv) * atten;
}
ENDCG
}
}
FallBack "VertexLit"
}
You want an unlit shader that receives shadows? For casting shadows you can just add
UsePass "VertexLit/SHADOWCASTER"
Hi, the above shader works exactly as expected. It's an unlint shader that cast/receive shadows. I want to know if there is some adjustment to optimize it for mobile. When I attached it to a gameobject ins$$anonymous$$d of the normal mobile/unlint I lost 4 fps.
Not particularly. There will always be a performance impact of using realtime lighting. I'd recommend using some form of baked shadows or projectors for mobile.
Your answer
Follow this Question
Related Questions
What are the best shaders for mobile platforms ? 2 Answers
Rendering a plane is dropping 10 fps 0 Answers
Standard Shader Vs Mobile Diffuse Shader 0 Answers
Standard Water for Mobile 1 Answer