- Home /
Adding Spheremap reflection and Gloss/Shininess controls to a Sruface Shader
For my current iOS game, I'm using the following Surface Shader for some small but important objects:
Shader "iOS/Multi-Purpose" { Properties { _Color ("Main Color", Color) = (1,1,1,1) _MainTex ("Texture", 2D) = "white" {} _Ramp ("Shading Ramp", 2D) = "gray" {} _RimColor ("Rim Color", Color) = (0.7,0.7,0.7,1) _RimPower ("Rim Power", Range(0.5,8.0)) = 3.0 } SubShader { Tags { "Queue" = "transparent+1" "RenderType" = "transparent" } CGPROGRAM #pragma surface surf Ramp nolightmap noforwardadd approxview alpha
sampler2D _Ramp;
half4 LightingRamp (SurfaceOutput s, half3 lightDir, half3 viewDir, half atten) {
half NdotL = dot (s.Normal, lightDir);
half diff = NdotL * 0.5 + 0.5;
half3 ramp = tex2D (_Ramp, float2(diff)).rgb;
half4 c;
c.rgb = (s.Albedo * _LightColor0.rgb * ramp) * (atten * 2);
return c;
}
struct Input {
float2 uv_MainTex;
float3 viewDir;
};
float4 _Color;
sampler2D _MainTex;
float4 _RimColor;
float _RimPower;
void surf (Input IN, inout SurfaceOutput o) {
o.Albedo = ((tex2D (_MainTex, IN.uv_MainTex).rgb)*(_Color.rgb));
half rim = 1.0 - saturate(dot (normalize(IN.viewDir), o.Normal));
o.Emission = _RimColor.rgb * pow (rim, _RimPower);
o.Alpha = tex2D (_MainTex, IN.uv_MainTex).a * _Color.a;
}
ENDCG
}
Fallback "VertexLit"
}
For this shader, I basically mixed the Ramp lighting method with the Rimlight shader, both found in the Unity documentation, and added an Alpha control. Everything is working fine, but now I need to add a simple Specular/Gloss control (possibly with its own Color), and a Spheremap reflection like the one in the Penelope example.
Since I'm not good with shader coding, I tried to search almost everywhere in the Unity Community, but I didn't find any Surface shader wich matches my request- only fragment shaders. Even the shader in the Penelope example wasn't a Surface shader, so I wasn't able to copy the code here into my shader.
If it's not too much to ask, can someone lend a hand and post some code for doing this?
Thank you very much for the help. :)
Your answer
Follow this Question
Related Questions
Specular Shader On Lightmapped Objects [iOS] 1 Answer
Specular shader on iOS 2 Answers
Specular bug on iOS/Android using Standard shader 2 Answers
Surface Shader Specular 0 Answers