typer, natur och egenskaper –

En GPU/GRAFISK PROCESSOR genererar en enorm mängd information per sekund i form av många bilder som snabbt överförs till våra näthinnor från TV:n, storleken på dessa bilder och informationen som lagras och bearbetas är enorm. Bildbuffertar, eftersom de lagras i VRAM, är en av anledningarna till att minne med hög bandbredd krävs.

Vad är en bildbuffert?

En bildbuffert är en del av VRAM som lagrar information om varje pixel på skärmen för nästa bildruta, denna buffert lagras i VRAM och genereras av GPU:n var x millisekund.

Nuvarande GPU:er fungerar med minst två bildbuffertar, i den första skriver GPU:n nästa bildruta som kommer att synas på skärmen, och i den andra den redan genererade föregående bildrutan som skickas till skärmen.

Backbuffern eller backbufferten kallas en buffert som skapas av GPU:n, och Frontbuffern eller frontbufferten är en buffert som läses av bildskärmsdrivrutinen och skickas till videoutgången. Medan den främre bufferten lagrar värdet för de röda, gröna och blå komponenterna för varje pixel, kan den i den bakre bufferten lagra den fjärde komponenten, alfa, som lagrar pixelns transparens- eller translucensvärde.

Vad är en bildskärmsdrivrutin?

Bildskärmsdrivrutinen är en hårdvara som finns i GPU:n, den ansvarar för att läsa bildbufferten i VRAM och omvandla data till en signal som kan förstå vilken typ av videoutgång som helst.

På system som NVIDIA G-SYNC, AMD FreeSync / Adaptive Sync och liknande skickar skärmkontrollern inte bara data till monitorn eller TV:n, utan styr också när varje bildruta startar och slutar.

Bildbuffertar och traditionell 3D-rendering

Även om våra skärmar är i 2D, har de renderat 3D-scener i realtid i över tjugo år. För att göra detta måste du dela upp den bakre bufferten i två differentierade buffertar:

  • Färgbuffert: där du anger värdet för färg- och alfakomponenterna för varje pixel.
  • Djupbuffert: Detta är djupvärdet för varje pixel.

När vi renderar en 3D-scen kan vi konstatera att flera pixlar har olika värden i djupbufferten, men är på samma plats i två andra dimensioner, det är här dessa extra pixlar ska kasseras, eftersom de inte är synliga för visare. Ångra utförs genom att jämföra positionen för varje pixel i djupbufferten, och kassera de längst bort från kameran med dem.

Djupbuffert

En djupbuffert eller mer känd som en Z-buffert lagrar avståndet till varje pixel i en 3D-scen i förhållande till synpunkten eller kameran, detta kan skapas vid en av dessa två tidpunkter.

  • Efter rasterstadiet och före textureringsstadiet.
  • Efter textureringsstadiet.

Eftersom det beräkningsmässigt svåraste steget är pixel-/fragmentskuggningsstadiet, innebär det faktum att skapa en Z-buffert omedelbart efter texturering av scenen att man beräknar ett färgvärde och därför en pixel- eller fragmentskuggning från hundratusentals eller till och med miljontals pixlar som är inte synlig. …

Analogen med detta före texturering är att utan att ha färg- och opacitetsvärden, en alfakanal, kan vi upptäcka att den ena pixeln efter den andra transparenta kasseras i förväg, vilket gör den osynlig i slutscenen.

För att undvika detta renderar utvecklare vanligtvis scenen i två delar: den första renderar inte objekt bakom ett genomskinligt eller genomskinligt objekt, och den andra renderar bara dessa objekt.

Bildbuffring och uppskjuten rendering

En nyhet som uppmärksammades i slutet av 2000-talet när grafikåtergivningen var uppskjuten rendering, eller uppskjuten rendering, som bestod i att först rendera scenen som genererade en serie extra buffertar som kallas en G-buffert, och sedan beräkna ljussättningen av scenen i nästa steg.

Behovet av flera bildbuffertar ökar minneskraven och kräver därför mer lagringsutrymme samt fyllningshastigheter och därför högre genomströmning.

Men lat rendering gjordes för att fixa ett av prestandaproblemen med klassisk rastrering, där varje förändring av värdet i en pixel, oavsett om det beror på luma eller chroma, innebär en överskrivning i bildbufferten, vilket resulterar i en enorm mängd data ska överföras till VRAM.

Uppskjuten rendering ändrar kostnaden för antalet ljus i en scen från exponentiell till logaritmisk, vilket minskar beräkningskostnaden vid rendering av scener med flera ljus.

Bildbuffertar som skuggkarta

Eftersom rastrering inte är särskilt bra för att beräkna indirekt belysning är det nödvändigt att hitta knep för att skapa skuggkartor i dem.

Den enklaste metoden är att rendera scenen genom att acceptera ljuset eller skuggan som om det vore en kamera, men istället för att rendera hela bilden skapas bara en djupbuffert som senare kommer att användas som en skuggkarta.

Detta system kommer att försvinna under de kommande åren med spridningen av strålspårningsteknologi, som gör att skuggor kan genereras i realtid på ett mycket mer exakt sätt, vilket kräver mindre processorkraft och utan att behöva skapa en enorm skuggkarta i VRAM.

Relaterade artiklar

Back to top button