Reyes rendering
Reyes-rendering är en mjukvaruarkitektur som används i 3D-datorgrafik för att återge fotorealistiska bilder. Den utvecklades i mitten av 1980-talet av Loren Carpenter och Robert L. Cook vid Lucasfilms Computer Graphics Research Group, som nu är Pixar . Den användes första gången 1982 för att återge bilder för Genesis- effektsekvensen i filmen Star Trek II: The Wrath of Khan . Pixars RenderMan var en implementering av Reyes-algoritmen fram till dess att den togs bort 2016. Enligt originaldokumentet som beskriver algoritmen är Reyes bildrenderingssystem "En arkitektur för snabb högkvalitativ rendering av komplexa bilder." Reyes föreslogs som en samling algoritmer och databehandlingssystem. Men termerna "algoritm" och "arkitektur" har kommit att användas synonymt i detta sammanhang och används omväxlande i denna artikel. [ citat behövs ]
namn
Reyes är en akronym för Renders Everything You Ever Saw (namnet är också en ordlek på Point Reyes , Kalifornien, nära där Lucasfilm låg) och antyder processer kopplade till optiska bildsystem. Enligt Robert L. Cook är Reyes skriven med endast den första bokstaven versal, som det är i 1987 Cook/Carpenter/Catmull SIGGRAPH papper.
Arkitektur
Arkitekturen designades med ett antal mål i åtanke:
- Modellkomplexitet/mångfald : För att generera visuellt komplexa och rika bilder måste användare av ett renderingssystem vara fria att modellera ett stort antal (100 000 s) av komplexa geometriska strukturer som eventuellt genereras med hjälp av procedurmodeller som fraktaler och partikelsystem .
- Skuggningskomplexitet : Mycket av den visuella komplexiteten i en scen genereras av det sätt på vilket ljusstrålar interagerar med fasta föremålsytor. Generellt, i datorgrafik, modelleras detta med hjälp av texturer. Texturer kan vara färgade uppsättningar av pixlar, beskriva ytförskjutningar eller transparens eller ytreflektivitet. Reyes tillåter användare att införliva procedurella shaders där ytstruktur och optisk interaktion uppnås med hjälp av datorprogram som implementerar proceduralgoritmer snarare än enkla uppslagstabeller. En stor del av algoritmen syftar till att minimera den tid som processorer spenderar på att hämta texturer från datalager.
- Minimal strålspårning : Vid den tidpunkt då Reyes föreslogs var datorsystem betydligt mindre kapabla när det gäller processorkraft och lagring. Detta innebar att strålspårning av en fotorealistisk scen skulle ta tiotals eller hundratals timmar per bildruta. Algoritmer som Reyes som i allmänhet inte spårade strålar körs mycket snabbare med nästan fotorealistiska resultat.
- Hastighet : Att rendera en tvåtimmars film med 24 bilder per sekund på ett år ger 3 minuters renderingstid per bildruta i genomsnitt.
- Bildkvalitet : Alla bilder som innehåller oönskade, algoritmrelaterade artefakter anses vara oacceptabla.
- Flexibilitet : Arkitekturen bör vara tillräckligt flexibel för att införliva nya tekniker när de blir tillgängliga, utan behov av en fullständig omimplementering av algoritmen.
Reyes uppnår effektivt flera effekter som ansågs nödvändiga för rendering av filmkvalitet: Släta, böjda ytor; ytstrukturering; rörelseoskärpa ; och skärpedjup .
Reyes återger krökta ytor, som de som representeras av parametriska fläckar, genom att dela upp dem i mikropolygoner , små fyrhörningar var och en mindre än en pixel i storlek. Även om många mikropolygoner är nödvändiga för att approximera krökta ytor exakt, kan de bearbetas med enkla, parallelliserbara operationer. En Reyes-renderare tessellaterar primitiver på hög nivå till mikropolygoner på begäran, och delar varje primitiv bara så fint som nödvändigt för att se jämn ut i den slutliga bilden.
Därefter tilldelar ett skuggsystem en färg och opacitet till varje hörn av en mikropolygon. De flesta Reyes-renderare tillåter användare att tillhandahålla godtyckliga belysnings- och textureringsfunktioner skrivna i ett skuggspråk . Mikropolygoner bearbetas i stora rutnät som gör att beräkningar kan vektoriseras .
Skuggade mikropolygoner samplas i skärmutrymmet för att producera utdatabilden. Reyes använder en innovativ algoritm för dold yta eller hider som utför de nödvändiga integreringarna för rörelseoskärpa och skärpedjup utan att kräva mer geometri eller skuggningsprov än vad en osuddig rendering skulle behöva. Döljaren ackumulerar mikropolygonfärger vid varje pixel över tid och linsposition med hjälp av en Monte Carlo-metod som kallas stokastisk sampling .
Rörledning
Den grundläggande Reyes pipeline har följande steg:
- Bunden. Beräkna begränsningsvolymen för varje geometrisk primitiv.
- Dela. Dela upp stora primitiver i mindre, tärningsbara primitiver.
- Tärningar. Konvertera primitiva till ett rutnät av mikropolygoner, var och en ungefär lika stor som en pixel.
- Skugga. Beräkna belysning och skuggning vid varje vertex av mikropolygonrutnätet.
- Bryt rutnätet i individuella mikropolygoner, som var och en är avgränsad och kontrollerad för synlighet.
- Dölj. Prova mikropolygonerna och producera den slutliga 2D-bilden.
I denna design måste renderaren lagra hela rambufferten i minnet eftersom den slutliga bilden inte kan matas ut förrän alla primitiver har bearbetats. En vanlig minnesoptimering introducerar ett steg som kallas bucketing före tärningssteget. Utdatabilden är uppdelad i ett grovt rutnät av "hinkar", var och en vanligen 16 gånger 16 pixlar i storlek. Objekten delas sedan grovt längs hinkgränserna och placeras i hinkar baserat på deras placering. Varje hink tärnas och dras individuellt, och data från föregående hink kasseras innan nästa hink bearbetas. På detta sätt måste endast en rambuffert för den aktuella hinken och högnivåbeskrivningarna av alla geometriska primitiver bibehållas i minnet. För typiska scener leder detta till en betydande minskning av minnesanvändningen jämfört med den omodifierade Reyes-algoritmen.
Reyes renderare
Följande renderare använder Reyes-algoritmen på ett eller annat sätt eller låter åtminstone användare välja den för att producera sina bilder:
- Digits 'n Art's 3Delight ( länk )
- Aqsis ( länk ) öppen källkod
- jrMan ( länk ) öppen källkod
- Pixars RenderMan Pro Server & RenderMan för Maya ( länk ) upp till version 20 (släpptes 2015)
- Pixels 3d Renderer ( länk )
- Pixie ( länk ) öppen källkod
- DotC Softwares RenderDotC ( länk )
- Side Effects Softwares mantra ( länk )
- Posers FireFly ( länk )
- Bageri Relight ( länk )
- Robert L. Cook ., Loren Carpenter och Edwin Catmull . " The Reyes Image Rendering Architecture ." Computer Graphics ( SIGGRAPH '87 Proceedings) , s. 95–102.
- Anthony A. Apodaca och Larry Gritz. Advanced RenderMan: Skapa CGI för filmer . Morgan Kaufmann förlag. ISBN 1-55860-618-1