Wat is zelfschaduw?
"Zelfschaduwing" is een term die de omstandigheid beschrijft waarin een deel van een object een schaduw op zichzelf werpt. Voorbeelden van zelfschaduwing zijn de schaduw geworpen door een menselijke neus op het gezicht of de bovenlip wanneer de lichtbron van boven komt, of de schaduw geworpen door de stoelzitting op de poten van de stoel. Wanneer de term wordt gebruikt in computergraphics - in het bijzonder computergraphics-programmering - is het een verwijzing naar schaduwen die door driedimensionale (3D) objecten van een scène op zichzelf worden geworpen, of schaduwen die door dynamische objecten op zichzelf en objecten eromheen worden gegoten. . De aard van real-time 3D computer grafische programmering zorgt ervoor dat veel applicaties technieken gebruiken die vaak de mogelijkheid wegnemen om zelfschaduwen te renderen ten gunste van andere optimalisaties, hoewel, naarmate de snelheid en mogelijkheden van computers toenemen, real-time zelfschaduwmethoden toegankelijker geworden. Er zijn verschillende methoden om realtime zelfschaduwobjecten weer te geven, maar hardwarebeperkingen leveren meestal resultaten op met enkele nadelen, zoals onnauwkeurige schaduwen, schaduwen met kunstmatig harde randen of scènes die zeer langzaam worden weergegeven op grafische kaarten die niet ongelooflijk snel zijn .
Een onderscheid dat moet worden gemaakt bij het praten over zelfschaduw is het verschil tussen statische en dynamische objecten in realtime graphics. Statische objecten zijn 3D-objecten in een scène die niet bewegen en waarvan de geometrie tijdens het renderen niet verandert. Een dynamisch object is daarentegen een object dat op geen enkele manier direct aan de scène is gekoppeld en van frame tot frame kan verschillen. Voor het grootste deel doen de meeste statische objecten en niet-realtime scènes zelfschaduw, hetzij vanwege de rendering-engine of vanwege andere grafische trucs die kunnen worden gebruikt.
Verschillende optimalisaties die worden gebruikt om realtime 3D-afbeeldingen weer te geven, maken de implementatie van dynamische zelfschaduw moeilijk. Enkele voorbeelden zijn een grafische engine die alleen lichteffecten toepast op een statische achtergrond, dynamische objecten zoals tekens in een scène negeert, of een engine die objecten alleen als silhouetten behandelt, zonder zich bewust te zijn van de interne geometrie. Met de toename van grafische processors en computers zorgen nieuwe technieken ervoor dat objecten met zelfschaduw in een realtime scène verschijnen, met enkele beperkingen en afwegingen.
Schaduwvolumes zijn een manier waarop zelfschaduw kan worden geïmplementeerd in een 3D-scène. Deze methode maakt in wezen 3D-objecten die een ingesloten volume bezetten in een scène waar een schaduw wordt geworpen, waardoor de renderer of arcering tests kan uitvoeren om te bepalen of een punt binnen een schaduwvolume staat om te bepalen hoe het wordt verlicht. Andere methoden maken schaduwkaarten of benaderen schaduwen vanuit hoekpuntposities om zeer diffuse schaduwen te maken die niet noodzakelijkerwijs de trouw van een rand volgen.
Bijna alle methoden van zelfschaduwing moeten snelheid of kwaliteit uitwisselen om een acceptabel resultaat te krijgen. Kwaliteitsproblemen kunnen optreden door het gebruik van snelle maar lage resolutie of fuzzy technieken waardoor sommige zelfschaduwen mogelijk verkeerd of misplaatst lijken. Snelheidsproblemen treden op wanneer de gebruikte algoritmen te veel overhead per frame vereisen of proberen om schaduwprojecties te nauwkeurig te berekenen. Hoewel er geen enkel standaard zelfschaduwproducerend algoritme is, bevatten sommige grafische kaarten native versnelling voor verschillende methoden die de snelheid van sommige technieken kunnen verhogen.