スポット拡散光の効果
スポット拡散照明効果を使用して、光源が光の有向円錐に限定され、光がすべての方向に散らばっている非反射面のように見える画像を作成します。 この効果では、アルファ チャネルを高さマップとして使用し、スポット 光源を使用して画像を照らします。
出力ビットマップの色は、明るい色、光の位置、およびサーフェス ジオメトリの結果です。 拡散照明を使用した各ピクセルのアルファ チャネル出力は常に 1.0 です。
この効果の CLSID はCLSID_D2D1SpotDiffuse。
画像の例
次の例は、スポット拡散照明効果の入力イメージと出力イメージを示しています。
効果は、最終的な出力ピクセル値を計算し、次の式を使用して計算されます。
この場合、
- kd = 拡散照明定数。 ユーザーによって指定されます。
= 表面法線単位ベクトル、x および y の関数。
= 表面から光を指す単位ベクトル。
Lr, Lg, Lb = RGB 成分の明るい色。
Effect プロパティ
表示名とインデックス列挙 | 型と既定値 | 説明 |
---|---|---|
LightPosition D2D1_SPOTDIFFUSE_PROP_LIGHT_POSITION |
D2D1_VECTOR_3F {0.0f,0.0f, 0.0f} |
ポイント 光源のライト位置。 プロパティは、(x、y、z) として定義されたD2D1_VECTOR_3Fです。 単位はデバイスに依存しないピクセル (DIP) であり、無制限です。 |
PointsAt D2D1_SPOTDIFFUSE_PROP_POINTS_AT |
D2D1_VECTOR_3F {0.0f,0.0f, 0.0f} |
スポット ライトがフォーカスされている場所。 プロパティは、(x、y、z) のD2D1_VECTOR_3Fとして公開されます。 単位は DIP で、値は無制限です。 |
フォーカス D2D1_SPOTDIFFUSE_PROP_FOCUS |
FLOAT 1.0f |
スポット ライトのフォーカス。 このプロパティはユニットレスであり、0 から 200 の間で定義されます。 |
LimitingConeAngle D2D1_SPOTDIFFUSE_PROP_LIMITING_CONE_ANGLE |
FLOAT 90.0f |
ライトが投影される領域を制限する円錐角度。 円錐の外側に光は投影されません。 制限円錐角度は、スポット ライト軸 ( LightPosition プロパティと PointsAt プロパティの間の軸) とスポット ライト コーンの間の角度です。 このプロパティは度で定義され、0 ~ 90 度にする必要があります。 |
DiffuseConstant D2D1_SPOTDIFFUSE_PROP_DIFFUSE_CONSTANT |
FLOAT 1.0f |
拡散反射と着信光の量の比率。 このプロパティは 0 から 10,000 の間である必要があり、単位なしです。 |
SurfaceScale D2D1_SPOTDIFFUSE_PROP_SURFACE_SCALE |
FLOAT 1.0f |
Z 方向のスケール 係数。 サーフェス スケールは単位なしであり、0 ~ 10,000 の間である必要があります。 |
Color D2D1_SPOTDIFFUSE_PROP_COLOR |
D2D1_VECTOR_3F {1.0f、1.0f、1.0f} |
着信ライトの色。 このプロパティはベクター 3 (R、G、B) として公開され、LR、LG、LB の計算に使用されます。 |
KernelUnitLength D2D1_SPOTDIFFUSE_PROP_KERNEL_UNIT_LENGTH |
D2D1_VECTOR_2F {1.0f, 1.0f} |
X 方向と Y 方向にサーフェス法線を生成するために使用される Sobel カーネル内の要素のサイズ。 このプロパティは、Sobel グラデーションの dx 値と dy 値にマップされます。 このプロパティはD2D1_VECTOR_2F (カーネル ユニット長 X、カーネル ユニット長 Y) であり、 (DIP/カーネル ユニット) で定義されています。 この効果では、二線補間を使用して、カーネル要素のサイズに合わせてビットマップをスケーリングします。 |
Scalemode D2D1_SPOTDIFFUSE_PROP_SCALE_MODE |
D2D1_SPOTDIFFUSE_SCALE_MODE D2D1_SPOTDIFFUSE_SCALE_MODE_LINEAR |
効果が使用する補間モードを使用して、イメージを対応するカーネル ユニットの長さにスケーリングします。 品質と速度の範囲には、6 つのスケール モードがあります。 詳細については、「 スケール モード 」を参照してください。 |
スケール モード
列挙 | 説明 |
---|---|
D2D1_SPOTDIFFUSE_SCALE_MODE_NEAREST_NEIGHBOR | 最も近い単一点をサンプリングし、その点を使用します。 このモードでは処理時間は短くなりますが、最も低品質の画像が出力されます。 |
D2D1_SPOTDIFFUSE_SCALE_MODE_LINEAR | 4 点サンプルと線形補間を使用します。 このモードでは、最も近い近隣ノードよりも高品質の画像が出力されます。 |
D2D1_SPOTDIFFUSE_SCALE_MODE_CUBIC | 補間に 16 個のサンプル立方カーネルを使用します。 このモードでは最も処理時間が長くなりますが、より高品質の画像が出力されます。 |
D2D1_SPOTDIFFUSE_SCALE_MODE_MULTI_SAMPLE_LINEAR | 1 つのピクセル内で 4 つの線形サンプルを使用して、優れたエッジアンチエイリアシングを行います。 このモードは、ピクセル数の少ない画像で少量のスケールダウンに適しています。 |
D2D1_SPOTDIFFUSE_SCALE_MODE_ANISOTROPIC | 異方性フィルタリングを使用して、ビットマップの変換された形状に従ってパターンをサンプリングします。 |
D2D1_SPOTDIFFUSE_SCALE_MODE_HIGH_QUALITY_CUBIC | 変換マトリックスにダウンスケールが関係している場合は、可変サイズの高品質キュービック カーネルを使用して、イメージの事前ダウンスケールを実行します。 次に、最終的な出力に 3 次補間モードを使用します。 |
Note
モードを選択しない場合、効果の既定値は D2D1_SPOTDIFFUSE_SCALE_MODE_LINEAR になります。
必要条件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 のWindows 8とプラットフォーム更新プログラム [デスクトップ アプリ |Windows ストア アプリ] |
サポートされている最小のサーバー | Windows 7 のWindows 8とプラットフォーム更新プログラム [デスクトップ アプリ |Windows ストア アプリ] |
Header | d2d1effects.h |
ライブラリ | d2d1.lib、dxguid.lib |