點反射光源效果
使用點狀高光效果來產生看似反射表面的影像。 效果使用影像的alpha通道作為高度圖和您定位的點光源,並根據 Phong 光源模型的鏡面反射部分計算反射和光線。
輸出位圖的色彩是淺色、淺色位置和表面幾何的結果。 具有鏡面反射光源的每個像素,其 Alpha 通道輸出為該像素紅色、綠色和藍色通道輸出的最大值。
這個效果的 CLSID 是 CLSID_D2D1PointSpecular。
範例影像
此處的範例顯示點反射光源效果的輸入和輸出影像。
反射光是指根據 Phong 光源模型以特定方向反射的光線。
效果會使用此處的方程式來計算最終輸出圖元值:
哪裡
- k? = 反射光源常數。


Lr、Lg、Lb = RGB 元件中的淺色。
您可以將反射光源常數設定為 SpecularConstant 屬性,並將淺色設定為 Color 屬性。
點光源
點光源會發出所有方向的光線,例如在此影像中。
您可以使用 LightPosition 屬性來設定光源的位置。 效果會使用此處的方程式計算點光源的光向量 L:
其中 Light?、Lighty和 Lightz 是輸入光線位置。 此效果計算出中途向量,,如 Phong 光源模型中所定義,使用此處的方程式。 光源模型假設眼向量
位於 (0,0,1)。
L 和 H 都會正規化為單位長度向量。
高度地圖和一般向量
效果會根據輸入影像的Alpha色板產生高度地圖。
高度 (Z) 元件是使用方程式來計算:
效果計算表面法線,,使用 Sobel 算子計算輸入點陣圖的漸層。
反射光源常數和指數
反射光代表從影像高度地圖表面反射的光線。 您可以指定 SpecularExponent 屬性,以決定位圖中的鏡面反射量。
較大的指數代表更亮的物件,並以更聚焦的形狀反射光線。
SpecularConstant 屬性 K?將反射光線量定義為傳入光線的比例。
效果屬性
顯示名稱和索引列舉 | 描述 |
---|---|
光源位置 D2D1_POINTSPECULAR_PROP_LIGHT_POSITION |
點光源的光線位置。 屬性是 D2D1_VECTOR_3F,定義為 (x, y, z)。 單位是裝置無關的圖元(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),用來計算 LR、LG、LB。 此類型為D2D1_VECTOR_3F。 默認值為 {1.0f、1.0f、1.0f}。 |
核單位長度 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}。 |
縮放模式 D2D1_POINTSPECULAR_PROP_SCALE_MODE |
效果使用的插值模式用來將影像縮放到相應的核單位長度。 有六種縮放模式,其品質和速度各有不同。 如需詳細資訊,請參閱 調整模式。 此類型為D2D1_POINTSPECULAR_SCALE_MODE。 預設值為 D2D1_POINTSPECULAR_SCALE_MODE_LINEAR。 |
調整模式
列舉 | 描述 |
---|---|
D2D1_POINTSPECULAR_縮放模式_最近鄰居 | 取樣最接近的單一點,並使用該點。 此模式會使用較少的處理時間,但會輸出品質最低的影像。 |
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_LINEAR。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 8 和適用於 Windows 7 的平台更新 [桌面應用程式 | Windows 市集應用程式] |
最低支援的伺服器 | 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
頁眉 | d2d1effects.h |
圖書館 | d2d1.lib、dxguid.lib |