Oh, another thing if you're doing it half-lambert, it needs to be squared. here's how the code should be all-togetherfloat3 DiffuseTerm( float3 worldNormal, float3 lightDir){ float fResult; float NDotL = dot( worldNormal, lightDir ); // Unsaturated dot (-1 to 1 range) if ( bHalfLambert ) { fResult = saturate(NDotL * 0.5 +…