Efekt spotového difuzního osvětlení
Pomocí efektu bodového difuzního osvětlení vytvořte obrázek, který vypadá jako nereflexní povrch, kde je zdroj světla omezen na směrovaný kužel světla a světlo je rozptýleno ve všech směrech. Tento efekt používá alfa kanál jako mapu výšky a rozsvítí obrázek s spotovým zdrojem 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 s difuzním osvětlením je vždy 1,0.
CLSID pro tento efekt je CLSID_D2D1SpotDiffuse.
- příklad obrázku
- Vlastnosti efektu
- režimy škálování
- Požadavky
- související témata
Příklad obrázku
Příklad zde ukazuje vstupní a výstupní obrázky spotově difuzního světelného efektu.
Efekt vypočítá konečné hodnoty výstupních pixelů pomocí těchto rovnic:
Kde:
- kd = difuzní světelná konstanta. Určeno uživatelem.


Lr, Lg, Lb = barva světla v součástech RGB.
Vlastnosti efektu
Zobrazovaný název a výčet indexu | Typ a výchozí hodnota | Popis |
---|---|---|
Pozice světla D2D1_SPOTDIFFUSE_PROP_LIGHT_POSITION |
D2D1_VECTOR_3F {0.0f, 0.0f, 0.0f} |
Světlá pozice bodového zdroje světla. Vlastnost je D2D1_VECTOR_3F definována jako (x, y, z). Jednotky jsou v pixelech nezávislých na zařízeních a jsou nevázané. |
PointsAt D2D1_SPOTDIFFUSE_PROP_UKAZUJE_NA |
D2D1_VECTOR_3F {0.0f, 0.0f, 0.0f} |
Kde je spotové světlo zaměřeno. Vlastnost je vystavena jako D2D1_VECTOR_3F s (x, y, z). Jednotky jsou v jednotkách DIP a hodnoty jsou nevázané. |
Soustředění D2D1_SPOTDIFFUSE_PROP_FOCUS |
PLOUT 1.0f |
Fokus spotového světla. Tato vlastnost je bez jednotná a je definována mezi 0 a 200. |
OmezeníConeAngle D2D1_SPOTDIFFUSE_PROP_LIMITING_CONE_ANGLE |
POVZNÉST SE 90.0f |
Úhel kužele, který omezuje oblast, kde je světlo promítané. Mimo kužel se nepromítne žádné světlo. Mezní úhel kužele je úhel mezi osou světlometu (osou mezi vlastnostmi LightPosition a PointsAt) a kuželem světlometu. Tato vlastnost je definována ve stupních a musí být v rozmezí od 0 do 90 stupňů. |
Difuzníkonstant D2D1_SPOTDIFFUSE_PROP_DIFFUSE_CONSTANT |
PLAVAT 1.0f |
Poměr difuzního odrazu k množství příchozího světla. Tato vlastnost musí být v rozmezí od 0 do 10 000 a je bez jednotek. |
SurfaceScale D2D1_SPOTDIFFUSE_PROP_SURFACE_SCALE |
PLAVAT 1.0f |
Měřítkový koeficient ve směru Z. Měřítko povrchu je bezstavné a musí být v rozmezí od 0 do 10 000. |
Barva D2D1_SPOTDIFFUSE_PROP_COLOR |
D2D1_VECTOR_3F {1.0f, 1.0f, 1.0f} |
Barva příchozího světla. Tato vlastnost je vystavena jako vektor 3 (R, G, B) a používá se k výpočtu LR, LG, LB. |
DélkaJednotkyJádra D2D1_SPOTDIFFUSE_PROP_KERNEL_UNIT_LENGTH (délka jednotky jádra) |
D2D1_VECTOR_2F {1.0f, 1.0f} |
Velikost prvku v jádru Sobel použité k vygenerování normálního povrchu ve směru X a Y. Tato vlastnost se mapuje na hodnoty dx a dy v Sobelově gradientu. Tato vlastnost je D2D1_VECTOR_2F(Kernel Unit Length X, Kernel Unit Length Y) a je definována v rámci DIPs/Kernel Unit. Efekt používá bilineární interpolaci ke škálování rastrového obrázku tak, aby odpovídal velikosti prvků jádra. |
ScaleMode D2D1_SPOTDIFFUSE_PROP_SCALE_MODE |
D2D1_SPOTDIFFUSE_SCALE_MODE D2D1_SPOTDIFFUSE_SCALE_MODE_LINEAR |
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. Další informace najdete v tématu Režimy škálování. |
Režimy škálování
Výčet | Popis |
---|---|
D2D1_SPOTDIFFUSE_SCALE_MODE_NEAREST_NEIGHBOR | Odebírá nejbližší bod a použije jej. Tento režim používá méně času zpracování, ale vypíše nejnižší kvalitu obrázku. |
D2D1_SPOTDIFFUSE_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_SPOTDIFFUSE_SCALE_MODE_CUBIC | K interpolaci se používá krychlové jádro se 16 vzorky. Tento režim používá nejvíce výpočetního času, ale výsledkem je obraz s vyšší kvalitou. |
D2D1_SPOTDIFFUSE_SCALE_MODE_MULTI_SAMPLE_LINEAR | Používá 4 lineární vzorky v jednom pixelu pro dobrý anti-aliasing okrajů. Tento režim je vhodný pro zmenšení obrázků o malé množství s malým počtem pixelů. |
D2D1_SPOTDIFFUSE_SCALE_MODE_ANISOTROPIC | Používá anisotropní filtrování k vzorkování vzorku podle transformovaného tvaru rastrového obrázku. |
D2D1_SPOTDIFFUSE_SCALE_MODE_HIGH_QUALITY_CUBIC | Použije vysoce kvalitní kubický kernel s proměnlivou velikostí pro předběžné zmenšení obrazu, pokud se v transformační matici používá zmenšení. Pak použije režim krychlové interpolace pro konečný výstup. |
Poznámka
Pokud režim nevyberete, efekt bude ve výchozím nastavení D2D1_SPOTDIFFUSE_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 |