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 PDF

Info

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
Application number
NO20031556A
Other languages
English (en)
Other versions
NO20031556D0 (no
Inventor
Michele B Boland
Charles N Boyd
Anatha R Kancherla
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of NO20031556D0 publication Critical patent/NO20031556D0/no
Publication of NO328438B1 publication Critical patent/NO328438B1/no

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General 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
NO20031556A 2002-07-16 2003-04-07 Systemer og fremgangsmater for a frembringe mellomliggende mal i et grafikksystem NO328438B1 (no)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Also Published As

Publication number Publication date
KR100969448B1 (ko) 2010-07-14
TW201112162A (en) 2011-04-01
JP2004054891A (ja) 2004-02-19
NO331263B1 (no) 2011-11-14
RU2337402C2 (ru) 2008-10-27
NO20100178L (no) 2004-01-19
AU2003203499B2 (en) 2009-07-30
TW200405219A (en) 2004-04-01
JP4922367B2 (ja) 2012-04-25
PL360754A1 (en) 2004-01-26
US20120113118A1 (en) 2012-05-10
CA2424650A1 (en) 2004-01-16
KR20100029230A (ko) 2010-03-16
US8063909B2 (en) 2011-11-22
EP1383080B1 (en) 2016-12-07
CA2772030A1 (en) 2004-01-16
AU2003203499A1 (en) 2004-02-05
CN100507832C (zh) 2009-07-01
JP2009277258A (ja) 2009-11-26
MXPA03004601A (es) 2004-02-03
US20090256849A1 (en) 2009-10-15
EP3156965A1 (en) 2017-04-19
BRPI0301122B1 (pt) 2015-12-01
KR20040007242A (ko) 2004-01-24
NO20031556D0 (no) 2003-04-07
JP4583720B2 (ja) 2010-11-17
US7564460B2 (en) 2009-07-21
CA2424650C (en) 2013-02-19
US8379035B2 (en) 2013-02-19
BR0301122A (pt) 2004-08-17
CA2772030C (en) 2014-09-16
EP1383080A1 (en) 2004-01-21
KR100995157B1 (ko) 2010-11-17
TWI361395B (en) 2012-04-01
US20030020741A1 (en) 2003-01-30
CN1469240A (zh) 2004-01-21
ZA200302809B (en) 2003-10-14
MY142776A (en) 2010-12-31
TWI340927B (en) 2011-04-21

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