Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
= povrchový normální vektor jednotky, funkce x a y.
= jednotkový vektor směřující z povrchu na světlo.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 |