BE1022664B1 - Voorspellend systeem voor het doorsturen van texturen - Google Patents

Voorspellend systeem voor het doorsturen van texturen Download PDF

Info

Publication number
BE1022664B1
BE1022664B1 BE2015/5711A BE201505711A BE1022664B1 BE 1022664 B1 BE1022664 B1 BE 1022664B1 BE 2015/5711 A BE2015/5711 A BE 2015/5711A BE 201505711 A BE201505711 A BE 201505711A BE 1022664 B1 BE1022664 B1 BE 1022664B1
Authority
BE
Belgium
Prior art keywords
subareas
predictive
rendering
predictor
virtual
Prior art date
Application number
BE2015/5711A
Other languages
English (en)
Inventor
Bart Pieters
Charles-Frederik Hollemeersch
Aljosha Demeulemeester
Original Assignee
Graphine Nv
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Graphine Nv filed Critical Graphine Nv
Application granted granted Critical
Publication of BE1022664B1 publication Critical patent/BE1022664B1/nl

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/08Bandwidth reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/36Level of detail

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

Deze uitvinding heeft betrekking op een voorspellend systeem voor het bepalen van een set van deelgebieden die gebruikt moet worden voor het redeneren van een virtuele wereld van een computergraphicstoepassing, waarbij voornnoemde deelgebieden toebehorenn aan streambare objecten die gebruikt moeten worden bij het renderen van voornoemde virtuele wereld, waarbij voornoemde streambare objecten elk een verscheidenheid aan deelgebieden omvatten. Het voorspellende systeem omvat - voorspellende middelen die geschikt zijn voor het ontvangen van een computergraphicstoepassing van informatie over de virtuele wereld en voor het verkrijgen van een verscheidenheid van voorspelde sets van deelgebieden voor het renderen van een virtuele wereld met behulp van streambare objecten, waarbij elke voorspelde set van voornoemde verscheidenheid verkregen wordt door het toepassen van een ander voorspellend schema, - een streamingmanager die geschikt is voor het ontvangen van de voorspelde set van deelgebieden, voor het vergelijken van de voorspelde sets van deelgebieden met informatie over deelgebieden die in het geheugen bewaard is en voor het uitvoeren, in overeenstemming met het resultaat van voornoemde vergelijking, van stuuurinstructies betreffende de set van deelgebieden die daadwerkelijk gebruikt moeten worden.

Description

Voorspellend systeem voor het doorsturen van texturen Gebied van de uitvinding [0001] De onderhavige uitvinding heeft in het algemeen betrekking op het vakgebied van computergraphicstoepassingen en in het bijzonder op toepassingen waarbij een verscheidenheid van objecten gestreamd wordt voor het renderen van een virtuele wereld.
Achtergrond van de uitvinding [0002] Voor het tot stand brengen van visueel aantrekkelijke resultaten, kunnen computergraphicstoepassingen een verscheidenheid van virtuele objecten op het scherm renderen, waarbij elk virtueel object bij voorkeur een hoog detailniveau heeft. De toepassing zal meestal meerdere voorstellingen van die virtuele objecten in het geheugen hebben, bijvoorbeeld, de geometrie van een object dat of een textuur die geprojecteerd is op de geometrie, elk met een set van verschillende detailniveaus (LOD's), zodat de toepassing de LOD-weergave kan selecteren die tot de beste beeldkwaliteit leidt. Zo hoeft een boom op een grote virtuele afstand bijvoorbeeld niet met hoge getrouwheid gerenderd te worden, waardoor de textuur voor die boom een lage resolutie kan hebben. De virtuele wereld die door de toepassing gerenderd wordt, kan veel meer virtuele objecten en voorstellingen bevatten met allemaal verschillende LOD's dan in het geheugen van de toepassing passen.
[0003] Een streamingmodule (Eng.: 'streaming engine') is een module die voorstellingen met verschillende LOD's van de virtuele objecten vanuit uit een grote maar langzame opslag in een klein maar snel cachegeheugen laadt. Dit wordt gedaan zodra het virtuele object nodig is voor verwerking of rendering. Deze voorstellingen worden streambare objecten genoemd, bijvoorbeeld een textuur of een geometrisch model. Om een meer fijnkorrelige streaming mogelijk te maken, worden de streambare objecten met hun LOD's opgedeeld in deelgebieden, zogenaamde tegels, die door de streamingmodule gestreamd worden. Zo kunnen texturen bijvoorbeeld opgedeeld worden in kleine, rechthoekige gebieden van pixels.
[0004] Het streamen van tegels van opslag naar geheugen kan een aanzienlijke hoeveelheid tijd vergen. Als de tegel van een draaiende schijf naar het geheugen gestreamd wordt, moeten de schijfkoppen uitgelijnd worden, gegevens gelezen worden, tegels gedecomprimeerd en naar GPU-textuurgeheugen gekopieerd worden. Gedurende deze periode kan de gebruiker geconfronteerd worden met een verminderde kwaliteit van ervaring aangezien de tegel niet beschikbaar is voor rendering. De scène kan bijvoorbeeld gedeeltelijk zonder texturen gerenderd worden totdat de textuur beschikbaar is. De scène kan gerenderd worden met een tegel van lagere kwaliteit. Zodra de gevraagde tegel met hogere kwaliteit echter beschikbaar is, kan de gebruiker een virtueel object te zien krijgen waarvan de renderinggetrouwheid plotseling verandert. De gebruiker kan met andere woorden extra detail 'op het scherm zien verschijnen' zodra de tegel geladen is.
[0005] Het is duidelijk wenselijk dat de nodige tegels voor het renderen van een scène beschikbaar zijn in het cachegeheugen en, bij voorkeur, gebruiksklaar in het cachegeheugen zitten vóór of op het moment dat de toepassing deze voor het eerst gebruikt. Als de scène alleen gerenderd kan worden met tegels die aanwezig zijn in de cache, zal niet plotseling extra detail in de gerenderde resultaten verschijnen en kan de gebruiker altijd van de hoogste kwaliteit van ervaring genieten.
[0006] Door het voorspellen van de werkset van een virtuele scène, d.w.z. de set van tegels die gebruikt moet worden voor het renderen van de scène, kan de cache geoptimaliseerd worden en hoeft de toepassing niet te wachten totdat de tegel beschikbaar is voor rendering. De tijd tussen een vraag naar een tegel en het moment waarop een tegel beschikbaar is voor de toepassing, kan verborgen worden en de gebruiker zal nooit voornoemde plotse detailweergave ervaren.
[0007] Het precies voorspellen van de werkset maakt een beter gebruik mogelijk van bandbreedte en rekenkracht aangezien streaming van ongebruikte tegels vermeden wordt, maar dit gaat gepaard met verhoogde rekencomplexiteit. Meestal hoeven echter geen hoogcomplexe voorspellers (Eng.: 'predictors') uitgevoerd te worden voor het renderen van een virtuele scène en laagcomplexe voorspellers kunnen onnauwkeurige resultaten teruggeven.
[0008] Om deze problemen te lossen, is er een behoefte aan verbeterde tegelvoorspelling die ook een betere schaling mogelijk maakt van de rekenbelasting van de voorspellingen op het computersysteem.
Samenvatting van de uitvinding [0009] Het is een doel van uitvoeringsvormen van de onderhavige uitvinding om een oplossing te verschaffen die bijdraagt aan het optimaliseren van de streaming van objecten die gebruikt moeten worden voor het renderen van een virtuele wereld van een computergraphicstoepassing.
[0010] Het bovenstaande doel wordt verwezenlijkt door de oplossing volgens de onderhavige uitvinding.
[0011] In een eerste aspect heeft de uitvinding betrekking op een voorspellend systeem voor het bepalen van een set van deelgebieden die gebruikt moeten worden voor het renderen van een virtuele wereld van een computergraphicstoepassing, waarbij voornoemde deelgebieden toebehoren aan streambare objecten die gebruikt moeten worden bij het renderen van voornoemde virtuele wereld, waarbij voornoemde streambare objecten elk een verscheidenheid van deelgebieden omvatten. Het voorspellende systeem omvat - voorspellende middelen die geschikt zijn voor het ontvangen van informatie van een computergraphicstoepassing over de virtuele wereld en voor het verkrijgen van een verscheidenheid van voorspelde sets van deelgebieden voor het renderen van een virtuele wereld met behulp van streambare objecten, waarbij elke voorspelde set van voornoemde verscheidenheid verkregen wordt door het toepassen van een ander voorspellend schema, - een streamingmanager die ingericht is voor het ontvangen van de voorspelde sets van deelgebieden, voor het vergelijken van de voorspelde sets van deelgebieden met informatie over deelgebieden die in het geheugen bewaard zijn en voor het uitvoeren, in overeenstemming met het resultaat van voornoemde vergelijking, van stuurinstructies betreffende de set van deelgebieden die daadwerkelijk gebruikt moet worden.
[0012] De voorgestelde oplossing maakt inderdaad een geoptimaliseerde streaming mogelijk bij het renderen van een virtuele wereld van een computergraphicstoepassing. De streambare objecten die gebruikt moeten worden voor het renderen, worden opgedeeld in een aantal deelgebieden, meestal aangeduid als tegels in de techniek. Door het uitvoeren van twee of meer voorspellingen van de set van deelgebieden die gebruikt moet worden voor het renderen, kan de set van deelgebieden die voor rendering gebruikt moet worden nauwkeuriger bepaald worden, net als de set van deelgebieden die gebruikt wordt voor het renderen van de toekomstige virtuele scène van een virtuele wereld. Meerdere voorspellers maken een nauwkeuriger sturing mogelijk van een fijnkorrelig streamingsysteem voor het laden van deelgebieden in geheugen en maken het mogelijk om deze tijdig te laden zodat de toepassing vanaf het eerste gebruik over de deelgebieden beschikt, zodat de beeldkwaliteit van de gerenderde scène verbeterd wordt. Meerdere voorspellers maken dus ook betere schaling mogelijk van de rekenkundige belasting van het voorspellende systeem op het computersysteem.
[0013] In een voorkeursuitvoeringsvorm wordt ten minste één streambaar object weergegeven door deelgebieden die overeenstemmen met een verscheidenheid van detailniveauversies van het ten minste één streambare object. Dankzij verschillende versies die overeenstemmen met verschillende resoluties kan op elk moment de versie gekozen worden die in de gegeven omstandigheden het beste renderresultaat oplevert en wordt een snellere fijnkorrelige streaming van deelgebieden van streambare objecten mogelijk.
[0014] In één uitvoeringsvorm is de streamingmanager geschikt voor het gebruiken van informatie over de nauwkeurigheid van de verscheidenheid van voorspellingen om de stuurinstructies te optimaliseren. Deze informatie kan in aanmerking genomen worden bij het kiezen van de set van deelgebieden die daadwerkelijk gebruikt zal worden voor rendering.
[0015] In een voorkeursuitvoeringsvorm is het streambare object een textuur die geprojecteerd moet worden op een object dat gebruikt wordt voor het renderen van een scène van de virtuele wereld. De deelgebieden, meestal aangeduid als tegels, zijn delen van de textuurafbeelding.
[0016] In een andere uitvoeringsvorm is het streambare object een geometrisch model dat gebruikt wordt om een scène van de virtuele wereld te renderen.
[0017] In een voorkeursuitvoeringsvorm worden de voorspellende middelen geïmplementeerd als een verscheidenheid van voorspellende eenheden die elk geschikt zijn voor het verkrijgen van één van de voorspelde sets van deelgebieden.
[0018] In één uitvoeringsvorm worden één of meer van de voorspelde sets van deelgebieden aan een eigen tempo verkregen. Voorspellingen die minder rekenwerk vereisen, kunnen bijvoorbeeld vaker uitgevoerd worden dan voorspellingen met een hoge rekenbelasting.
[0019] In een andere uitvoeringsvorm wordt één van de voorspelde sets verkregen door te bepalen welke streambare objecten of welke deelgebieden binnen een bepaalde virtuele afstand in een virtuele scène liggen.
[0020] Met voordeel is ten minste één van de voorspellende schema's ingericht voor het uitvoeren van een voorspelling waarbij een virtuele camerapositie in de virtuele wereld anders gebruikt wordt dan een hoofdpositie van de virtuele camera voor het renderen van de toepassing. Dit maakt het mogelijk om de tegelzichtbaarheid te voorspellen, aangezien een toekomstige positie van een virtuele camera gebruikt kan worden.
[0021] In één uitvoeringsvorm omvat ten minste één van voornoemde voorspellende schema's het renderen van een scène van een virtuele camerapositie en het identificeren van een unieke deelgebiedidentificatie.
[0022] In een andere uitvoeringsvorm is de streamingmanager geschikt voor het bepalen van de set van deelgebieden die daadwerkelijk gebruikt moet worden door het toewijzen van een gewicht aan de verschillende deelgebieden van de voorspelde sets. In het gewicht kan bijvoorbeeld rekening gehouden worden met het aantal keer een deelgebied voorkomt in de verscheidenheid van voorspelde sets. Dit maakt het mogelijk om streaming van deelgebieden te prioriteren.
[0023] In een voorkeursuitvoeringsvorm is de streamingmanager geschikt voor het selecteren van geheugenplaatsen die hergebruikt moeten worden en voor het doorsturen van een indicatie van de geselecteerde geheugenplaatsen in voornoemde stuurinstructies.
[0024] In een voorkeursuitvoeringsvorm is de toepassing een softwaretoepassing voor een videospel.
[0025] In een ander aspect heeft de uitvinding betrekking op een werkwijze voor het bepalen van een set van deelgebieden die gebruikt moet worden voor het renderen van een virtuele wereld van een computergraphicstoepassing, waarbij voornoemde deelgebieden toebehoren aan streambare objecten die gebruikt moeten worden bij het renderen van die virtuele wereld, waarbij voornoemde streambare objecten elk een verscheidenheid van deelgebieden omvatten. De werkwijze omvat - het ontvangen van een computergraphicstoepassing van informatie over een virtuele wereld, - het verkrijgen van een verscheidenheid van voorspelde sets van deelgebieden voor het renderen van die virtuele wereld met behulp van streambare objecten, waarbij elke voorspelde set van de verscheidenheid verkregen wordt door het toepassen van een ander voorspellend schema, - het vergelijken van de voorspelde sets van deelgebieden met informatie over deelgebieden die in het geheugen opgeslagen is en - het uitvoeren, in overeenstemming met het resultaat van de vergelijking, van stuurinstructies betreffende de set van deelgebieden die daadwerkelijk gebruikt moet worden.
[0026] In een ander aspect heeft de uitvinding betrekking op een programma, dat uitgevoerd kan worden op een programmeerbare inrichting omvattende instructies die, wanneer ze uitgevoerd worden, de werkwijze zoals hierboven beschreven uitvoeren.
[0027] In nog een ander aspect heeft de uitvinding betrekking op een videospelconsole omvattend een voorspellend systeem zoals eerder beschreven.
[0028] Om de uitvinding en de verwezenlijkte voordelen ten opzichte van de stand van de techniek samen te vatten, werden bepaalde doelen en voordelen van de uitvinding hierboven beschreven. Het spreekt uiteraard voor zich dat alle dergelijke doelen of voordelen niet noodzakelijk worden verwezenlijkt overeenkomstig een specifieke uitvoeringsvorm van de uitvinding. Derhalve zullen personen die geschoold zijn in deze materie bijvoorbeeld erkennen dat de uitvinding kan worden belichaamd of uitgevoerd op een manier die één voordeel of groep van voordelen verwezenlijkt of optimaliseert zoals hierin beschreven, zonder noodzakelijk andere doelen of voordelen te verwezenlijken die hierin worden beschreven of gesuggereerd.
[0029] De bovenstaande en andere aspecten van de uitvinding zullen duidelijk worden en nader toegelicht worden met verwijzing naar de uitvoeringsvorm(en) die hierna worden beschreven.
Korte beschrijving van de tekeningen [0030] De uitvinding zal nu verder worden beschreven, bij wijze van voorbeeld, met verwijzing naar de bijgaande tekeningen, waarbij referentienummers verwijzen naar de betreffende elementen op de verschillende figuren.
[0031] Fig.l illustreert een uitvoeringsvorm van een gegevenscachingsysteem volgens de uitvinding.
[0032] Fig.2 illustreert textuurmapping.
[0033] Fig.3 illustreert een 2D-textuur met verschillende MIP-niveaus.
[0034] Fig.4 illustreert een geometrisch model met verschillende LOD-niveaus, die elk opgedeeld zijn in tegels.
[0035] Fig.5 illustreert een uitvoeringsvorm van het voorgestelde voorspellende systeem.
[0036] Fig.6 illustreert een tijdschema van een voorspellend systeem met twee voorspellers.
Gedetailleerde beschrijving van illustratieve uitvoeringsvormen [0037] De onderhavige uitvinding zal worden beschreven met betrekking tot specifieke uitvoeringsvormen en verwijzend naar bepaalde tekeningen, doch de uitvinding is hiertoe niet beperkt, maar wordt alleen beperkt door de conclusies.
[0038] Bovendien worden de termen eerste, tweede, enzovoort in de beschrijving en in de conclusies gebruikt om een onderscheid te maken tussen soortgelijke elementen en niet noodzakelijk voor het beschrijven van een volgorde, hetzij in de tijd, in de ruimte, wat betreft belang of op eender welke andere manier. Het moet worden begrepen dat de gebruikte termen onderling verwisselbaar zijn onder de juiste omstandigheden en dat de uitvoeringsvormen van de uitvinding die hierin worden beschreven in staat zijn om te werken in andere volgordes dan hierin beschreven of geïllustreerd.
[0039] Het moet worden opgemerkt dat de term "omvattende" zoals gebruikt in de conclusies niet mag worden geïnterpreteerd als beperkt tot de middelen die daarna zijn opgegeven; het sluit geen andere elementen of stappen uit. Het moet dus worden geïnterpreteerd als een specificatie van de aanwezigheid van de vermelde kenmerken, eenheden, stappen of onderdelen waarnaar wordt verwezen, maar het sluit de aanwezigheid of toevoeging van één of meer andere kenmerken, eenheden, stappen of onderdelen of groepen daarvan niet uit. Daarom mag het bereik van de uitdrukking "een apparaat omvattende middelen A en B" niet worden beperkt tot apparaten die alleen bestaan uit onderdelen A en B. Het betekent dat met betrekking tot de onderhavige uitvinding, de enige relevante onderdelen van het apparaat A en B zijn.
[0040] Verwijzingen in deze specificatie naar "één uitvoeringsvorm" of "een uitvoeringsvorm" betekent dat een bepaalde eigenschap, structuur of kenmerk beschreven in samenhang met de uitvoeringsvorm is inbegrepen in ten minste één uitvoeringsvorm van de onderhavige uitvinding. Vermeldingen van de frase "in één uitvoeringsvorm" of "in een uitvoeringsvorm" op verschillende plaatsen in deze specificatie verwijzen niet noodzakelijk allemaal naar dezelfde uitvoeringsvorm, maar het is wel mogelijk. Verder kunnen de specifieke kenmerken, structuren of karakteristieken op eender welke geschikte manier in één of meer uitvoeringsvormen worden gecombineerd, zoals voor de gemiddelde vakman uit deze openbaring duidelijk zal zijn.
[0041] Op een soortgelijke manier moet worden opgemerkt dat in de beschrijving van voorbeelduitvoeringsvormen van de uitvinding verschillende kenmerken van de uitvinding soms worden gegroepeerd in een enkele uitvoeringsvorm, figuur of beschrijving daarvan om de openbaarmaking te stroomlijnen en het begrip van een of meer van de verschillende inventieve aspecten te vergemakkelijken. Deze methode van openbaarmaking mag echter niet worden geïnterpreteerd als een uiting van een intentie dat de geclaimde uitvinding meer kenmerken vereist dan uitdrukkelijk vermeld in elke conclusie. Zoals weergegeven in de volgende conclusies, liggen de inventieve aspecten in minder dan alle kenmerken van een enkele voorgaande geopenbaarde uitvoeringsvorm. Derhalve worden de conclusies die volgen op de gedetailleerde beschrijving hierbij expliciet opgenomen in deze gedetailleerde beschrijving, waarbij elke conclusie op zichzelf staat als een afzonderlijke uitvoeringsvorm van deze uitvinding.
[0042] Bovendien, aangezien sommige uitvoeringsvormen die hierin worden beschreven sommige, maar niet andere kenmerken bevatten die zijn opgenomen in andere uitvoeringsvormen, zijn combinaties van kenmerken van verschillende uitvoeringsvormen bedoeld om te vallen binnen het bereik van de uitvinding en verschillende uitvoeringsvormen te vormen, zoals zal worden begrepen door iemand die geschoold is in dit vakgebied. Zo kan bijvoorbeeld in de volgende conclusies eender welke van de geclaimde uitvoeringsvormen worden gebruikt in eender welke combinatie.
[0043] Het moet worden opgemerkt dat het gebruik van bepaalde terminologie bij het beschrijven van bepaalde aspecten van de uitvinding niet impliceert dat de terminologie hierin wordt geherdefinieerd om te worden beperkt tot eender welke specifieke eigenschappen van de kenmerken of aspecten van de uitvinding waarmee die terminologie is geassocieerd.
[0044] In de beschrijving die hier wordt gegeven, worden talrijke specifieke details uiteengezet. Het wordt echter begrepen dat uitvoeringsvormen van de uitvinding kunnen worden uitgewerkt zonder deze specifieke details. In andere gevallen werden goed gekende methoden, structuren en technieken niet in detail weergegeven om het begrip van deze beschrijving niet te belemmeren.
[0045] De onderhavige uitvinding stelt een voorspellend systeem voor het optimaliseren van een streamingsysteem, waarbij een verscheidenheid van deelgebieden van streambare objecten gestreamd wordt naar een geheugen van een computergraphicstoepassing om gebruikt te worden voor het renderen van een virtuele wereld. Het voorgestelde voorspellende systeem ontvangt informatie over de virtuele wereld van de computergraphicstoepassing en voorspelt door middel van een set voorspellers, die elk een ander voorspellend schema toepassen, een verscheidenheid van voorspelde sets van deelgebieden die gebruikt worden voor het renderen van voornoemde virtuele wereld met behulp van voornoemde streambare objecten. De voorspellingen die zodoende ontstaan, worden vergeleken met informatie over deelgebieden die opgeslagen is in het geheugen van een computergraphicstoepassing en een component van de streamingmanager stuurt stuurinstructies betreffende de set van deelgebieden die daadwerkelijk gebruikt moet worden voor het renderen van de toepassing.
[0046] In de meeste voorkeursuitvoeringsvormen wordt een oplossing voorgesteld voor het optimaliseren van een streamingsysteem dat een verscheidenheid van deelgebieden, eventueel met verschillende detailniveaus (LOD's), naar een geheugen in een renderingtoepassing streamt. De deelgebieden, die onafhankelijk gestreamd kunnen worden, worden aangeduid als tegels. De voorgestelde benadering stuurt het streamen van een streamingmodule naar de streamingcache door het uitvoeren van tegelvoorspellingen die aangeven welke tegels de toepassing nodig heeft voor rekenkundige bewerkingen zoals het renderen van de huidige of toekomstige virtuele scène. De benodigde tegelset wordt de werkset genoemd. Het systeem voert bij voorkeur meerdere voorspellers uit. De voorspellingen kunnen elk verkregen worden met hun eigen werkwijze/algoritme voor het voorspellen van de huidige of toekomstige tegelwerkset, hun eigen nauwkeurigheid van de resultaten en hun eigen rekencomplexiteit. De voorspellingen kunnen op verschillende frequentie-intervallen uitgevoerd worden om de tegelwerkset herhaaldelijk en nauwkeurig te voorspellen.
[0047] Fig.l is een blokdiagram van hoog niveau van een uitvoeringsvorm van een voorspellend systeem volgens de onderhavige uitvinding. Het voorgestelde systeem omvat voorspellende middelen voor het uitvoeren van twee of meer voorspellingen en een streamingmanager en staat in verbinding met een computergraphicstoepassing, een streamingmodule_en een cachegeheugen. Het voorspellende systeem kan deel uitmaken van een spelsysteem, personal computer, werkstation, serversysteem, deel van een hardware of deel van een softwarearchitectuur. De toepassing kan een renderingtoepassing zijn die een 2D of 3D virtuele wereld rendert, of een andere toepassing die verwerkingsmogelijkheden voor streambare objecten vereist. Streamingcachegeheugen omvat door de processor leesbaar geheugen om streambare objecten op te slaan die door de toepassing gebruikt worden voor het renderen. Het kan geplaatst zijn in systeemgeheugen, bijv. systeem-RAM, of in GPU-toegankelijk geheugen, op een discrete GPU met specifiek geheugen of in gedeeld systeemgeheugen dat toegankelijk is voor de GPU. De streamingmodule laadt, als reactie op verzoeken die deze van de toepassing en de streamingmanager ontvangt, deelgebieden van streambare objecten, eventueel met verschillende detailniveaus. Het kan een specifieke component in hardware of een softwaremodule zijn. Het voorspellende systeem kan ingebouwd worden in hardware (bijv. in een GPU), maar kan ook geïmplementeerd worden als een module die in software op de systeemprocessor(s) uitgevoerd wordt. Een combinatie van beide opties is ook mogelijk.
[0048] De toepassing kan een softwaretoepassing voor een videospel zijn, een algemene renderingtoepassing die een virtuele scène rendert. Het kan een toepassing op het gebied van virtuele werkelijkheid zijn. Deze kan één enkele virtuele scène of meerdere virtuele scènes gelijktijdig renderen of verwerken, bijvoorbeeld voor 3D stereoscopische weergave. De computer waarop de toepassing uitgevoerd wordt, kan een videospelconsole zijn. Als alternatief kan de toepassing uitgevoerd worden op of kan de computerinrichting geïntegreerd zijn in bijv. een mobiele telefoon, een mobiel apparaat, een ingebed systeem, een mediaconsole, een laptop, een desktopcomputer, een server en/of een datacenter. De toepassing kan een virtuele scène renderen en/of weergeven, of deze kan een virtuele scène renderen en gebruik maken van de uitvoer van de renderingstap voor het uitvoeren van andere berekeningen. De toepassing kan een tweedimensionale of een driedimensionale scène renderen. De toepassing kan een gerenderde scène direct op een scherm weergeven, kan de resultaten verzenden in de vorm van een videobitstroom of kan de gerenderde scène verwerken om andere berekeningen uit te voeren. De toepassing kan een renderingtoepassing zijn die ontworpen is voor het weergeven en renderen van de virtuele wereld, de toepassing kan ontworpen zijn voor het bewerken of creëren van een virtuele wereld, of de virtuele wereld zowel weergeven als bewerken. De toepassing kan bijvoorbeeld een editortoepassing zijn voor de virtuele wereld van een videospel die in staat is om de virtuele wereld te renderen in een editormodus voor het bewerken van de virtuele wereld, en de virtuele wereld renderen in een modus voor de eindgebruiker die het spel rendert zoals wanneer het uitgevoerd zou worden, zodra de productie voltooid is en bijvoorbeeld op een DVD-ROM naar een gamer verzonden wordt. In dit scenario kan de uitvinding gebruikt worden om de tegelwerkset te voorspellen en beschrijvingen van de tegelwerkset in de spelinhoud in te bedden die de streamingmodule moet gebruiken zodra het spel op het apparaat van de eindgebruiker uitgevoerd wordt.
[0049] De toepassing rendeert de scène met behulp van streambare objecten (SO's) uit het geheugen. Een SO kan een textuur zijn die toepassing op de geometrie kan afbeelden. Een SO kan ook een geometrisch gegeven zijn, bijv. een meshmodel dat opgebouwd is met veelhoeken of punten die door de toepassing gebruikt worden om de scène te renderen. Een SO kan ook een meer algemeen gegeven zijn, zoals een key frame van een animatie. Er kunnen verschillende detailniveau (LOD)-versies van eenzelfde SO aanwezig zijn. Elke LOD-versie van de SO beschrijft hetzelfde te renderen object, maar met een andere kwaliteit (of eventueel een andere hoeveelheid gegevens voor het weergeven van de SO). Er kan een verscheidenheid van LOD's in het geheugen aanwezig zijn om de scène te renderen met behulp van de LOD-versie van de SO die door de toepassing geselecteerd is (bijv. de LOD die het beste bemonsteringsresultaat geeft). Zo kan een model met lage nauwkeurigheid van een berg met weinig geometrische gegevens (klein aantal veelhoeken bijvoorbeeld) gebruikt worden bij het renderen van een berg vanaf een grote virtuele afstand in de virtuele wereld, terwijl een zeer nauwkeurig model (met veel veelhoeken) gebruikt kan worden bij het renderen van de berg van dichtbij. LOD's kunnen door de streamingmodule gestreamd worden. LOD's kunnen door de toepassing gegenereerd worden en van beschikbare LOD's van een SO afgeleid worden. Indien een SO uit geometrische gegevens bestaat, vormen verschillende LOD's verschillende voorstellingen van het geometrische model, elk met een verschillende kwaliteit, bijvoorbeeld door middel van meer of minder veelhoeken voor het beschrijven van het geometrische model. Indien een SO een textuur is, kunnen LOD's meerdere voorstellingen van een afbeelding omvatten, met elk meer of minder pixels voor het beschrijven van de afbeelding. Als een SO uit key frames voor animatie van het model bestaat, kunnen LOD's meerdere voorstellingen van de animatie omvatten, elk met meer of minder key frames voor het beschrijven van de overgangen tussen de modellen in de animatie. Een LOD kan dus meerdere voorstellingen van een SO elk met een ander kwantisatieniveau vertegenwoordigen. Als een SO bijvoorbeeld een textuur is, kunnen textuurafbeeldingen met een kleiner kleurenpalet opgeslagen worden.
[0050] Er wordt nu een kort overzicht gegeven van textuurmapping, zoals deze uitgevoerd kan worden in combinatie met uitvoeringsvormen van de uitvinding. In Fig.2 wordt een textuurmonster op een object toegepast om een getextureerd object te verkrijgen. Het textuurmonster is gewoonlijk een grafisch bestand dat een textuur weergeeft die men op het object wenst af te beelden. Het object zoals weergegeven in Fig.2 is een driedimensionaal object. Het object kan echter ook een tweedimensionaal object zijn. Met gebruikmaking van een vooraf bepaalde wijze die bekend is in de stand der techniek, wordt het monster op het object toegepast om het getextureerde object te verkrijgen. Het getextureerde object heeft dezelfde vorm als het object, maar heeft op ten minste zijn zichtbare oppervlakken het textuurpatroon. Soms wordt een reeks coördinaten ingesteld voor elk hoekpunt van de vorm, gewoonlijk aangeduid als UV-coördinaten. Deze coördinaten bepalen welk gebied van de textuur geprojecteerd wordt op het oppervlak van het object. De coördinaten hebben gewoonlijk waarden tussen nul en één. De voorzijde van de kubus op de figuur heeft bijvoorbeeld vier hoekpunten, met UV-coördinaten [0,0], [0,1], [1,0] en [1,1], die aangeven dat de volledige textuur op het oppervlak geprojecteerd is. Coördinaten [0,0], [0;0,5], [0,5;0] en [0,5;0,5] geven bijvoorbeeld aan dat het eerste kwart van de textuur op het oppervlak geprojecteerd is. Het toepassen van de textuur op het object om het getextureerde object te verkrijgen, wordt gewoonlijk textuurmapping genoemd.
[0051] Een SO kan bijvoorbeeld een textuur zijn. Een textuur kan elk type twee- of driedimensionale gegeven bevatten, waaronder (maar niet beperkt tot) kleurgegevens, normale oppervlaktevectoren en spiegelreflectiegegevens. De textuurgegevens kunnen multi-resolutie textuurpiramides, MIP (multum-in-parvo)-niveaus omvatten. Het laagste niveau (niveau 0) van een piramide is de afbeelding in volledige resolutie. Het volgende hogere niveau (niveau 1) van een piramide is de afbeelding in een lagere resolutie (2x2 pixels of texels op het laagste niveau worden bijvoorbeeld uitgemiddeld om één texel op het volgende hoogste niveau te vormen). Op het volgende hogere niveau heeft de afbeelding een nog lagere resolutie. Hoe dichter we de top van de piramide naderen, hoe meer de resolutie van de afbeelding afneemt. Er zijn veel minder gegevens nodig voor het weergeven van de afbeelding in de laagste resolutie dan van de afbeelding in de hoogste resolutie. Elk MIP-niveau vertegenwoordigt een verschillend detailniveau.
[0052] Een SO wordt opgedeeld in een verscheidenheid van deelgebieden, zogenaamde tegels. Elk deelgebied beschrijft een deel van de complete SO. Deze deelgebieden kunnen geometrische deelgebieden van een SO zijn, bijv. 3D ruimtelijke gebieden van een geometrisch model of 2D ruimtelijke gebieden van een 2D-textuur. Het kunnen algemene subchunks geheugen zijn van de geheugenbuffer die door de SO beschreven wordt. Aangezien de SO verschillende LOD's bevat, kan elke LOD in deelgebieden (tegels) opgedeeld worden. Een tegel met een bepaalde LOD kan door één of meer tegels op een andere LOD weergegeven worden. Deelgebieden kunnen een compleet MIP-niveau omvatten. Een tegel komt dan met andere woorden overeen met één enkel niveau van de LOD-piramide. Merk op dat tegels geen uniforme grootte of deelgebiedindeling hoeven te hebben. Het gebruik van tegels maakt een meer fijnkorrelige streaming mogelijk. Er zijn veel verschillende manieren beschikbaar in de techniek om de SO in deelgebieden op te delen. Tegels kunnen gecomprimeerde of ongecomprimeerde textuurgegevens bevatten. De gegevens kunnen gecomprimeerd worden met behulp van een compressieformaat met variabele lengte, zoals ZIP of met een vectorkwantisatiemethode, zoals DXT1 of ASTC. Zoals de vakman zal erkennen, zijn andere compressieschema's mogelijk. De gegevens kunnen ook ongecomprimeerd zijn. De gegevens van een tegel kunnen gebaseerd zijn op de gegevens van andere tegels om een (deel van een) SO weer te geven. Zo kan een tegel op niveau 3 gegevens bijvoorbeeld bevatten die gebruikt worden voor het verfijnen van de gegevens van een tegel op niveau 4.
[0053] Als een SO een textuur is, wordt de textuur opgedeeld in tegels, d.w.z. in deelgebieden van de textuurafbeelding. Als de textuur meerdere MIP-niveaus bevat, kan elk MIP-niveau opgedeeld worden in tegels. Fig.3 illustreert dit voor een tweedimensionale structuur. Een tegel op een bepaald MIP-niveau kan weergegeven worden door meerdere tegels op een ander MIP-niveau. In Fig.3 wordt de tegel van het hoogste niveau, d.w.z. die met het laagste resolutieniveau, bijvoorbeeld weergegeven door vier tegels op de volgende MIP, die een hogere resolutie (lager niveau) heeft. Deelgebieden kunnen een compleet MIP-niveau omvatten. Een tegel komt met andere woorden overeen met één enkel niveau van de piramide. De tegels hoeven niet allemaal dezelfde grootte te hebben. Tegels kunnen 2D rechthoekige gebieden of 3D kubieke gebieden zijn. Twee tegels kunnen gegevens van twee verschillende MIP-niveaus bevatten, ze bevatten, met andere woorden, gegevens met een verschillend detailniveau (LOD). Elk MIP-niveau, van de textuur met het hoogste detailniveau (d.w.z. het laagste niveau van de piramide) tot de textuur met de laagste resolutie (d.w.z. het hoogste niveau) van de textuur kan in tegels opgedeeld worden. Tegels kunnen gecomprimeerde of ongecomprimeerde textuurgegevens omvatten. De gegevens kunnen gecomprimeerd worden met behulp van een compressieformaat met variabele lengte, zoals JPEG of JPEG XR of met een vectorkwantisatieschema zoals DXT1 of ASTC. Andere compressietechnieken zijn mogelijk. De gegevens van een tegel kunnen gebaseerd zijn op de gegevens van andere tegels om een (deel van een) SO weer te geven. Zo kan een textuurtegel op niveau 3 bijvoorbeeld gegevens bevatten voor het verfijnen van de gegevens van een tegel op niveau 4, bijvoorbeeld door alleen beeldgegevens met hoge frequentie te bevatten die toegevoegd worden aan de beeldgegevens met lagere resolutie van de tegel op niveau 4.
[0054] Een textuur van 1024 bij 1024 pixels kan bijvoorbeeld 2D-kleurinformatie bevatten. Deze heeft 11 MlP-niveaus, d.w.z. de 1024x1024-afbeelding, niveau 0, een 512x512-niveau, d.w.z. niveau 1, een 256x256, dit is niveau 2, 128x128, niveau 3, 64x64, niveau 4, 32x32, niveau 5, 16x16, niveau 6, 8x8, niveau 7, 4x4, niveau 8, 2x2, niveau 9 en een 1x1-niveau, niveau 10. Deze textuur kan opgedeeld worden in 2D-tegels met een grootte van 128 bij 128 pixels. Niveau 0, het hoogste detailniveau, bevat 8x8, dus 64, tegels. Niveau 1 bevat 16 tegels, niveau 2 bevat vier tegels en niveau 3 één tegel. Alle niveaus die kleiner zijn dan de tegelgrootte kunnen eventueel weggelaten worden. In dit voorbeeld worden alle niveaus hoger dan 3 weggelaten. Men kan er dus ook voor kiezen om niveaus die kleiner zijn dan de tegelgrootte in tegels op te nemen. In dit voorbeeld betekent dit dat niveau 4 met zijn afbeelding van 64 bij 64 pixels opgenomen zou worden in een tegel van 128 bij 128, net als niveau 5 tot 10.
[0055] Als een SO een geometrisch model is, wordt het model opgedeeld in tegels, d.w.z. in deelgebieden van het model. Als het model meerdere LOD-niveaus bevat, wordt elk niveau onderverdeeld in tegels. Fig.4 illustreert dit voor een driedimensionaal meshmodel dat opgebouwd is uit hoekpunten en driehoeken. Een tegel op een bepaald LOD-niveau kan weergegeven worden door meerdere tegels op een ander LOD-niveau. In Fig.4 wordt de tegel op het hoogste niveau, d.w.z. het laagste resolutieniveau, bijvoorbeeld weergegeven door twee tegels op het volgende LOD met een hogere resolutie en een lager niveau. Deelgebieden kunnen een compleet LOD-niveau omvatten. Tegels kunnen 2D rechthoekige gebieden of 3D kubieke gebieden bevatten. Twee tegels kunnen gegevens van twee verschillende LOD-niveaus bevatten. Elk LOD-niveau, van het model met het hoogste detailniveau (d.w.z. het laagste niveau van de piramide) tot het model met de laagste resolutie (d.w.z. het hoogste niveau) kan in tegels opgedeeld worden. Tegels kunnen gecomprimeerde of ongecomprimeerde gegevens bevatten. De gecomprimeerde gegevens kunnen gecomprimeerd worden met behulp van een compressieformaat zoals ZIP. Andere compressietechnieken zijn mogelijk.
[0056] Een geometrisch model zoals weergegeven op Fig.4 kan bijvoorbeeld vier LOD's hebben, niveau 0, niveau 1, niveau 2 en niveau 3. Elke LOD geeft hetzelfde model van een persoon weer, maar met een andere kwaliteit. Elke LOD is onderverdeeld in deelgebieden, tegels, die elk een aantal van de hoekpunten bevatten waardoor het model beschreven wordt. Niveau 2 wordt bijvoorbeeld opgedeeld in twee tegels die elk een helft van het model bevatten. Niveau 1 wordt opgedeeld in vier tegels die elk een kwart van het model bevatten. Niveau 0 wordt opgedeeld in zes tegels die elk één zesde van het model bevatten.
[0057] De streamingmodule laadt SO-tegels in zijn cachegeheugen als reactie op verzoeken die hij ontvangt. Streaming van SO's maakt het gebruik mogelijk van een groot aantal virtuele objecten met bijbehorende SO's, bijvoorbeeld, een groot aantal virtuele bomen in een virtuele wereld, met elk hun unieke texturen. Er kunnen veel meer virtuele objecten zijn dan in systeem- of GPU-geheugen zouden passen. Deze SO-tegels worden geladen in een snel streamend cachegeheugen waartoe de toepassing toegang heeft. De streamingmodule kan de SO-tegels laden vanaf een trager opslagmedium, zoals een harde schijf. Het opslagsysteem is gewoonlijk groter dan het cachegeheugen, wat verklaart waarom de streamingcache een cachingfunctie uitvoert tussen groter maar trager geheugen en de toepassing. De verzoeken die de streamingmodule ontvangt, zijn afkomstig van de toepassing of van andere operators, bijvoorbeeld, een persoon die een lijst van de tegels opgesteld heeft die geladen moeten worden bij het bewerken van de virtuele wereld. Dergelijke operators kunnen het streamingsysteem helpen om de juiste tegels op het juiste moment te streamen.
[0058] Streaming van een groot aantal virtuele objecten maakt een beter beheer mogelijk van bandbreedte en rekenkracht. De SO's van deze virtuele objecten worden gestreamd op basis van behoefte. Streaming van een onnodige SO verspilt computermiddelen, aangezien een SO kostbaar geheugen verbruikt en bij verwerking van de SO om deze van opslag naar geheugen te verplaatsen verwerkingscycli verbruikt worden. Door verder te gaan en SO's op tegelbasis te streamen, wordt streaming op basis van behoefte mogelijk met veel fijnere korrelgrootte en dus beter gebruik van bandbreedte en rekenkracht. Streaming van SO-tegels van een virtueel object kan onder andere omvatten het lezen van de SO van een opslagapparaat of netwerk en het decomprimeren van de gelezen bitstroom naar een indeling die begrijpelijk is voor het renderingsysteem. De streamingmodule maakt een onderscheid tussen LOD's van verschillende SO's. Meerdere LOD's van een SO kunnen gevraagd en naar het geheugen gestreamd worden en de set van LOD's van een SO die in het geheugen geladen is, kan voortdurend veranderen.
[0059] Stel bijvoorbeeld dat een SO een geometrisch model van een virtuele berg is. Als de toepassing een weergave rendert van de virtuele wereld van iemand die op een berg staat, zal een SO met het 3D-meshmodel van de berg voor een versie van laag niveau met hoog detailniveau door de toepassing aan de streamingmodule gevraagd worden. Als dezelfde toepassing een weergave rendert van de virtuele wereld op grote afstand van voornoemde berg, zal een SO met een 3D-meshmodel voor een versie van hoog niveau met laag detailniveau door de toepassing aan de streamingmodule gevraagd worden. In geval van meerdere bergen kan dezelfde SO gevraagd worden en in het geheugen aanwezig zijn met verschillende LOD's.
[0060] Om meer fijnkorrelige streaming mogelijk te maken, worden SO-tegels door de streamingmodule gestreamd. De toepassing vraagt naar tegels in plaats van naar complete SO's. Het streamen van SO-tegels maakt het gebruik mogelijk van virtuele objecten met bijbehorende SO's, SO's die veel groter zijn dan die bijvoorbeeld in een systeem- of GPU-geheugen zouden passen. Het maakt een beter beheer mogelijk van bandbreedte en rekenkracht. De tegels van deze SO's kunnen op basis van behoefte gestreamd worden. Het streamen van een tegel terwijl dit niet nodig is, is een verspilling van computermiddelen aangezien een tegel kostbaar geheugen verbruikt en voor verwerking van de SO verwerkingscycli verbruikt worden. De streamingmodule maakt een onderscheid tussen tegels met een verschillende LOD. Meerdere tegels met verschillende LOD's kunnen gevraagd en naar het geheugen gestreamd worden en de set van LOD's die in het geheugen geladen is, kan voortdurend veranderen.
[0061] Stel dat een SO in een ander voorbeeld een textuur is van een 3D-model van een virtuele berg. Als de toepassing een weergave rendert van de virtuele wereld van iemand die op een berg staat, worden tegels met LOD-gegevens van laag niveau, d.w.z. textuurgegevens met hoog detailniveau voor het meshmodel van de berg door de toepassing aan de streamingmodule gevraagd. Alleen tegels die textuurgegevens van de voorzijde van de berg bevatten, kunnen gevraagd worden. Als de toepassing een weergave rendert van de virtuele wereld op grote afstand van voornoemde berg, kunnen tegels met LOD-gegevens van hoog niveau, d.w.z. textuurgegevens met een laag detailniveau, voor het meshmodel van de berg door de toepassing aan de streamingmodule gevraagd worden. De tegels met textuurgegevens voor de achterzijde van de berg die niet zichtbaar is voor de virtuele camera, worden mogelijk niet gestreamd. In geval van meerdere bergen kunnen dus dezelfde tegels gevraagd worden en in het geheugen aanwezig zijn met verschillende LOD's.
[0062] De streamingmodule kan zijn verzoeken rechtstreeks ontvangen van een toepassing of van een renderingsubsysteem of een andere operator (bijv. een voorspellend systeem of een andere toepassing). De verzoeken kunnen informatie over de tegelidentificatie bevatten, waaronder eventueel LOD als tegels met LOD gecombineerd worden. De streamingmodule kan bijvoorbeeld verzoeken voor tegels ontvangen voor een SO-textuur die gebaseerd is op een tweedimensionale index en een LOD-index. In een ander voorbeeld worden textuurtegels gevraagd met behulp van één eendimensionale index en een LOD-index.
[0063] Er wordt nu een kort overzicht gegeven van een textuurstreamingsysteem, zoals dit gebruikt kan worden in combinatie met uitvoeringsvormen van de uitvinding. Het streamingsysteem, zoals weergegeven in Fig.l, bevindt zich tussen de toepassing en de streamingcache. Het ontvangt verzoeken voor een tegel van de toepassing of een andere operator. Het weet welke tegels aanwezig zijn in het cachegeheugen en het kent hun positie in het geheugen. Als een tegel gevraagd wordt, controleert het streamingsysteem of de tegel aanwezig is in het cachegeheugen. Als deze aanwezig is, d.w.z. een cachehit, geeft het streamingsysteem de informatie onmiddellijk terug aan de toepassing zodat de toepassing de tegelgegevens uit het streamingcachegeheugen kan lezen. Het streamingsysteem kan het adres van de tegel in het geheugen en het LOD-niveau van de tegel teruggeven. Het kan de tegel zelf teruggeven met zijn gegevens. Indien de gevraagde tegel niet in het cachegeheugen aanwezig is, d.w.z. een cachemiss, streamt het streamingsysteem de tegel naar het cachegeheugen. Voordat streaming voor de gevraagde tegel voltooid wordt, kan het de cache-informatie van de tegel teruggeven voor een LOD die in het cachegeheugen aanwezig is. De tegel met het overeenstemmende LOD kan teruggegeven worden. Het antwoord 'tegel niet gevonden' kan gegeven worden. De set van alle tegels die door de streamingmodule gevraagd wordt voor het renderen van een scène wordt de werkset genoemd. Hieronder wordt een kort overzicht gegeven van de redenen voor het hebben van een streamingcache en een voorspellend systeem. Deskundigen zullen erkennen dat een groot aantal streaming- en tegelgebaseerde streamingsystemen beschreven is in de techniek en dat deze uitvinding niet beperkt is tot de systemen die in deze tekst beschreven worden.
[0064] Het streamen van tegels van opslag naar geheugen kan een aanzienlijke hoeveelheid tijd vergen. Als de tegel van een draaiende schijf naar het geheugen gestreamd wordt, moeten de schijfkoppen uitgelijnd worden, gegevens gelezen worden, tegels gedecomprimeerd en naar GPU-textuurgeheugen gekopieerd worden. Gedurende deze periode kan de gebruiker geconfronteerd worden met een verminderde kwaliteit van ervaring. De scène kan gedeeltelijk zonder texturen gerenderd worden totdat de textuur beschikbaar is, of het renderen kan gewoon onderbroken worden totdat de textuur beschikbaar is.
[0065] Een manier om de gebruikerservaring te verbeteren als een tegel is niet aanwezig in de cache, is het renderen van de scène met een tegel met een lager LOD. De gebruiker kan echter geconfronteerd worden een plotse weergave van extra detail, d.w.z. de gebruiker wordt geconfronteerd met een virtueel object waarvan de renderinggetrouwheid plotseling verandert als cachemisses cachehits worden zodra de streamingmodule de tegels naar het cachegeheugen gestreamd heeft. Dit kan zich profileren als een zeer waarneembare gebeurtenis bij het renderen van de scène.
[0066] Het is duidelijk wenselijk dat de nodige tegels voor het renderen van een scène beschikbaar zijn in het cachegeheugen en, bij voorkeur, gebruiksklaar in het cachegeheugen zitten vóór of op het moment dat de toepassing deze voor het eerst gebruikt. Als de scène alleen met cachehits gerenderd kan worden, zal niet plotseling extra detail in de gerenderde resultaten verschijnen en kan de gebruiker altijd de hoogste kwaliteit ervaren. Door het voorspellen van de werkset van een virtuele scène, d.w.z. de set van tegels die gebruikt moet worden voor het renderen van de scène, en/of door het voorspellen van de werkset van toekomstige scènes, kan de cache zodanig door het streamingsysteem geladen worden dat cachemisses geminimaliseerd worden. Zodoende hoeft de toepassing niet te wachten totdat de tegel beschikbaar is voor rendering, of hoeft deze geen SO's te renderen met tegels met verschillende LOD's. De tijd tussen een vraag naar een tegel en het moment waarop een tegel beschikbaar is voor de toepassing, kan effectief verborgen worden.
[0067] Bovendien maakt voorspelling een beter beheer mogelijk van het streamingcachegeheugen. Wanneer alle cacheslots, zijnde een geheugenblok dat gereserveerd is voor een tegel in het cachegeheugen, bezet zijn, worden bepaalde cacheslots geselecteerd om hergebruikt en gerecycled te worden en worden deze aangeduid als beschikbaar voor de streamingmodule voor het inladen van nieuwe tegels. Door het voorspellen van de tegelwerkset, kunnen tegels geïdentificeerd worden die niet tot de werkset behoren, d.w.z. tegels die niet nodig zijn voor het renderen van de scène. De cachesleuven voor deze tegels kunnen ter recycling aan de streamingmodule aangeboden worden, zonder de renderingresultaten te beïnvloeden.
[0068] Een voorspeller van de werkset, ook kortweg voorspeller genoemd, bepaalt een werkset van een scène. Deze voorspelt welke tegels nodig zullen zijn voor het renderen of het verwerken van een virtuele scène. Deze voorspelt dus de inhoud of toekomstige inhoud van de cache. Door het voorspellen van de cache kan de streamingmodule gestuurd worden om de streamingcache vooraf te vullen en de tegels zijn mogelijk in de cache beschikbaar als ze voor het eerst gebruikt worden.
[0069] Er bestaan vele manieren om een scènewerkset te bepalen. Elke werkwijze heeft zijn eigen nauwkeurigheid die meestal verband houdt met rekencomplexiteit. Meer complexe algoritmen vereisen meestal meer berekeningen. In andere gevallen hebben algoritmen een grotere vertraging, d.w.z. er zit veel tijd tussen het begin van de berekening en het moment waarop de berekeningsresultaten beschikbaar zijn. Het uitvoeren van berekeningen op een discrete grafische kaart kan bijvoorbeeld een grotere vertraging veroorzaken tussen de initiatie van de berekening en de levering van het resultaat dan het uitvoeren van dezelfde berekening op een CPU.
[0070] Voor een renderingtoepassing is het niet altijd mogelijk om voortdurend zeer complexe voorspellende algoritmen uit te voeren. De scènewerkset kan met laagcomplexe algoritmen met voldoende nauwkeurigheid gedefinieerd worden voor bepaalde scènes of op bepaalde tijden. Deze laagcomplexe algoritmen kunnen, in tegenstelling tot hoogcomplexe algoritmen, voortdurend uitgevoerd worden. Door het combineren van de uitvoer van laagcomplex continu lopende voorspellende algoritmen met die van complexere intermitterend lopende voorspellende algoritmen, kan visuele getrouwheid voldoende verhoogd worden om te vermijden dat tegels plots op een voor de gebruiker opvallende wijze met extra detail weergeven worden. De kern van deze uitvinding bestaat in het uitvoeren van bij voorkeur meerdere voorspellers met elk hun eigen werkwijze/algoritme en hun eigen nauwkeurigheid van de resultaten en hun eigen rekencomplexiteit, die elk uitgevoerd worden met verschillende frequentie-intervallen. Vervolgens worden voornoemde voorspellers besproken.
[0071] Een voorspeller kan op de CPU uitgevoerd worden en zijn resultaten naar het systeemgeheugen uitvoeren. Een voorspeller kan op de GPU uitgevoerd worden en zijn resultaten naar GPU-geheugen of systeemgeheugen uitvoeren. De volgende paragrafen bevatten voorbeelden van voorspellers.
[0072] Een SO kan een textuur zijn en een voorspeller kan een scène van de virtuele camerapositie van de toepassing op de GPU renderen met een pixelshader die de gebruikte textuurtegel per pixel uitvoert, waaronder het LOD-niveau (in geval van een textuur, het MIP-niveau). De gerenderde uitvoer wordt vervolgens van het GPU-geheugen naar het systeemgeheugen gekopieerd waar de voorspeller alle gerenderde pixels doorloopt en de unieke tegelidentificaties (waaronder hun LOD-niveau) identificeert die aanwezig zijn op het scherm. De voorspeller van de cache voert deze unieke lijst van tegels uit. Een dergelijke voorspeller kan het best beschreven worden als hebbend een zeer hoge nauwkeurigheid en een hoge rekencomplexiteit, maar omdat het asynchroon renderen op de GPU gewoonlijk tot een vertraging van enkele milliseconden leidt, veroorzaakt een dergelijke voorspeller ook een grote vertraging tussen de initiatie van het algoritme en de tijd van de resultaten.
[0073] De hierboven beschreven voorspeller kan de scène renderen vanaf een andere virtuele camerapositie dan die van de belangrijkste renderingweergave van de toepassing. De camera kan bijvoorbeeld op een punt en in een richting in de virtuele wereld geplaatst worden die overeenkomen met een toekomstige of vroegere positie en richting van de virtuele camera. Via een toekomstige camerapositie kan het systeem bijvoorbeeld de werkset voor een toekomstig frame voorspellen. Als gevolg kan het cachesysteem tegelzichtbaarheid voorspellen.
[0074] De voorspeller zoals voorheen beschreven kan de scène renderen zoals voorheen omschreven, maar kan hierbij een virtueel object verantwoordelijk voor het deels blokkeren (Eng.: 'to occlude') van de virtuele camera weglaten of overslaan tijdens het renderproces. De voorspeller kan dit doen door ofwel het virtueel object niet te renderen, ofwel delen van het virtueel opbject niet te renderen, ofwel door het virtueel object te renderen met een bepaalde transparantieniveau wat resulteert in het feit dat de geblokkeerde delen voor de camera deels transparant worden en dus weer zichtbaar worden voor de voorspeller.
[0075] Een SO kan een geometrisch model in de virtuele scène zijn en een voorspeller kan stralen uitsturen vanaf de huidige en toekomstige virtuele camerapositie en deze laten snijden met plaatsvervangende geometrisch modellen in de virtuele wereld voor de werkelijke modellen met hoog detailniveau, die op de CPU uitgevoerd worden. Als een straal met deze plaatsvervangende geometrische figuren snijdt, wordt de SO die door de plaatshouder weergegeven wordt, geïdentificeerd en de afstand tussen het snijpunt en de camera wordt gebruikt voor het berekenen van het LOD-niveau. Het proces wordt herhaald voor een aantal stralen die afkomstig zijn van de virtuele camera. De lijst van unieke SO's met al hun tegels wordt weergegeven als het resultaat van de voorspeller. Een dergelijke voorspeller is best te omschrijven als hebbend een gemiddelde nauwkeurigheid, aangezien deze geen onderscheid maakt tussen tegels binnen dezelfde LOD voor een SO. Deze heeft ook een kleine vertraging omdat alle berekeningen synchroon op de CPU uitgevoerd worden en de resultaten vrijwel direct beschikbaar zijn. De rekencomplexiteit is afhankelijk van het aantal stralen dat gedetecteerd wordt telkens als de voorspeller uitgevoerd wordt.
[0076] Een SO kan een textuur zijn en een voorspeller kan alle tegelreferenties vragen die gebruikt worden in de complete virtuele wereld van de toepassing, een subset van de virtuele wereld of het geladen deel van de virtuele wereld, en deze tegelreferenties als de werkset opnemen in een lijst.
[0077] Een SO kan een textuur zijn en een voorspeller kan aan de toepassing alle virtuele objecten vragen binnen een bepaalde virtuele afstand van de huidige, verleden en/of toekomstige virtuele camerapositie. De voorspeller kan elk object inspecteren, de tegels bepalen die door het object gebruikt mogen worden, en die tegels aan een interne lijst toevoegen. De voorspeller voert deze lijst uit als de werkset.
[0078] De voorspeller kan de werkset voorspellen door een aantal virtuele objecten en/of SO's, en (een subset van) hun tegels op te zoeken in een gegevensstructuur. De gegevensstructuur kan een quad-boom, BSP-boom, k-d-boom, andere boomgegevensstructuur of andere gegevensstructuur zijn waaronder lijsten, gelinkte lijsten, hash-tabellen, woordenboeken. Deze kan de gegevens op een ruimtelijke manier opslaan of ruimtelijke query's toelaten om de virtuele objecten, SO's of tegels te zoeken. De gegevensstructuur kan door de toepassing geconstrueerd worden terwijl deze uitgevoerd wordt. De gegevensstructuur kan vooraf door de voorspeller gegenereerd worden en geladen worden uit het geheugen, waaronder opslaggeheugen.
[0079] De voorspeller kan de werkset voorspellen of een aantal tegels bepalen die gestreamd moeten door het opzoeken van een vooraf gecompileerde lijst van tegels, of virtuele objecten met hun tegels, of SO's met hun tegels. De voorspeller kan op bepaalde tijdstippen door de toepassing aangespoord worden om de tegels van de lijst te laden. De voorspeller kan aangespoord worden om de tegels van de lijst te laden wanneer de virtuele camera zich in het bereik bevindt van een virtueel object dat de lijst weergeeft. De toepassing kan de lijst aan de voorspeller meedelen. De lijst kan door de toepassing geconstrueerd worden terwijl deze uitgevoerd wordt. De lijst kan vooraf door de voorspeller gegenereerd worden en geladen worden uit het geheugen, waaronder opslaggeheugen. Wanneer een operator van de renderingcamera in de virtuele scène bijvoorbeeld een kamer binnenkomt, kan een lijst van alle tegels in die ruimte toegevoegd worden aan de beschrijving van de ruimte in het geheugen, de voorspeller kan de lijst laden en de inhoud ervan gebruiken als voorspellingsresultaten.
[0080] De voorspeller kan de werkset voorspellen door het opzoeken van alle virtuele objecten door vanaf een virtuele camerapositie stralen uit te zenden en de snijpunten van deze stralen met virtuele objecten te zoeken. Zodra de virtuele objecten gedetecteerd zijn die kruisen met de stralen, d.w.z. alle objecten die zichtbaar zijn in de scène, worden de objecttegels bepaald en toegevoegd aan een interne lijst. Na het verwerken van alle objecten, wordt deze lijst vervolgens als de werkset meegedeeld.
[0081] Fig.5 toont een uitvoeringsvorm van het voorgestelde voorspellende systeem. In de voorgestelde uitvoeringsvorm omvat het voorspellende systeem een set van voorspellers, een werksetmanager en een streamingmodulemanager. Zoals eerder uitgelegd stuurt het voorspellende systeem, samen met de toepassing, het streamingsysteem bij het laden van SO-tegels in het streamingcachegeheugen. Het doet dit aan de hand van informatie die het verzamelt door het uitvoeren van de voorspellers van de set voorspellers. Deze voorspellers kunnen kennis of informatie vragen of delen van de virtuele scène die door de toepassing gerenderd of verwerkt wordt. Met behulp van deze informatie voorspellen de voorspellende modules de werkset van tegels van de toepassing voor de huidige of toekomstige virtuele scène. De voorspellers kunnen onafhankelijk van de toepassing uitgevoerd worden. De voorspellers kunnen ook informatie van de toepassing gebruiken over welke tegels de toepassing aan de streamingmodule vraagt.
[0082] In een voorkeursuitvoering omvat het systeem een voorspellercontroller om de voorspellende modules aan te sturen, bijv. een voorspeller te activeren. Een systeem met een voorspellercontroller komt duidelijk overeen met een systeem zonder een dergelijk controller, maar waarbij in de plaats daarvan het voorspellende systeem zelf controllerlogica bevat, bijvoorbeeld logica zoals beschreven met betrekking tot de voorspellend systeem van Fig.5. In één uitvoeringsvorm kan deze logica zich ook in de toepassing, in de de streamingmodule of in eender welk ander onderdeel in het systeem bevinden.
[0083] De voorspellercontroller kan zijn informatie aanvragen bij de toepassing of informatie gedeeld krijgen door de toepassing, zoals, maar niet beperkt tot, informatie over de rendering van de virtuele scène, het algemene rendergedrag, etc., teneinde zijn controllerfunctie uit te voeren. De controller kan ook informatie over de systeembronnen van het computersysteem gebruiken. Bijvoorbeeld kan de voorspellercontroller via het systeem het aantal CPU cores en het aantal GPU's opvragen en de hoeveelheid voorspellers instellen op basis van deze informatie. Bijvoorbeeld, de voorspellercontroller kan zo een uitvoering van elke voorspeller te starten op een andere CPU kern of GPU en zo optimaal gebruik maken van de aanwezige computermiddelen.
[0084] Het voorspellende systeem voert op bepaalde tijdstippen een set van voorspellende algoritmen uit. De voorspellende algoritmen kunnen asynchroon van de toepassing uitgevoerd worden zonder specifieke verzoeken van de toepassing aan het streamingsysteem. De voorspellende algoritmen kunnen synchroon uitgevoerd worden, waarbij de voorspellers uitgevoerd kunnen worden telkens als de toepassing een bepaalde tegel aan het streamingsysteem vraagt. De toepassing kan de uitvoering van een voorspeller stimuleren.
[0085] Elk van de voorspellende algoritmen berekent een voorstel van de werkset van tegels van de scènes en stuurt zijn resultaten door naar de werksetmanager. De werksetmanager beheert de verschillende voorstellen van de scènewerkset en combineert ze tot een enkele scènewerkset. Deze werkset wordt door de werksetmanager aan de streamingmodulemanager meegedeeld. De streamingmodulemanager detecteert wijzigingen in de werkset en beheert de streamingmodule dienovereenkomstig. De streamingmodulemanager initieert streamingverzoeken voor nieuwe tegels en wijst de streamingmodule op vrije cacheslots voor tegels die niet meer aanwezig zijn in de werkset. Merk op dat de functionaliteit van de werksetmanager en de streamingmodulemanager gecombineerd kan worden zonder buiten het toepassingsgebied van de uitvinding te treden. Merk ook op dat de voorspellers in de toepassing geïntegreerd kunnen worden zonder buiten het toepassingsgebied van de uitvinding te treden.
[0086] De set voorspellers omvat een aantal voorspellers. De set voorspellers kan voorspellers omvatten voor verschillende soorten SO's, bijvoorbeeld, één voorspeller voor texturen en één voor puntenwolken. Elke voorspeller kan zijn berekeningen voortdurend met een bepaalde frequentie uitvoeren of initiëren volgens een tijdschema. De voorspellers kunnen synchroon of asynchroon ten opzichte van de toepassing uitgevoerd worden. De toepassing kan de uitvoering van een voorspeller in gang zetten. Het tijdschema kan de frequentie in Hertz beschrijven waarbij de voorspeller uitgevoerd wordt. Een zeer nauwkeurige voorspeller wordt bijvoorbeeld ingesteld om uitgevoerd te worden bij een frequentie van 20 Hz, d.w.z. elke 50 milliseconden. Voor een toepassing die de virtuele wereld bij 60 Hz rendert, komt dit overeen met het uitvoeren van de voorspeller om de drie renderingframes. Als alternatief geeft het tijdschema aan op welke momenten een voorspeller uitgevoerd wordt door vermelding van het aantal renderingframes tussen elke initiatie. Het tijdschema vermeldt bijvoorbeeld een aantal van drie frames tussen elke initiatie. Als de toepassing de scène bij 30 Hz rendert, betekent dit dat de voorspeller bij 10 Hz uitgevoerd zal worden. De frequentie van de voorspeller kan gesynchroniseerd worden met de renderingfrequentie. Een voorspeller kan zijn berekeningen bijvoorbeeld in de thread uitvoeren die verantwoordelijk is voor het opstellen van renderingcommando's voor de rendering-API. Deze thread kan de uitvoering initiëren telkens als de thread een frame begint te renderen.
[0087] Fig.6 illustreert een voorbeeld. Wanneer een SO een structuur is, kan de set voorspellers twee voorspellers bevatten. Eén van de voorspellers is een zeer nauwkeurige, hoogcomplexe voorspeller die de scène rendert zoals hierboven beschreven. De andere voorspeller is een minder nauwkeurige, laagcomplexe voorspeller die alle tegels binnen een bepaalde virtuele afstand van de virtuele camera in een lijst opneemt. De eerste voorspeller wordt om de vijf renderingframes uitgevoerd, terwijl de tweede voorspeller elk renderingframe uitgevoerd wordt. De figuur toont hoe de eerste voorspeller een aanzienlijke hoeveelheid tijd nodig heeft om de resultaten aan de streamingmodulemanager mee te delen, namelijk 2 frames. De tweede voorspeller deelt zijn resultaten echter binnen hetzelfde renderingframe mee aan de streamingmodulemanager. Merk op dat in het voorbeeld het eerste voorspellende algoritme niet uitgevoerd wordt voor frames 4 en 5. Er kan extra tijd nodig zijn om de resultaten beschikbaar te maken in het systeemgeheugen. Het renderen van een afbeelding op de GPU en het teruglezen van de afbeelding die zodoende ontstaat heeft bijvoorbeeld een gelijkaardige vertraging van 2 tot 3 frames. Zoals uit dit voorbeeld blijkt, is er op bepaalde momenten slechts één voorspeller actief (bijv. Frames 4-5). Tijdens de looptijd van de toepassing worden echter meerdere voorspellers, twee in dit voorbeeld, gebruikt.
[0088] In één uitvoeringsvorm, als een voorspeller ingesteld is om geïnitieerd te worden terwijl een vorige instantie van die voorspeller nog loopt, is de voorspeller niet gepland om uitgevoerd te worden. Als een voorspeller bijvoorbeeld 10 ms nodig heeft om uitgevoerd te worden en is gepland om uitgevoerd te worden bij 120 Hz, zal de voorspeller uitgevoerd worden bij een daadwerkelijke frequentie van 100 Hz. In een andere uitvoeringsvorm, als een voorspeller ingesteld is om geïnitieerd te worden wanneer een vorige instantie van die voorspeller uitgevoerd is, maar de resultaten nog naar het geheugen gekopieerd worden, kan de nieuwe instantie geïnitieerd worden. Zo kunnen de resultaten van een voorspellend proces dat uitgevoerd wordt op de GPU asynchroon naar systeemgeheugen gekopieerd worden, terwijl een nieuwe instantie van dezelfde voorspeller geïnitieerd wordt. In een andere uitvoeringsvorm, als een voorspeller ingesteld is om geïnitieerd te worden terwijl een vorige instantie van dezelfde voorspeller nog loopt, kan de voorspeller nog altijd geïnitieerd worden om opnieuw uitgevoerd te worden.
[0089] In één uitvoeringsvorm kan de initiatie van de voorspeller aangemoedigd worden door de toepassing of een andere operator. De voorspeller kan voortdurend uitgevoerd worden of kan een bepaald aantal keer uitgevoerd worden.
[0090] In één uitvoeringsvorm kunnen alle voorspellers of een subset van voorspellers bij dezelfde frequentie uitgevoerd worden. Ze kunnen hun resultaten op verschillende tijdstippen uitvoeren, aangezien sommige voorspellers meer tijd nodig hebben om te rekenen dan andere.
[0091] Het is mogelijk dat slechts één subset van alle beschikbare voorspellers uitgevoerd wordt. Deze subset kan tijdens de looptijd bepaald worden. Zo wordt het aantal actieve voorspellers bijvoorbeeld gekozen in overeenstemming het aantal CPU-kernen in een systeem. De subset kan vooraf bepaald worden door de systeembeheerder, bijvoorbeeld door middel van een door de gebruiker ingestelde constante in de toepassing. Aangezien voorspellers bij verschillende frequenties uitgevoerd kunnen worden, is het mogelijk dat op een bepaald moment in de levensduur/looptijd van de toepassing slechts één voorspeller of geen voorspellers uitgevoerd worden, maar dat gedurende de levensduur van de toepassing verschillende voorspellers actief zijn.
[0092] Elke voorspeller die door het systeem uitgevoerd wordt, stuurt zijn resultaten naar de manager van de tegelwerkset. De manager van de tegelwerkset combineert verschillende werksetvoorstellen die hij van de set van voorspellers ontvangen heeft tot één enkele werkset. Deze werkset wordt meegedeeld aan de streamingmodulemanager die de cache dienovereenkomstig bijwerkt.
[0093] Een tegelwerkset is een lijst van tegelreferenties (waaronder die van verschillende LOD's) die in het geheugen van het cachesysteem moeten zitten voor de beste renderingresultaten. De tegelreferenties kunnen een tegelindex en LOD-indicatie omvatten.
[0094] De werksetmanager heeft kennis van de nauwkeurigheid van iedere voorspeller in de set voorspellers. Bijgevolg kan deze onderscheid maken tussen onnauwkeurige en nauwkeurige werksetbeschrijvingen. De werksetmanager kan voor elke voorspeller een bereik van geldige LOD-niveaus bevatten. De werksetmanager doorloopt alle tegelreferenties in de voorgestelde werkset en verwijdert tegelreferenties met een LOD buiten dit bereik. De resterende tegelreferenties worden aan de verfijnde werkset toegevoegd. In één uitvoeringsvorm heeft de werksetmanager geen kennis van de nauwkeurigheid van iedere voorspeller, maar voert elke voorspeller alleen resultaten uit voor de tegels die hij met hoge nauwkeurigheid kan voorspellen.
[0095] Bijvoorbeeld, in geval de SO een textuur is en twee voorspellers actief zijn: een zeer nauwkeurige voorspeller rendert de scène en een voorspeller met lage nauwkeurigheid itereert alle tegels binnen een bepaald virtueel bereik. De werksetmanager kan een bereik van LOD-niveau [0,1] hebben voor de eerste voorspeller en een bereik van LOD-niveaus van [2, 10] voor de tweede voorspeller. Voor de resultaten van de eerste voorspeller verwerpt de werksetmanager alle tegelreferenties met een LOD-niveau hoger dan 1. Alleen de twee MIP-niveaus met het hoogste detailniveau blijven met andere woorden aanwezig in de werkset. Voor de resultaten van de tweede voorspeller verwerpt de werksetmanager alle tegelreferenties met een LOD-niveau lager dan 2. Alleen de twee MIP-niveaus met het laagste detailniveau (alle niveaus behalve de twee meest gedetailleerde MIP's) blijven met andere woorden aanwezig in de werkset. De werksetmanager combineert deze twee werksets door het samenvoegen van de twee werksets. De eerste voorspeller wordt met andere worden gebruikt voor het zoeken van de tegels die met het hoogste detailniveau zichtbaar zijn op het scherm. De tweede voorspeller wordt gebruikt voor het zoeken van de tegels met lagere resolutie tegels die zichtbaar zullen zijn in toekomstige frames wanneer de eerste voorspeller niet actief is.
[0096] In één uitvoeringsvorm wijst de werksetmanager gewichten toe aan elke tegelreferentie in het werksetvoorstel dat voorgesteld wordt door een voorspeller. Deze gewichten kunnen verband houden met de nauwkeurigheid van de voorspeller.
[0097] Indien de SO bijvoorbeeld een geometrisch model is, bevat het cachesysteem twee voorspellers, waarbij de ene een straaldetectiealgoritme uitvoert zoals eerder besproken en de andere alle SO-tegels itereert op een bepaalde afstand van de huidige, vroegere of toekomstige virtuele camerapositie, ook zoals hierboven beschreven. De werkset ontvangt de resultaten van de eerste voorspeller en kent een gewicht toe aan elke tegelreferentie in de werkset. Zo kan de tegelbeschrijving die voortvloeit uit de tweede voorspeller een kleiner gewicht hebben dan die van de eerste voorspeller, waardoor de werksetmanager de instructie krijgt om de uitvoer van de tweede voorspeller te prioriteren. De werksetmanager kan ervoor kiezen om tegelreferenties te verwerpen op basis van hun gewicht. Een andere mogelijkheid is om geen tegels te verwerpen, maar de gewichten door te geven via de streamingmodulemanager die vervolgens zijn cachevervangingsstrategie op basis van het gewicht kan uitvoeren. Er kan ook een frameteller in het gewicht geïntegreerd worden die verhoogd wordt telkens wanneer een nieuw frame door de toepassing gerenderd wordt. De huidige tijd kan worden opgenomen. Deze benaderingen kunnen extra gewicht toekennen aan de nieuwste resultaten.
[0098] Nadat de werksetmanager de voorgestelde werksets van de voorspellers tot één werkset gecombineerd heeft, wordt de werkset die zodoende ontstaat aan de streamingmodulemanager meegedeeld. De streamingmodulemanager stuurt, op basis van de werkset die hij ontvangt, de streamingmodule bij het streamen van de benodigde tegels die niet beschikbaar zijn in de cache. Wanneer hij een werkset ontvangt, doorloopt hij alle tegelreferenties. Tegels die al in het cachegeheugen zitten, blijven erin zitten en voor nieuwe tegels wordt gevraagd om deze naar de cache te streamen. De streamingmodulemanager kan de cache benaderen met behulp van een aantal strategieën. Deze kan bijvoorbeeld een least-recently-used (LRU)-strategie gebruiken, waarbij tegels die het minst recent gebruikt zijn, vervangen worden in de werkset. Er kunnen verschillende combinatiestrategieën voor werksets toegepast worden.
[0099] De streamingmodulemanager kan cacheslots die tijdelijk niet gebruikt worden, aanduiden als beschikbaar voor het bevatten van nieuw gestreamde tegels. In een andere uitvoeringsvorm ontvangt de streamingmodulemanager de gewichten van de tegels van de werksetmanager, en vervangt hij tegels op basis van hun gewicht. Tegelslots met tegels met een kleiner gewicht maken bijvoorbeeld plaats voor tegels met een groter gewicht. In een andere uitvoeringsvorm kan in het gewicht een frameteller geïntegreerd worden die verhoogd wordt telkens als een nieuw frame door de toepassing gerenderd wordt. Ook de huidige tijd kan opgenomen worden. Deze twee benaderingen kunnen extra gewicht geven aan de nieuwste resultaten en de streamingmodulemanager instrueren om de nieuwste resultaten te prioriteren. Er kunnen verschillende cachevervangingsstrategieën toegepast worden die niet beperkt zijn tot de voorbeelden die hier gegeven worden.
[0100] Hoewel de uitvinding werd geïllustreerd en in detail werd beschreven in de tekeningen en voorgaande beschrijving, moeten dergelijke illustraties en beschrijvingen als illustratie of voorbeeld worden beschouwd en niet restrictief. De voorgaande beschrijving verklaart bepaalde uitvoeringsvormen van de uitvinding in detail. Het moet echter worden opgemerkt dat hoe gedetailleerd het voorgaande ook in de tekst is opgenomen, de uitvinding op vele manieren kan worden uitgevoerd. De uitvinding is niet beperkt tot de geopenbaarde uitvoeringsvormen.
[0101] Andere variaties op de geopenbaarde uitvoeringsvormen kunnen worden begrepen en uitgevoerd door personen die geschoold zijn in dit domein en door de geclaimde uitvinding in de praktijk te brengen, door een studie van de tekeningen, de openbaarmaking en de bijgevoegde conclusies. In de conclusies sluit het woord "omvattende" geen andere elementen of stappen uit en het onbepaald lidwoord "een" sluit geen meervoud uit. Een enkele processor of andere eenheid kan de functies van verschillende items in de conclusies vervullen. Alleen al het feit dat bepaalde maatregelen worden opgesomd in onderling verschillende afhankelijke conclusies, betekent niet dat een combinatie van die maatregelen niet kan worden gebruikt om voordeel te halen. Een computerprogramma kan worden opgeslagen/verdeeld op een geschikt medium, zoals een optisch opslagmedium of halfgeleidermedium geleverd met of als onderdeel van andere hardware, maar kan ook worden verdeeld in andere vormen, zoals via het internet of andere bekabelde of draadloze telecommunicatiesystemen. Eventuele verwijzingen in de conclusies mogen niet worden opgevat als een beperking van de reikwijdte.

Claims (19)

  1. Conclusies
    1. Voorspellend systeem voor het bepalen van een set van deelgebieden die gebruikt moet worden voor het renderen van een virtuele wereld van een computergraphicstoepassing, waarbij voornoemde deelgebieden toebehoren aan streambare objecten die gebruikt moeten worden bij het renderen van voornoemde virtuele wereld, waarbij voornoemde streambare objecten elk een verscheidenheid van deelgebieden omvatten, het voorspellende systeem omvattend - voorspellende middelen die ingericht zijn voor het ontvangen van informatie van een computergraphicstoepassing over een virtuele wereld en voor het verkrijgen van een aantal voorspelde sets van deelgebieden voor het renderen van een virtuele wereld met behulp van streambare objecten, waarbij elke voorspelde set van voornoemde verscheidenheid verkregen wordt door een ander voorspellend schema, - een streamingmanager die ingericht is voor het ontvangen van voornoemde voorspelde sets van deelgebieden, voor het afleiden uit voornoemde voorspelde sets van deelgebieden van een werkset voor het renderen, en voor het uitsturen van stuurinstructies, gebaseerd op voornoemde werkset van deelgebieden, betreffende de set van deelgebieden die daadwerkelijk gebruikt moet worden.
  2. 2. Voorspellend systeem volgens conclusie 1, waarbij ten minste één streambaar object weergegeven wordt door deelgebieden die overeenstemmen met een verscheidenheid van verschillende detailniveauversies van het ten minste één streambare object.
  3. 3. Voorspellend systeem volgens conclusie 1 of 2, waarbij voornoemde streamingmanager ingericht is voor het gebruiken van informatie over de nauwkeurigheid van de verscheidenheid van voorspellingen om voornoemde stuurinstructies te optimaliseren.
  4. 4. Voorspellend systeem volgens een van de voorgaande conclusies, omvattende een voorspellercontroller ingericht voor het selecteren en besturen van een deelverzameling van de meerdere voorspellende middelen en/of een tijdschema of een frequentie waaraan elke voorspeller van de voorspellende middelen werkt.
  5. 5. Voorspellend systeem volgens conclusie 4, waarbij de voornoemde deelverzameling en/of het voornoemde tijdschema of de voornoemde frequentie waaraan elke voorspeller werkt, bepaald wordt tijdens de uitvoering van het voorspellend systeem.
  6. 6. Voorspellend systeem volgens conclusie 4 of 5, waarbij de voornoemde deelverzameling en/of het voornoemde tijdschema of de voornoemde vermelde frequentie waaraan elke voorspeller werkt, bepaald wordt in acht nemende de beschikbare systeembronnen.
  7. 7. Voorspellend systeem volgens conclusie 4 tot 6, waarbij de voornoemde deelverzameling en/of het voornoemde tijdschema of de voornoemde vermelde frequentie waaraan elke voorspeller werkt, bepaald wordt in acht nemende de rekenkundige complexiteit van voornoemde voorspellers.
  8. 8. Voorspellend systeem volgens conclusie 4 tot 7, waarbij de voornoemde deelverzameling en/of het voornoemde tijdschema of de voornoemde vermelde frequentie waaraan elke voorspeller werkt, bepaald wordt in acht nemende de nauwkeurigheid van de resultaten van voornoemde aantal voorspelde sets van deelgebieden van deelgebieden en/of de vertraging waarmee de genoemde voorspelde sets beschikbaar komen.
  9. 9. Voorspellend systeem volgens één van de voorgaande conclusies, waarbij ten minste één van de voornoemde voorspellende middelen geschikt is voor het aan een tempo of frequentie verkrijgen van één of meer voorspelde sets van deelgebieden van voornoemde verscheidenheid.
  10. 10. Voorspellend systeem volgens één van de voorgaande conclusies, waarbij een van voornoemde voorspelde sets verkregen wordt door te bepalen welke streambare objecten of welke deelgebieden binnen een bepaalde virtuele afstand in een virtuele scène liggen.
  11. 11. Voorspellend systeem volgens één van de voorgaande conclusies, waarbij ten minste één van voornoemde voorspellende schema's het renderen omvat van een scène van een virtuele camerapositie en het identificeren van een unieke deelgebiedidentificatie.
  12. 12. Voorspellend systeem volgens één van de voorgaande conclusies, waarbij ten minste één van voornoemde voorspellende schema's geschikt is voor het uitvoeren van een voorspelling waarbij een virtuele camerapositie in de virtuele wereld anders gebruikt wordt dan een hoofdpositie van de virtuele camera voor het renderen van voornoemde toepassing.
  13. 13. Voorspellend systeem volgens één van de voorgaande conclusies, waarbij ten minste één van voornoemde voorspellende schema's het renderen omvat van een scène van een virtuele camerapositie waardoor de virtuele wereld wordt weergegeven zonder blokkerende virtuele objecten of waarin blokkerende virtuele objecten worden weergegeven met een niveau van transparantie.
  14. 14. Voorspellend systeem volgens één van de voorgaande conclusies, waarbij voornoemde streamingmanager geschikt is voor het bepalen van de set van deelgebieden die gebruikt moet worden door het toewijzen van een gewicht aan de verschillende deelgebieden van voornoemde voorspelde sets.
  15. 15. Voorspellend systeem volgens conclusie 14, waarbij in voornoemd gewicht rekening gehouden wordt met het aantal treffers van een deelgebied in het aantal voorspelde sets.
  16. 16. Voorspellend systeem volgens één van de voorgaande conclusies, waarbij voornoemde streamingmanager geschikt is voor het selecteren van geheugenplaatsen die hergebruikt moeten worden en voor het doorsturen van een indicatie van de geselecteerde geheugenplaatsen in voornoemde stuurinstructies.
  17. 17. Voorspellend systeem volgens één van de voorgaande conclusies, waarbij de streamingmanager is ingericht voor het uitvoeren van stuurinstructies door het verfijnen van de voorspelde sets van deelgebieden van één of meer van voornoemde voorspellende middelen met de uitvoer van ten minste één ander voorspellend middel.
  18. 18. Werkwijze voor het bepalen van een set van deelgebieden die gebruikt moet worden voor het renderen van een virtuele wereld van een computergraphicstoepassing, waarbij voornoemde deelgebieden toebehoren aan streambare objecten die gebruikt moeten worden bij het renderen van voornoemde virtuele wereld, waarbij voornoemde streambare objecten elk meerdere deelgebieden omvatten, de werkwijze omvattend - het ontvangen van informatie van een computergraphicstoepassing over een virtuele wereld, - het verkrijgen van een aantal voorspelde sets van deelgebieden voor het renderen van een virtuele wereld met behulp van streambare objecten, waarbij elke voorspelde set van voornoemde verscheidenheid verkregen wordt door een ander voorspellend schema, - het afleiden uit voornoemde voorspelde sets van deelgebieden met informatie over deelgebieden van een werkset van deelgebieden die gebruikt moeten worden bij het renderen en - het uitvoeren, op basis van genoemde werkset, van stuurinstructies betreffende de set van deelgebieden die gebruikt moet worden.
  19. 19. Een programma, dat uitgevoerd kan worden op een programmeerbare inrichting omvattende instructies die, wanneer ze uitgevoerd worden, de werkwijze zoals beschreven in één van de voorgaande conclusies uitvoeren.
BE2015/5711A 2014-11-03 2015-11-02 Voorspellend systeem voor het doorsturen van texturen BE1022664B1 (nl)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462074127P 2014-11-03 2014-11-03
EP62/074,127 2014-11-03
US62/074,127 2014-11-03
EP14196784.4A EP3016075A1 (en) 2014-11-03 2014-12-08 Prediction system for texture streaming

Publications (1)

Publication Number Publication Date
BE1022664B1 true BE1022664B1 (nl) 2016-06-29

Family

ID=52011089

Family Applications (1)

Application Number Title Priority Date Filing Date
BE2015/5711A BE1022664B1 (nl) 2014-11-03 2015-11-02 Voorspellend systeem voor het doorsturen van texturen

Country Status (4)

Country Link
US (3) US10748241B2 (nl)
EP (2) EP3016075A1 (nl)
BE (1) BE1022664B1 (nl)
WO (1) WO2016071223A1 (nl)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3016075A1 (en) 2014-11-03 2016-05-04 Graphine NV Prediction system for texture streaming
GB2546286B (en) * 2016-01-13 2020-02-12 Sony Interactive Entertainment Inc Apparatus and method of image rendering
US10939038B2 (en) * 2017-04-24 2021-03-02 Intel Corporation Object pre-encoding for 360-degree view for optimal quality and latency
US10649521B2 (en) 2017-04-24 2020-05-12 Intel Corporation Compensating for high head movement in head-mounted displays
US10623791B2 (en) 2018-06-01 2020-04-14 At&T Intellectual Property I, L.P. Field of view prediction in live panoramic video streaming
US10812774B2 (en) 2018-06-06 2020-10-20 At&T Intellectual Property I, L.P. Methods and devices for adapting the rate of video content streaming
US10616621B2 (en) 2018-06-29 2020-04-07 At&T Intellectual Property I, L.P. Methods and devices for determining multipath routing for panoramic video content
US10708494B2 (en) 2018-08-13 2020-07-07 At&T Intellectual Property I, L.P. Methods, systems and devices for adjusting panoramic video content
US11019361B2 (en) 2018-08-13 2021-05-25 At&T Intellectual Property I, L.P. Methods, systems and devices for adjusting panoramic view of a camera for capturing video content
US11676371B2 (en) * 2018-08-17 2023-06-13 Fotonation Limited Apparatus for processing a neural network
US11166048B2 (en) * 2018-10-02 2021-11-02 Tencent America LLC Method and apparatus for video coding
US11164293B2 (en) * 2019-01-30 2021-11-02 National Cheng Kung University Adaptive enhancement method for image contrast based on level of detail
DE102020000306A1 (de) * 2019-03-21 2020-09-24 Adobe Inc. Generieren einer Sequenz von Texturen zur Videoversendung
US11816758B2 (en) * 2020-03-30 2023-11-14 Universal City Studios Llc Techniques for preloading and displaying high quality image data
CN112927365B (zh) * 2021-04-13 2023-05-26 网易(杭州)网络有限公司 在应用程序的三维虚拟场景中渲染山体的方法及装置
US11758104B1 (en) 2022-10-18 2023-09-12 Illuscio, Inc. Systems and methods for predictive streaming of image data for spatial computing

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6057847A (en) * 1996-12-20 2000-05-02 Jenkins; Barry System and method of image generation and encoding using primitive reprojection
KR100291628B1 (ko) * 1999-06-19 2001-05-15 윤덕용 3차원 그래픽 텍스쳐 맵핑용 캐쉬 메모리 및 그의 캐쉬 미스페널티 저감방법
US6518974B2 (en) * 1999-07-16 2003-02-11 Intel Corporation Pixel engine
US20020075311A1 (en) * 2000-02-14 2002-06-20 Julian Orbanes Method for viewing information in virtual space
US6873329B2 (en) * 2002-07-05 2005-03-29 Spatial Data Technologies, Inc. System and method for caching and rendering images
KR20070072848A (ko) * 2004-06-08 2007-07-06 유니버시티 오브 로체스터 밀집된 클러스터에서 통신-병렬성 트레이드 오프를동적으로 관리하는 방법
US7848618B2 (en) * 2005-05-13 2010-12-07 Microsoft Corporation Unified recording and pause buffer format
US7535473B2 (en) * 2005-09-20 2009-05-19 Erdas, Inc. Collaborative environments in a graphical information system
US7934058B2 (en) * 2006-12-14 2011-04-26 Microsoft Corporation Predictive caching of assets to improve level load time on a game console
US8073191B2 (en) * 2007-09-25 2011-12-06 Siemens Aktiengesellschaft Method and system for correcting butting artifacts in X-ray images
US8698818B2 (en) * 2008-05-15 2014-04-15 Microsoft Corporation Software rasterization optimization
JP5047090B2 (ja) * 2008-07-31 2012-10-10 キヤノン株式会社 システム
EP2348732A4 (en) * 2008-11-10 2012-05-09 Lg Electronics Inc METHOD AND DEVICE FOR PROCESSING VIDEO SIGNAL BY INTER-VIEW PREDICTION
BRPI1008226A2 (pt) * 2009-02-12 2019-09-24 Nippon Telegraph & Telephone método de codificação de imagem como múltiplas vistas, método de decodificação de imagem com múltiplas vistas, dispositivo de codificação de imagem com múltiplas vistas,dispositivo de codificação de imagem com múltiplas vistas,programa de codificação de imagem como múltiplas vistas, programa de codificação de imagem como múltiplas vistas.
CN102473307B (zh) * 2010-03-15 2015-05-27 松下电器产业株式会社 用于轨迹估计的方法和装置以及用于分割的方法
US8959313B2 (en) * 2011-07-26 2015-02-17 International Business Machines Corporation Using predictive determinism within a streaming environment
US20130303247A1 (en) * 2012-05-08 2013-11-14 Mediatek Inc. Interaction display system and method thereof
US9311750B2 (en) * 2012-06-05 2016-04-12 Apple Inc. Rotation operations in a mapping application
US20140373032A1 (en) * 2013-06-12 2014-12-18 Microsoft Corporation Prefetching content for service-connected applications
US10181193B2 (en) * 2014-03-10 2019-01-15 Microsoft Technology Licensing, Llc Latency reduction in camera-projection systems
US9396586B2 (en) * 2014-03-14 2016-07-19 Matterport, Inc. Processing and/or transmitting 3D data
EP3016075A1 (en) 2014-11-03 2016-05-04 Graphine NV Prediction system for texture streaming

Also Published As

Publication number Publication date
WO2016071223A1 (en) 2016-05-12
EP3216011B1 (en) 2020-07-08
US11195250B2 (en) 2021-12-07
US20200410633A1 (en) 2020-12-31
EP3016075A1 (en) 2016-05-04
US10748241B2 (en) 2020-08-18
US20170316543A1 (en) 2017-11-02
US20220148126A1 (en) 2022-05-12
EP3216011A1 (en) 2017-09-13
US11893656B2 (en) 2024-02-06

Similar Documents

Publication Publication Date Title
BE1022664B1 (nl) Voorspellend systeem voor het doorsturen van texturen
KR101661931B1 (ko) 3차원 그래픽스 랜더링 장치 및 그 방법
Schmalstieg et al. Demand‐Driven Geometry Transmission for Distributed Virtual Environments
Wonka et al. Instant visibility
KR101536501B1 (ko) 동화상 배포 서버, 동화상 재생 장치, 제어 방법, 기록 매체, 및 동화상 배포 시스템
CA2837983C (en) Partition of a 3d scene into a plurality of zones processed by a computing resource
US6806876B2 (en) Three dimensional rendering including motion sorting
WO1998000811A9 (en) Fly-through computer aided design method and apparatus
JP6333840B2 (ja) 最適化ポリゴンに基づいたシェルメッシュを形成する方法
Beacco et al. A survey of real‐time crowd rendering
US8416260B1 (en) Sigma buffer for rendering small objects
Millan et al. Impostors and pseudo-instancing for GPU crowd rendering
CN107038017A (zh) 渲染数据获取的方法和装置
CN106204709A (zh) 用于处理纹理的方法和设备
Christie et al. Occlusion-free camera control for multiple targets
JP7500017B2 (ja) 複数のデバイス間での3dオブジェクトの視覚化および操作を容易にする方法および装置
KR20100068603A (ko) 밉맵 생성 장치 및 방법
KR20090059800A (ko) 폴리곤의 특징에 적응된 순서로 래스터화하는 래스터화엔진 및 3차원 그래픽스 시스템
Hernández et al. A rendering pipeline for real-time crowds
Hwang et al. Image-based object reconstruction using run-length representation
US8203560B2 (en) Method for predictively splitting procedurally generated particle data into screen-space boxes
Damez et al. Global Illumination for Interactive Applications and High-Quality Animations.
JP4887419B2 (ja) 多解像度による幾何学的配置
JP4759109B2 (ja) 多解像度による幾何学的配置
Liang et al. InfNeRF: Towards Infinite Scale NeRF Rendering with O (log n) Space Complexity

Legal Events

Date Code Title Description
MM Lapsed because of non-payment of the annual fee

Effective date: 20231130