Spot diffuse verlichtingseffect
Gebruik het spot-diffuse verlichtingseffect om een afbeelding te maken die een niet-reflecterend oppervlak lijkt te zijn waarbij de lichtbron is beperkt tot een gerichte kegel van licht en het licht in alle richtingen verspreid is. Dit effect gebruikt het alfakanaal als een hoogtekaart en licht de afbeelding aan met een spotlichtbron.
De kleur van de uitvoerbitmap is het resultaat van lichtkleur, lichtpositie en de oppervlakgeometrie. De alfakanaaluitvoer voor elke pixel met diffuse verlichting is altijd 1,0.
De CLSID voor dit effect is CLSID_D2D1SpotDiffuse.
- voorbeeldafbeelding
- eigenschappen van effect
- schaalmodi
- vereisten
- Verwante onderwerpen
Voorbeeldafbeelding
In het voorbeeld ziet u de in- en uitvoerafbeeldingen van het spot-diffuse verlichtingseffect.
voorbeeldschermopname van
Het effect berekent de uiteindelijke pixelwaarden van de uitvoer met behulp van deze vergelijkingen.
Waar:
- kd = diffuse verlichtingsconstante. Opgegeven door de gebruiker.


Lr, Lg, Lb = de lichte kleur in RGB-componenten.
Effecteigenschappen
Weergavenaam en indexnummering | Type en standaardwaarde | Beschrijving |
---|---|---|
LightPosition D2D1_SPOTDIFFUSE_PROP_LIGHT_POSITION |
D2D1_VECTOR_3F {0.0f, 0.0f, 0.0f} |
De lichtpositie van de puntlichtbron. De eigenschap is een D2D1_VECTOR_3F gedefinieerd als (x, y, z). De eenheden bevinden zich in apparaatonafhankelijke pixels (DIPs) en zijn niet gebonden. |
PointsAt D2D1_SPOTDIFFUSE_PROP_POINTS_AT |
D2D1_VECTOR_3F {0.0f, 0.0f, 0.0f} |
Waar het spotlicht gericht is. De eigenschap wordt weergegeven als een D2D1_VECTOR_3F met (x, y, z). De eenheden bevinden zich in DIPs en de waarden zijn niet gebonden. |
Focus D2D1_SPOTDIFFUSE_PROP_FOCUS |
DRIJVEN 1,0f |
De focus van het spotlicht. Deze eigenschap is eenheidloos en is gedefinieerd tussen 0 en 200. |
LimitingConeAngle D2D1_SPOTDIFFUSE_PROP_LIMITING_CONE_ANGLE |
DRIJVEN 90,0f |
De kegelhoek die het gebied beperkt waar het licht wordt geprojecteerd. Er wordt geen licht geprojecteerd buiten de kegel. De begrensde kegelhoek is de hoek tussen de spotlichtas (de as tussen de LightPosition en PointsAt eigenschappen) en de spotlichtkegel. Deze eigenschap is gedefinieerd in graden en moet tussen 0 en 90 graden zijn. |
DiffuseConstant D2D1_SPOTDIFFUSE_PROP_DIFFUSE_CONSTANT |
DRIJVEN 1,0f |
De verhouding van diffuse weerspiegeling tot de hoeveelheid binnenkomend licht. Deze eigenschap moet tussen 0 en 10.000 zijn en is eenheidloos. |
SurfaceScale D2D1_SPOTDIFFUSE_PROP_SURFACE_SCALE |
DRIJVEN 1.0f |
De schaalfactor in de Z-richting. De oppervlakteschaal is unitloos en moet tussen 0 en 10.000 zijn. |
Kleur D2D1_SPOTDIFFUSE_PROP_COLOR |
D2D1_VECTOR_3F {1.0f, 1.0f, 1.0f} |
De kleur van het binnenkomende licht. Deze eigenschap wordt weergegeven als een vector 3 (R, G, B) en wordt gebruikt voor het berekenen van LR, LG, LB. |
KernelUnitLength D2D1_SPOTDIFFUSE_PROP_KERNEL_UNIT_LENGTH |
D2D1_VECTOR_2F {1.0f, 1.0f} |
De grootte van een element in de Sobel-kernel die wordt gebruikt om het oppervlak normaal te genereren in de X- en Y-richting. Deze eigenschap komt overeen met de dx- en dy-waarden in de Sobel-gradiënt. Deze eigenschap is een D2D1_VECTOR_2F(Kernel Unit Length X, Kernel Unit Length Y) en is gedefinieerd in (DIPs/Kernel Unit). Het effect maakt gebruik van bilineaire interpolatie om de bitmap te schalen zodat deze overeenkomt met de grootte van kernelelementen. |
Schaalmodus D2D1_SPOTDIFFUSE_PROP_SCALE_MODE |
D2D1_SPOTDIFFUSE_SCALE_MODE D2D1_SPOTDIFFUSE_SCHAALMODUS_LINEAIR (technische term voor geschaalde diffuus lichtberekening) |
De interpolatiemodus die het effect gebruikt om de afbeelding te schalen naar de bijbehorende lengte van de kerneleenheid. Er zijn zes schaalmodi die variëren in kwaliteit en snelheid. Zie Schaalmodi voor meer informatie. |
Schaalmodi
Opsomming | Beschrijving |
---|---|
D2D1_SPOTDIFFUSE_SCHAALMODUS_DICHTSTBIJZIJNDE_BUREN | Bemonstert het dichtstbijzijnde punt en gebruikt dat. In deze modus wordt minder verwerkingstijd gebruikt, maar wordt de afbeelding van de laagste kwaliteit uitgevoerd. |
D2D1_SPOTDIFFUSE_SCALE_MODE_LINEAR | Maakt gebruik van een voorbeeld van vier punten en lineaire interpolatie. Deze modus voert een afbeelding van een hogere kwaliteit uit dan dichtstbijzijnde buur. |
D2D1_SPOTDIFFUUS_SCHAALMODUS_KUBIEK | Gebruikt een kubieke steekproefkern van 16 voor interpolatie. In deze modus wordt de meeste verwerkingstijd gebruikt, maar wordt een afbeelding met een hogere kwaliteit uitgevoerd. |
D2D1_SPOTDIFFUSE_SCALE_MODE_MULTI_SAMPLE_LINEAR | Maakt gebruik van vier lineaire steekproeven binnen één pixel voor goede rand antialiassen. Deze modus is geschikt voor het omlaag schalen met kleine hoeveelheden afbeeldingen met een paar pixels. |
D2D1_SPOTDIFFUSE_SCALE_MODE_ANISOTROPIC (anistropische schaalmodus voor spotverstrooiing) | Maakt gebruik van anisotropische filtering om een patroon te steekproefen op basis van de getransformeerde vorm van de bitmap. |
D2D1_SPOTDIFFUSE_SCALE_MODE_HIGH_QUALITY_CUBIC | Maakt gebruik van een variabele grootte van een kubieke kernel van hoge kwaliteit om een pre-downscale van de afbeelding uit te voeren als omlaag schalen wordt gebruikt in de transformatiematrix. Vervolgens wordt de kubieke interpolatiemodus gebruikt voor de uiteindelijke uitvoer. |
Notitie
Als u geen modus selecteert, wordt het effect standaard D2D1_SPOTDIFFUSE_SCALE_MODE_LINEAR.
Eisen
Vereiste | Waarde |
---|---|
Minimaal ondersteunde client | Windows 8 en Platform Update voor Windows 7 [desktop-apps | Windows Store-apps] |
Minimaal ondersteunde server | Windows 8 en Platform Update voor Windows 7 [desktop-apps | Windows Store-apps] |
Koptekst | d2d1effects.h |
Bibliotheek | d2d1.lib, dxguid.lib |