- Home /
Self-illuminated bumped specular + rim lighting
Hey, I would really like to mix self-illuminated bumped specular and rim lighting shaders into one. But unfortunately I have almost 0 knowledge about shaders :( I would be so grateful if someone could help me out. Rim shader is here:
Shader "Example/Rim" { Properties { _MainTex ("Texture", 2D) = "white" {} _BumpMap ("Bumpmap", 2D) = "bump" {} _RimColor ("Rim Color", Color) = (0.26,0.19,0.16,0.0) _RimPower ("Rim Power", Range(0.5,8.0)) = 3.0 } SubShader { Tags { "RenderType" = "Opaque" } CGPROGRAM #pragma surface surf Lambert struct Input { float2 uv_MainTex; float2 uv_BumpMap; float3 viewDir; }; sampler2D _MainTex; sampler2D _BumpMap; float4 _RimColor; float _RimPower; void surf (Input IN, inout SurfaceOutput o) { o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb; o.Normal = UnpackNormal (tex2D (_BumpMap, IN.uv_BumpMap)); half rim = 1.0 - saturate(dot (normalize(IN.viewDir), o.Normal)); o.Emission = _RimColor.rgb * pow (rim, _RimPower); } ENDCG } Fallback "Diffuse" }
'bump' A$$anonymous$$A 'normal' map makes a surface not flat, so light power is greater or lower based on this map.
'self-illum' effect ignores light at all cause it makes his own light.
so, i don't clearly imagine how do you want to combine bump and self-illum.
show an example (any pic) of effect you want to achieve
if you mean something like car headlamp bumped self-illu$$anonymous$$ated, then this effect simply can achieved using self-illu$$anonymous$$ation mask. to make a light effect of these headlamps - simply spotlight with cookie.
In your Edit > Render Settings, does it help you to brighten the Ambient Light color? I'm horrific with shaders, but that might be the solution if I"m seeing the problem right.
Answer by ScroodgeM · Aug 15, 2012 at 08:41 PM
Shader "Self-Illumin/Bumped Specular with Rim" { Properties { _Color ("Main Color", Color) = (1,1,1,1) _SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1) _Shininess ("Shininess", Range (0.01, 1)) = 0.078125 _MainTex ("Base (RGB) Gloss (A)", 2D) = "white" {} _Illum ("Illumin (A)", 2D) = "white" {} _BumpMap ("Normalmap", 2D) = "bump" {} _EmissionLM ("Emission (Lightmapper)", Float) = 0 _RimColor ("Rim Color", Color) = (0.26,0.19,0.16,0.0) _RimPower ("Rim Power", Range(0.5,8.0)) = 3.0 } SubShader { Tags { "RenderType"="Opaque" } LOD 400 CGPROGRAM #pragma surface surf BlinnPhong
sampler2D _MainTex; sampler2D _BumpMap; sampler2D _Illum; fixed4 _Color; half _Shininess; float4 _RimColor; float _RimPower;
struct Input { float2 uv_MainTex; float2 uv_Illum; float2 uv_BumpMap; float3 viewDir; };
void surf (Input IN, inout SurfaceOutput o) { fixed4 tex = tex2D(_MainTex, IN.uv_MainTex); fixed4 c = tex _Color; o.Albedo = c.rgb; o.Gloss = tex.a; o.Alpha = c.a; o.Specular = _Shininess; o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap)); half rim = 1.0 - saturate(dot(normalize(IN.viewDir), o.Normal)); o.Emission = c.rgb tex2D(_Illum, IN.uv_Illum).a + _RimColor.rgb * pow (rim, _RimPower); } ENDCG } FallBack "Self-Illumin/Bumped Specular" }
Answer by HansK · Aug 14, 2012 at 11:09 PM
The reason I want to add RimLighting is because a script will later smoothly change the color of rimlight on mouse hover (so it's basically like highlighting something). But the problem is just that the default BumpedSpecular looks way too dark, and Self-Illumin is just about right..
Hope I made it clear enough :D
This is a comment, not an answer - takes a bit of getting used to all the buttons around here, I know. :)