QUOTE(amitc @ 05/05/08, 04:40 AM) [snapback]285055[/snapback]
Joojaa I'm not understanding how this is going to accomplish what I want to do?
Can you explain?
Light is falling = shaded color of a light interacting shader. Eg a shaders output. Ergo anywhere theres color on a lambert shader there is light shading ergo its non 0. Not taking any consideration on what kind of transfer function you want, however if you have a image of earh your really want to use a more Oren-Nayar like shader, anyway you can just pump the value and clamp the lambertian spread. 
Now the blend node is easy here it has 3 input slots.
blender
color1
color2
Blender is just simply a value form 0 to 1 then output is blender*color1+(1-blender)*color2 ergo a linear interpolation. Now choosing a shader for the texture slots. Now dont go connecting a shader that lights itself in the slots because then youd get black in the shadow anyway. (black in lambert is also black in a blinn remeber)
Heres a sample scene:
CODE
file -f -new;
// make test scene Something to cast light on, and something to shadow to show th true effect
sphere -p 0 0 0 -ax 0 1 0 -ssw 0 -esw 360 -r 1 -d 3 -ut 0 -tol 0.01 -s 8 -nsp 4 -ch 1;
sphere -p 0 0 0 -ax 0 1 0 -ssw 0 -esw 360 -r 1 -d 3 -ut 0 -tol 0.01 -s 8 -nsp 4 -ch 1;
move 0.5 0 -5;
directionalLight;
setAttr "directionalLightShape1.useDepthMapShadows" 1;
//build shaders
shadingNode -asShader surfaceShader;
sets -renderable true -noSurfaceShader true -empty -name surfaceShader1SG;
connectAttr -f surfaceShader1.outColor surfaceShader1SG.surfaceShader;
select -r nurbsSphere1 nurbsSphere2;
sets -e -forceElement surfaceShader1SG;
shadingNode -asUtility blendColors;
connectAttr -f blendColors1.output surfaceShader1.outColor;
shadingNode -asShader lambert;
connectAttr -f lambert2.outColorR blendColors1.blender;
setAttr "lambert2.color" -type double3 1 1 1;
shadingNode -asTexture checker;
shadingNode -asUtility place2dTexture;
connectAttr place2dTexture1.outUV checker1.uv;
connectAttr -force checker1.outColor blendColors1.color1;
setAttr "place2dTexture1.repeatU" 4;
setAttr "place2dTexture1.repeatV" 4;
shadingNode -asTexture granite;
shadingNode -asUtility place3dTexture;
connectAttr place3dTexture1.wim[0] granite1.pm;
connectAttr -force granite1.outColor blendColors1.color2;
// if you pause execution here you get a cheker to granite
// blend as per normal lambertian light tier
//then lets make a more clamped trasfeer to push cleaner boundary
shadingNode -asUtility clamp;
setAttr "clamp1.max" 1 1 1;
connectAttr -force lambert2.outColor clamp1.input;
connectAttr -f clamp1.outputR blendColors1.blender;
setAttr "lambert2.color" -type double3 3 3 3;
Now like i said you can use a ramp node isntead of clamp if you need more esoteric transferal of the light of lambert1. Alternative 2: if you have more than 1 image use a ramp instead of blend, and connect outcolor of light catcher to the u and v of the ramp. Then make as many color slices as you need and map the textures to the color ranges