NO328438B1 - Systemer og fremgangsmater for a frembringe mellomliggende mal i et grafikksystem - Google Patents
Systemer og fremgangsmater for a frembringe mellomliggende mal i et grafikksystem Download PDFInfo
- Publication number
- NO328438B1 NO328438B1 NO20031556A NO20031556A NO328438B1 NO 328438 B1 NO328438 B1 NO 328438B1 NO 20031556 A NO20031556 A NO 20031556A NO 20031556 A NO20031556 A NO 20031556A NO 328438 B1 NO328438 B1 NO 328438B1
- Authority
- NO
- Norway
- Prior art keywords
- met
- itmrt
- intermediate storage
- data
- component
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 61
- 238000012432 intermediate storage Methods 0.000 claims description 31
- 238000012545 processing Methods 0.000 claims description 24
- 230000015654 memory Effects 0.000 claims description 19
- 230000006870 function Effects 0.000 claims description 16
- 238000004364 calculation method Methods 0.000 claims description 8
- 230000002085 persistent effect Effects 0.000 claims 2
- 239000000543 intermediate Substances 0.000 description 50
- 238000003860 storage Methods 0.000 description 33
- 239000008186 active pharmaceutical agent Substances 0.000 description 32
- 238000004891 communication Methods 0.000 description 27
- 238000009877 rendering Methods 0.000 description 21
- 230000008569 process Effects 0.000 description 18
- 239000000872 buffer Substances 0.000 description 16
- 239000002609 medium Substances 0.000 description 10
- 101001023733 Homo sapiens Neurotrypsin Proteins 0.000 description 8
- 102100035484 Neurotrypsin Human genes 0.000 description 8
- 101000941994 Homo sapiens Protein cereblon Proteins 0.000 description 7
- 102100032783 Protein cereblon Human genes 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 6
- 230000009466 transformation Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000004064 recycling Methods 0.000 description 5
- 239000003795 chemical substances by application Substances 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 102100024066 Coiled-coil and C2 domain-containing protein 1A Human genes 0.000 description 3
- 101000910423 Homo sapiens Coiled-coil and C2 domain-containing protein 1A Proteins 0.000 description 3
- 208000032585 autosomal recessive 3 intellectual disability Diseases 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 239000003607 modifier Substances 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000000844 transformation Methods 0.000 description 3
- 101100203828 Arabidopsis thaliana SPP3A gene Proteins 0.000 description 2
- 101000591280 Homo sapiens mRNA turnover protein 4 homolog Proteins 0.000 description 2
- 101100005280 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) cat-3 gene Proteins 0.000 description 2
- 101100534124 Oryza sativa subsp. japonica SPP3 gene Proteins 0.000 description 2
- 102100030684 Sphingosine-1-phosphate phosphatase 1 Human genes 0.000 description 2
- 101710168942 Sphingosine-1-phosphate phosphatase 1 Proteins 0.000 description 2
- 102100030677 Sphingosine-1-phosphate phosphatase 2 Human genes 0.000 description 2
- 101710168938 Sphingosine-1-phosphate phosphatase 2 Proteins 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000005286 illumination Methods 0.000 description 2
- 238000010348 incorporation Methods 0.000 description 2
- 102100034098 mRNA turnover protein 4 homolog Human genes 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 229920001690 polydopamine Polymers 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- CDFKCKUONRRKJD-UHFFFAOYSA-N 1-(3-chlorophenoxy)-3-[2-[[3-(3-chlorophenoxy)-2-hydroxypropyl]amino]ethylamino]propan-2-ol;methanesulfonic acid Chemical compound CS(O)(=O)=O.CS(O)(=O)=O.C=1C=CC(Cl)=CC=1OCC(O)CNCCNCC(O)COC1=CC=CC(Cl)=C1 CDFKCKUONRRKJD-UHFFFAOYSA-N 0.000 description 1
- 101100400546 Mus musculus Matn1 gene Proteins 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009429 electrical wiring Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000011888 foil Substances 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000004579 marble Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000002310 reflectometry Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 239000006163 transport media Substances 0.000 description 1
- 239000002023 wood Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
- Controls And Circuits For Display Device (AREA)
- Digital Computer Display Output (AREA)
Description
TEKNISK OMRÅDE
Foreliggende oppfinnelse er rettet mot systemer og fremgangsmåter for å tilveiebringe ett eller flere mellomliggende lagringsmål i forbindelse med datamaskingrafikk. Mer spesielt angår foreliggende oppfinnelse systemer og fremgangsmåter for å tilveiebringe ett eller flere mellomliggende lagringsmål for bruk i forbindelse med prosedyremessige skyggeleggingsanordninger, slik som piksel-og verteks-skyggeleggingsanordninger.
BAKGRUNN FOR OPPFINNELSEN
Gjengivelse og visning av tredimensjonal (3-D) grafikk innebærer typisk mange beregninger og utregninger. For å gjengi et tredimensjonalt objekt blir det f.eks. dannet et sett med koordinatpunkter eller toppunkter som definerer det objekt som skal gjengis. Toppunkter kan være forbundet med hverandre for å danne polygoner som definerer overflaten til det objekt som skal gjengis og vises. Når toppunktene som definerer et objekt er formet, kan toppunktene transformeres fra en objekt- eller modell-referanseramme til en verdensreferanseramme og til slutt til todimensjonale koordinater som kan vises på en flat visningsanordning slik som en monitor. På veien må mange toppunkter roteres, skaleres, elimineres eller klip-pes fordi de faller utenfor et synlig område, blir opplyst ved hjelp av forskjellige belysningsmetoder og kilder, er fargesatt eller transformert på annen måte, skyg-gelagt osv. De prosesser som inngår i gjengivelse og visning av et tredimensjonalt objekt kan være beregningsmessig intensivt og kan medføre et stort antall topp-punkter.
Som vist på fig. 1, kan komplekse tredimensjonale objekter eller deler av disse konvensjonelt representeres av samlinger av tilstøtende triangler ("et mas-kenett") som representerer den tilnærmede geometrien til det tredimensjonale objekt, eller ved hjelp av et geometrikart eller en overflate i et todimensjonalt (2-D) overflaterom. Maskenettet kan spesifiseres ved posisjonen til toppunktene eller trianglene. Ett eller flere teksturkart kan tilordnes overflaten for å skape en teksturert overflate i henhold til en teksturkartleggingsprosess. I denne forbindelse kan signaler teksturert over en overflate være meget generelle og kan spesifisere en hvilken som helst type mellomliggende resultat som kan mates inn i én eller flere transformasjonsmekanismer, slik som én eller flere skyggeleggingsprosedyrer, for å frembringe en endelig farge og/eller andre verdier tilknyttet en punktsampel.
Etter tekstursampling kan ytterligere transformasjoner, slik som skygge-leggingsalgoritmer og -teknikker etter valg anvendes på den teksturerte overflate forut for gjengivelse av bildet med bildeelementer (piksler) på en visningsinnretning, eller utmating av dataene til et annet sted for et annet formål enn fremvis-ning. Bilder i datamaskingrafikk blir typisk representert som en todimensjonal gruppe av diskrete verdier (gråskala) eller som tre todimensjonale grupper av diskrete verdier (farge). Ved å bruke et standard (x,y,z), rektangulært koordinatsys-tem kan en overflate spesifiseres som en maske (f.eks. en triangelmaske) med en (x,y,z)-koordinat pr. masketoppunkt, eller som et geometrikart hvor (x,y,z)-koordi-natene er spesifisert som et rettlinjet bilde over et todimensjonalt (u.v)-koordinat-system, noen ganger kalt overflateparametriseringsdomenet. Ett eller flere teksturkart kan også spesifiseres med (u.v)-koordinatsystemet.
Punktsampler i overflateparametriseringsdomenet hvor signaler er blitt tilknyttet overflaten, innbefattende dens geometri, kan genereres fra teksturerte masker eller geometrikart. Disse prøvene kan transformeres og skyggelegges ved å benytte en lang rekke beregninger. Ved slutten av denne transformasjons- og skyggeleggings-behandlingen innbefatter en punktsampel (a) posisjonsmessig informasjon, dvs. en bildeadresse som indikerer hvor i bildeplanet punktet tilordnes, og (b) teksturert farge- eller gråskala, informasjon som indikerer fargen til samplen ved den posisjon som indikeres av den posisjonsmessige informasjon. Andre data slik som dybdeinformasjon om punktsampelen for å tillate skjult over-flateeliminering, vekt eller annen nyttig informasjon om punktsampelen kan også inkluderes. Den transformerte, teksturerte overflate blir plassert i et delbildebuffer før det gjengis ved hjelp av en fremvisningsanordning i et todimensjonalt pikselbil-derom (x,y). Ved dette punkt, i tilfelle av en sort/hvit-fremvisningsinnretning, blir hver (x.y)-pikselposisjon i det todimensjonale bilderom tildelt en gråverdi i samsvar med én eller annen funksjon for overflaten i delbildebufferet. I tilfelle av en typisk fargefremvisningsanordning blir hver (x.y)-pikselposisjon i det todimensjonale rom tildelt rød-, grønn- og blå-verdier (RGB-verdier). Det skal bemerkes at det finnes en rekke andre fargeformater enn RGB. Selv om det kan være variasjoner i arki-tekturen fra starten til begynnelsen, er det ovenfor beskrevne middel for knusing av massive mengder med verteks- og piksel-grafikkdata kjent som grafisk parallellbehandling.
Datagrafikkindustrien og parallellbehandling av grafikk har oppvist en spesielt sterk verst i løpet av de siste få år. De nåværende generasjoner av dataspill forflytter seg f.eks. til tredimensjonal grafikk på en stadig økende og mer realistisk måte. Samtidig blir spillehastigheten drevet hurtigere og hurtigere. Denne kombi-nasjonen har gitt næring til et ekte behov for hurtig gjengivelse av tredimensjonal grafikk i forholdsvis billige systemer.
Så tidlig som i 1970-årene var tredimensjonale gjengivelsessystemer i stand til å beskrive "utseende" til objekter i henhold til parametere. Disse og
senere metoder sørger for parametriseringen av den oppfattede fargen til et objekt basert på posisjonen og orienteringen til dens overflate og lyskildene som belyser dem. Ved å gjøre dette blir objektets utseende beregnet fra dette. Parametere innbefatter videre verdier slik som diffus farge, speilrefleksjonskoeffisienten, speilfar-gen, reflektiviteten og transparensen til materialet i objektet. Slike parametere blir globalt referert til som objektets skyggeleggingsparametere.
Tidligere systemer kunne bare tillegge en enkelt verdi til skyggeleggingsparametere, og dermed forble de konstante og uniforme over hele objektets overflate. Senere systemer muliggjorde bruken av ikke-uniforme parametere (transpa-rens f.eks.) som kan ha forskjellige verdier over forskjellige deler av objektet. Tb prominente og distinkte teknikker er blitt brukt til å beskrive de verdier som inntas av disse ikke-uniforme parameterne på de forskjellige deler av objektets overflate: prosedyreorientert skyggelegging og teksturkartlegging. Teksturkartlegging er pik-selbasert og oppløsningsavhengig.
Prosedyreorientert skyggelegging beskriver utseende til et materiale ved ethvert punkt i et endimensjonalt, todimensjonalt eller tredimensjonalt rom ved å definere en funksjon (ofte kalt den prosedyreorienterte skyggelegger) i dette rom-met til et skyggeleggingsparameter-rom. Objektet blir "neddykket" i det opprinne-lige endimensjonale, todimensjonale eller tredimensjonale rom, og verdiene til skyggeleggingsparameterne ved et gitt punkt på overflaten til objektet blir definert som et resultat av den prosedyreorienterte skyggeleggingsfunksjon ved dette punktet. Prosedyreorienterte skyggeleggere som har tilnærmet samme utseende som tre, marmor eller andre naturlige materialer, er f.eks. blitt utviklet og kan finnes i litteraturen.
Gjengivelsen av grafikkdata i et datasystem er en samling av ressursinten-sive prosesser. Skyggeleggingsprosessen, dvs. prosessen med å utforme komplekse algoritmer for ett eller flere sett med spesialiserte grafiske datastrukturer som benyttes til å bestemme verdier for visse grunnelementer slik som farge osv. tilknyttet de grafiske datastrukturer, eksemplifiserer en slik beregningsmessig in-tensiv og kompleks prosess. Generelt er skyggeleggingsprosessen blitt normali-sert til en viss grad. Ved å føre kildekode utformet for å arbeide med en skyggelegger inn i en applikasjon eller et brukerprogram, blir en skyggelegger et objekt som brukerprogrammet kan skape/utnytte til å lette effektiv opptegning av kompleks videografikk. Verteks-skyggeleggere og piksel-skyggeleggere er eksempler på slike skyggeleggere.
Forut for deres nåværende implementering i spesialiserte maskinvare-brikker, ble verteks-skyggeleggere og piksel-skyggeleggere noen ganger implementert fullstendig eller hovedsakelig som programvarekode, og ble noen ganger implementert som en kombinasjon av stivere maskinvareelementer med programvare for styring av maskinvaren. Disse implementeringene inneholdt ofte en sent-ralenhet (CPU) eller emulerte forekomsten av én ved å benytte systemets CPU. Maskinvareimplementeringene integrerte f.eks. en CPU-brikke direkte inn i deres utforming for å utføre prosesseringsfunksjonaliteten som er nødvendig i forbindelse med skyggeleggingsoppgaver. Selv om en CPU tilføyer en mengde fleksibilitet til skyggeleggingsprosessen på grunn av det funksjonalitetsområde som en standard prosesseringsbrikke gir, tilføyer inkorporeringen av en CPU overordnet arbeid til den spesialiserte skyggeleggingsprosessen. Uten dagens maskinvare var det imidlertid lite valgmuligheter.
I dag har eksisterende fremskritt i forbindelse med maskinvareteknologi imidlertid lettet evnen til å flytte funksjonalitet som tidligere var implementert i programvare, til spesialisert maskinvare. Dagens piksel- og verteks-skyggeleggere blir følgelig implementert som spesialiserte og programmerbare maskinvarebrik-ker. Dagens maskinvareutforminger av verteks- og piksel-skyggeleggerbrikker er meget spesialiserte og oppfører seg således ikke lik CPU-maskinvareimplementeringer som er tidligere kjent.
Spesialiserte, tredimensjonale grafikk-API'er er blitt utviklet som eksponerer den spesialiserte funksjonaliteten til dagens verteks- og piksel-skyggeleggere. I denne forbindelse blir en utvikler i stand til å laste ned instruksjoner til en verteks-skyggelegger som effektivt programmerer verteks-skyggeleggeren til å utføre spesialisert oppførsel. API'er eksponerer f.eks. funksjonalitet tilknyttet økte antall registre i verteks-skyggeleggere, f.eks. spesialisert verteks-skyggeleggings-funksjonalitet med hensyn til tall med flytende komma ved et registernivå. I tillegg er det mulig å implementere et instruksjonssett som får den ekstremt hurtige verteks-skyggeleggeren til å returnere bare brøkdelen av tall med flytende komma. En rekke forskjellige funksjonaliteter kan oppnås ved å laste ned disse instruksjonene under den antakelse at tallgrensen for instruksjoner i verteks-skyggeleggeren ikke blir overskredet.
Når det gjelder piksel-skyggeleggere kan likeledes spesialisert piksel-skyggeleggingsfunksjonalitet oppnås ved nedlasting av instruksjoner til piksel-skyggeleggeren. Det blir f.eks. eksponert funksjonalitet som tilveiebringer en lineær interpoleringsmekanisme i piksel-skyggeleggeren. Funksjonaliteten til mange forskjellige operasjonsmodifiserere blir videre eksponert for utviklere i forbindelse med instruksjonssett som er skreddersydd for piksel-skyggeleggere. Negering, omtilordning (remapping), forspenning og annen funksjonalitet er f.eks. uhyre nyttig for mange grafikkanvendelser der det er ønskelig med effektiv piksel-skyggelegging, som selv om de blir utført som en del av en enkelt instruksjon, kan de best uttrykkes som modifiserere av vedkommende instruksjon. Den ovennevnte funksjonalitet er kort sagt fordelaktig for en lang rekke grafikkoperasjoner, og deres funksjonelle inkorporering i allerede spesialiserte piksel- og verteks-skyggeleggersett med instruksjoner gir ytterligere stor verdi når det gjelder å lette utvikling og forbedret ytelse. Mange forskjellige funksjonaliteter kan således oppnås ved nedlasting av disse instruksjonene under antakelse av at instruksjonstel-legrensen til piksel-skyggeleggeren ikke blir overskredet.
En ikke avgjort US-patentsøknad nr. 09/801,079, inngitt 6. mars 2001 som tilhører foreliggende søker, gir slike eksempler på tredimensjonale API'er for kommunikasjon med maskinvareimplementeringer av verteks-skyggeleggere og piksel-skyggeleggere som har lokale registre. Når det gjelder verteks-skyggeleggere blir det her beskrevet API-kommunikasjoner som kan gjøre bruk av et inn-holdsregister på en brikke, og API-kommunikasjoner blir også fremskaffet for en spesialisert funksjon implementert på en brikke ved registernivå, som mater ut brøkdelen eller brøkdelene av innmatingen eller innmatingene. Når det gjelder piksel-skvaaeleaaere blir API-kommunikasioner tilveiebrakt for en sDesialisert funksjon, implementert på en brikke ved registernivå, som utfører en lineær interpole-ringsfunksjon og API-kommunikasjoner blir levert for spesialiserte modifiserere, også implementert på en brikke ved registernivå, som utfører modifiseringsfunk-sjoner innbefattende negering, komplementering, omtilordning, forspenning, skale-ring og metning. API-kommunikasjonene eksponerer fortrinnsvis meget nyttige grafiske algoritmeelementer på en brikke for en utvikler, mens detaljene ved ope-rasjonen til verteks-skyggeleggerbrikken og piksel-skyggeleggerbrikken er skjult for utvikleren.
En ikke avgjort US-patentsøknad nr. 09/796,577, inngitt 1. mars 2001 og til-hørende foreliggende patentsøker, beskriver også tredimensjonale APCer som eksponerer unike, algoritmiske elementer for utviklere for bruk med prosedyreorienterte skyggeleggere via en mekanisme som er begrepsmessig under eller inne i programvare-grensesnittet, og som gjør det mulig for en utvikler å laste ned instruksjoner til de prosedyreorienterte skyggeleggere og GPU. En slik tredimensjonal API gjør det f.eks. mulig å laste ned operasjoner til en tredimensjonal brikke for å gi forbedrede ytelseskarakteristikker. Disse tredimensjonale API'er trekker fordel av å kampeskjære tredimensjonale grafikkbrikker som har begynt å hånd-tere slik programmerbar funksjonalitet, ved å innbefatte fleksibel brikkeprosesse-ring og begrenset brikkeminne for å fjerne kundespesifikk grafikkode fra prosesse-ringen til vertsprosessoren og for å plassere slik programmerbar og nedlastbar funksjonalitet i en grafikkbrikke. Slike API'er gjør det slik at programmering eller algoritmiske elementer skrevet av utvikleren, kan lastes ned til brikken for derved å programmere brikken til å utføre disse algoritmene ved fordrede ytelsesnivåer. Relatert til dette tilfelle hvor en utvikler kan skrive en rutine som her nedlastbar til den tredimensjonale brikke, er det også ett eller flere sett med algoritmiske elementer som blir fremskaffet i forbindelse med den tredimensjonale API (rutiner som ikke er skrevet av utvikleren, men som allerede er blitt programmert for utvikleren). En utvikler kan likeledes laste ned disse forhåndspakkede API-algoritmene til en programmerbar tredimensjonal brikke for forbedret ytelse. Muligheten til å laste ned tredimensjonale, algoritmiske elementer gir forbedret ytelse, bedre styring samt lettere utvikling.
Et annet grafikksystem beskrives i den europeiske patentpublikasjonen EP 1 182 618.
Introduksjonen av programmerbare operasjoner på en pr. verteks- og pr. piksel-basis har således blitt mer utbredt i moderne grafikkutstyr. Denne generelle programmeringsevnen muliggjør et uhyre stort potensiale for sofistikerte, kreative algoritmer ved økte ytelsesnivåer. Det er imidlertid visse begrensninger for hva som kan oppnås. Med dagens parallellbehandling i forbindelse med gjengivelser ved verteks- og piksel-skyggeleggere, som illustrert på fig. 2A, blir typisk en strøm av geometriske data SGD matet til verteks-skyggeleggeren 200 for å utføre visse operasjoner på toppunktene, hvoretter en rasteranordning 210 rasteravsøker de geometriske data til pikseldata og mater ut en strøm av pikseldata SPDI. Verteks-skyggeleggeren 200 kan motta instruksjoner som programmerer verteks-skyggeleggeren 200 til å utføre spesialisert funksjonalitet, men det er grenser for størrel-sen og kompleksiteten til verteksskyggelegger-instruksjonene. En piksel-skyggelegger 220 kan likeledes etter valg utføre én eller flere transformasjoner på dataene for å mate ut en strøm av pikseldata SPD2. Piksel-skyggeleggeren 220 kan også motta instruksjoner som programmerer piksel-skyggeleggeren 220 til å utføre spesialisert funksjonalitet, men det er grenser for størrelsen og kompleksiteten til pikselskyggelegger-instruksjonene. En begrensning på dagens API'er og tilsvarende maskinvare er således at mesteparten av maskinvaren har meget begrenset antall instruksjoner. Dette begrensede antall instruksjoner hindrer implementering av noen av de mest sofistikerte algoritmer for utvikleren ved å benytte API'er. I tillegg har den nåværende programmerbare maskinvare meget begrensede me-kanismer til å utveksle data mellom separate programmer, dvs. at et første piksel-skyggelegger-program ikke kan gjenbruke data matet ut fra et annet pikselskygge-leggerprogram.
Som vist på fig. 2A blir en piksel eller et billedpunkt i tillegg vanligvis tenkt på som et punkt i det todimensjonale gitteret til bilderommet, som har en gråskala-verdi eller fargeverdier tilknyttet seg, moderne grafikk ser imidlertid på en piksel i piksel-parallellbehandlingsmotoren som kollektive data tilknyttet et punkt i en hvilken som helst todimensjonal gruppe, uansett om det er relevant for et vist bilde eller ikke. Selv om fig. 2A f.eks. illustrerer en piksel med en blokk for rødt, en blokk for grønt og en blokk for blått, behøver dette ikke å være tilfelle, og et hvilket som helst antall blokker og tilsvarende verdier kan være en piksel. Det finnes derfor betydelig fleksibilitet når det gjelder å generere en todimensjonal gruppe med pikseldata som kan innbefatte parameterverdier for lyseffekter, vekt, z-bufferinfor-masjon, osv. Et problem med dagens grafikk-parallellbehandling, som illustrert på fig. 2C, angår den fleksibilitet som de separate pikselsett kan mates ut med. Selv om pikselmotoren 230 er i stand til å mate ut enhver type pikseldata, dvs. pikslene P1, P2, P3, P4 til PN som strømmer som en utmating, kan ha betydelig fleksibilitet med hensyn til typen og antallet blokker som definerer pikslene, P1, P2, P3, P4 til PN, P1, P2, P3, P4 til PN, må alle uansett ha de samme blokker. Hvis derfor P1 innbefatter R, G, B-data, så gjør også P2, P3, P4 til PN dette, og dermed er ikke fleksibiliteten til å definere forskjellige sett med utgående pikseldata hvorav noen kan brukes til belysning og noen som kun kan brukes til farge. Oppløsningen til gjengivelsesmål er dessuten forhåndsbestemt i samsvar med rasterprosessen, dvs. at gjengivelsesprosessen driver den mengde med sampler som kan plasseres i et gjengivelsesmål, og det vil således være ønskelig å styre oppløsningen av et gjengivelsesmål på variabel måte, dvs. antallet sampler som kan lagres i forbindelse med et gjengivelsesmål.
Det ville således være ønskelig å implementere systemer og fremgangsmåter som overvinner ulempene ved foreliggende programmerbarhet i forbindelse med nåværende grafikk-parallellbehandlingsarkitekturer, APCer og maskinvare som skyldes begrensninger av antall instruksjoner, begrensninger i form av utmating og mangelen på deling av data mellom programmer.
OPPSUMMERING AV OPPFINNELSEN
På bakgrunn av det foregående tilveiebringer foreliggende oppfinnelse systemer og fremgangsmåter for å tilveiebringe ett eller flere mellomliggende mål i forbindelse med datagrafikk i et datasystem. I forskjellige utførelsesformer tilveiebringer og benytter oppfinnelsen mellomliggende bufferlagre i videolageret for å muliggjøre serieanordnede programmer fra grafikk-API'er til å understøtte algoritmer som overskrider instruksjonsgrensene til prosedyreorienterte skyggeleggere for enkeltprogrammer. De mellomliggende buffere kan også tillate deling av data mellom programmer for andre formål, og er automatisk tilgengelige. Størrelsen til bufrene, dvs. den datamengde som er lagret i de mellomliggende mål, kan fastsettes variabelt for en variabel oppløsningsverdi i forhold trafikkdataene. I denne forbindelse genererer et eneste program mellomliggende som så kan brukes og gjenbrukes av en utvidelse av det samme program og/eller et hvilket som helst antall anrlre nrnnrammor ot hvilket «nm holet antall øinckoHo nannor f nr å miilinniaro ho-tydelig fleksibilitet og kompleksitet av skyggeleggingsprogrammer, samtidig som hastigheten til moderne trafikkbrikker oppholdes.
Ytterligere trekk og utførelsesformer fremkommer av de etterfølgende pa-tentkravene.
Andre trekk og utførelsesformer av foreliggende oppfinnelse blir beskrevet nedenfor.
KORT BESKRIVELSE AV TEGNINGENE
Systemet og fremgangsmåtene for å tilveiebringe mellomliggende lagringsmål i samsvar med foreliggende oppfinnelse, er nærmere beskrevet under henvisning til de vedføyde tegninger, hvor: fig. 1 gir en oversikt over prosessen for parallellbehandling av grafikk i et datagrafikksystem,
fig. 2A til 2C illustrer forskjellige begrensninger og problemer med tidligere kjente grafikk-parallellbehandlinger,
fig. 3A er et blokkskjema som representerer et eksempel på et nettmiljø med en rekke regneinnretninger hvor foreliggende oppfinnelse kan implementeres,
fig. 3B er et blokkskjema som representerer et eksempel på en ikke begrensende regneinnretning hvor foreliggende oppfinnelse kan implementeres,
fig. 4 illustrerer et eksempel på bruk av de mellomliggende lagringsmål i henhold til oppfinnelsen for å omgå en grense for antall maskinvareinstruksjoner,
fig. 5 er et eksempel på et flytskjema som illustrerer bruken av en API i samsvar med oppfinnelsen,
fig. 6 er et blokkskjema som illustrerer eksempler på aspekter ved de mellomliggende lagringsmål i henhold til oppfinnelsen, og
fig. 7 illustrerer et eksempel på bruk av mellomliggende lagringsmål for å oppnå kompleks funksjonalitet med flere programgjennomkjøringer av maskinvare i samsvar med oppfinnelsen.
DETALJERT BESKRIVELSE AV OPPFINNELSEN
Oversikt
Som beskrevet ovenfor muliggjør foreliggende oppfinnelse sirkulasjon av flere mellomliggende mål for bruk i skyggeleggingsspråk, slik som lavnivå skyggeleggingsspråk som gjør det mulig for en utvikler å programmere funksjonaliteten til prosessorienterte skyggeleggere. Grafikkplattformer som ikke har resirkulasjonen av mellomliggende mål i samsvare med oppfinnelsen, er begrenset med hensyn til størrelsen og kompleksiteten av programmer som opererer på et pr. piksel og et pr. verteks nivå. Systemene og fremgangsmåten ifølge oppfinnelsen gjør det mulig å frembringe et høynivåspråk for å abstrahere og forenkle bruk av de programmerbare kapasiteter i forbindelse med utviklingen av en generell parallellbehandling av programmerbar grafikk. Oppfinnelsen kan også brukes til å skape programmer av praktisk talt ubegrenset lengde som muliggjør gjengivelse i ikke-sanntid under bruk av maskinvare-akselerasjon. Størrelsen av bufferlagrene, dvs. den datamengde som er lagret i de mellomliggende mål, kan innstilles variabelt for en varierende oppløsningsstørrelse med hensyn til grafikkdataene. Tilgjengeligheten av ubegrenset maskinvare-akselerert resirkulasjon for gjengivelsesanven-delser som ikke er i sanntid, i samsvar med oppfinnelsen, øker således hastigheten og ytelsen til en grafikkplattform.
Eksempler på nettkoplede og distribuerte miljøer
En vanlig fagkyndig på området vil forstå at en datamaskin eller en annen klient eller serverinnretning kan anvendes som en del av et datanett, eller i et distribuert datamiljø. I denne forbindelse angår foreliggende oppfinnelse et hvilket som helst datamaskinsystem som har et hvilket som helst antall minne- eller lagringsenheter, og et hvilket som helst antall applikasjoner og prosesser som inntref-fer over et hvilket som helst antall lagringsenheter eller volumer, som kan brukes i forbindelse med de mellomliggende lagringsmål i henhold til oppfinnelsen. Foreliggende oppfinnelse kan angå et miljø med serverdatamaskiner og klientdatamaskiner utplassert i et nettmiljø eller et distribuert datamiljø, som har fjern-lagring eller lokallagring. Foreliggende oppfinnelse kan også anvendes på frittstå-ende beregningsinnretninger med programmeringsspråk-funksjonalitet, tolknings-og utførelsesmuligheter for å generere, motta og sende informasjon i forbindelse med fjerntliggende eller lokale tjenester.
Distribuerte beregningsanlegg deler datamaskinressurser og tjenester ved direkte utveksling mellom beregningsinnretninger og systemer. Disse ressursene og tjenestene innbefatter utveksling av informasjon, hurtiglagring og platelagring au filar rtietriKi ior+ haronninn traleUar ir\ rr{ a\ a\ a nattbrtnnob-tiwitat crtm niorr Hot mulin for klienter å trekke inn kollektiv kraft som er gunstig for hele foretaket. I denne forbindelse kan en rekke innretninger ha applikasjoner, objekter eller ressurser som kan implisere de mellomliggende laringsmål i henhold til oppfinnelsen.
Fig. 3A viser et skjematisk diagram av et eksempel på et nettkoplet eller distribuert datamiljø. Det distribuerte datamiljø omfatter beregningsobjekter 10a, 10b, osv., og beregningsobjekter eller innretninger 110a, 110b, 110c, osv. Disse objektene kan omfatte programmer, metoder, datalagre, programmerbar logikk, osv. Objektene kan omfatte deler av den samme eller forskjellige innretninger, slik som PDA'er, fjernsynsapparater, MP3-spillere, personlige datamaskiner, osv. Hvert objekt kan kommunisere med et annet objekt ved hjelp av kommunikasjonsnettet 14. Dette nettet kan selv omfatte andre beregningsobjekter og beregningsinnretninger som leverer tjenester til systemet på fig. 3A. I samsvar med et aspekt av oppfinnelsen kan hvert objekt 10a, 10b, osv. eller 110a, 110b, 110c, osv., inne-holde en applikasjon som kan gjøre bruk av en API eller et annet objekt for å an-mode om bruk av de mellomliggende lagringsmål i henhold til oppfinnelsen.
I en distribuert beregningsarkitektur kommuniserer datamaskiner som tradi-sjonelt kan ha blitt brukt kun som klienter, direkte innbyrdes og kan virke som både klienter og servere og innta en hvilken som helst rolle som er mest effektiv for nettet. Dette reduserer belastningen på servere og gjør det mulig for alle klientene å aksessere ressurser som er tilgjengelige på andre klienter, for derved å øke kapa-siteten og effektiviteten til hele nettet. Tjenester som benytter de mellomliggende mål i samsvar med foreliggende oppfinnelse, kan således være distribuert blant klienter og servere og virke på en måte som er effektiv for hele nettet.
Distribuert beregning kan hjelpe bedrifter med å levere tjenester og kapasiteter mer effektivt over diverse geografiske grenser. Distribuert beregning kan dessuten flytte data nærmere det punkt hvor dataene blir brukt, ved å virke som en hurtigbufferlagringsmekanisme i nettet. Distribuert beregning gjør det også mulig for datanett å arbeide sammen på en dynamisk måte ved å benytte intelligente agenter. Agenter befinner seg på likeverdige datamaskiner og kommuniserer forskjellige typer informasjon frem og tilbake. Agenter kan også innlede oppgaver på vegne av andre likeverdige systemer. Intelligente agenter kan f.eks. benyttes til å prioritere oppgaver på et nett, endre trafikkstrøm, søke etter filer lokalt eller bestemme uregelmessige oppførsel slik som et virus, og stoppe det før det påvirker nettet. Alle andre tvDer tjenester kan oaså tenkes. Siden ett eller flere grafiske objekter, teksturkart, skyggeleggingsdata, osv., i praksis kan befinne seg fysisk på ett eller flere steder, er evnen til å distribuere tjenester som gjør bruk av mellomliggende mål slik det beskrives her, av stor nytte i et slikt system.
Det skal også bemerkes at et objekt, slik som 110C, kan befinne seg på en annen beregningsinnretning 10a, 10b, osv. eller 110a, 110b, osv. Selv om det skisserte fysiske miljø kan vise de sammenkoplede innretninger som datamaskiner, er således en slik illustrasjon kun et eksempel, og det fysiske miljø kan alter-nativt skisseres eller beskrives som omfattende forskjellige digitale innretninger, slik som PDA'er fjernsynsapparater, MP3-spillere, osv., programvareobjekter slik som grensesnittanordninger, COM-objekter og lignende.
Det finnes en lang rekke systemer, komponenter og nettkonfigurasjoner som understøtter distribuerte beregningsmiljøer. Datasystemer kan f.eks. koples sammen ved hjelp av ledning eller være trådløse systemer, ved hjelp av lokalnett eller bredt distribuerte nett. Mange av nettene er for tiden koplet til internett som utgjør infrastrukturen for meget distribuert beregning og som omfatter mange forskjellige nett.
I visse nettmiljøer er det minst fire forskjellige transportmedier i nettet som hvert kan understøtte en unik protokoll, slik som kraftlinje-, data- (både trådløse og ledningsførte), tale (f.eks. telefon) og underholdningsmedia. De fleste styrings-innretninger i hjemmet, slik som lysbrytere og apparater kan benytte en kraftled-ning til sammenkopling. Datatjenester kan komme inn i hjemmet som bredbånd (f.eks. enten DSL eller kabelmodem) og er tilgjengelige i hjemmet ved å benytte enten trådløs (f.eks. HomeRF eller 802.11b) eller ledningsført (f.eks. Home PNA, Cat 5, også kraftlinje) konnektivitet. Taletrafikk kan komme inn i hjemmet enten som ledningsført (f.eks. Cat 3) eller trådløs (f.eks. mobiltelefoner) og kan distribueres innenfor hjemmet ved å bruke Cat 3-ledningsføring. Underholdningsmedia eller andre grafiske data kan komme inn i hjemmet enten via satellitt eller kabel og blir typisk distribuert i hjemmet ved å benytte koaksialkabel. IEEE 1394 og DVI er også i ferd med å dukke opp som digitale tilknytninger av grupper med media-innretninger. Alle disse nettmiljøene og andre som kan dukke opp som protokoll-standarder, kan være sammenkoplet for å danne et intranett som kan koples til verden utenfor ved hjelp av internett. Det finnes kort sagt en rekke kilder for lagring og overføring av data, og følgelig vil beregningsinnretninger ved fremflytting kreve måter å dele data på, slik som data aksessert eller utnyttet i program-objekter som gjør bruk av mellomliggende resultater for mellomliggende mål i samsvar med foreliggende oppfinnelse.
Internett refererer vanligvis til samlingen av nett og portaler som benytter
TCP/IP-protokollene som er velkjente på datanett-området. TCP/IP er en forkortel-se for "Transport Control Protocol/lnterface Program". Internett kan beskrives som et system av geografisk distribuerte fjerndatanett sammenknyttet av datamaskiner som utfører nettprotokoller som gjør det mulig for brukere å vekselvirke og dele informasjon over nettene. På grunn av slik utbredt informasjonsdeling har fjernnett, slik som internett, så langt utviklet seg til et hovedsakelig åpent system for hvilke utviklere kan utforme brukerprogrammer for å utføre spesialiserte operasjoner eller tjenester, hovedsakelig uten restriksjoner.
Nettinfrastrukturen gjør det således mulig for en nettopologi-vert slik som klient/tjener-likemann-til-likemann- eller hybrid-arkitekturer. "Klienten" er et med-lem av en klasse eller gruppe som benytter tjenestene til en annen klasse eller gruppe som den ikke er relatert til. Ved beregning er således en klient en prosess, det vil grovt si et sett med instruksjoner eller oppgaver som etterspør en tjeneste levert av et annet program. Klientprosessen benytter den etterspurte tjeneste uten å måtte "vite" om detaljer ved det andre programmet eller selve tjenesten. I en klient/server-arkitektur, spesielt et nettsystem, er en klient vanligvis en datamaskin som aksesserer delte nettressurser fremskaffet av en annen datamaskin, f.eks. en server. I eksempelet på fig. 3A kan datamaskinene 110a, 110b, osv. tenkes på som klienter, og datamaskinene 10a, 10b osv. kan tenkes på som serveren hvor server 10a, 10b, osv. opprettholder dataene som så blir kopiert i klientdatamaskinene 110a, 110b, osv.
En server er typisk et fjerntliggende datamaskinsystem som kan aksesseres over et fjernnett slik som internett. Klientprosessen kan være aktiv i et første datasystem, og serverprosessen kan være aktiv i et annet datasystem som kommuniserer med hverandre over et kommunikasjonsmedium for derved å fremskaffe distribuert funksjonalitet og gjøre det mulig for flere klienter å trekke fordel av de informasjonssamlende egenskapene til serveren.
Klient og server kommuniserer med hverandre ved å benytte den funksjonalitet som fremskaffes ved hjelp av et protokollag. Hypertekst-transferprotokoll (HTTP) er en vanlig protokoll som blir brukt i forbindelse med verdensveven (World Wide Web. WWW). En adresse i et datanett, slik som en universell res-surslokalisator (URL) eller en internettprotokolladresse (IP-adresse) blir typisk brukt til å identifisere server- eller klientdatamaskinene for hverandre. Nettadres-sen kan refereres til som en URL-adresse. Kommunikasjon kan f.eks. tilveiebrin-ges over et kommunikasjonsmedium. Spesielt kan klienten og serveren være koplet til hverandre via TCP/IP-forbindelser for kommunikasjon med høy kapasitet.
Fig. 3A illustrerer et eksempel på et nettkoplet eller distribuert miljø med en server i kommunikasjon med klientdatamaskiner via et nett eller en buss hvor foreliggende oppfinnelse kan anvendes. Mer detaljert er et antall servere 10a, 10b osv., sammenkoplet via et kommunikasjonsnett eller en buss 14 som kan være et LAN, WAN, intranett, internett, osv., med et antall klient- eller fjerntliggende beregningsinnretninger 110a, 110b, 110c, 11 Od, 11 Oe, osv., slik som en bærbar datamaskin, en håndholdt datamaskin, en tynn klient, en nettilkoplet innretning eller en annen anordning slik som en VCR, TV, en ovn, en lampe, en oppvarmings-innretning og lignende i samsvar med foreliggende oppfinnelse. Det er således tenkt at foreliggende oppfinnelse kan angå enhver beregningsinnretning som det ønskes å behandle ett eller flere grafiske objekter i forbindelse med.
I et nettmiljø hvor kommunikasjonsnettet eller bussen 14 er internett, kan f.eks. serverne 10a, 10b, osv. være nettservere med hvilke klientene 110a, 110b, 110c, 110d, 110e, osv. kommuniserer via ett av et antall protokoller slik som HTTP. Server 10a, 10b, osv. kan også tjene som klienter 110a, 110b, 110c, 11 Od, 110e, osv., som kan være karakteristiske for et distribuert beregningsmiljø. Kommunikasjoner kan være ledningsførte eller trådløse slik det passer. Klientinnret-ningene 110a, 110b, 110c, 11 Od, 11 Oe, osv., kan kommunisere eller ikke kommunisere via kommunikasjonsnettet/bussen 14, og kan være tilknyttet uavhengige kommunikasjoner. I tilfelle med en TV eller VCR kan det f.eks. være eller ikke være et nettaspekt i forbindelse med styringen. Hver klientdatamaskin 110a, 110b, 110c, 110d, 110e, osv., og serverdatamaskin 10a, 10b, osv., kan være utstyrt med forskjellige brukerprogrammoduler eller objekter 135 og med forbindelser eller tilgang til forskjellige typer lagringselementer eller objekter, over hvilke filer kan lagres eller til hvilke én eller flere deler av filer kan lastes ned eller migreres. En hvilken som helst datamaskin 10a, 10b, 110a, 110b, osv., kan være ansvarlig for å opprettholde og oppdatere en database 20 eller et annet lagringselement i samsvar med foreliggende oppfinnelse, slik som en database eller et minne 20 for lag-rina av arafikkobiekter eller mellomliaaende arafikkobiekter eller data som er be-handlet i henhold til oppfinnelsen. Foreliggende oppfinnelse kan således benyttes i et datanettmiljø med klientdatamaskiner 110a, 110b, osv., som kan aksessere og vekselvirke med datanettet/bussen 14 og serverdatamaskinene 10a, 10b, osv. som kan vekselvirke med klientdatamaskiner 110a, 110b, osv. og andre lignende innretninger, og databasene 20.
Eksempel på bereaninasinnretning
Fig. 3B og den følgende diskusjon er ment å gi en kort generell beskrivelse av et egnet datamiljø hvor oppfinnelsen kan implementeres. Det skal imidlertid bemerkes at håndholdte, bærbare og andre beregningsinnretninger og beregningsobjekter av alle typer er tenkt for bruk i forbindelse med foreliggende oppfinnelse. Selv om en universaldatamaskin er beskrevet nedenfor, er dette kun et eksempel, og foreliggende oppfinnelse kan implementeres med en tynn klient som kan arbeide sammen med og vekselvirke med en nett eller en buss. Foreliggende oppfinnelse kan således implementeres i et miljø av nettilknyttede vertstjenester hvor meget små eller minimale klientressurser er implisert, f.eks. et nettmiljø hvor en klientinnretning kun tjener som et grensesnitt til nettet/bussen, slik som et objekt plassert i et apparat. Alle steder hvor data kan lagres eller hvorfra data kan hentes er hovedsakelig et ønsket eller egnet miljø for drift av de parallelle grafikkteknikker i henhold til oppfinnelsen.
Selv om det ikke er nødvendig, kan oppfinnelsen implementeres via et operativsystem for bruk av en utvikler av tjenester for en innretning eller et objekt, og/eller innbefattet i brukerprogramvare som opererer i forbindelse med mellomliggende mål i henhold til oppfinnelsen. Oppfinnelsen kan også implisere utfor-mingen av verteks-skyggeleggere og piksel-skyggeleggere så vel for å vekselvirke med de mellomliggende mål i oppfinnelsen. Programvare kan beskrives i den generelle forbindelse med datamaskinutførbare instruksjoner, slik som programmoduler som utføres av én eller flere datamaskiner, slik som klientarbeids-stasjoner, servere eller andre innretninger. Programmoduler innbefatter generelt rutiner, programmer, objekter, komponenter, datastrukturer og lignende som ut-fører spesielle oppgaver eller implementerer spesielle abstrakte datatyper. Funksjonaliteten til programmodulene kan kombineres eller distribueres etter ønske i forskjellige utførelsesformer. Fagkyndige på området vil dessuten forstå at oppfin-nolcon Iran nralrticoroc mori anrlro iitfrtrminnor a\/ rlatacwctomor Anrlro wollrionto datasystemer, miljøer og/eller utforminger som kan være egnet for bruk i forbindelse med oppfinnelsen, innbefatter, men er ikke begrenset til, personlige datamaskiner (PCer), minibanker, serverdatamaskiner, håndholdte eller bærbare innretninger, multiprosessorsystemer, mikroprosessorbaserte systemer, programmerbar forbrukerelektronikk, nettilkoplede PCer, husholdningsapparater, lys, mil-jøreguleringselementer, minidatamaskiner, stormaskiner og lignende. Oppfinnelsen kan også praktiseres i distribuerte beregningsmiljøer hvor oppgaver blir utført av fjerntliggende behandlingsinnretninger som er tilknyttet gjennom et kommunikasjonsnett eller en buss eller andre dataoverføringsmedier. I et distribuert bereg-ningsmedium kan programmoduler være lokalisert i både lokale og fjerntliggende datalagringsmedia, innbefattende minnelagringsinnretninger og klientnoder kan igjen oppføre seg som servernoder.
Fig. 3B illustrerer således et eksempel på et passende beregningssystem-miljø 100 som oppfinnelsen kan implementeres i, selv om, slik det er gjort klart i det ovenstående, beregningssystemmiljøet 100 bare er et eksempel på et egnet beregningsmiljø, og ikke er ment å antyde noen begrensning vedrørende omfang-et når det gjelder anvendelse eller funksjonalitet for oppfinnelsen. Heller ikke skal beregningsmiljøet 100 tolkes til å ha noen avhengighet eller noen behov hva angår eventuelle komponenter eller kombinasjoner av komponenter slik som illustrert i det eksempelvise driftsmiljøet 100.
Med henvisning til fig. 3B innbefatter således et eksempel på et system for implementering av oppfinnelsen, en generell databeregningsinnretning i form av en datamaskin 110. Komponenter i datamaskinen 110 kan innbefatte, men er ikke begrenset til, en prosesseringsenhet 120, et systemminne 130 og en systembuss 121 som kopler sammen forskjellige systemkomponenter, innbefattende systemminne og prosesseringsenheten 120. Systembussen 121 kan være en hvilken som helst av flere typer busstrukturer som innbefatter en minnebuss eller en min-nekontroller, en periferibuss og en lokalbuss som benytter én av en rekke buss-arkitekturer. Som et eksempel, og ikke begrensende, innbefatter slike arkitekturer Industry Standard Architecture (ISA)-bussen Micro Channel Architecture (MCA)-bussen, Enhanced ISA (EISA)-bussen, Video Electronics Standards Association (VESA)-lokalbussen og Peripheral Component Interconnect (PCI)-bussen (også kjent som Mezzanine-bussen).
Datamaskinen 110 innbefatter typisk en rekke datamaskinlesbare media. Datamaskinlesbare media kan være et hvilket som helst tilgjengelig medium som kan aksesseres av datamaskinen 110 og innbefatter både flyktige og ikke-flyktige media, fjernbare og ikke-fjernbare media. Som et ikke begrensende eksempel kan datamaskinlesbare media omfatte lagringsmedia for datamaskiner og kommunikasjonsmedia. Lagringsmedia for datamaskiner innbefatter både flyktige og ikke-flyktige, fjernbare og ikke-fjernbare media implementert i henhold til en hvilken som helst metode eller teknologi for lagring av informasjon, slik som datamaskinlesbare instruksjoner, datastrukturer, program moduler eller andre data. Lagringsmedia for datamaskiner innbefatter, men er ikke begrenset til, RAM, ROM, EEPROM, flashminne eller annen minneteknologi, CDROM, digitale versatile pla-ter (DVD) eller andre optiske platelagre, magnetkassetter, magnetbånd, magnetiske platelagre eller andre magnetiske lagringsinnretninger eller et hvilket som helst annet medium som kan brukes til å lagre den ønskede informasjon og som kan aksesseres ved hjelp av datamaskinen 110. Kommunikasjonsmedia innbefatter typisk datamaskinlesbare instruksjoner, datastrukturer, programmoduler og andre data i et modulert datasignal, slik som en bærebølge eller en annen transport-mekanisme, og innbefatter ethvert informasjonsleveringsmedium. Uttrykket "modulert datasignal" betyr et signal som har ett eller flere av sine kjennetegn innstilt eller endret på en slik måte at informasjon kodes inn i signalet. Som et ikke begrensende eksempel innbefatter kommunikasjonsmedia ledningsførte media slik som ledningsnett eller direktekoplede forbindelser, og trådløse media slik som akustis-ke, radiofrekvente, infrarøde og andre trådløse media. Kombinasjoner av noen av de ovennevnte skal også innbefattes innenfor begrepet datamaskinlesbare media.
Systemminnet 130 innbefatter lagringsmedia for datamaskiner i form av flyktige og/eller ikke-flyktige lagre, slik som leselagre (ROM) 131 og direktelagre (RAM) 132. Et grunnleggende inn/ut-system 133 (BIOS) som inneholder de grunnleggende rutiner som bidrar til å overføre informasjon mellom elementer innenfor en datamaskin 110, slik som under start, er typisk lagret i ROM 131, RAM 132, som typisk inneholder data og/eller programmoduler som er umiddelbart tilgjengelige for og/eller som for tiden blir operert på av prosesseringsenheten 120. Som et ikke begrensende eksempel illustrerer fig. 3B et operativsystem 134, brukerprogrammer 135 eller andre programmoduler 136 og programdata 137.
Datamaskinen 110 kan også innbefatte andre fjernbare/ikke-fjernbare, flyktige/ikke-flyktige lagringsmedia for datamaskiner. Som et eksempel illustrerer fig. 3B en harddiskstasjon 141 som leser fra eller skriver til ikke-fjernbare, ikke-flyktige magnetiske media, en diskettstasjon 151 som leser fra eller skriver til en fjernbar, ikke-flyktig magnetisk plate 152, og en optisk platestasjon 155 som leser fra eller skriver til en fjernbar, ikke-flyktig optisk plate 156, slik som en CD-ROM eller andre optiske media. Andre fjernbare/ikke-fjernbare, flyktige/ikke-flyktige lagringsmedia for datamaskiner som kan brukes i eksempelet på operativmiljø, innbefatter, men er ikke begrenset til, magnetbåndkassetter, flashminnekort, digitale versatile pla-ter, digitale videobånd, faststoff-RAM, faststoff-ROM og lignende. Harddiskstasjonen 141 er typisk koplet til systembussen 121 gjennom et ikke fjernbart lagergren-sesnitt, slik som grensesnittet 140, og diskettstasjonen 151 og den optiske platestasjon 155 er typisk koplet til systembussen 121 ved hjelp av et fjernbart lager-grensesnitt, slik som grensesnittet 150.
Stasjonene og deres tilhørende lagringsmedia som er diskutert ovenfor og illustrert på fig. 3B, tilveiebringer lagring av datamaskinlesbare instruksjoner, datastrukturer, programmoduler og andre data for datamaskinen 110. På fig. 3B er f.eks. harddiskstasjonen 141 illustrert som om den lagrer operativsystemet 144, brukerprogrammene 145, andre programmoduler 146 og programdata 147. Legg merke til at disse komponentene enten kan være de samme som eller forskjellige fra operativsystemet 134, brukerprogrammene 135, andre programmoduler 136 og programdataene 137. Operativsystemet 144, brukerprogrammene 145, de andre programmodulene 146 og programdataene 147 er gitt forskjellige tall her for å illu-strere at de i det minste er forskjellige kopier. En bruker kan innføre kommandoer og informasjon i datamaskinen 110 gjennom innmatingsinnretninger slik som et tastatur 162 og en pekerinnretning 161, vanligvis kalt en mus, styrekule eller et folietastatur. Andre innmatingsinnretninger (ikke vist) kan innbefatte en mikrofon, en styrepinne, et spilltastatur, en satellittantenne, en skanner eller lignende. Disse og andre innmatingsinnretninger blir ofte koplet til prosesseringsenheten 120 gjennom et brukerinnmatingsgrensesnitt 160 som er koplet til systembussen 121, men kan være tilkoplet ved hjelp av andre grensesnitt- og buss-strukturer, slik som en parallellport, en spilleport og en universell seriebuss (USB). Et grafikkgrensesnitt 182, slik som Northbridge, kan også være koplet til systembussen 121. North-bridae er et brikkesett som kommuniserer med CPU. eller vertsDrosesserinasen-heten 120, og som har ansvaret for akselerert grafikkport-kommunikasjoner (AGP-kommunikasjoner). Én eller flere grafikkprosesseringsenheter (GPLTer) 184 kan kommunisere med grafikkgrensesnittet 182.1 denne forbindelse innbefatter vanligvis GPlTer 184 innebygde lagringsanordninger, slik som registerlagre, og GPU'er 184 kommuniserer med et videominne 186 hvor de mellomliggende mål i henhold til oppfinnelsen kan være implementert. GPlTer 184 er imidlertid kun et eksempel på en koprosessor, og en lang rekke koprosessorinnretninger kan således være innbefattet i datamaskinen 110 og kan innbefatte en lang rekke prosedyreorienterte skyggeleggere, slik som piksel- og verteks-skyggeleggere. En monitor 191 eller en annen type visningsinnretning er også koplet til systembussen 121 via et grensesnitt, slik som et videogrensesnitt 190, som igjen kan kommunisere med videominnet 186.1 tillegg til monitoren 191 kan datamaskiner innbefatte andre perifere utmatingsinnretninger, slik som høyttalere 197 og skrivere 196, som kan være koplet gjennom et perifert utgangsgrensesnitt 195.
Datamaskinen 110 kan operere i et nettilknyttet eller distribuert miljø ved å benytte logiske forbindelser til én eller flere fjerntliggende datamaskiner, slik som en fjerntliggende datamaskin 180. Den fjerntliggende datamaskin 180 kan være en personlig datamaskin, en server, en ruter, en nett-PC, en likeverdig innretning eller en annen felles nettnode, og innbefatter typisk mange av eller alle de elementer som er beskrevet ovenfor i forbindelse med datamaskinen 110, selv om bare én lagringsinnretning 181 er blitt illustrert på fig. 3B. De logiske forbindelser som er skissert på fig. 3B, innbefatter et lokalnett (LAN) 171 og et regionnett (WAN) 173, men kan også innbefatte andre nett/busser. Slike nettkoplingsmiljøer er vanlige i hjem, på kontorer, på datanett innenfor bedrifter, intranett og internett.
Ved bruk i et LAN-nettmiljø er datamaskinen 110 koplet til LAN 171 gjennom et nettgrensesnitt eller en adapter 170. Brukt i et WAN-nettmiljø innbefatter datamaskinen 110 typisk et modem 172 eller et annet middel for å opprette kommunikasjoner over WAN 173, slik som internett. Modemet 172, som kan være in-ternt eller eksternt, kan være koplet til systembussen 121 via brukerinnmatings-grensesnittet 160, eller en annen passende mekanisme. I et nettmiljø kan programmoduler skissert i forhold til datamaskinen 110 eller deler av disse, være lagret i den fjerntliggende lagringsinnretning. Som et ikke begrensende eksempel illustrerer fig. 3B fjerntliggende brukerprogrammer 185 som befinner seg på en lag-rinasinnretninq 181. Man vil forstå at de viste nettforbindelser bare er eksempler. og at andre anordninger for å opprette kommunikasjonsforbindelser mellom datamaskinene kan benyttes.
Eksempel på distribuerte bereaninqsstrukturer eller - arkitekturer
Forskjellige distribuerte beregningsstrukturer er blitt og blir utviklet i lys av sammensmeltingen mellom personlig databehandling og internett. Individuelle brukere og bedriftsbrukere er forsynt med et sømløst virkende og nettilkoplet grensesnitt for applikasjons- og beregningsinnretninger, noe som gjør beregnings-aktiviteter nettleser- eller nettorienterte i stadig økende grad.
MICROSOFTs.NET-plattform innbefatter f.eks. servere, byggeblokktjenes-ter slik som nettbasert datalagring og nedlastbar programvare for innretninger. Generelt sagt tilveiebringer NET-plattformen (1) evnen til å få hele området med beregningsinnretninger til å arbeide sammen og automatisk oppdatere bruker-informasjon og synkronisere alle, (2) øket interaktiv mulighet for nettsteder, gjort mulig av større bruk av XML istedenfor HTML (3) onlinetjenester som gir kunde-tilpasset aksess og levering av produkter og tjenester til brukeren fra et sentralt startpunkt for administrasjonen av forskjellige applikasjoner, slik som e-post f.eks., eller programvare slik som Office.NET, (4) sentralisert datalagring som vil øke effektiviteten og lette tilgang til informasjon, samt synkronisering av informasjon blant brukere og innretninger, (5) evnen til å integrere forskjellige kommunikasjonsmedia, slik som e-post, faks og telefoner, (6) for utviklere, muligheten til å skape gjenbrukbare moduler for derved å øke produktiviteten og redusere antallet programmeringsfeil, og (7) mange andre kryssplattform-integrasjonsegenskaper.
Selv om utførelseseksempler her blir beskrevet i forbindelse med programvare som befinner seg på en beregningsinnretning, kan én eller flere deler av oppfinnelsen også implementeres via et operativsystem, et brukerprogrammerings-grensesnitt (API, application programming interface) eller et "mellommann"-objekt mellom en koprosessor og et etterspørrende objekt, slik at regulerbare tekstur-samplingstjenester kan utføres av, understøttes i eller aksesseres via alle NET's språk og tjenester, og i andre distribuerte beregningsstrukturer også. Et annet aspekt ved oppfinnelsen er i tillegg selve de mellomliggende mål som befinner seg i videominner så vel som grafikkarkitekturen som tillater prosedyreorienterte skyggeleggere å motta programmer fra API og omsette dem til forskjellige mellom-linnonHo mål
Sirkulasjon av flere mellomliggende mål
Systemene og fremgangsmåtene i henhold til oppfinnelsen muliggjør frem-bringelse av et høynivåspråk for å abstrahere og forenkle bruk av programmerbare egenskaper i forbindelse med utviklingen av en generell, programmerbar parallellbehandling av grafikk. Oppfinnelsen muliggjør således en plattform som tillater et meget bredere område av grafikkteknikker å bli uttrykt av utvikleren, men som ut-føres ved et meget høyt ytelsesnivå av grafikkmaskinvaren.
Grafikkplattformer som ikke har resirkulasjon av mellomliggende mål i samsvar med oppfinnelsen, er begrenset i størrelsen og kompleksiteten til programmer som opererer på et pr. piksel og pr. verteks nivå fra et ytelsesperspektiv, ved at ytterligere gjennomkjøringer av dataene er nødvendig for å oppnå et lignende resultat. Visse programmer som implementerer belysningseffekter eller lignende transformasjoner, er f.eks. begrenset til grafikk som ikke er i sanntid, uten foreliggende oppfinnelse på grunn av kompleksiteten og/eller lengden av de involverte programmer. Som illustrert på fig. 4 overskrider et forholdsvis komplekst skygge-leggerprogram SP den maksimale instruksjonsgrensen for maskinvaren, f.eks. en piksel-skyggelegger, som inngår, og følgelig er utvikleren uten hjelp fra oppfinnelsen overlatt til å implementere transformasjonen ved hjelp av vertsprosessoren, som kan være eller kanskje ikke er hurtig nok for sanntidsbehov. Selv om bruken av mellomliggende mål MRT1 og MRT2 som kan ha variabel størrelse i samsvar med oppfinnelsen, kan utvikleren i virkeligheten bryte ned programmet SP i deler SPP1, SPP2 og SPP3, hvorav ingen individuelt overskrider instruksjonsgrensen for maskinvaren, men som kollektivt utfører funksjonaliteten til SP ved å mate ut og gjenbruke mellomliggende resultater. SPP1 mater f.eks. ut mellomliggende resultater til mellomliggende mål MRT1, som tjener som en inngang til programdelen SPP2, som så mater ut mellomliggende resultater til det mellomliggende mål MRT2, som igjen tjener som en inngang til programdelen SPP3, som så mater ut de ønskede, transformerte data. Oppfinnelsen kan således brukes til å skape programmer av praktisk talt ubegrenset lengde som muliggjør gjengivelse i ikke-sanntid ved bruk av maskinvareakselerasjon. Tilgjengeligheten av ubegrenset akselerert resirkulasjon av maskinvare for gjengivelse i ikke-sanntid i forbindelse med oppfinnelsen, øker således hastigheten og ytelsen til en grafikkplattform.
Muligheten til å resirkulere dataene i MRTene til et hvilket som helst program som en innmating et hvilket som helst antall ganger, betyr dessuten at itera-tive operasjoner og gjenbruk av mellomliggende data uten ny beregning kan oppnås ved hjelp av et hvilket som helst program. Videre er formatet til dataene i de mellomliggende mål fastsatt av utvikleren slik at MRT1 kan innbefatte rød-, grønn-, blå fargedata, men MRT2 kan innbefatte data som er fullstendig irrelevante med hensyn til farge, f.eks. kan dataene ha å gjøre med en kompleks posisjonsfunksjon eller vekt. Som nevnt ovenfor kan også størrelsen av bufrene, dvs. den mengde med data som er lagret i de mellomliggende mål, være variabelt innstillbar for en varierende oppløsningsmengde for grafikkdataene.
Som brukt her er flere resirkuleringsmål (MRTer) i henhold til oppfinnelsen teksturer som blir brukt som buffere. Bufrene kan brukes som innmatinger til og utmatinger fra et pr. piksel program, vanligvis kalt en "piksel-skyggelegger". Et enkelt pikselskyggelegger-program kan samtidig mate inn fra et hvilket som helst av disse MRTene i form av teksturer samtidig med utmating av et hvilket som helst antall andre MRTer som opptrer som gjengivelsesmål. Antallet av disse distinkte bufferlagrene er bare begrenset av maskinvaren og størrelsen til videominnet, og dermed kan disse bufrene være ganske tallrike.
Eksempler på komponenter i henhold til oppfinnelsen, innbefatter: (1) ett eller flere pikselskyggeleggerprogrammer som har evnen til å sample teksturer og mate ut til mange gjengivelsesmål i tillegg til en valgfri, endelig delbildebuffer-utmating, og (2) ett eller flere resirkuleringsbufre som kan være knyttet til piksel-skyggeleggerprogrammet eller -programmene som gjengivelsesmål for utmating eller teksturer for innmating.
Ikke- begrensende utførelsesformer
Det følgende er ikke-begrensende programvareimplementeringer av oppfinnelsen som benytter de ovennevnte komponenter i henhold til oppfinnelsen. I denne forbindelse uttrykker oppfinnelsen MRTer i minst to former for å romme variasjoner i maskinvare. Implementeringene innbefatter en form beskrevet som en MET-form og en form beskrevet som en MRT-form. MET-formen er en enklere form. I MET-tilfellet blir de mellomliggende, fire komponentutmatingene som generelt er tilknyttet et fargeelement, skrevet til en eneste overflate på en innfelt måte. I MRT-tilfellet kan rie individuelle farneelementer være hnnriet til individuelle nve r-flater separat. Disse overflatene kan variere i format for hvert fargeelement på den måte som er optimal for den teknikk som uttrykkes ved hjelp av pikselskyggelegger-programmet.
Ikke- begrensende MET API
For formålet med MET API blir tradisjonelle teksturer ansett å være enkle elementteksturer som gjør det mulig for applikasjoner å skrive til flere elementer for en tekstur samtidig fra piksel-skyggeleggeren, slik at i neste gjengivelses-kjøring kan en applikasjon bruke ett eller flere av disse elementene som en enkelt-elementtekstur, dvs. som innmating til piksel-skyggeleggeren. Disse ytterligere elementer kan tenkes på som et midlertidig lager for mellomliggende resultater som vil bli brukt i en senere gjennomkjøring av applikasjonen.
Eksempler på ikke-begrensende bruk av MET'er er illustrert ved hjelp av
pseudokodeflytskjemaet på fig. 5. Ved 500 oppdager en applikasjon understøttel-se for de mellomliggende mål ved å kontrollere tilgjengeligheten av MET-formater. Ved 510 skaper applikasjonen MET-overflåtene ved et anrop til en "lag overflate"-funksjon. Ved 520 fastsetter applikasjonen en MET som et gjengivelsesmål via et anrop til en "fastsett gjengivelsesmål"-funksjon. Piksel-skyggeleggeren 230 mates ut til overflaten ved bruk av en flyttinstruksjon. Ved 530 blir en "fastsett tekst-funksjon anropt for å fastsette en MET-overflate til et spesielt trinn. I likhet med andre teksturer kan den samme overflate fastsettes til flere trinn på en gang. Ved 540 blir en "fastsett samplertilstand"-funksjon anropt for å fastsette en D3DSAMP_ELEMENTINDEX-variable til det riktige elementantall i den MET-tekstur hvorfra sampleren sampler, hvorved standardverdien for samplertilstanden er 0, noe som betyr at ikke-MET-teksturer vil virke. En "gyldig innretning"-funksjon anroper rapporter om fastsettelsen av denne tilstanden til et ikke riktig antall, f.eks. hvis MET bare har en bredde på to elementer, men sampleren blir spurt om å
sample fra det fjerde element.
Det følgende er en ikke-begrensende API som understøtter MET-egenskapen. Det er overflateformater i likhet med de som er vist nedenfor, som uttrykker innfellingsevnen til formatet
// innfelte overflateformater som kortet kan understøtte
D3DFMT_MULTI2_ARGB8 = MAKEFOURCC(,M','E',T,'1,))
mnFMT Ml II TIA ARfiRfl = MAKFFOI IRP.fVM' 'F'T'
// Samplertilstand for å indikere hvilke elementer som skal tas opp.
D3DSAMP_ELEMENTINDEX
// Gjengivelsestilstander
// D3DRS_COLORWRITEENABLE gjelder gjengivelsesmål (eller element) null.
D3DRS_COLORWRITEENABLE1
D3DRS_COLORWRITEENABLE2
D3DRS_COLORWRITEENABLE3
// Valgfrie, spesifikke innretningsdeksler
D3DPMISCCAPSJNDEPENDENTWRITEMASKS // sann hvis innretningen kan understøtte uavhengige skrivemasker.
Ikke- begrensende flere aienaivelsesmål ( MRT)- API
Mange implementeringer understøtter en mindre restriktiv form for MET, her kalt MRT. En slik relaksasjon er muligheten til å ha flere gjengivelsesmål som kan skapes uavhengig. Disse gjengivelsene kan ha forskjellige formater. For tiden understøtter noen tredimensjonale grafikk-API'er et enkelt gjengivelsesmål som kan innstilles via det på forhånd eksisterende "fastsett gjengivelsesmål"-API. I samsvar med oppfinnelsen er dette API-inngangspunktet blitt utvidet for å tillatte flere gjengivelsesmål å være tilstede samtidig i innretningen. En ny stor bokstav uttrykker denne egenskapen.
De følgende oCn-registre nedenfor representerer eksempler på forskjellige elementer i en MET-tekstur: (a) oCO: farge 0 (element 0), (b) oC1: farge 1 (element 1), (c) oC2: farge 2 (element 2), (d) oC3: farge 3 (element 3) og (e) oDybde: ny dybdeverdi for dybdetest mot dybdestensil-buffer. oCx-registre kan skrives til ved å benytte en flyttinstruksjon.
Eksempler på ikke-begrensende prosedyrer for en MRT API følger: IDirect3DDevice9::SetRenderTarget( DWORD RenderTargetlndex, I Di rect3DSu rf ace9* pRende rTarget); ;IDirect3DDevice9::GetRenderTarget (DWORD RenderTargetlndex, IDirect3DSurface9* ppRenderTarget);
// Innretningsspesifikt deksel
D3DCAPS9.NumSimultaneousRTs //1 for alle bortsett fra den som kan understøt-te dette trekket. Aldri 0.
// Flytt instruksjon
Move: mov
Token Format: 1 opcode token - D3DSIO_MOV (instr.length field set to: 2)
1 destinasjonstegn
1 kildetegn
Instruction: movLsat] dst[.mask], [-]srcO[.swizzle]
Det følgende innbefatter et eksempel på pseudokode-beskrivelse for en kompo-nentorientert flytting:
Operation: dst = srcO
dst can be r#/oC#/oDepth
srcO can be r#/c#/v#&t#
Eksempel på bruk av de mellomliggende mål
Fig. 6 illustrerer at med de mellomliggende mål i henhold til oppfinnelsen, kan et antall mellomliggende mål skapes som utmatinger fra pikselmotoren, med varierende informasjonsblokker, i motsetning til de tidligere kjente pikselmotortek-nikker. Dessuten kan dataene i de mellomliggende mål bevares uendelig og kan følgelig gjenbrukes senere. Pikslene P1 til PN kan f.eks. lagre R,- G- og B-pikselverdier og plasseres i det mellomliggende mål IT1. Pikslene PW til PX kan lagre belysningsverdier og plasseres i det mellomliggende mål IT2, og pikslene PY til PZ kan lagre ett eller annet mellomliggende resultat og plasseres i det mellomliggende mål IT3. Dataene i hvert av de mellomliggende mål IT1, IT2 og IT3 kan
gjenbrukes av det samme eller forskjellige programmer eller deler av programmer, og således kan en rekke komplekse skyggeleggingseffekter oppnås. Maskinvaren, f oke nrafikkhrikkon enm innhofattor an vortokc-ekv/nnolonnor nn on nikeol-
skyggelegger, mater ut informasjon til eller mater inn informasjon fra det ene eller de flere mellomliggende mål i samsvar med utviklerens spesifikasjon via API'ene.
Som et eksempel på en mer kompleks operasjon som kan oppnås i samsvar med oppfinnelsen, illustrerer fig. 7 et mellomliggende mål MRT1 som har vart en viss tid og som blir anmodet om å være en innmating til en første programgjen-nomkjøring 1, som benytter MRT1 som et mellomliggende inn- og ut-mål MRT2. Deretter eller på forhånd benytter programgjennomkjøringen 2 MRT1 som en inngang og mater ut mellomliggende mål MRT3.1 tillegg mater programgjennom-kjøring 3 ut det mellomliggende mål MRT4 uten innmating. Til slutt utfører programgjennomkjøring 4 en viss operasjon som benytter MRT2, MRT3 og MRT4 som innganger til maskinvaren. Flere MRTer blir brukt for å gjøre det mulig for flere pikselprogrammer å dele mellomliggende data på en mer kompleks måte. Dette demonstrerer at levetiden til MRTen er totalt opp til krav fastsatt av utvikleren.
Programmet begynner med andre ord med gjennomgangl (Passi). Data blir lest fra MRT1 (som ble laget en gang tidligere av et eller annet program). Gjen-nomkjøringl utfører en programmert algoritme og frembringer MRT2. Gjennomkjø-ring2 benytter igjen MRT1 og utfører en annen algoritme for å frembringe MRT3. Gjennomkjøring3 genererer algoritmisk MRT4 uten innmating. Gjennomkjøring4 (den siste gjennomkjøring) kombinerer data fra MRT2, MRT3 og MRT4 for til slutt å avgi de korrekte fargedata til delbildebufre, en meget mer komplisert skygge-leggingseffekt enn hva som noen gang kan oppnås med grafikkmaskinvare som er beheftet med begrensningene i henhold til teknikkens stand.
Det er flere måter å implementere foreliggende oppfinnelse på. Én måte er å tilveiebringe en implementering hvorved koprosessoren eller koprosessorene, f.eks. GPU'en eller GPU'ene er forhåndsfabrikkert for å utføre funksjonaliteten i henhold til oppfinnelsen, og motta kommandoer tilpasset de flere mellomliggende mål som beskrevet her. En annen implementering av oppfinnelsen innbefatter et passende API, en verktøymappe, en driverkode, et operativsystem, et frittstående-eller nedlastbart programvareobjekt, osv., som gjør det mulig for applikasjoner og tjenester å benytte mellomliggende mål til å oppnå mer kompleks funksjonalitet. Oppfinnelsen er innrettet for bruk av oppfinnelsen fra standpunktet til et API (eller et annet programvareobjekt), grafikkprikken og videominnet. Forskjellige implementeringer av oppfinnelsen som er beskrevet her, har således aspekter som er fullstendig utført i maskinvare, delvis i maskinvare og delvis programvare, samt som i programvare.
Som nevnt ovenfor, selv om utførelseseksempler av foreliggende oppfinnelse er blitt beskrevet i forbindelse med forskjellige beregningsinnretninger og nett-arkitekturer, kan de underliggende konsepter anvendes på en hvilken som helst beregningsinnretning eller et hvilket som helst system hvor det er ønskelig å programmere prosedyreorienterte skyggeleggere på mer enn trivielle måter. Teknik-kene for å tilveiebringe forbedret programmerbarhet av prosedyreorienterte skyggeleggere i samsvar med foreliggende oppfinnelse, kan således anvendes på en lang rekke applikasjoner og innretninger. For eksempel kan algoritmen eller algoritmene og maskinvareimplementeringene av oppfinnelsen anvendes i forbindelse med operativsystemet til en beregningsinnretning, fremskaffet som et separat objekt på inn innretningen, som en del av et annet objekt, som et nedlastbart objekt fra en server, som en "mellommann" mellom en innretning eller et objekt og nettet, som et distribuert objekt, som maskinvare, i et lager, en kombinasjon av noen av de foregående måtene, osv. Selv om eksempler på programmeringsspråk, navn og eksempler er valgt her som representative for forskjellige valgmuligheter, er disse språkene, navnene og eksemplene ikke ment å være begrensende. En vanlig fagkyndig på området vil forstå at det er mange måter å tilveiebringe objektkode på som oppnår den samme, en lignende eller en ekvivalent funksjonalitet som oppnås ved hjelp av APCen i henhold til oppfinnelsen.
De forskjellige teknikker som er beskrevet her, kan implementeres i forbindelse med maskinvare eller programvare, eller hvor det passer, med en kombinasjon av begge. Fremgangsmåtene og anordningene i henhold til foreliggende oppfinnelse, eller visse aspekter eller deler av disse, kan ha form av programkode (dvs. instruksjoner) utført i berørbare media, slik som disketter, CD-ROM, hard-diskstasjoner eller et hvilket som helst annet maskinlesbart lagringsmedium, hvor, når programkoden blir lastet inn i utført av en maskin, slik som en datamaskin, maskinen blir et apparat for å praktisere oppfinnelsen. I tilfelle av programkodeut-førelse på programmerbare datamaskiner, vil beregningsinnretningen generelt innbefatte en prosessor, et lagringsmedium som kan leses av prosessoren (innbefattende flyktige og ikke-flyktige lagre og/eller lagringselementer), minst én innma-tingsinnretning og minst én utmatingsutretning. Ett eller flere programmer som kan benytte de mellomliggende måltjenester i henhold til foreliggende oppfinnelse, f.eks. ved bruk av et databehandlings-API eller lignende, er fortrinnsvis implementert i et høynivå prosedyreorientert eller objektorientert programmeringsspråk for å kommunisere med et datamaskinsystem. Programmet eller programmene kan imidlertid implementeres i assembler- eller maskinspråk om ønsket. I alle fall kan språket være et kompilert eller tolket språk, og kan kombineres med maskinvareimplementeringer.
Fremgangsmåtene og anordningene i henhold til foreliggende oppfinnelse kan også praktiseres via kommunikasjoner utført i form av programkode som blir sendt over et eller annet transmisjonsmedium, slik som over elektrisk lednings-eller kabelføring, gjennom fiberoptikk eller via en hvilken som helst annen form for overføring, hvor, når programkoden blir mottatt og lastet inn i og utført av en maskin, slik som et EPROM, en portgruppe, en programmerbar logisk innretning (PLD), en klientdatamaskin, en videoopptaker eller lignende, eller en mottakende maskin som har de signalbehandlingsegenskaper som er beskrevet i utførelses-eksemplene ovenfor, blir et apparat for å praktisere oppfinnelsen. Implementert på en universalprosessor kombineres programkoden med prosessoren for å fremskaffe et unikt apparat som virker slik at det påkaller funksjonaliteten til foreliggende oppfinnelse. I tillegg kan en hvilken som helst lagringsteknikk som benyttes i forbindelse med foreliggende oppfinnelse, uten unntak være en kombinasjon av maskinvare og programvare.
Selv om foreliggende oppfinnelse er blitt beskrevet i forbindelse med de foretrukne utførelsesformer på de forskjellige figurene, vil man forstå at andre lignende utførelsesformer kan benyttes, eller at modifikasjoner og tillegg kan foretas på den beskrevne utførelsesform for å utføre den samme funksjon som foreliggende oppfinnelse, uten å avvike fra denne. Selv om det f.eks. er beskrevet eksempler på nettmiljøer i henhold til oppfinnelsen i forbindelse med et nettkoplet miljø, slik som et likemann-til-likemann-nettkoplet miljø, vil en fagkyndig på området innse at foreliggende oppfinnelse ikke er begrenset til dette, og at fremgangsmåtene, slik de er beskrevet i beskrivelsen, kan tilordnes en hvilken som helst beregningsinnretning eller et hvilket som helst beregningsmiljø, slik som en spille-konsoll, en håndholdt datamaskin, en bærbar datamaskin, osv., ledningstilkoplet eller trådløs, og kan anvendes på et hvilket som helst antall slike beregningsinnretninger som er tilkoplet via et kommunikasjonsnett og som vekselvirker over nettet. Det skal videre understrekes at en lanq rekke datamaskinplattformer, innbefattende operativsystemer i håndholdte innretninger og andre applikasjonsspesifikke systemer, er tenkt brukt, spesielt når antallet trådløst sammenkoplede innretninger fortsetter å øke. Videre kan foreliggende oppfinnelse implementeres i eller over et antall prosessorbrikker eller innretninger, og lagring kan likeledes bevirkes over et antall innretninger. Foreliggende oppfinnelse skal derfor ikke begrenses til noen enkelt utførelsesform, men skal i stedet omfatte alt som går inn under rekkevidden av de vedføyde patentkrav.
Claims (24)
1. Fremgangsmåte for å tilveiebringe og benytte mellomliggende lagringsmål (ITMRT.MET) i et grafikksystem, omfattende: å sende et sett med programinstruksjoner til minst én komponent i grafikkmaskinvaren for å programmere den minst ene komponent til å utføre en spesialisert funksjon som inkluderer et av de følgende, (A) å mate inn data fra et mellomliggende lagringsmål (ITMRT.MET) til den minst ene komponent i grafikkmaskinvaren, (B) å mate ut data fra den minst ene komponent i grafikkmaskinvaren til et mellomliggende lagringsmål (ITMRT.MET), å sende et andre sett med programinstruksjoner til den minst ene komponent i grafikkmaskinvaren for å programmere den minst ene komponent til å utføre en andre spesialisert funksjonsom inkluderer: å gjenbruke dataene fra et mellomliggende lagringsmål (ITMRT.MET) som en inngang til den minst ene komponent.
2. Fremgangsmåte ifølge krav 1, hvor det mellomliggende lagringsmål (ITMRT.MET) er en del av et videominne (186).
3. Fremgangsmåte ifølge krav 1, hvor dataene i et mellomliggende lagringsmål (ITMRT.MET) er vedvarende.
4. Fremgangsmåte ifølge krav 1, hvor oppløsningen til et mellomliggende lagringsmål (ITMRT.MET) kan innstilles på variabel måte.
5. Fremgangsmåte ifølge krav 1, hvor den minst ene komponent innbefatter en prosedyreorientert skyggelegger.
6. Fremgangsmåte ifølge krav 5, hvor den prosedyreorienterte skyggelegger er enten en verteks-skyggelegger eller en piksel-skyggelegger.
7. Fremgangsmåte ifølge krav 1, hvor dataene i et første mellomliggende lagringsmål (ITMRT.MET) representerer andre typer og mengder med pikseldata enn dataene i et annet mellomliggende lagringsmål (ITMRT.MET).
8. Minst én av et operativsystem, en driverkode, et applikasjonsprogrammerings-grensesnitt, en verktøymappe og en koprosessorinnretning for å tilveiebringe fremgangsmåten i henhold til krav 1.
9. Modulert datasignal som bærer datamaskinutførbare instruksjoner for å ut-føre fremgangsmåten i henhold til krav 1.
10. Beregningsinnretning omfattende midler for å utføre fremgangsmåten ifølge krav 1.
11. Applikasjonsprogrammeringsgrensesnitt omfattende datamaskineksekverbare moduler for tilknytning til minst ett mellomliggende lagringsmål (ITMRT.MET) via minst én maskinvarekomponent i et grafikksystem, der modulene utfører en av fremgangsmåtene i henhold til en av fremgangsmåtene for kravene 1 til 7.
12. Datamaskinlesbart medium for tilkopling til mellomliggende lagringsmål (ITMRT.MET) som lagrer minst én datamaskineksekverbar modul omfattende datamaskineksekverbare instruksjoner for å utføre en av fremgangsmåtene fra kravene 1-7.
13. Minst et datamaskinlesbart medium ifølge krav 12, hvor modulene er innbefattet i minst én av et applikasjonsprogrammerings-grensesnitt (API), en driverkode, et operativsystem og en applikasjon.
14. Koprosessorinnretning for bruk i forbindelse med mellomliggende lagringsmål (ITMRT.MET), omfattende: et innmatingskomponent middel for å motta et sett med programinstruksjoner til minst én komponent i koprosessorinnretningen for å programmere den minst ene komponent til å utføre spesialisert funksjonalitet, hvor den spesialiserte funksjonalitet inkluderer en av de følgende: (A) å mate inn data fra et mellomliggende lagringsmål (ITMRT.MET) til den minst ene komponent, eller (B) å mate ut data fra den minst ene komponent til et mellomliggende lagringsmål (ITMRT.MET),nevnte innmatingskomponent mottar et annet sett med programinstruksjoner for å programmere den minst ene komponent til å utføre spesialisert funksjonalitet, hvor den spesialiserte funksjonalitet innbefatter: å gjenbruke dataene fra et mellomliggende lagringsmål (ITMRT.MET) som en inngang til den minst ene grafikkmaskinvaren.
15. Koprosessorinnretning ifølge krav 14, hvor det mellomliggende lagringsmål (ITMRT.MET) er en del av et videominne (186).
16. Koprosessorinnretning ifølge krav 14, hvor dataene i et mellomliggende lagringsmål (ITMRT.MET) er vedvarende.
17. Koprosessorinnretning ifølge krav 14, hvor oppløsningen til et mellomliggende lagringsmål (ITMRT.MET) kan innstilles på variabel måte.
18. Koprosessorinnretning ifølge krav 14, hvor den minst ene komponent i koprosessorinnretningen innbefatter en prosedyreorientert skyggelegger.
19. Koprosessorinnretning ifølge krav 18, hvor den prosedyreorienterte skyggelegger er enten en verteks-skyggelegger eller en piksel-skyggelegger.
20. Koprosessorinnretning ifølge krav 29, hvor dataene i et første mellomliggende lagringsmål (ITMRT.MET) representerer andre typer og mengder med pikseldata enn dataene i et annet mellomliggende lagringsmål (ITMRT.MET).
21. Koprosessorinnretning ifølge krav 14, hvor koprosessorinnretningen innbefatter minst en grafikkprosesseringsenhet (GPU).
22. Datamaskinlesbart medium omfattende datamaskineksekverbare moduler for tilknytning til minst én av et mellomliggende lagringsmål (ITMRT.MET) via minst én maskinvarekomponent i et grafikksystem, der modulene omfatter: midler for å utføre fremgangsmåtetrinnene angitt i krav 1.
23. System for å benytte mellomliggende lagringsmål (ITMRT.MET) i et grafikksystem, omfattende: midler for å utføre fremgangsmåtetrinnene angitt i krav 1.
24. Applikasjonsprogrammerings-grensesnitt omfattende datamaskineksekverbare moduler for tilknytning til minst ett mellomliggende lagringsmål (ITMRT.MET) via minst én maskinvarekomponent i et grafikksystem, der. modulene omfatter: midler for å utføre fremgangsmåtetrinnene angitt i krav 1
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/196,864 US7564460B2 (en) | 2001-07-16 | 2002-07-16 | Systems and methods for providing intermediate targets in a graphics system |
Publications (2)
Publication Number | Publication Date |
---|---|
NO20031556D0 NO20031556D0 (no) | 2003-04-07 |
NO328438B1 true NO328438B1 (no) | 2010-02-22 |
Family
ID=22727078
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
NO20031556A NO328438B1 (no) | 2002-07-16 | 2003-04-07 | Systemer og fremgangsmater for a frembringe mellomliggende mal i et grafikksystem |
NO20100178A NO331263B1 (no) | 2002-07-16 | 2010-02-04 | Systemer og fremgangsmater for a frembringe mellomliggende mal i et grafikksystem |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
NO20100178A NO331263B1 (no) | 2002-07-16 | 2010-02-04 | Systemer og fremgangsmater for a frembringe mellomliggende mal i et grafikksystem |
Country Status (15)
Country | Link |
---|---|
US (3) | US7564460B2 (no) |
EP (2) | EP1383080B1 (no) |
JP (2) | JP4583720B2 (no) |
KR (2) | KR100969448B1 (no) |
CN (1) | CN100507832C (no) |
AU (1) | AU2003203499B2 (no) |
BR (1) | BRPI0301122B1 (no) |
CA (2) | CA2772030C (no) |
MX (1) | MXPA03004601A (no) |
MY (1) | MY142776A (no) |
NO (2) | NO328438B1 (no) |
PL (1) | PL360754A1 (no) |
RU (1) | RU2337402C2 (no) |
TW (2) | TWI340927B (no) |
ZA (1) | ZA200302809B (no) |
Families Citing this family (103)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6828975B2 (en) | 2001-03-01 | 2004-12-07 | Microsoft Corporation | Method and system for managing graphics objects in a graphics display system |
US7564460B2 (en) | 2001-07-16 | 2009-07-21 | Microsoft Corporation | Systems and methods for providing intermediate targets in a graphics system |
US6825843B2 (en) * | 2002-07-18 | 2004-11-30 | Nvidia Corporation | Method and apparatus for loop and branch instructions in a programmable graphics pipeline |
US6809732B2 (en) * | 2002-07-18 | 2004-10-26 | Nvidia Corporation | Method and apparatus for generation of programmable shader configuration information from state-based control information and program instructions |
US6975321B1 (en) * | 2003-05-05 | 2005-12-13 | Nvidia Corporation | System and method for generating multiple outputs in a single shader processing pass in a hardware graphics pipeline |
US7681112B1 (en) | 2003-05-30 | 2010-03-16 | Adobe Systems Incorporated | Embedded reuse meta information |
US8035646B2 (en) * | 2003-11-14 | 2011-10-11 | Microsoft Corporation | Systems and methods for downloading algorithmic elements to a coprocessor and corresponding techniques |
US7231632B2 (en) | 2004-04-16 | 2007-06-12 | Apple Computer, Inc. | System for reducing the number of programs necessary to render an image |
US7847800B2 (en) | 2004-04-16 | 2010-12-07 | Apple Inc. | System for emulating graphics operations |
US7636489B2 (en) | 2004-04-16 | 2009-12-22 | Apple Inc. | Blur computation algorithm |
US8704837B2 (en) * | 2004-04-16 | 2014-04-22 | Apple Inc. | High-level program interface for graphics operations |
US8134561B2 (en) | 2004-04-16 | 2012-03-13 | Apple Inc. | System for optimizing graphics operations |
US7248265B2 (en) * | 2004-04-16 | 2007-07-24 | Apple Inc. | System and method for processing graphics operations with graphics processing unit |
US7570267B2 (en) * | 2004-05-03 | 2009-08-04 | Microsoft Corporation | Systems and methods for providing an enhanced graphics pipeline |
US7978205B1 (en) * | 2004-05-03 | 2011-07-12 | Microsoft Corporation | Systems and methods for providing an enhanced graphics pipeline |
US8427490B1 (en) | 2004-05-14 | 2013-04-23 | Nvidia Corporation | Validating a graphics pipeline using pre-determined schedules |
US8130237B2 (en) | 2004-06-24 | 2012-03-06 | Apple Inc. | Resolution independent user interface design |
US7397964B2 (en) | 2004-06-24 | 2008-07-08 | Apple Inc. | Gaussian blur approximation suitable for GPU |
US8068103B2 (en) | 2004-06-24 | 2011-11-29 | Apple Inc. | User-interface design |
US7761800B2 (en) | 2004-06-25 | 2010-07-20 | Apple Inc. | Unified interest layer for user interface |
US7490295B2 (en) | 2004-06-25 | 2009-02-10 | Apple Inc. | Layer for accessing user interface elements |
US8239749B2 (en) | 2004-06-25 | 2012-08-07 | Apple Inc. | Procedurally expressing graphic objects for web pages |
US8302020B2 (en) | 2004-06-25 | 2012-10-30 | Apple Inc. | Widget authoring and editing environment |
US8453065B2 (en) | 2004-06-25 | 2013-05-28 | Apple Inc. | Preview and installation of user interface elements in a display environment |
US7652678B2 (en) | 2004-06-25 | 2010-01-26 | Apple Inc. | Partial display updates in a windowing system using a programmable graphics processing unit |
US8566732B2 (en) | 2004-06-25 | 2013-10-22 | Apple Inc. | Synchronization of widgets and dashboards |
US7730026B2 (en) | 2004-07-01 | 2010-06-01 | Apple Inc. | Method and system using reusable state information for synchronization and maintenance of data |
US8044951B1 (en) | 2004-07-02 | 2011-10-25 | Nvidia Corporation | Integer-based functionality in a graphics shading language |
US7746347B1 (en) * | 2004-07-02 | 2010-06-29 | Nvidia Corporation | Methods and systems for processing a geometry shader program developed in a high-level shading language |
US7958498B1 (en) | 2004-07-02 | 2011-06-07 | Nvidia Corporation | Methods and systems for processing a geometry shader program developed in a high-level shading language |
US8624906B2 (en) * | 2004-09-29 | 2014-01-07 | Nvidia Corporation | Method and system for non stalling pipeline instruction fetching from memory |
DE102004051567A1 (de) * | 2004-10-22 | 2006-05-04 | Siemens Ag | Verfahren zur schnellen Bildverarbeitung zweidimensionaler Bilder |
US8416251B2 (en) | 2004-11-15 | 2013-04-09 | Nvidia Corporation | Stream processing in a video processor |
US7227551B2 (en) | 2004-12-23 | 2007-06-05 | Apple Inc. | Manipulating text and graphic appearance |
US8140975B2 (en) | 2005-01-07 | 2012-03-20 | Apple Inc. | Slide show navigation |
US8004515B1 (en) * | 2005-03-15 | 2011-08-23 | Nvidia Corporation | Stereoscopic vertex shader override |
US7852353B1 (en) | 2005-03-31 | 2010-12-14 | Apple Inc. | Encoding a transparency (alpha) channel in a video bitstream |
GB2425030A (en) * | 2005-04-09 | 2006-10-11 | Tenomichi Ltd | Managed network render targets for routing graphical information |
US7289127B1 (en) | 2005-04-25 | 2007-10-30 | Apple, Inc. | Multi-conic gradient generation |
US8452090B1 (en) | 2005-04-25 | 2013-05-28 | Apple Inc. | Bayer reconstruction of images using a GPU |
US8543931B2 (en) | 2005-06-07 | 2013-09-24 | Apple Inc. | Preview including theme based installation of user interface elements in a display environment |
US8495015B2 (en) | 2005-06-21 | 2013-07-23 | Apple Inc. | Peer-to-peer syncing in a decentralized environment |
US7523146B2 (en) | 2005-06-21 | 2009-04-21 | Apple Inc. | Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment |
DE102005031642B4 (de) * | 2005-07-06 | 2008-05-29 | Siemens Ag | Mobiler Defibrillator |
US8793576B2 (en) | 2005-10-14 | 2014-07-29 | Apple Inc. | System and method for computing a desktop picture |
US9092170B1 (en) | 2005-10-18 | 2015-07-28 | Nvidia Corporation | Method and system for implementing fragment operation processing across a graphics bus interconnect |
US7793169B2 (en) * | 2005-10-19 | 2010-09-07 | Telefonaktiebolaget Lm Ericsson (Publ) | Intelligent table-driven interleaving |
US8543824B2 (en) | 2005-10-27 | 2013-09-24 | Apple Inc. | Safe distribution and use of content |
US7954064B2 (en) | 2005-10-27 | 2011-05-31 | Apple Inc. | Multiple dashboards |
US7483037B2 (en) | 2005-10-27 | 2009-01-27 | Apple, Inc. | Resampling chroma video using a programmable graphics processing unit to provide improved color rendering |
US7743336B2 (en) | 2005-10-27 | 2010-06-22 | Apple Inc. | Widget security |
US7752556B2 (en) | 2005-10-27 | 2010-07-06 | Apple Inc. | Workflow widgets |
US9104294B2 (en) | 2005-10-27 | 2015-08-11 | Apple Inc. | Linked widgets |
US7707514B2 (en) | 2005-11-18 | 2010-04-27 | Apple Inc. | Management of user interface elements in a display environment |
KR100696198B1 (ko) * | 2005-12-23 | 2007-03-20 | 엠텍비젼 주식회사 | 프로그래밍 가능한 쉐이더 기반의 그래픽 연산을 지원하는임베디드 시스템 |
CN100395778C (zh) * | 2006-03-15 | 2008-06-18 | 威盛电子股份有限公司 | 绘图系统以及绘图控制方法 |
US20070268298A1 (en) * | 2006-05-22 | 2007-11-22 | Alben Jonah M | Delayed frame buffer merging with compression |
CN101114381B (zh) * | 2006-05-22 | 2012-02-22 | 辉达公司 | 帧缓冲区合并 |
US8154554B1 (en) | 2006-07-28 | 2012-04-10 | Nvidia Corporation | Unified assembly instruction set for graphics processing |
US7860826B2 (en) | 2006-08-04 | 2010-12-28 | Apple Inc. | Method and system for using global equivalency sets to identify data during peer-to-peer synchronization |
US8869027B2 (en) | 2006-08-04 | 2014-10-21 | Apple Inc. | Management and generation of dashboards |
US8232991B1 (en) | 2006-11-03 | 2012-07-31 | Nvidia Corporation | Z-test result reconciliation with multiple partitions |
US7760767B2 (en) | 2007-01-05 | 2010-07-20 | Apple Inc. | Wide area peer-to-peer synching in a decentralized environment |
US7657769B2 (en) | 2007-01-08 | 2010-02-02 | Marcy M Scott | N-way synchronization of data |
KR101349171B1 (ko) * | 2007-01-17 | 2014-01-09 | 삼성전자주식회사 | 3차원 그래픽 가속기 및 그것의 픽셀 분배 방법 |
US8954871B2 (en) | 2007-07-18 | 2015-02-10 | Apple Inc. | User-centric widgets and dashboards |
US8683126B2 (en) | 2007-07-30 | 2014-03-25 | Nvidia Corporation | Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory |
US8667415B2 (en) | 2007-08-06 | 2014-03-04 | Apple Inc. | Web widgets |
US8659601B1 (en) * | 2007-08-15 | 2014-02-25 | Nvidia Corporation | Program sequencer for generating indeterminant length shader programs for a graphics processor |
US8698819B1 (en) | 2007-08-15 | 2014-04-15 | Nvidia Corporation | Software assisted shader merging |
US8411096B1 (en) | 2007-08-15 | 2013-04-02 | Nvidia Corporation | Shader program instruction fetch |
US9024957B1 (en) | 2007-08-15 | 2015-05-05 | Nvidia Corporation | Address independent shader program loading |
US8156467B2 (en) | 2007-08-27 | 2012-04-10 | Adobe Systems Incorporated | Reusing components in a running application |
US8176466B2 (en) | 2007-10-01 | 2012-05-08 | Adobe Systems Incorporated | System and method for generating an application fragment |
US8780123B2 (en) | 2007-12-17 | 2014-07-15 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US9064333B2 (en) | 2007-12-17 | 2015-06-23 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US9619304B2 (en) | 2008-02-05 | 2017-04-11 | Adobe Systems Incorporated | Automatic connections between application components |
US8681861B2 (en) | 2008-05-01 | 2014-03-25 | Nvidia Corporation | Multistandard hardware video encoder |
US8923385B2 (en) | 2008-05-01 | 2014-12-30 | Nvidia Corporation | Rewind-enabled hardware encoder |
US8581912B2 (en) | 2008-06-27 | 2013-11-12 | Microsoft Corporation | Dynamic subroutine linkage optimizing shader performance |
US8656293B1 (en) | 2008-07-29 | 2014-02-18 | Adobe Systems Incorporated | Configuring mobile devices |
US8489851B2 (en) | 2008-12-11 | 2013-07-16 | Nvidia Corporation | Processing of read requests in a memory controller using pre-fetch mechanism |
US8289341B2 (en) * | 2009-06-29 | 2012-10-16 | Intel Corporation | Texture sampling |
US8922555B2 (en) * | 2009-10-07 | 2014-12-30 | Nvidia Corporation | Pixel shader output map |
US9530189B2 (en) | 2009-12-31 | 2016-12-27 | Nvidia Corporation | Alternate reduction ratios and threshold mechanisms for framebuffer compression |
US8340416B2 (en) * | 2010-06-25 | 2012-12-25 | Microsoft Corporation | Techniques for robust color transfer |
KR101926570B1 (ko) | 2011-09-14 | 2018-12-10 | 삼성전자주식회사 | 포스트 프레그먼트 쉐이더를 사용하는 그래픽 처리 방법 및 장치 |
US9607407B2 (en) | 2012-12-31 | 2017-03-28 | Nvidia Corporation | Variable-width differential memory compression |
US10043234B2 (en) | 2012-12-31 | 2018-08-07 | Nvidia Corporation | System and method for frame buffer decompression and/or compression |
US9591309B2 (en) | 2012-12-31 | 2017-03-07 | Nvidia Corporation | Progressive lossy memory compression |
TWI517137B (zh) | 2013-06-05 | 2016-01-11 | 晨星半導體股份有限公司 | 將影像寫入記憶體的方法及其裝置 |
CN104252414B (zh) * | 2013-06-25 | 2018-03-27 | 晨星半导体股份有限公司 | 将影像写入存储器的方法及其装置 |
KR20160030871A (ko) * | 2013-07-17 | 2016-03-21 | 에이2젯로직스, 인코포레이티드 | 그래픽 프로세싱 유닛을 사용하여 히스토그램 계산을 위한 시스템 및 방법 |
US9832388B2 (en) | 2014-08-04 | 2017-11-28 | Nvidia Corporation | Deinterleaving interleaved high dynamic range image by using YUV interpolation |
EP3012737A1 (en) * | 2014-10-24 | 2016-04-27 | Thomson Licensing | Devices and methods for generating elementary geometries |
WO2016078069A1 (en) * | 2014-11-21 | 2016-05-26 | Intel Corporation | Apparatus and method for efficient graphics processing in virtual execution environment |
CN105719229B (zh) * | 2014-12-19 | 2020-03-03 | 谷歌有限责任公司 | 一种基于指令流截取的应用程序透明化的分辨率控制 |
US10496528B2 (en) | 2015-08-31 | 2019-12-03 | Microsoft Technology Licensing, Llc | User directed partial graph execution |
CN105678679B (zh) * | 2015-12-31 | 2019-02-12 | 公安部第三研究所 | 大规模图片集合快速预览的系统及方法 |
JP2019204348A (ja) | 2018-05-24 | 2019-11-28 | キヤノン株式会社 | 情報処理装置及びその制御方法、並びにプログラム |
KR20200145665A (ko) * | 2019-06-19 | 2020-12-30 | 삼성전자주식회사 | 최적화된 픽셀 셰이더 속성 관리 |
WO2021173911A1 (en) * | 2020-02-28 | 2021-09-02 | Advanced Micro Devices, Inc. | Fully utilized hardware in a multi-tenancy graphics processing unit |
CN114115873A (zh) * | 2021-11-18 | 2022-03-01 | 网易(杭州)网络有限公司 | 着色器数据处理方法、装置、设备及存储介质 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5392391A (en) * | 1991-10-18 | 1995-02-21 | Lsi Logic Corporation | High performance graphics applications controller |
TW219989B (en) | 1992-05-29 | 1994-02-01 | Ind Tech Res Inst | A screen refreshing method which is independent of resolution |
US5388206A (en) * | 1992-11-13 | 1995-02-07 | The University Of North Carolina | Architecture and apparatus for image generation |
US5422657A (en) * | 1993-09-13 | 1995-06-06 | Industrial Technology Research Institute | Graphics memory architecture for multimode display system |
TW299406B (en) | 1993-10-29 | 1997-03-01 | Ind Tech Res Inst | Display memory structure of multi-mode display system |
US6067098A (en) * | 1994-11-16 | 2000-05-23 | Interactive Silicon, Inc. | Video/graphics controller which performs pointer-based display list video refresh operation |
WO1996031844A1 (fr) * | 1995-04-05 | 1996-10-10 | Hitachi, Ltd. | Systeme graphique |
US5793374A (en) * | 1995-07-28 | 1998-08-11 | Microsoft Corporation | Specialized shaders for shading objects in computer generated images |
US5793371A (en) * | 1995-08-04 | 1998-08-11 | Sun Microsystems, Inc. | Method and apparatus for geometric compression of three-dimensional graphics data |
US6496190B1 (en) * | 1997-07-02 | 2002-12-17 | Mental Images Gmbh & Co Kg. | System and method for generating and using systems of cooperating and encapsulated shaders and shader DAGs for use in a computer graphics system |
US5969728A (en) * | 1997-07-14 | 1999-10-19 | Cirrus Logic, Inc. | System and method of synchronizing multiple buffers for display |
US6353460B1 (en) * | 1997-09-30 | 2002-03-05 | Matsushita Electric Industrial Co., Ltd. | Television receiver, video signal processing device, image processing device and image processing method |
US6208273B1 (en) * | 1999-01-29 | 2001-03-27 | Interactive Silicon, Inc. | System and method for performing scalable embedded parallel data compression |
US6421053B1 (en) * | 1999-05-24 | 2002-07-16 | International Business Machines Corporation | Block rendering method for a graphics subsystem |
TW444183B (en) | 1999-06-28 | 2001-07-01 | Integrated Technology Express | Device and method for image rotation |
JP3350655B2 (ja) | 2000-01-25 | 2002-11-25 | 株式会社ナムコ | ゲームシステム及び情報記憶媒体 |
US7159041B2 (en) * | 2000-03-07 | 2007-01-02 | Microsoft Corporation | Method and system for defining and controlling algorithmic elements in a graphics display system |
US6819325B2 (en) * | 2000-03-07 | 2004-11-16 | Microsoft Corporation | API communications for vertex and pixel shaders |
US6862730B1 (en) * | 2000-04-26 | 2005-03-01 | Lucent Technologies Inc. | Register allocation in code translation between processors |
US7034828B1 (en) | 2000-08-23 | 2006-04-25 | Nintendo Co., Ltd. | Recirculating shade tree blender for a graphics system |
US7564460B2 (en) | 2001-07-16 | 2009-07-21 | Microsoft Corporation | Systems and methods for providing intermediate targets in a graphics system |
-
2002
- 2002-07-16 US US10/196,864 patent/US7564460B2/en not_active Expired - Fee Related
-
2003
- 2003-04-07 EP EP03007908.1A patent/EP1383080B1/en not_active Expired - Lifetime
- 2003-04-07 CA CA2772030A patent/CA2772030C/en not_active Expired - Fee Related
- 2003-04-07 AU AU2003203499A patent/AU2003203499B2/en not_active Ceased
- 2003-04-07 EP EP16202270.1A patent/EP3156965A1/en not_active Withdrawn
- 2003-04-07 CA CA2424650A patent/CA2424650C/en not_active Expired - Fee Related
- 2003-04-07 NO NO20031556A patent/NO328438B1/no not_active IP Right Cessation
- 2003-04-09 BR BRPI0301122A patent/BRPI0301122B1/pt not_active IP Right Cessation
- 2003-04-10 CN CNB031217990A patent/CN100507832C/zh not_active Expired - Fee Related
- 2003-04-10 ZA ZA200302809A patent/ZA200302809B/xx unknown
- 2003-04-10 MY MYPI20031322A patent/MY142776A/en unknown
- 2003-04-11 RU RU2003110511/09A patent/RU2337402C2/ru not_active IP Right Cessation
- 2003-04-11 JP JP2003108482A patent/JP4583720B2/ja not_active Expired - Fee Related
- 2003-04-14 KR KR1020030023429A patent/KR100969448B1/ko active IP Right Grant
- 2003-04-15 TW TW092108739A patent/TWI340927B/zh not_active IP Right Cessation
- 2003-04-15 TW TW099132084A patent/TWI361395B/zh not_active IP Right Cessation
- 2003-05-23 MX MXPA03004601A patent/MXPA03004601A/es active IP Right Grant
- 2003-06-17 PL PL03360754A patent/PL360754A1/xx unknown
-
2009
- 2009-06-22 US US12/489,316 patent/US8063909B2/en not_active Expired - Fee Related
- 2009-08-26 JP JP2009195887A patent/JP4922367B2/ja not_active Expired - Fee Related
-
2010
- 2010-02-04 NO NO20100178A patent/NO331263B1/no not_active IP Right Cessation
- 2010-02-26 KR KR1020100017849A patent/KR100995157B1/ko active IP Right Grant
-
2011
- 2011-10-31 US US13/286,054 patent/US8379035B2/en not_active Expired - Fee Related
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
NO328438B1 (no) | Systemer og fremgangsmater for a frembringe mellomliggende mal i et grafikksystem | |
US7671862B1 (en) | Systems and methods for providing an enhanced graphics pipeline | |
EP1594091B1 (en) | System and method for providing an enhanced graphics pipeline | |
JP5154551B2 (ja) | グラフィックスパイプラインステートの高速再構成 | |
NO326851B1 (no) | Systemer og fremgangsmater for tilveiebringelse av styrbar tekstursampling | |
US7394464B2 (en) | Preshaders: optimization of GPU programs | |
US20020003541A1 (en) | API communications for vertex and pixel shaders | |
US20100046846A1 (en) | Image compression and/or decompression | |
US9508120B2 (en) | System and method for computer vision item recognition and target tracking | |
US20130120381A1 (en) | Fast rendering of knockout groups using a depth buffer of a graphics processing unit | |
US20040169671A1 (en) | Effects framework pipeline integration with programmable shader | |
KR20180117835A (ko) | 이미지를 렌더링하는 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
CHAD | Change of the owner's name or address (par. 44 patent law, par. patentforskriften) |
Owner name: MICROSOFT TECHNOLOGY LICENSING, US |
|
MM1K | Lapsed by not paying the annual fees |