Skip to main content

Vad är en OpenGL Skugga?

Ett öppet grafikbibliotek reg;(OpenGL ) Shadow är en visuell tillnärmning i en tredimensionell (3D) OpenGL Scen om hur en skugga skulle kastas i verkliga livet under liknande ljusförhållanden.Skuggor är ett komplext visuellt drag att implementera i OpenGL , till stor del för att det inte finns något medfött stöd för att kasta skuggor i en scen.Det finns istället en mängd olika tekniker som kan användas för att skapa skuggor från föremål och geometri inom en scen med olika verktyg, till exempel de olika tillgängliga buffertar, skuggare och i vissa fall förlängningar som ger tillgång till specialfunktioner på vissa grafikkort.I de flesta fall kvaliteten, noggrannheten och hastigheten för OpenGL Skuggåtergivning är direkt relaterad till processkraften och minnet för den grafikhårdvara som finns i en dator eller enhet.Några av de mer populära metoderna för att implementera en OpenGL Skugga inkluderar skuggvolymer, skuggkartläggning och strålspårning.

Skapa en applikation som har OpenGL Skuggstöd kräver matematisk kunskap och en djup förståelse för hur OpenGL Arbetar.OpenGL används till stor del för att skapa 3D -scener som är dynamiska och gjorda i realtid, så algoritmerna som används för att skapa skuggor måste inte bara optimeras för hastighet, utan också måste mätas noggrant för deras resursförbrukning och eventuella störningar som kan varaorsakad i grafikpipeline som används för rendering.Av dessa skäl är den mest grundläggande metoden för att skapa en skugga, kallad strålspårning, ofta opraktisk för hela 3D -scener, eftersom det kan ta mycket lång tid.

Ray -spårning följer i princip en imaginär linje eller stråle, från visningenKamerans plan eller position genom en scen till ett objekts yta och beräknar sedan ytan på ytan baserat på positionen för en eller flera ljuskällor och andra faktorer.Under processen med rasterisering, där 3D-scenen dras till en tvådimensionell (2D) -yta så att den kan visas, måste processen med strålspårning utföras på varje pixel som dras och, särskilt med strukturer eller annatYtegenskaper, kan behöva bedöma samma pixlar flera gånger.Detta innebär realtidsstrålspårning, även om det exakt skulle göra skuggor, vanligtvis inte är praktisk.

En annan metod som kan användas för att skapa en OpenGL Shadow är känd som Shadow Mapping.Denna metod använder djup- eller stencilbufferten för att göra en scen från ljuskällans vinkel som en serie avstånd från ljuskällan till ytorna på olika föremål inom scenen.Scenen görs sedan en andra gång från rätt visningsvinkel, kontrollerar om varje pixel faller inom ett visst avståndsområde inom bufferten, vilket indikerar om pixeln är upplyst eller skuggad.Att använda skuggkartläggning kan vara minnesintensivt och med scener som har mer än en ljuskälla kan det innebära att man gör flera kartor från flera vinklar.

Skuggvolymer är ett sätt att skapa en OpenGL Skugga som är mer exakt än vissa andra metoder, men det ger sina egna problem.En skuggvolym är i huvudsak en osynlig geometri i en scen som expanderar från den upplysta ytan på ett objekt bort från ljuskällan.Denna volym kan kontrolleras mot andra föremål för att se om de faller i skuggan av ytan från vilken volymen härstammar från.Denna procedur kan vara mycket komplex och i slutändan skapa visuella artefakter när de optimeras för hastighet.