衰減和聚光光線係數
全域照明方程式的擴散和反射光線元件會包含用來描述光線衰減和聚光燈圓錐的詞彙。 這些詞彙如下所述。
衰減
光線的衰減取決於光線類型,以及光線與頂點位置之間的距離。 若要計算衰減,請使用下列其中一個方程式。
Atten = 1/( att0i + att1i * d + att2i * d²)
其中:
參數 | 預設值 | 類型 | 描述 | 範圍 |
---|---|---|---|---|
att0i | 0.0 | 浮點 | 常數衰減係數 | 0 到 + 無限大 |
att1i | 0.0 | 浮點 | 線性衰減係數 | 0 到 + 無限大 |
att2i | 0.0 | 浮點 | 二次衰減係數 | 0 到 + 無限大 |
d | N/A | 浮點 | 從頂點位置到光線位置的距離 | N/A |
- 如果光線是定向光線,則 Atten = 1。
- 如果光線與頂點之間的距離超過光線的範圍,則 Atten = 0。
光線與頂點位置之間的距離一律為正數。
d = | Ldir |
其中:
參數 | 預設值 | 類型 | 描述 |
---|---|---|---|
Ldir | N/A | 具有 x、y 和 z 浮點值的 3D 向量 | 頂點位置到光線位置的方向向量 |
如果 d 大於光線的範圍,Direct3D 不會進行進一步的衰減計算,並且不會將光線的效果套用到頂點。
衰減常數可做為公式中的係數 - 您可以藉由對係數進行簡單的調整來產生各種衰減曲線。 您可以將 [衰減 1] 設定為 1.0 來建立不會衰減但仍然受限於範圍的光線,或者您可以實驗不同的值,以達到各種衰減效果。
光線最大範圍的衰減不是 0.0。 若要防止光線在光線範圍內突然出現,應用程式可以增加光線範圍。 或者,應用程式可以設定衰減常數,使衰減係數在光線範圍內接近 0.0。 衰減值乘以光線色彩的紅色、綠色和藍色元件,以將光線強度調整為距離光線向頂點移動的一個係數。
聚光光線係數
下列方程式會指定聚光光線係數。
參數 | 預設值 | 類型 | 描述 | 範圍 |
---|---|---|---|---|
rhoi | N/A | 浮點 | 聚光燈 i 的餘弦 (角度) | N/A |
phii | 0.0 | 浮點 | 聚光燈 i 的半影角 (弧度) | [thetai, pi) |
thetai | 0.0 | 浮點 | 聚光燈 i 的本影角 (弧度) | [0, pi) |
衰減 | 0.0 | 浮點 | 衰減係數 | (- 無限大,+ 無限大) |
其中:
rho = norm(Ldcs).norm(Ldir)
以及:
參數 | 預設值 | 類型 | 描述 |
---|---|---|---|
Ldcs | N/A | 具有 x、y 和 z 浮點值的 3D 向量 | 相機空間中光線方向的負值 |
Ldir | N/A | 具有 x、y 和 z 浮點值的 3D 向量 | 頂點位置到光線位置的方向向量 |
計算光線衰減後,為了計算頂點的擴散和反射元件,Direct3D 也會考慮聚光效果 (如果適用)、光從表面反射的角度,以及目前材質的反射率。 在 [光線類型] 中,請參閱「聚光燈」。
相關主題