共用方式為


點狀反射光源效果

使用點反射光源效果來建立看似反射表面的影像。 效果會使用影像的 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) 元件是使用方程式計算:

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

ID2D1Effect