光源 (Direct3D 9 的數學)
Direct3D 燈光模型涵蓋環境、擴散、反射及發光。 這個範圍足以因應大範圍的照明情況。 您會將場景中的光線總量稱為全域光線,並使用下列方程式加以計算。
Global Illumination = Ambient Light + Diffuse Light + Specular Light + Emissive Light
環境光源 (Direct3D 9) 是固定光源。 它是所有方向的常數,而且會將物件的所有圖元都色彩設定為相同。 加以計算很快速,但是會讓物件看起來很平板且不真實。 若要查看 Direct3D 如何計算環境光源,請參閱環境光源 (Direct3D 9) 。
擴散光源 (Direct3D 9) 取決於光線方向和物件表面法線。 它因變更光線方向和變更表面數位向量而有所不同。 計算擴散光源需要較長時間,因為它改變每個物件頂點,不過使用它的優點是它會遮蔽物件,並提供物件三維 (3D) 深度。 若要查看在 Direct3D 中如何計算擴散光源,請參閱擴散光源 (Direct3D 9) 。
反射光源 (Direct3D 9) 會識別光線到達物件表面並反射回相機時所發生的亮反射醒目提示。 比擴散光線更密集,而且在物件介面上更快速下降。 反射光源比擴散光源需要較長的時間計算,但是使用它的優點是它在物件表面上新增重要細節。 若要查看 Direct3D 中的反射光源如何計算,請參閱反射光源 (Direct3D 9) 。
反射光源 (Direct3D 9) 是由物件發出的光線;例如,光暈。 若要查看在 Direct3D 中如何計算放射光源,請參閱 Emissive Lighting (Direct3D 9) 。
可藉由運用每一種類型的光源至 3D 場景來成就實際光源。 計算環境、放射,擴散元件的值會輸出為擴散頂點色彩,而反射光源元件的值則輸出為反射頂點色彩。 環境、擴散及反射光線值可能受到指定光線衰減和聚光燈係數的影響。 如需衰減運作方式的詳細資訊,請參閱 衰減和焦點因數 (Direct3D 9) 。
若要完成更多實際照明效果,您可以新增更多光線,不過場景會花較長的時間來呈現。 若要取得所有效果設計師的想法,某些遊戲使用比一般常用者更多的 CPU 功率。 若是如此,通常會將照明計算數目減到最小值,方法是在使用材質貼圖的同時,使用光照貼圖和環境貼圖將光源引入場景。
在相機空間計算光源。 若要查看光源轉換的計算方式,請參閱 相機空間轉換 (Direct3D 9) 。 優化光源可以在模型空間中計算,當特殊條件存在時:一般向量已經標準化 (D3DRS_NORMALIZENORMALS為 True) ,不需要頂點混合、轉換矩陣為正交等。
相關主題