點狀反射光源效果
使用點反射光源效果來建立看似反射表面的影像。 效果會使用影像的 Alpha 色板做為高度地圖和您放置的點光源,並根據 Phong 光源模型的反射部分計算反射和光線。
輸出點陣圖的色彩是淺色、淺色位置和表面幾何的結果。 每個具有反射光源之圖元的 Alpha 色板輸出是該圖元的紅色、綠色和藍色通道輸出上限。
此效果的 CLSID 會CLSID_D2D1PointSpecular。
範例影像
此處的範例顯示點反射光源效果的輸入和輸出影像。
反射光線是指根據 Phong 光源模型以特定方向反射的光線。
效果會使用此處的方程式來計算最終輸出圖元值:
where
- K? = 反射光源常數。
= 表面一般單位向量,這是 x 和 y 的函式。 如需計算,請參閱 高度地圖和法向量 。
= 「halfway」 單位向量與光線單位向量之間的單位向量。 如需計算,請參閱 點光源 。
Lr、Lg、Lb = RGB 元件的淺色。
您可以將反射光源常數設定為 SpecularConstant 屬性,並將淺色設定為 Color 屬性。
點光源
點光源會發出所有方向的光線,就像在影像中一樣。
您可以使用 LightPosition 屬性來設定光源的位置。 效果會使用這裡的方程式計算點光源的光線向量 L:
其中 Light?、Lighty和 Lightz 是輸入光線位置。 效果會使用這裡的方程式,計算半 如 Phong 光源模型中所定義。 光源模型假設眼球向 位於 (0,0,1) 。
L 和 H 都會正規化為單位長度向量。
高度地圖和法向量
效果會根據其 Alpha 色板產生輸入影像的高度地圖。
高度 (Z) 元件是使用方程式計算:
效果會使用 Sobel 漸層來計算輸入點陣圖的表面法向 。。
反射光源常數和指數
反射光線代表從影像高度地圖表面反射的光線。 您可以指定 SpecularExponent 屬性,以決定點陣圖中的反射量。
較大的指數代表較亮的物件,並以更焦點的圖案反映光線。
SpecularConstant屬性 K?會將反射光線的數量定義為傳入光線的比例。
效果屬性
顯示名稱和索引列舉 | 描述 |
---|---|
LightPosition D2D1_POINTSPECULAR_PROP_LIGHT_POSITION |
點光源的光線位置。 屬性是定義為 (x、y、z) D2D1_VECTOR_3F。 單位以與裝置無關的圖元 (DIP) ,且這些值是無單位且未系結。 此類型為 D2D1_VECTOR_3F。 預設值為 {0.0f、0.0f、0.0f}。 |
SpecularExponent D2D1_POINTSPECULAR_PROP_SPECULAR_EXPONENT |
Phong 光源方程式中反射詞彙的指數。 較大的值會對應至更反射的表面。 這個值是無單位的,而且必須介於 1.0 到 128 之間。 此類型為 FLOAT。 預設值為 1.0f。 |
SpecularConstant D2D1_POINTSPECULAR_PROP_SPECULAR_CONSTANT |
反射與傳入光線的比例。 此值為無單位,且必須介於 0 到 10,000 之間。 此類型為 FLOAT。 預設值為 1.0f。 |
SurfaceScale D2D1_POINTSPECULAR_PROP_SURFACE_SCALE |
Z 方向的縮放比例,用於產生高度地圖。 此值為無單位,且必須介於 0 到 10,000 之間。 此類型為 FLOAT。 預設值為 1.0f。 |
色彩 D2D1_POINTSPECULAR_PROP_COLOR |
傳入光線的色彩。 此屬性會公開為 D2D1_VECTOR_3F (R、G、B、B) ,並用來計算 LR、LG、LB。 此類型為 D2D1_VECTOR_3F。 預設值為 {1.0f、1.0f、1.0f}。 |
KernelUnitLength D2D1_POINTSPECULAR_PROP_KERNEL_UNIT_LENGTH |
Sobel 核心中元素的大小,用來在 X 和 Y 方向產生表面法線。 此屬性會對應至 Sobel 漸層中的 dx 和 dy 值。 此屬性是D2D1_VECTOR_2F (核心單位長度 X、核心單位長度 Y) ,且定義于 (DIPs/Kernel Unit) 中。 效果會使用雙線性插補來調整點陣圖,以符合核心元素的大小。 此類型為 D2D1_VECTOR_2F。 預設值為 {1.0f, 1.0f}。 |
ScaleMode D2D1_POINTSPECULAR_PROP_SCALE_MODE |
效果用來將影像縮放至對應核心單位長度的插補模式。 品質與速度有六種調整模式。 如需詳細資訊 ,請參閱調整模式 。 此類型D2D1_POINTSPECULAR_SCALE_MODE。 預設值為 D2D1_POINTSPECULAR_SCALE_MODE_LINEAR。 |
縮放模式
列舉型別 | 描述 |
---|---|
D2D1_POINTSPECULAR_SCALE_MODE_NEAREST_NEIGHBOR | 取樣最接近的單一點,並使用該點。 此模式會使用較少的處理時間,但會輸出最低的品質影像。 |
D2D1_POINTSPECULAR_SCALE_MODE_LINEAR | 使用四個點樣本和線性插補。 此模式會輸出比最接近鄰近更高的品質影像。 |
D2D1_POINTSPECULAR_SCALE_MODE_CUBIC | 使用 16 個樣本立方核心進行插補。 此模式會使用大部分的處理時間,但輸出品質較高的影像。 |
D2D1_POINTSPECULAR_SCALE_MODE_MULTI_SAMPLE_LINEAR | 在單一圖元內使用 4 個線性樣本,以進行良好的邊緣反鋸齒。 此模式適合在具有少數圖元的影像上相應減少。 |
D2D1_POINTSPECULAR_SCALE_MODE_ANISOTROPIC | 根據點陣圖的轉換圖形,使用異向性篩選來取樣模式。 |
D2D1_POINTSPECULAR_SCALE_MODE_HIGH_QUALITY_CUBIC | 如果轉換矩陣牽涉到縮減規模,請使用高品質的立方核心大小來執行預先調整映射。 然後,使用三次方插補模式進行最終輸出。 |
注意
如果您未選取模式,效果預設為D2D1_POINTSPECULAR_SCALE_MODE_LINEAR。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 適用于 Windows 7 的Windows 8和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
最低支援的伺服器 | 適用于 Windows 7 的Windows 8和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
標頭 | d2d1effects.h |
程式庫 | d2d1.lib、dxguid.lib |