共用方式為


點反射光源效果

使用點狀高光效果來產生看似反射表面的影像。 效果使用影像的alpha通道作為高度圖和您定位的點光源,並根據 Phong 光源模型的鏡面反射部分計算反射和光線。

輸出位圖的色彩是淺色、淺色位置和表面幾何的結果。 具有鏡面反射光源的每個像素,其 Alpha 通道輸出為該像素紅色、綠色和藍色通道輸出的最大值。

這個效果的 CLSID 是 CLSID_D2D1PointSpecular。

範例影像

此處的範例顯示點反射光源效果的輸入和輸出影像。

效果範例螢幕快照,其中顯示點反射光源效果的輸入和輸出影像。

反射光是指根據 Phong 光源模型以特定方向反射的光線。

用來計算位圖鏡面反射光源輸出向量的圖表。

效果會使用此處的方程式來計算最終輸出圖元值:

計算最終圖元值的方程式。

哪裡

k? = 反射光源常數。
表面一般單位向量符號。 = 表面一般單位向量,這是 x 和 y 的函式。 如需計算,請參閱 高度地圖和一般向量
中途單位向量符號。 = “halfway” 單位向量,即眼睛單位向量與光單位向量之間的單位向量。 如需計算,請參閱 點光源
Lr、Lg、Lb = RGB 元件中的淺色。

您可以將反射光源常數設定為 SpecularConstant 屬性,並將淺色設定為 Color 屬性。

點光源

點光源會發出所有方向的光線,例如在此影像中。

點光源向所有方向發出光線。

您可以使用 LightPosition 屬性來設定光源的位置。 效果會使用此處的方程式計算點光源的光向量 L:

光向量方程式。

其中 Light?、Lighty和 Lightz 是輸入光線位置。 此效果計算出中途向量,半向量符號。,如 Phong 光源模型中所定義,使用此處的方程式。 光源模型假設眼向量 眼向量符號位於 (0,0,1)。

半向量方程式。

L 和 H 都會正規化為單位長度向量。

高度地圖和一般向量

效果會根據輸入影像的Alpha色板產生高度地圖。

高度 (Z) 元件是使用方程式來計算:

計算表面高度(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

ID2D1Effect