Vad är självskugga?
"Självskugga" är en term som beskriver omständigheten i vilken en del av ett objekt kastar en skugga på sig själv. Exempel på självskuggning inkluderar skuggan gjuten av en mänsklig näsa i ansiktet eller överläppen när ljuskällan kommer ovanifrån, eller skuggan gjuten av stolens säte på stolens ben. När termen används i datorgrafik - speciellt programmering av datorgrafik - är det en hänvisning till skuggor som kastas av scenens tredimensionella (3D) objekt på sig själva eller skuggor som kastas av dynamiska objekt på sig själva och objekt runt dem . Arten av realtids 3D-datorgrafikprogrammering gör att många applikationer använder tekniker som ofta tar bort möjligheten att göra självskuggor till förmån för andra optimeringar, även om datorns hastighet och kapacitet ökar, realtids-självskuggningsmetoder har blivit mer tillgängliga. Det finns flera metoder för att återge realtidsskugga objekt i realtid, men hårdvarubegränsningar ger vanligtvis resultat som har vissa nackdelar, som felaktiga skuggor, skuggor med konstgjorda hårda kanter eller scener som ger mycket långsamt på grafikkort som inte är otroligt snabba .
En distinktion att göra när man pratar om självskuggning är skillnaden mellan statiska och dynamiska objekt i realtids grafik. Statiska objekt är 3D-objekt i en scen som inte rör sig och som inte har någon del av deras geometri ändrats under rendering. Ett dynamiskt objekt är å andra sidan ett objekt som inte är direkt kopplat till scenen på något sätt och kan skilja sig från en ram till nästa. För det mesta gör de flesta statiska objekt och scener som inte är i realtid självskugga, antingen på grund av renderingsmotorn eller på grund av andra grafiktrick som kan användas.
Flera optimeringar som används för att göra 3D-grafik i realtid gör det svårt att implementera dynamisk självskuggning. Några exempel inkluderar en grafikmotor som endast tillämpar belysningseffekter på en statisk bakgrund, ignorerar dynamiska objekt som tecken i en scen, eller en motor som bara behandlar objekt som silhuetter, utan medvetenhet om intern geometri. Med ökningen av grafikprocessorer och datorer tillåter nya tekniker att självskuggade objekt visas i en realtidsscen, med vissa begränsningar och avvägningar.
Skuggvolymer är ett sätt att självskugga kan implementeras i en 3D-scen. Denna metod skapar i huvudsak 3D-objekt som upptar en sluten volym i en scen där en skugga kastas, vilket gör att renderaren eller skuggaren kan utföra tester om någon punkt är inom en skuggad volym för att bestämma hur den är tänd. Andra metoder skapar skuggkartor, eller ungefärliga skuggor från toppunktpositioner, för att skapa mycket diffusa skuggor som inte nödvändigtvis följer en kantens trohet.
Nästan alla metoder för självskuggning måste utbyta antingen hastighet eller kvalitet för att få ett acceptabelt resultat. Kvalitetsproblem kan uppstå genom användning av snabba men låga upplösningar eller fuzzy tekniker som kan göra att vissa självskuggor verkar fel eller på sin plats. Hastighetsproblem uppstår när algoritmerna som används kräver för mycket overhead per ram eller försöker beräkna skuggprojektioner för noggrant. Även om det inte finns en enda standard självskuggproducerande algoritm, innehåller vissa grafikkort inbyggd acceleration för olika metoder som kan öka hastigheten för vissa tekniker.