At risk of revealing my mountain man situation of being trapped on mobile ... I just like gamma space half lambert, as described in the HL2 slides.
@Promit Yes, the falloff is very harsh, and without specular too (it stay the same). Do you know another diffuse equation i can use to have something softer ?
float ndotl = dot(N, L1); //compute half lambert term ndotl = (ndotl * 0.5) + 0.5; ndotl *= ndotl; ndotl = clamp(ndotl, 0.0, 1.0);