Sdílet prostřednictvím


Efekt vzdáleného zrcadlového osvětlení

Použijte efekt vzdáleného zrcadlového osvětlení k vytvoření obrazu, který vypadá jako reflexní povrch, přičemž zdroj světla se jeví jako pocházející z velké vzdálenosti (například slunce nebo stropní světla). Tento efekt používá kanál alfa jako mapu výšky a osvětluje obrázek ze vzdáleného zdroje světla.

Barva výstupního rastrového obrázku je výsledkem světlé barvy, umístění světla a geometrie povrchu. Výstup alfa kanálu pro každý pixel se spekulárním osvětlením je maximum červených, zelených a modrých výstupů kanálů pro daný pixel.

CLSID pro tento efekt je CLSID_D2D1DistantSpecular.

Příklad obrázku

Příklad zde ukazuje vstupní a výstupní obrázky světelného efektu vzdáleného spekulárního osvětlení.

příklad snímku obrazovky zobrazující vstupní a výstupní obrázky vzdáleného speculárního světelného efektu.

Konečný výstupní rastrový obrázek lze vypočítat pomocí následujících rovnic.

výpočet rastrového obrázku

kde

k? = konstanta zrcadlového osvětlení.
symbol normály povrchu. = jednotkový vektor normály povrchu.
symbol polovičního vektoru. = "poloviční" jednotkový vektor mezi jednotkovým vektorem oka a jednotkovým vektorem světla.
Cr, Cg, Cb = barva světla v součástech RGB.

Vzdálený zdroj světla

Obrázek zde ukazuje příklad směru světla ze vzdáleného zdroje světla.

vzdáleného zdroje světla

Efekt používá parametry azimutu a elevace k výpočtu světelného vektoru . pomocí těchto rovnic:

výpočet vektorů světla

kde Light?, Lightya Lightz jsou vstupní hodnoty pozice světla.

Vlastnosti efektu

Zobrazovaný název a výčet indexů Popis
Azimut
D2D1_DISTANTSPECULAR_PROP_AZIMUTH
Úhel směru zdroje světla v rovině XY vzhledem k ose X v čítačovém směru. Jednotky jsou ve stupních a musí být v rozmezí 0 až 360 stupňů.
Typ je FLOAT.
Výchozí hodnota je 0,0f.
Nadmořská výška
D2D1_DISTANTSPECULAR_PROP_ELEVATION
Úhel směru zdroje světla v rovině YZ vzhledem k ose Y v čítačovém směru. Jednotky jsou ve stupních a musí být v rozmezí 0 až 360 stupňů.
Typ je FLOAT.
Výchozí hodnota je 0,0f.
SpecularExponent
D2D1_DISTANTSPECULAR_PROP_SPECULAR_EXPONENT
Exponent pro spekulární člen v Phongové osvětlovací rovnici. Větší hodnota odpovídá reflexnějšímu povrchu. Hodnota je bez jednotná a musí být mezi 1,0 a 128. Typ je FLOAT.
Výchozí hodnota je 1,0f.
SpecularConstant
D2D1_DISTANTSPECULAR_PROP_SPECULAR_CONSTANT
Poměr speculárního odrazu k dopadajícímu světlu. Hodnota je bez jednotná a musí být v rozmezí od 0 do 10 000. Typ je FLOAT.
Výchozí hodnota je 1,0f.
SurfaceScale
D2D1_DISTANTSPECULAR_PROP_SURFACE_SCALE
Měřítkový faktor ve směru Z. Hodnota je bez jednotná a musí být v rozmezí od 0 do 10 000. Typ je FLOAT.
Výchozí hodnota je 1,0f.
Barva
D2D1_DISTANTSPECULAR_PROP_COLOR
Barva příchozího světla. Tato vlastnost je vystavena jako D2D1_VECTOR_3F (R, G, B) a slouží k výpočtu LR, LG, LB. Typ je D2D1_VECTOR_3F.
Výchozí hodnota je {1.0f, 1.0f, 1.0f}.
Délka jádra jednotky
D2D1_DISTANTSPECULAR_PROP_KERNEL_UNIT_LENGTH
Velikost prvku v jádru Sobel použité k vygenerování normálního povrchu ve směru X a Y. Tato vlastnost je D2D1_VECTOR_2F (délka jednotky jádra X, délka jednotky jádra Y) a je definována v (pixely nezávislé na zařízení (DIPs)/Jednotka jádra). Efekt používá bilineární interpolaci ke škálování rastrového obrázku tak, aby odpovídal velikosti prvků jádra. Typ je D2D1_VECTOR_2F.
Výchozí hodnota je {1.0f, 1.0f}.
Mód škálování
D2D1_DISTANTSPECULAR_PROP_SCALE_MODE
Režim interpolace, který efekt používá ke škálování obrázku na odpovídající délku jednotky jádra. Existuje šest režimů škálování, které jsou v rozsahu kvality a rychlosti.
Typ je D2D1_DISTANTSPECULAR_SCALE_MODE.
Výchozí hodnota je D2D1_DISTANTSPECULAR_SCALE_MODE_LINEAR.

Režimy škálování

Výčet Popis
D2D1_DISTANTSPECULAR_SCALE_MODE_NEAREST_NEIGHBOR Vzorkuje nejbližší jeden bod a použije ho. Tento režim používá méně času zpracování, ale vypíše nejnižší kvalitu obrázku.
D2D1_DISTANTSPECULAR_SCALE_MODE_LINEAR Používá čtyřbodový vzorek a lineární interpolaci. Tento režim vypíše obrázek s vyšší kvalitou než nejbližší soused.
D2D1_DISTANTSPECULAR_SCALE_MODE_CUBIC Pro interpolaci se používá krychlové jádro se 16 vzorky. Tento režim zabírá nejvíce času na zpracování, ale vytváří obraz vyšší kvality.
D2D1_DISTANTSPECULAR_SCALE_MODE_MULTI_SAMPLE_LINEAR Používá 4 lineární vzorky v jednom pixelu pro dobrý anti-aliasing okrajů. Tento režim se hodí pro zmenšení o malé množství na obrázcích s malým počtem pixelů.
D2D1_DISTANTSPECULAR_SCALE_MODE_ANISOTROPIC Používá anisotropní filtrování k vzorkování vzorku podle transformovaného tvaru rastrového obrázku.
D2D1_DISTANTSPECULAR_SCALE_MODE_HIGH_QUALITY_CUBIC (režim škálování s vysokou kvalitou) Používá vysoce kvalitní krychlové jádro s proměnnou velikostí, za účelem předběžného zmenšení obrazu, pokud do transformační matice patří změna rozměrů. Pak použije režim krychlové interpolace pro konečný výstup.

Poznámka

Pokud režim nevyberete, efekt se ve výchozím nastavení přiřadí hodnotě D2D1_DISTANTSPECULAR_SCALE_MODE_LINEAR.

Požadavky

Požadavek Hodnota
Minimální podporovaný klient Windows 8 a Aktualizace platformy pro Windows 7 [desktopové aplikace | Aplikace pro Windows Store]
Minimální podporovaný server Windows 8 a Aktualizace platformy pro Windows 7 [desktopové aplikace | Aplikace pro Windows Store]
Záhlaví d2d1effects.h
Knihovna d2d1.lib, dxguid.lib

ID2D1Effect