太陽光と法線の内積をtex2dの値に足しているだけ。 float4 I_a = { 0.3f, 0.3f, 0.3f, 0.0f }; // ambient float4 I_d = { 0.7f, 0.7f, 0.7f, 0.0f }; // diffuse Out.Color = I_a * k_a + mul(Normal, vLightDir); return tex2D( Samp, In.Tex ) + In.Color; 内容は適当だが、法線ベクトルなどが反映されていることが確認できる。