Mobile/WebGL Shader Performance Question
Hello,
We are exploring options to help improve the performance of our game for WebGL and Mobile platforms.
This is the current shader we are using, and I wanted to get your thoughts on it to see if there is room for increasing performance.
Shader "Custom/Specular" {
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)
_EmissionColor("Emission Color", Color) = (1,1,1,1)
_Shininess ("Shininess", Range (0.01, 1)) = 0.078125
_MainTex ("Base (RGB) Gloss (RGB)", 2D) = "white" {}
_EmissionLM ("Emission (Lightmapper)", Float) = 0
_EmissionLevel("Emission Level", Range (1, 30)) = 12
}
SubShader {
Tags { "RenderType"="Opaque" }
CGPROGRAM
#pragma surface surf BlinnPhong
sampler2D _MainTex;
fixed4 _Color;
fixed4 _EmissionColor;
half _Shininess;
float _EmissionLevel;
struct Input {
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutput o) {
fixed4 tex = tex2D(_MainTex, IN.uv_MainTex);
fixed4 c = tex * _Color;
o.Albedo = c.rgb;
o.Emission = c.rgb * _EmissionLevel *_EmissionColor * tex2D(_MainTex, IN.uv_MainTex).a;
o.Gloss = tex.rgb;
o.Alpha = c.a;
o.Specular = _Shininess;
}
ENDCG
}
FallBack "Self-Illumin/Diffuse"
}
Thanks in advance.
Ins$$anonymous$$d of a surface shader, you can write it as a Vertex/Fragment shader. Depending on the needs, the emission property could be removed and the specularity calculations simplified.
Though most machines can handle shaders quite well, if you're looking for performance savings, there are probably others things that can be done in the scene that would be more beneficial.
Your answer

Follow this Question
Related Questions
2D Mobile: How to mask a gameObject with another gameObject (with soft edges) 0 Answers
Unity 5 standard shader transparency not working on mobile 0 Answers
Why doesn't this specific shader work on Mobile? 0 Answers
LWRP lowest android version 0 Answers
extend Mobile-Bumped and Mobile-BumpedSpec.shader with color 1 Answer