6-4.添加镜面高光到反光平面
问题
当启用每像素着色,当你渲染一些金属或反光物体看起来还是有些钝。实际生活中,当看一个反光表面例如金属,玻璃或塑料,你将看到一个很亮的反光区。如6-6指示。这些光斑叫镜面高光。
方案
当用每像素光照,你可以简单的告诉BasicEffect创建镜面高光。
注意 镜面高光只该添加到反光材料。不要添加到软性材料例如衣服或草等或至少使他们的影响非常薄弱
如何运作
你可以极端轻松使用BasicEffect来启用镜面高光。为每个光源,你可以指定镜面光色。接下来,你可以设置高光量,这个量允许你调整高光的宽度。量越高,高光越窄。详见6-8.
basicEffect.LightingEnabled = true;
basicEffect.DirectionalLight0.Direction = lightDirection;
basicEffect.DirectionalLight0.DiffuseColor = Color.White.ToVector3();
basicEffect.DirectionalLight0.Enabled = true;
basicEffect.PreferPerPixelLighting = true;
basicEffect.DirectionalLight0.SpecularColor = Color.White.ToVector3();
basicEffect.SpecularPower = 32;
注意 当用镜面光照是,你将一直使用每像素光照因为镜面高光典型的小,非线性点。因此,他们不应该用插值而是为每个像素分别计算。