光線屬性

光線屬性會描述光源類型 (點、定向、聚光光線)、衰減、色彩、方向、位置和範圍。 視使用的光線類型而定,光線可具備衰減和範圍等屬性,或聚光光線效果屬性。 並非所有類型的光線都會使用所有屬性。

位置、範圍和衰減屬性會定義光線在世界空間中的位置,以及其所發出之光線隨距離增減所表現的行為。

光線衰減

衰減會控制光線強度如何朝著距離屬性指定的最大距離減弱。 有時,光線衰減會使用三個浮點值來表示:Attenuation0、Attenuation1 和 Attenuation2。 這些浮點值的範圍為 0.0 到無限大,且負責控制光線的衰減。 有些應用程式會將 Attenuation1 成員設為 1.0,並將其他項目設為 0.0,藉此讓光線強度變更為 1 / D,當中的 D 即代表光源到頂點的距離。 最大光線強度位於光源,強度會在光線範圍內減弱至 1 / (光線範圍)。

但一般而言,應用程式會將 Attenuation0 設為 0.0、將 Attenuation1 設為常數值,並將 Attenuation2 設為 0.0,只要加以變更,即可營造不同的光線效果。 您可以結合多個衰簡值,以營造更複雜的衰減效果。 或者,您也可將其設為超出正常範圍的值,以營造更奇特的衰減效果。 不過,衰減值不能設為負值。 請參閱衰減和聚光光線係數

光線色彩

Direct3D 的光線會發出獨立使用在系統光線計算中的三種色彩:擴散色彩、環境色彩和反射色彩。 每個色彩都會由 Direct3D 光線模組加以整合,以便與目前材質的對應項目互動,從而產生用於轉譯的最終色彩。 擴散色彩會與目前材質的擴散反射屬性互動,反射色彩則會與材質的反射屬性互動,依此類推。 如需 Direct3D 如何套用這些色彩的詳細資訊,請參閱光線數學

Direct3D 應用程式中通常會有擴散、環境和反射等三個色彩值,可用來定義發出的色彩。

最常套用至系統計算中的色彩類型為擴散色彩。 最常見的擴散色彩則為白色 (R:1.0 G:1.0 B:1.0),不過,您可以視需要建立色彩,以達到所需的效果。 舉例來說,您可以為壁爐設定紅色光線,或使用綠色光線來設定代表「可通行」的交通號誌。

通常,您會將光線色彩元件設為介於 0.0 到 1.0 之間的值 (包含頭尾),但這並非必要條件。 舉例來說,您可以將所有元件設為 2.0,以營造「比白色更亮」的光線。在使用常數以外的衰減設定時,這類型的設定顯得格外實用。

雖然 Direct3D 會將 RGBA 值用於光線,卻不會使用 Alpha 色彩元件。

材質色彩通常會用於光線設定中。 不過,您可以指定擴散或反射頂點色彩是否要覆寫該材質色彩的放射、環境、擴散和反射。

Alpha/透明度值一律只會來自擴散色彩的 Alpha 色板。

霧值一律只會來自反射色彩的 Alpha 色板。

光線方向

光線的方向屬性會決定物件發出的光線於世界空間中的移動方向。 只有定向光線和聚光光線會使用方向,而方向會使用向量加以描述。

光線方向需設為向量。 無論光線位於場景中哪個位置,光線向量都會使用與邏輯原點之間的距離來描述。 因此,無論其位置定義為何,直接朝向場景 (沿著 z 軸的正值) 的聚光光線都會使用方向向量 <0,0,1>。 同樣地,您可以使用將方向設為 <0,-1,0> 的方向光線,著手模擬直接照射場景的陽光。 您無需建立沿著座標軸照射的光線;只要混合搭配多個值,即可營造使用更有趣的角度照射的光線。

雖然您無需將光線的方向向量正規化,請一律確定方向向量具有大小。 換句話說,請不要使用 <0,0,0> 的方向向量。

光線位置

光線位置會使用向量結構加以描述。 系統會假設 x、y 和 z 等座標位於世界空間中。 定向光線是唯一一個不使用位置屬性的光線類型。

光線範圍

光線的範圍屬性會決定世界空間中的場景網格再也不會接收該物件所發出之光線的距離。 定向光線不會使用範圍屬性。

光線和材質