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 osvětlení difuzního bodu vytvořte obrázek, který vypadá jako nereflexní povrch se světlým rozptýleným ve všech směrech. Tento efekt používá alfa kanál jako výškovou mapu a osvětluje obraz bodový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_D2D1PointDiffuse. Chcete-li použít tento efekt, přidejte dxguid.lib do závislostí linkeru.
- 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 efektu osvětlení difuzního bodu.
Difuzní osvětlení označuje světlo, které se odráží ve více směrech, jak je vidět zde.
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 | Popis |
---|---|
LightPosition D2D1_POINTDIFFUSE_PROP_LIGHT_POSITION |
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é. Typ je D2D1_VECTOR_3F. Výchozí hodnota je {0.0f, 0.0f, 0.0f}. |
Difuzní konstanta D2D1_POINTDIFFUSE_PROP_DIFFUSE_CONSTANT |
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. Typ je FLOAT. Výchozí hodnota je 1,0f. |
SurfaceScale D2D1_POINTDIFFUSE_PROP_SURFACE_SCALE |
Koeficient ve směru Z. Měřítko povrchu je bezstavné a musí být v rozmezí od 0 do 10 000. Typ je FLOAT. Výchozí hodnota je 1,0f. |
Barva D2D1_POINTDIFFUSE_PROP_COLOR |
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. Typ je D2D1_VECTOR_3F. Výchozí hodnota je {1.0f, 1.0f, 1.0f}. |
KernelUnitLength D2D1_POINTDIFFUSE_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 se mapuje na hodnoty dx a dy v sobelově gradientu. Tato vlastnost je D2D1_VECTOR_2F (Délka jednotky jádra X, Délka jednotky jádra Y) a je definována v jednotkách DIPs na jednotku 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}. |
ScaleMode D2D1_POINTDIFFUSE_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. Další informace najdete v tématu Režimy škálování. Typ je D2D1_POINTDIFFUSE_SCALE_MODE. Výchozí hodnota je D2D1_POINTDIFFUSE_SCALE_MODE_LINEAR. |
Režimy škálování
Výčet | Popis |
---|---|
D2D1_POINTDIFFUSE_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_POINTDIFFUSE_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_POINTDIFFUSE_SCALE_MODE_CUBIC | Pro interpolaci se používá 16 vzorové krychlové jádro. Tento režim používá nejvíce času na zpracování, ale výsledkem je obraz s vyšší kvalitou. |
D2D1_POINTDIFFUSE_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 drobné zmenšení obrázků s menším počtem pixelů. |
D2D1_POINTDIFFUSE_SCALE_MODE_ANISOTROPIC | Používá anisotropní filtrování k vzorkování vzorku podle transformovaného tvaru rastrového obrázku. |
D2D1_POINTDIFFUSE_SCALE_MODE_HIGH_QUALITY_CUBIC | Pomocí vysoce kvalitního krychlového jádra s proměnnou velikostí provede zmenšení obrázku před zmenšením měřítka, pokud je zmenšení měřítka součástí transformační matice. Pak použije režim krychlové interpolace pro konečný výstup. |
Poznámka
Pokud režim nevyberete, efekt se nastaví na výchozí hodnotu D2D1_POINTDIFFUSE_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 |