Mario Galaxy-style velvet shader?

That shader works to mimic fully lit environment by an ambient light source. I haven’t tought of multiple environment lights. I haven’t had any idea in my mind, how about you ? Do you have any usable reference ?
Don’t get me wrong, I’m not an expert at all, and my attempts were simply to leverage my fLLLLLLLLat experience. If people could take advantage of it, oh good for them, otherwise, nobody cares.

About Mario pic, I looked at it closely. It seems the right light is not warm yellow, it’s white, as you can see in the right side of his blue clothing. It’s white, so what you saw on his face is skin color burn, simply because it’s so bright. Ok, forget that, no importance.

Are you sure want to use 2 textures for all of your models ? Just for lighting ? Sure you can lerp between two texture lookup values. But, that way you wouldn’t be able to change the light’s color, or have you found any trick/scenario about it ?
Instead of using extra texture, I replaced o_color calculation with this :

o_color = float4( lerp(tex.rgb*l_smooth, (tex.rgb+k_envirLightColor.rgb)*.5, l_facingRatio) , tex.a );

I used the average of base/main texture and the light color : i*.5[/i] instead of light color only. It’s like laying a transparent light color layer over the base texture, so there is color blending (50:50).
The result for orange environment light :


Output color for white/gray/black (all 3 channels are equal) textures remains orange, while for blue one (frowney), it’s purple.

Oh, you can change the light’s eccentricity too (borrowing Maya’s term if you’re familiar with it) :

  l_facingRatio = pow( 1.0-saturate( dot(vtx_normal, normalize(mspos_cam-vtx_position)) ), 4 );

recently I’ve used 4.

[EDIT] :
I just noticed that you added a screenshot there. Sure it looks that way, it’s because not enough smooth triangles to build a smooth curvature surface for the light. If you use low poly model, you must want to use normal map instead of interpolating vertex normals. Look at my new 2 gray models, they are quite high poly, so the result is smooth.