Vertenuation en Spotlight Factor (Direct3D 9)

De diffuse en speculaire verlichtingsonderdelen van de globale verlichtingsvergelijking bevatten termen die lichtintenuatie en de spotlight-kegel beschrijven. Deze voorwaarden worden hieronder beschreven.

Demping

De vertenuatie van een licht hangt af van het type licht en de afstand tussen het licht en de hoekpuntpositie. Gebruik een van de volgende vergelijkingen om de attenuatie te berekenen.

Atten = 1/( att0i + att1i * d + att2i * d²)

Waar:

Parameter Standaardwaarde Type Beschrijving Bereik
att0i 0.0 DRIJVEN Constante vertenuatiefactor 0 tot +oneindig
att1i 0.0 DRIJVEN Lineaire attenuatiefactor 0 tot +oneindig
att2i 0.0 DRIJVEN Kwadratische vertenuatiefactor 0 tot +oneindig
d N.V.T DRIJVEN Afstand van hoekpuntpositie tot lichtpositie N.V.T

 

  • Atten = 1, als het licht een richtingslicht is.
  • Atten = 0, als de afstand tussen het licht en het hoekpunt het lichtbereik overschrijdt.

De att0-, att1-, att2-waarden worden opgegeven door de leden attenuation0, Attenuation1 en Attenuation2 van D3DLIGHT9.

De afstand tussen het licht en de hoekpuntpositie is altijd positief.

d = | Ldir |

Waar:

Parameter Standaardwaarde Type Beschrijving
Ldir N.V.T D3DVECTOR Richtingsvector van hoekpuntpositie tot lichtpositie

 

Als d groter is dan het lichtbereik, dat wil gezegd, het bereiklid van een D3DLIGHT9 structuur, maakt Direct3D geen verdere vertenuatieberekeningen en past geen effecten van het licht op het hoekpunt toe.

De vertenuatieconstanten fungeren als coëfficiënten in de formule. U kunt verschillende vertenuatiecurven produceren door ze eenvoudig aan te passen. U kunt Attenuation1 instellen op 1,0 om een licht te maken dat niet wordt afgezwakd, maar nog steeds wordt beperkt door een bereik, of u kunt experimenteren met verschillende waarden om verschillende vertenuatie-effecten te bereiken.

De intenuatie bij het maximale bereik van het licht is niet 0,0. Om te voorkomen dat lichten plotseling verschijnen wanneer ze zich in het lichtbereik bevinden, kan een toepassing het lichtbereik vergroten. Of de toepassing kan attenuatieconstanten instellen, zodat de vertenuatiefactor dicht bij 0,0 ligt bij het lichtbereik. De vertenuatiewaarde wordt vermenigvuldigd met de rode, groene en blauwe componenten van de kleur van het licht om de intensiteit van het licht te schalen als factor van de afstandslicht gaat naar een hoekpunt.

Spotlight-factor

De volgende vergelijking geeft de spotlightfactor aan.

vergelijking van de spotlightfactor

Parameter Standaardwaarde Type Beschrijving Bereik
rhoi N.V.T DRIJVEN cosinus(hoek) voor spotlight i N.V.T
phii 0.0 DRIJVEN Penumbra hoek van spotlight i in radialen [thetai, pi)
thetai 0.0 DRIJVEN Umbra hoek van spotlight i in radialen [0, pi)
falloff 0.0 DRIJVEN Afvalfactor (-oneindig, +oneindig)

 

Waar:

rho = norm(Ldcs).norm (Ldir)

en:

Parameter Standaardwaarde Type Beschrijving
Ldcs N.V.T D3DVECTOR Het negatieve van de lichtrichting in de cameraruimte
Ldir N.V.T D3DVECTOR Richtingsvector van hoekpuntpositie tot lichtpositie

 

Na het berekenen van de lichttenuatie, houdt Direct3D ook rekening met spotlight-effecten, indien van toepassing, de hoek die het licht weerspiegelt van een oppervlak en de reflectantie van het huidige materiaal om de diffuse en speculatieve componenten voor dat hoekpunt te berekenen. Zie SpotLightvoor meer informatie.

Wiskunde van Verlichting