Delen via


Wiskunde van Verlichting (Direct3D 9)

Het Direct3D Light Model behandelt omgevings-, diffuse, speculaire en emissive verlichting. Dit is voldoende flexibiliteit om een breed scala aan verlichtingssituaties op te lossen. U verwijst naar de totale hoeveelheid licht in een scène als de globale verlichting en berekent deze met behulp van de volgende vergelijking.

Global Illumination = Ambient Light + Diffuse Light + Specular Light + Emissive Light 

Ambient Lighting (Direct3D 9) is constante verlichting. Het is constant in alle richtingen en het kleuren alle pixels van een object hetzelfde. Het is snel om te berekenen, maar objecten blijven plat en onrealistisch. Zie Omgevingsverlichting (Direct3D 9) als u wilt zien hoe omgevingsverlichting wordt berekend door Direct3D.

Diffuse Verlichting (Direct3D 9) hangt af van zowel de lichtrichting als het objectoppervlak normaal. Het varieert over het oppervlak van een object als gevolg van de veranderende lichtrichting en de veranderende numerieke vector van het oppervlak. Het duurt langer om diffuse verlichting te berekenen, omdat het voor elk object hoekpunt verandert, maar het voordeel van het gebruik ervan is dat het objecten arceert en ze driedimensionale (3D) diepte geeft. Zie Diffuse Verlichting (Direct3D 9) als u wilt zien hoe diffuse verlichting wordt berekend in Direct3D.

Specular Lighting (Direct3D 9) identificeert de heldere speculaire highlights die optreden wanneer licht een objectoppervlak raakt en wordt weerkaatst naar de camera. Het is intenser dan diffuus licht en valt sneller over het objectoppervlak. Het duurt langer om speculatieve verlichting te berekenen dan diffuse verlichting, maar het voordeel van het gebruik ervan is dat het aanzienlijke details toevoegt aan een oppervlak. Zie Specular Lighting (Direct3D 9) als u wilt zien hoe speculatieve verlichting wordt berekend in Direct3D.

Emissive Lighting (Direct3D 9) licht is dat door een object wordt uitgezonden; Bijvoorbeeld een gloed. Zie Emissive Lighting (Direct3D 9) als u wilt zien hoe emissive verlichting wordt berekend in Direct3D.

Realistische belichting kan worden gerealiseerd door elk van deze soorten verlichting toe te passen op een 3D-scène. De waarden die worden berekend voor omgevings-, emissieve en diffuse componenten worden uitgevoerd als de diffuse hoekpuntkleur; de waarde voor de speculaire verlichtingscomponent wordt uitgevoerd als de speculaire hoekpuntkleur. Omgevings-, diffuus- en speculatieve lichtwaarden kunnen worden beïnvloed door de attenuatie en spotlightfactor van een bepaald licht. Voor meer informatie over hoe de verzwakking werkt, zie Attenuation and Spotlight Factor (Direct3D 9).

Om een realistischer belichtingseffect te bereiken, voegt u meer lichten toe; de scène duurt echter langer om weer te geven. Om alle effecten te bereiken die een ontwerper wil, gebruiken sommige games meer CPU-kracht dan algemeen beschikbaar is. In dit geval is het gebruikelijk om het aantal belichtingsberekeningen tot een minimum te beperken met behulp van verlichtingskaarten en omgevingskaarten om verlichting aan een scène toe te voegen terwijl u bitmapkaarten gebruikt.

Verlichting wordt berekend in de cameraruimte. Zie Camera Space Transformations (Direct3D 9)om te zien hoe lichttransformaties worden berekend. Geoptimaliseerde verlichting kan worden berekend in modelruimte, wanneer er speciale omstandigheden bestaan: normale vectoren zijn al genormaliseerd (D3DRS_NORMALIZENORMALS waar is), hoekpuntmixen zijn niet nodig, transformatiematrices zijn orthogonaal, enzovoort.

Lichten en Materialen