次の方法で共有


スポット反射光の効果

スポット反射照明効果を使用して、光源が光の有向円錐に制限されている反射面のように見えるイメージを作成します。 この効果では、アルファ チャネルを高さマップとして使用し、ポイント 光源を使用してイメージを点灯させます。

出力ビットマップの色は、フォン照明モデルの反射部分に応じた光の色、光の位置、円錐の方向および表面ジオメトリの結果です。 反射照明を使用した各ピクセルのアルファ チャネル出力は、そのピクセルの赤、緑、青のチャネル出力の最大値です。

この効果の CLSID はCLSID_D2D1SpotSpecular。

画像の例

次の例は、スポット反射照明効果の入力イメージと出力イメージを示しています。

効果の例のスクリーンショット。

反射光とは、特定の方向に反射される光を指します。

ビットマップの反射照明出力をサクル化するために使用されるベクトルの図。

効果は最終的な出力ピクセル値を計算し、次の式を使用して計算されます。

出力ピクセル数式。

where

変数の定義。

スポット 光源

スポット 光源は、特定の方向の円錐に光を放射し、コーンの外部に光を放射しません。

スポット 光源は 、点反射 効果と同じ方法でライト ベクトル L とハーフウェイ ベクトル H を計算します。

この効果は、次の式に示すように、光源の位置の関数として、光源の色 Lr、Lg、Lb を計算します。

スポット 光源の数式

ベクトル 光ベクトル 記号 は、次の式で定義されます。

数式: vector

ベクトル t ベクトル記号 は、次の数式によって定義されます。

数式: vector 2

Effect プロパティ

表示名とインデックス列挙 説明
LightPosition
D2D1_SPOTSPECULAR_PROP_LIGHT_POSITION
ポイント 光源のライト位置。 プロパティは、(x、y、z) として定義されたD2D1_VECTOR_3Fです。 単位はデバイスに依存しないピクセル (DIP) であり、無制限です。 型はD2D1_VECTOR_3F。
既定値は {0.0f、0.0f、0.0f} です。
PointsAt
D2D1_SPOTSPECULAR_PROP_POINTS_AT
スポット ライトがフォーカスされている場所。 プロパティは、(x、y、z) のD2D1_VECTOR_3Fとして公開されます。 単位は DIP で、値は無制限です。 型はD2D1_VECTOR_3F。
既定値は {0.0f、0.0f、0.0f} です。
フォーカス
D2D1_SPOTSPECULAR_PROP_FOCUS
スポット ライトのフォーカス。 このプロパティはユニットレスであり、0 から 200 の間で定義されます。 型は FLOAT です。
既定値は 1.0f です。
LimitingConeAngle
D2D1_SPOT_SPECULAR_PROP_LIMITING_CONE_ANGLE
ライトが投影される領域を制限する円錐角度。 円錐の外側に光は投影されません。 制限円錐角度は、スポット ライト軸 ( LightPosition プロパティと PointsAt プロパティの間の軸) とスポット ライト コーンの間の角度です。 このプロパティは度で定義され、0 ~ 90 度にする必要があります。 型は FLOAT です。
既定値は 90.0f です。
SpecularExponent
D2D1_SPOTSPECULAR_PROP_SPECULAR_EXPONENT
フォン照明式の反射項の指数。 値が大きいほど、より反射性の高いサーフェスに対応します。 この値は単位なしであり、1.0 から 128 の間である必要があります。 型は FLOAT です。
既定値は 1.0f です。
反射Constant
D2D1_SPOTSPECULAR_PROP_SPECULAR_CONSTANT
受信光に対する反射反射の比率。 値は単位なしであり、0 から 10,000 の間である必要があります。 型は FLOAT です。
既定値は 1.0f です。
SurfaceScale
D2D1_SPOTSPECULAR_PROP_SURFACE_SCALE
高さマップを生成するための Z 方向の縮尺係数。 値は単位なしであり、0 から 10,000 の間である必要があります。 型は FLOAT です。
既定値は 1.0f です。
Color
D2D1_SPOTSPECULAR_PROP_COLOR
着信ライトの色。 このプロパティはベクター 3 (R、G、B) として公開され、LR、LG、LB の計算に使用されます。 型はD2D1_VECTOR_3F。
既定値は {1.0f、1.0f、1.0f} です。
KernelUnitLength
D2D1_SPOTSPECULAR_PROP_KERNEL_UNIT_LENGTH
X 方向と Y 方向にサーフェス法線を生成するために使用される Sobel カーネル内の要素のサイズ。 このプロパティは、Sobel グラデーションの dx 値と dy 値にマップされます。 このプロパティはD2D1_VECTOR_2F (カーネル ユニットの長さ X、カーネル ユニットの長さ Y) であり、 (DIP/カーネル ユニット) で定義されています。 この効果では、二線補間を使用して、カーネル要素のサイズに合わせてビットマップをスケーリングします。 型がD2D1_VECTOR_2F。
既定値は {1.0f, 1.0f} です。
Scalemode
D2D1_SPOTSPECULAR_PROP_SCALE_MODE
効果が使用する補間モードを使用して、イメージを対応するカーネル ユニットの長さにスケーリングします。 品質と速度の範囲には、6 つのスケール モードがあります。 詳細については、「 スケール モード 」を参照してください。
型がD2D1_SPOTSPECULAR_SCALE_MODE。
既定値は D2D1_SPOTSPECULAR_SCALE_MODE_LINEAR です。

スケール モード

列挙 説明
D2D1_SPOTSPECULAR_SCALE_MODE_NEAREST_NEIGHBOR 最も近い単一点をサンプリングし、その点を使用します。 このモードでは処理時間は短くなりますが、最も低品質の画像が出力されます。
D2D1_SPOTSPECULAR_SCALE_MODE_LINEAR 4 点サンプルと線形補間を使用します。 このモードでは、最も近い近隣ノードよりも高品質の画像が出力されます。
D2D1_SPOTSPECULAR_SCALE_MODE_CUBIC 補間に 16 個のサンプル立方カーネルを使用します。 このモードでは最も処理時間が長くなりますが、より高品質の画像が出力されます。
D2D1_SPOTSPECULAR_SCALE_MODE_MULTI_SAMPLE_LINEAR 1 つのピクセル内で 4 つの線形サンプルを使用して、優れたエッジアンチエイリアシングを行います。 このモードは、ピクセル数の少ない画像で少量のスケールダウンに適しています。
D2D1_SPOTSPECULAR_SCALE_MODE_ANISOTROPIC 異方性フィルタリングを使用して、ビットマップの変換された形状に従ってパターンをサンプリングします。
D2D1_SPOTSPECULAR_SCALE_MODE_HIGH_QUALITY_CUBIC 変換マトリックスにダウンスケールが関係している場合は、可変サイズの高品質キュービック カーネルを使用して、イメージの事前ダウンスケールを実行します。 次に、最終的な出力に 3 次補間モードを使用します。

Note

モードを選択しない場合、効果の既定値は D2D1_SPOTSPECULAR_SCALE_MODE_LINEAR になります。

要件

要件
サポートされている最小のクライアント Windows 7 のWindows 8とプラットフォーム更新プログラム [デスクトップ アプリ |Windows ストア アプリ]
サポートされている最小のサーバー Windows 7 のWindows 8とプラットフォーム更新プログラム [デスクトップ アプリ |Windows ストア アプリ]
Header d2d1effects.h
ライブラリ d2d1.lib、dxguid.lib

ID2D1Effect