NO326851B1 - Systemer og fremgangsmater for tilveiebringelse av styrbar tekstursampling - Google Patents

Systemer og fremgangsmater for tilveiebringelse av styrbar tekstursampling Download PDF

Info

Publication number
NO326851B1
NO326851B1 NO20031557A NO20031557A NO326851B1 NO 326851 B1 NO326851 B1 NO 326851B1 NO 20031557 A NO20031557 A NO 20031557A NO 20031557 A NO20031557 A NO 20031557A NO 326851 B1 NO326851 B1 NO 326851B1
Authority
NO
Norway
Prior art keywords
sampling
effect
texture
parameter
specifying
Prior art date
Application number
NO20031557A
Other languages
English (en)
Other versions
NO20031557L (no
NO20031557D0 (no
Inventor
Charles N Boyd
Michael A Toelle
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 NO20031557D0 publication Critical patent/NO20031557D0/no
Publication of NO20031557L publication Critical patent/NO20031557L/no
Publication of NO326851B1 publication Critical patent/NO326851B1/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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
  • Sampling And Sample Adjustment (AREA)
  • Facsimile Image Signal Circuits (AREA)

Description

TEKNISK OMRÅDE
Foreliggende oppfinnelse er rettet mot systemer og fremgangsmåter for tilveiebringelse av tekstursampling i forbindelse med datamaskingrafikk. Mer spesielt angår foreliggende oppfinnelse systemer og fremgangsmåter for tilveiebringelse av styrbar tekstursampling.
BAKGRUNN FOR OPPFINNELSEN
Teksturkartlegging gjør det mulig å avbilde et farget, eller teksturert, signal på geometri for å gi detaljert utseende på grove triangelnettverk. Bruk av teksturer er generelt mer effektivt enn forfining av bærebølgegeometrien når det gjelder å representere signalet per verteks. Selv om rasterformet maskinvare har understøttet grunnleggende teksturkartlegging i mange år, har den i den senere tid begynt å gi kraftigere egenskaper.
En oversikt over teksturkartleggingsprosessen er vist på fig. 1. Det er vist et teksturkart 200 med teksturelementer eller teksler 202, og teksturkartlegging påfører signalet til teksturkartet 200 på triangler 210 i et maskenett i henhold til en eller annen geometrisk konfigurasjon av trianglet, og/eller påfører en eller annen ytterligere transformasjon, slik som skyggelegging, belysning, osv., som kartlegger eller tilordner teksler 202 til piksler 222.
Teksturkartlegging er et problem som impliserer Nyquist-teorien i den grad overlapping skal unngås, som fastslår at for å reprodusere en analog bølgeform nøyaktig, må det analoge signal samples med en hyppighet som er minst to ganger dets høyeste frekvens for å kunne representere signalet i det digitale domenet med høyt nøyaktighetsnivå. Digitale/analoge omformingsteknikker blir så benyttet til å rekonstruere det opprinnelig analoge signal nøyaktig. Hvis det benyttes en utilstrekkelig samplingshyppighet, blir resultatet overlapping som er uriktig samplet høyfrekvens informasjon som opptrer som støy ved lavere frekvens.
Samplingsoppgaver oppstår også i forbindelse med teksturkartlegging. Prosessen med teksturkartlegging sampler teksturkart til skjermpiksler, og i den grad det er mulig, bør teksturkartdataene ha blitt samplet ved en tilstrekkelig høy samplingshyppighet eller samplingsfrekvens til å omfatte informasjon ved den høyeste frekvens. I denne forbindelse benytter typisk skjermobjekter representert av et visst antall bildeelementer (piksler) teksturkart med et annet antall teksturelementer (teksler). Når teksturkart har flere teksler enn pikselrommet, kan et enkelt piksel tilordnes til mer enn én teksel, og når teksturkart har færre teksler enn pikselrommet, kan flere piksler tilordnes en enkelt teksel. Når det ikke er noen nøyaktig kartlegging eller tilordning mellom teksturrom og bilderom, kan det oppstå spørsmål om visningskvaliteten.
Teksturkartet kan i virkeligheten verken være i stand til effektivt å tilordne riktige bildedetaljer til det utpekte pikselområde, eller omvendt, et mindre pikselområde behøver ikke å være i stand til å bruke alle teksturdetaljene fra et større/rikere teksturkart.
Spesielt i det tilfelle hvor et teksturkart er for lite sammenlignet med det pikselområde som kartlegges, så blir den samme teksel tilordnet tilstøtende piksler, noe som forårsaker en blokklignende effekt under betraktning av bildet. I det andre tilfelle, hvis flere teksler tilordnes den samme piksel, er det ofte tilfeldig nøyaktig hvilken teksel fra gruppen av teksler som kan tilordnes en gitt piksel, som vil bli valgt fra teksturkartet og tilført pikselen. Det er således en algoritmeavhengig prosess, og kan resultere i uregelmessigheter kjent som teksturutflyting og piksel-haggel-støy (pixel popping), som begge er meget merkbare, når kameraet beveger seg. Selv om et hovedsakelig likt antall eller det samme antall piksler og teksler finnes for tilordning mellom disse, kan det dessuten være en eller annen transformasjon, eller funksjon, påført tekslene forut for gjengivelse, hvor en algoritme fremdeles må bestemme hvor pikseldataene skal komme fra med hensyn til tekseldataene.
For det formål å illustrere problemet eller problemene som kan oppstå, kan tilfelle med et antall teksler som er større enn antallet piksler, betraktes på følgende måte. Anta at det er en kvadratisk plakatoverflate i en tredimensjonal (3-D) scene som omfatter to likesidede triangler, hvor kvadratet er 100 x 100 piksler. Hvis man påførte et teksturkart omfattende 200 horisontale røde og blå striper på toppen av det kvadratiske område med 100 x 100 piksler, kan ikke alle 200 stripene i teksturen skjelnes når de påføres plakaten, fordi teksturen har flere sampler enn det pikselområde som den skal tilknyttes. Noen av de mellomliggende teksturdata vil ikke bli brukt i kartleggingen, og vil hovedsakelig bli oversett.
Etter hvert som det tredimensjonale betraktningspunkt blir flyttet over plakaten, f.eks. ved navigering i et spill, oppstår det et fenomen kalt pikselpopping (piksel haggelstøy), som er et resultat av at teksturens striper kommer inn og ut av innretning med plakatpikslene. Dette er et tilfelle av en utilstrekkelig tekstursamplingshyppighet for å beskrive scenens detaljer. Dette er en illustrasjon på en type uregelmessighet som kan oppstå, men andre typer uregelmessigheter kan også være resultat av dårlig tekstursampling.
Det finnes flere løsninger for å minimalisere gjengivelsesuregelmessighetene som forårsakes av en utilstrekkelig tekstursamplingshyppighet, for det meste i form av filtrering og resampling. De to filtermetodene som benyttes i de enkle tekstureringsmetodene, slik som punktsampling, er forstørrelse og forminskelse (magnification and minification) som endrer tekstursamplingsmetodene for å bidra til å unngå de problemer som er skissert ovenfor.
Forminskningsalgoritmen blir brukt i det tilfelle hvor mange teksler kan tilordnes en enkelt piksel, og den velger den best passende teksel blant den gruppe teksler som kan tilordnes pikselen. Forstørrelsesteknikken blir brukt når flere piksler kan tilordnes en enkelt teksel, og den tilordner en enkelt teksel til flere piksler. Det er mange metoder med varierende hastighet og kvalitet for påføring av teksturer, innbefattende punktsampling, bilineær filtrering, trilineær MlP-kartlegging, anisotropisk filtrering og antialiasing (antioverlapping).
Den mest grunnleggende måte å påføre tekstur på en overflate er punktsampling, som benytter en "nærmeste nabo"-samplingsmetode. Når gjengiveren
henter et teksturelement, griper den tekstursampelen fra teksturkartet som har (u, v) koordinater som ligger nærmest pikselens koordinater (pikselsentret), og påfører den til pikselen. Denne løsningen er illustrert på fig. 2A, hvor den relevante posisjonen for tilordning fra pikselrom til tekselrom, er lokalisert ved posisjon P1. Siden den nærmeste teksel her er T1, blir T1 valgt. Selv om denne løsningen krever en minste mengde med lagringsbåndbredde uttrykt ved det antall teksler som må leses fra teksturminnet, dvs. én per piksel, forårsaker resultatet ofte uregelmessigheter som diskutert ovenfor på grunn av utilstrekkelig sampler, dvs. skjermpiksler, for å beskrive teksturen. Men selv første generasjons personlige datamaskiner (PC) hadde tredimensjonal maskinvare med mulighet til å rense, eller i det minste skjule disse samplingsproblemene i en viss grad, nemlig ved å benytte bilineær filtrering.
Istedenfor å bare gripe den nærmeste nabo til en tekstur, leser bilineær filtrering isteden de fire samplene som ligger nærmest pikselsentret, og benytter et veid gjennomsnitt av disse fargeverdiene som den endelige tekstur-fargeverdi. Som illustrert på fig. 2B, blir således et veid gjennomsnitt av T1, T2, T3 og T4 tatt, hvor vektene er basert på avstanden fra pikselsentret til de fire tekselsentre. Eksempler på ligninger for bilineær filtrering kjent for vanlige fagkyndige på det område som angår grafikkbehandling, er som følger:
hvor Irp er en interpoleringsfunksjon som lett vil forstås av dagens grafikk-prosesseringsenheter (GPl<T>er). Den visuelle nettoeffekten er å sløre ut en god del av tekstururegelmessighetene som kan ses med punktsampling, men fordi det er et filter som bare arbeider med fire innganger for et enkelt teksturkart, er effektiviteten av bilineær filtrering begrenset.
En annen løsning for å forbedre kvaliteten på teksturavbildning, er en teknikk kjent som MlP-kartlegging, hvor gjengiveren tar flere kopier av den opprinnelig tekstur, og hvert etterfølgende MlP-kart er nøyaktig halvparten av oppløsningen til det foregående. Dette blir effektivt en slags tredimensjonal tekstur hvor de vanlige to koordinater (u, v) er til stede, men hvor det også er en tredje koordinat d, brukt til å måle hvilket eller hvilke MlP-kart som skal velges, basert på hvilken kartoppløsning som vil passe best til det pikselområde som skal kartlegges eller tilordnes. I det tilfelle hvor et jagerfly er nær betraktningskameraet, vil det bli valgt et meget detaljert teksturkart, men når flyet beveger seg bort og etterhvert blir mindre og mindre, kan det benyttes mindre detaljerte kart.
Når d-koordinaten øker, blir det brukt mindre og mindre MlP-kart. Utledningen av d-koordinaten har en tendens til å bli komplisert og implementeringsavhengig, men angår generelt å finne ut hvor mye teksturforstørrelse eller teksturforminskelse som vil bli resultatet av et spesielt MlP-kartvalg basert på det pikselareal som skal dekkes. MlP-kartet med den minste mengde tekstur-forstørrelse og -forminskelse, blir således valgt i henhold til denne metoden. Som illustrert på fig. 2C, er problemet med MlP-kartlegging således et problem som angår å velge hvilken tekstur 200a, 200b, 200c osv. som skal benyttes til å representere antallet piksler, best ved pikselgjengivelsen 220.
Det er et par forskjellige måter å benytte MlP-kart på, og de er ofte avhengige av den understøttende grafikkmaskinvare. I noen tilfeller kan en anvendelse (A) velge et enkeltkart som svarer best til det pikselområde som skal kartlegges, (B) anvender bilineær filtrering på teksler i kartet, og så (C) påfører de resulterende gjennomsnittsteksler på deres tilsvarende piksler. Visuelle problemer med bilineær MlP-kartlegging kan imidlertid inntreffe ved kallgrenser når man beveger seg gjennom scenen. Når man f.eks. kjører ned en vei i et spill, kan man se synlige avbrudd i veiens tekstur. Dette skyldes sannsynligvis en MlP-kartombytting.
En fremgangsmåte for MlP-kartlegging med høyere kvalitet som ofte benyttes, blir kalt trelineær MlP-kartlegging, som bidrar til å lette grenseproblemet ved MIP-kartet som er diskutert ovenfor. Denne filtreringsmetoden tar to bilineære sampler ved å bruke fire tekselsampler hver, fra de to MlP-kart eller -tilordninger som er nærmest pikselen, hvor et teksturkart kan være litt større med hensyn til oppløsning og det annet litt mindre med hensyn til oppløsning, enn det pikselområde som skal kartlegges. Den trelineære algoritmen benytter så et veid gjennomsnitt til å kombinere de to bilineært filtrerte teksler til en resulterende teksturert teksel, med det kart hvis oppløsning er nærmest det pikselareal som mottar den høyeste vekt.
Selv trelineær MlP-kartlegging er beheftet med visse ulemper. De fleste angår imidlertid detaljnivået (LOD, level of detail) ved forspenning. Hvert MlP-kart blir sagt å ha et tilordnet LOD, og forspenning har å gjøre med veiefaktoren for gjennomsnittet mellom de to bilineære filtrerte sampler som er tatt fra de to forskjellige kart. Hvis LOD-forspenning blir "skrudd opp" for mye, veies gjennomsnittet mer mot det minste oppløsningskart, og tekstursløring kan bli resultatet. Hvis LOD-forspenningen blir "skrudd ned" for meget for å veie gjennomsnittet mot det største MlP-kart, kan aliasing eller overlapping, og midlertidig aliasing, slik som tekstur-flimring/kryping, bli resultatet. LOD-forspenning endrer således d-verdien og forårsaker at mindre eller større kart blir brukt, selv om d-verdien fremdeles er forhåndskonfigurert ved tidspunktet for utviklingen. Hovedproblemet med disse teknikkene er den isotrope beskaffenheten til bilineær og trelineær filtrering. Forstørrelsen/forminskelsen langs en akse i teksturen kan være betydelig forskjellig fra forstørrelsen/forminskelsen langs den andre akse, noe som kan resultere i aliasing langs en akse og sløring langs den annen.
Det finnes en annen filtreringsteknikk kalt anisotrop filtrering som forsøker å ta hensyn til den isotrope beskaffenheten til bilineær og trelineær filtrering. En form for anisotrop filtrering benytter MlP-kartsampling, men istedenfor å ta åtte sampler, tas det i stedet opptil seksten sampler. Ved bruk av anisotrop filtrering spesifiserer man overfor gjengiveren hvilken grad av anisotropi som finnes, som er et forhold mellom hvor langt en tekstur kan strekkes før dens bildekvalitet begynner å forringes.
I en annen form for anisotrop filtrering blir bilineær filtrering utført flere ganger langs en viss vinkel. Dette kan være nyttig der hvor "striping" er et naturlig biprodukt av pikselgjengivelsen, f .eks. som i tilfelle med at veien flyr forbi i et videospill med racerbiler. Når det teksturerte polygon er i en skjev vinkel i forhold til skjermplanet, blir avtrykket som svarer til en skjermpiksel, tilordnet på teksturen, langstrakt, dvs. at den ikke lenger er kvadratisk. Mer sofistikerte metoder benytter den oddeformede samling av teksler i dette avtrykket, og blander dem sammen for å produsere det endelige resultat. Beregning av den korrekte form som skal brukes for dette samplingsavtrykket og hvor lenge det skal vare, er et meget vanskelig problem. Alle for tiden kjente algoritmer for å utføre dette, baserer sine beregninger bare på den relative geometrien til innretningen mellom skjermpikselen og polygontekslene, og ingen tilveiebringer fleksibilitet som gjør det mulig for en utvikler å styre prosessen på en forutsigbar, intelligent måte.
Denne formen for anisotrop sampling som utfører bilineær filtrering flere ganger, er illustrert på fig. 2D, for et punkt P1a som skal filtreres anisotropt langs en vinkel 0, definert ved forholdet Av/Au, og med en trinnstørrelse s mellom punktene P1a, P1b, P1c, osv., definert av størrelsen til Av og Au, i overensstemmelse med et forutbestemt geometrisk aspekt ved det triangel som gjengis. En elliptisk form langs vinkelen 0 definerer posisjoneringen av P1b og P1c. Bilineær filtrering blir således utført for hver av P1a, P1b og P1c, som for dette eksemplet blander sammen, på en veid måte, de samsvarende grupper på fire: (A) T14, T11, T15 og T12, (B) T11, T12, T6 og T5, og (C) T7, T6, T8 og T1, respektive.
Ved å bruke flere sampler i retningen, vil teksturen måtte sprekkes for å passe til den overflate hvor den påføres, anisotrop filtrering oppnår skarpere bildekvalitet enn bilineær eller trelineær filtrering, og unngår også den teksturflimringen som finnes i forbindelse med punktsampling. Det skal også bemerkes at anisotrop filtrert tekst som fremvises ved en vinkel, slik tilfelle kan være på en plakat i et racerspill eller ved starten av en Star War-film, gjengis klarere enn i forbindelse med andre filtreringsmetoder.
Generelt har applikasjonsprogrammerings-grensesnitt (API'er) for grafikk forholdsregler, slik at en enkelt verteks kan lagre to eller flere teksturadresser for bruk ved multitekstureringseffekter. Tidligere ble multiteksturering brukt for å skape lyseffekter ved å benytte lyskart, men den har siden blitt anvendt til å frembringe ytterligere effekter slik som hump-tilordning. Disse multitekstureringsegenskapene tvang til slutt de som laget tredimensjonale brikker, til å investere i brikker for å skape parallellbehandling av piksler, og i de siste brikkegenerasjoner, å behandle flere teksler per piksel per takt.
Den fordel som oppnås ved å ha flere parallelle kanaler som er i stand til å håndtere flere teksler per piksel, er at multitekstureringsoperasjoner ofte kan utføres i løpet av en enkelt klokkesyklus eller taktsyklus, istedenfor å måtte utføre gjengivelse over flere gjennomkjøringer der hver piksel i en scene blir tegnet opp flere ganger. For hver ytterligere gjennomkjøring en brikke må gjennomgå for å gjengi en scene, blir dens effektive pikselfyllingshastighet delt med antallet gjennomkjøringer som må foretas. Hvis en brikke med en fyllingshastighet på 500 Megapiksler/sekund derfor må gjennomføre to gjennomkjøringer for å gjengi en scene med multitekstureringseffekter, blir brikkens effektive fyllingshastighet halvert til 250 Megapiksler/sekund. Hvis det tar fire gjennomkjøringer, faller fyllingshastigheten eller fyllingshyppigheten til 125 Megapiksler/sekund. Parallelle behandlingskanaler har således i sterk grad også øket effektiviteten i forbindelse med gjengivelse av grafikk.
Multiteksturering opererer ikke særlig forskjellig fra vanlig enkel teksturering, bortsett fra at de separate teksturer må blandes sammen og så blandes med den eksisterende pikselfarge som tilveiebringes ved hjelp av skyggelegging. Dobling eller tredobling av antallet teksturer som brukes i en scene, øker imidlertid dramatisk den båndbreddemengde for delbildebuffer som er nødvendig for å hente inn de ytterligere teksturer, og hvis flere gjennomkjøringer blir utført, var det en gang en bekymring for at den totale ytelsen ville lide. Utviklingen av ekstremt hurtige grafikkprosessorer i løpet av de siste år har imidlertid fjernet disse bekymringene.
Teksturering og multiteksturering kan brukes til å frembringe en stor gruppe med visuelle effekter med grunnleggende flatebeskrivelse som bare er toppen av et isfjell. Utviklere har også oppdaget en annen måte til å skape teksturer, istedenfor å lagre et "hermetisk" bitkart, kan en utvikler isteden frembringe et lite program som lager teksturer prosedyreorientert. Denne teknikken er blitt brukt til å frembringe alt fra marmoroverflater til terrengteksturer i store utendørsmiljøer, til effekter med vann i bevegelse.
En annen prosess som mange anvendelser forsøker å gjennomføre tredimen-sjonalt, er å fastsette en stemning. Dette er spesielt viktig for å forsøke å få spillere til å bli oppslukt i den verden som utvikleren har funnet på. Et nyttig verktøy til å oppnå forskjellige stemninger, er tåke, som også bidrar til å gi en scene en ytterligere dybdefølelse.
Tåke kan implementeres på flere forskjellige måter med de variasjoner som for det meste har å gjøre med hvordan tåken blir mer tåkete. To meget vanlige metoder blir kalt lineær og eksponentiell tåke, som henholdsvis skaleres lineært og eksponentielt, slik navnene antyder. Tåke kan også påføres per verteks eller per piksel, og som de fleste ting i tre dimensjoner, virker per piksel mer overbevisende, men er beregningsmessig mer kostbar.
En mer avansert metode for å tilføye tåke blir kalt avstandsbasert tåke, som tradisjonelt ikke har vært tilgjengelig i tredimensjonale forbrukerbrikker, men som med ankomsten av verteks-skyggeleggere i DirectX8, er avstandsbasert tåke en valgmulighet. En annen metode blir kalt en tåketabell, hvor tåkeverdiene blir lagret i en oppslagstabell og så påført hver piksel.
Men uansett teknikk er tåke en funksjon av hvor langt borte et objekt er, noe som vanligvis bestemmes av dets z-verdi, avstanden fra betraktningskameraet. En tåkefaktor, uansett om den er beregnet lineært eller eksponentielt, blir så beregnet og tilført pikselen ved å bruke en blandingsoperasjon for å kombinere tåkemengden (fargen) og lys/skygge/tekstur-pikselfargen. Hvis tåke blir utført per verteks, blir tåkeoperasjoner en del av belysningsberegningen og blir inkorporert over hvert triangel ved å benytte Gouraud-skyggelegging.
En annen praktisk bruk av tåke er å tillate objekter i det fjerntliggende klippeplan å "fade bort" gradvis, istedenfor bare å plutselig forsvinne ut av scenen. Tåke kan også brukes til å gjøre det mulig for en gjengiver å bare måtte tegne virkelige objekter forholdsvis nær betraktningskameraet. Når så tåkeverdien kommer nær, eller når null (tåkeverdiene er typisk verdier med flytende komma mellom null og en, hvor null er absolutt tåke og en er ingen tåke), blir objektet hovedsakelig forkastet og ingen ytterligere gjengivelsesarbeider må utføres.
Teknikker for å påføre transparens og delvis gjennomskinnelighet finnes også. I motsetningen til opake objekter må transparente objekter vanligvis dybdesorteres
fra baksiden til forsiden for å sikre at de underliggende farger som er blandet med de transparente objekter, er tilgjengelige når blandingsoperasjonen blir utført. Det finnes flere formler som brukes til å beregne et objekts gjennomskinnelighet, men en vanlig formel er:
Co = endelig pikselfarge
a = alfaverdi (mellom 0 og 1)
Cs = fargen til den transparente piksel (kalt kilden) og
Cd = fargen til den innesluttede piksel (kalt destinasjonen).
Denne formelen er en sum av to pikselmodulasjoner hvor alfaverdien blir påført forskjellig på begge piksler, og de resulterende verdier blir tilføyd sammen for å gi den endelige pikselfarge.
Fra patentskriftet US 5,651,104 (Cosman) er det kjent en fremgangsmåte for å tilveiebringe tekstursampling for å anvende disse for sampling av et teksturkart.
Det er således en myriade av teknikker som kan anvendes i forbindelse med tekstursampling av datamaskingrafikk, så langt har imidlertid utvalget av myriaden av teknikker blitt bestemt av utvikleren ved utviklingstid uten særlig fleksibilitet. Siden visse variabler og heuristikker er nyttige i forbindelse med visse grafiske omstendigheter og ikke andre, kan det endelige kvalitetsresultat være blandet selv med stadig økende prosesseringskraft. Følgelig vil det være ønskelig å øke mengden med intelligens anvendt i forbindelse med tekstursamplingsalgoritmer ved begynnelsen av prosessen. I lys av en økende trend motfleks-funksjons-GPU, vil det være ønskelig å eksponere styrbar tekstursampling, slik at utviklere på sparket kan anvende dynamisk intelligens til å håndtere forskjellige omstendigheter på de mest effektive måter. Etterhvert som mer avanserte, programmerbare per piksel skyggeleggings- og belysnings-algoritmer blir tilgjengelige, som tar i betraktning materialegenskaper, buede overflater, volumetriske teksturer, og som har langt mer kompleks teksturblanding i løpet av en gjennomkjøring, blir det stadig mer ønskelig å gjøre det mulig for utviklere å få styring over tekstursamplingsprosessen. Det kan også være ønskelig å innføre uregelmessigheter på en styrbar måte i et gjengitt bilde, slik som sløring, eller strekdannelse eller flimring. Følgelig vil det være ønskelig å tilveiebringe en eller flere av et operativsystem, en driverkode, et bruker-programmerings-grensesnitt, en verktøymappe og/eller funksjonalitet i selve den parallellbehandlede grafikk, innbefattende GPU eller en annen koprosesseringsinnretning, en mekanisme som tilveiebringer styrbare tekstursamplingsegenskaper.
OPPSUMMERING AV OPPFINNELSEN
Det er en hensikt ved den foreliggende oppfinnelse å akselerere hele presamplingen og samplingsprosessen og samtidig tilveiebringe muligheten for å spesifisere parametre som definerer samplingsavtrykket.
Denne hensikt oppnås av oppfinnelsen som definert i de selvstendige kravene. Utførelsesformer fremkommer av de uselvstendige kravene.
På bakgrunn av det foregående tilveiebringer foreliggende oppfinnelse systemer og fremgangsmåter for tilveiebringelse av styrbar tekstursampling i forbindelse med datamaskingrafikk i et datasystem. I forskjellige utførelsesformer er det tilveiebrakt forbedrede mekanismer for styring av tekstursampling som gjør det mulig for tredimensjonal akselerator-maskinvare å øke det realistiske nivå ved gjengivelse i høy grad, innbefattende forbedrede mekanismer for (1) bevegelses-sløring, (2) generering av anisotrope overflaterefleksjoner, (3) generering av selvskyggende overflate, (4) volumetrisk strålekastesampling, (4) selvskyggende volumetrisk gjengivelse, og (5) selvskyggende volumetrisk strålekasting. Ved supple-mentering av eksisterende tekstursamplingsteknikker kan parametre for tekstursampling erstattes og/eller modifiseres.
I forskjellige utførelsesformer er forskjellige fremgangsmåter, apparater, datamaskin-lesbare media og koprosesseringsanordninger tilveiebrakt, som muliggjør styrbar tekstursampling, innbefattende spesifisering av en eller flere parametre for et samplingsavtrykk benyttet i forbindelse med tekstursampling av et teksturkart og tekstursampling av teksturkartet i samsvar med de spesifiserte parametre i samplingsavtrykket.
Andre egenskaper ved og utførelsesformer av foreliggende oppfinnelse blir beskrevet nedenfor.
KORT BESKRIVELSE AV TEGNINGENE
Systemet og fremgangsmåtene for tilveiebringelse av styrbar tekstursampling i samsvar med foreliggende oppfinnelse, blir nærmere beskrevet under henvisning til de vedføyde tegninger, hvor: fig. 1 gir en oversikt over prosessen med tekstursampling i et datagrafikk-system,
fig. 2A gir en oversikt over en tidligere kjent punktsamplingsprosess som anvendes i forbindelse med tekstursampling i et datagrafikk-system,
fig. 2B gir en oversikt over en tidligere kjent bilineær filtreringsprosess anvendt i forbindelse med tekstursampling i et datagrafikk-system,
fig. 2C gir en oversikt over en tidligere kjent MlP-kartleggingsprosess anvendt i forbindelse med tekstursampling i et datagrafikk-system,
fig. 2D gir en oversikt over en tidligere kjent anisotrop filtreringsprosess benyttet i forbindelse med tekstursampling i et datagrafikk-system,
fig. 3A er et blokkskjema som representerer et eksempel på et nettmiljø med en rekke datamaskinanordninger hvor den foreliggende oppfinnelse kan implementeres,
fig. 3B er et blokkskjema som representerer et eksempel på en ikke-begrensende datamaskinanordning hvor foreliggende oppfinnelse kan implementeres,
fig. 4A illustrerer en utførelsesform av oppfinnelsen, hvor den styrbare tekstursampling er tilveiebrakt,
fig. 4B illustrerer en ytterligere utførelsesform av oppfinnelsen, hvor den styrbare tekstursampling er tilveiebrakt, og
fig. 5 illustrerer en prosess i forbindelse med hvilken ytterligere utførelsesformer av oppfinnelsen kan anvendes.
DETALJERT BESKRIVELSE AV OPPFINNELSEN
Oversikt
En mekanisme for tilveiebringelse av styrbar tekstursampling er fremskaffet, som gjør det mulig for tredimensjonal akselerator-maskinvare å øke det realistiske nivået ved gjengivelse i sterk grad, og som åpner for en måte mot bruk av stråle-sporingsberegninger i tredimensjonal maskinvare. Opptil nå har slike fremgangsmåter vært begrenset til programvaregjengivelser som arbeider med en verts-prosessor, noe som i sterk grad sinker grafikk-parallellbehandlingen (graphics pipeline). I denne forbindelse har for tiden tredimensjonale grafikkbrikker en enhet kalt en sampler, som blir brukt til å trekke ut fargen til en tekstur på et polygon under gjengivelse. Siden posisjonene til de piksler som gjengis generelt ikke svarer nøyaktig til posisjonene til tekslene i teksturen, innebærer dette en viss arbeidsbyrde. Tekstursampling kan funksjonere med forskjellige nivåer av sofistikering ved å bruke teknikker beskrevet under avsnittet i forbindelse med bakgrunnen for oppfinnelsen, slik som punktsampling, bilineær filtrering, MlP-kartlegging og anisotrop filtrering, samt andre teknikker. Slike tidligere kjente teknikker er tilknyttet faste aspekter som ikke stemmer særlig godt i alle situasjoner. De foreliggende anisotrope filtrerings-teknikker virker dessuten til å eliminere sløringseffekter, mens en utvikler i virkeligheten ønsker å skape en sløringseffekt. Foreliggende oppfinnelse eksponerer følgelig tidligere fastsatte parametre for utvikleren, for å forsyne utvikleren med tidligere ukjent intelligens med hensyn til styringsnivået over tekstursamplingsprosessen. I forskjellige utførelsesformer er oppfinnelsen vist å være nyttig for forskjellige tekstureringseffekter. Oppfinnelsen kan dessuten uten unntak implementeres med programvare, maskinvare eller begge deler. Visse implementeringsdetaljer kan f.eks. være realisert i en koprosesseringsbrikke, slik som en GPU, mens andre kan eksponeres for en grafikkutvikler via en API-verktøymappe, et operativsystem, drivere, nedlastbar kode, osv.
Eksempel på nettkoplede oa distribuerte miljøer
En vanlig fagkyndig på området vil forstå at en datamaskin eller en annen klient eller serverinnretning kan være utplassert som en del av et datanett eller i et distribuert datamiljø. I denne forbindelse angår foreliggende oppfinnelse et hvilket som helst datasystem som har et hvilket som helst antall minne- eller lagringsenheter, og et hvilket som helst antall applikasjoner og prosesser som opptrer over et hvilket som helst antall lagringsenheter eller volumer, som kan brukes i forbindelse med en tekstursamplingsprosess. Foreliggende oppfinnelse kan anvendes i forbindelse med både et miljø med serverdatamaskiner og klientdatamaskiner utplassert i et nettmiljø eller et distribuert datamiljø, med fjern eller lokal lagring. Foreliggende oppfinnelse kan også anvendes i forbindelse med alenestående beregningsinnretninger som har programmeringsspråk-funksjonalitet, tolknings- og utførelses-egenskaper for å generere, motta og sende informasjon i forbindelse med fjerntjenester eller lokale tjenester. Distribuerte databehandlingsanlegg deler datamaskinressurser og tjenester ved direkte utveksling mellom beregningsinnretninger og systemer. Disse ressursene og tjenestene innbefatter utveksling av informasjon, hurtigbuffer-lagring og platelagring av filer.
Distribuert beregning trekker fordel av nettforbindelser som gjør det mulig for klienter å benytte deres kollektive kraft til å tjene hele foretaket. I denne forbindelse kan en rekke forskjellige innretninger ha anvendelser, objekter eller ressurser som kan implisere en tekstursamplingsprosess som kan benytte teknikkene i henhold til foreliggende oppfinnelse.
Fig. 3A er et skjematisk diagram over et eksempel på et nettkoplet eller distribuert beregningsmiljø. Det distribuerte beregningsmiljø 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, fjernsyn, MP3-spillere, personlige datamaskiner, osv. Hvert objekt kan kommunisere med et annet objekt over 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., inneholde en applikasjon som kan etterspørre tekstursamplingstjenester.
I en distribuert dataarkitektur kommuniserer datamaskiner som tradisjonelt kan ha blitt brukt kun som klienter, direkte innbyrdes, og kan virke som både klienter og servere, idet den rolle som er mest effektiv for nettet, blir inntatt. Dette reduserer belastningen på tjenester, og gjør det mulig for alle klientene å aksessere ressurser som er tilgjengelige på alle klienter, for derved å øke kapasiteten og effektiviteten til hele nettet. Tekstursamplingstjenester i samsvar med foreliggende oppfinnelse kan således distribueres blant klienter og servere for å virke på en måte som er effektiv for hele nettet.
Distribuert beregning eller databehandling kan hjelpe bedrifter til å levere tjenester og kapasiteter mer effektivt over diverse geografiske grenser. Distribuert databehandling kan dessuten flytte data nærmere til det punkt hvor dataene blir forbrukt, for å virke som en netthurtigbuffer-mekanisme. Distribuert databehandling kan også gjøre det mulig for datanett å arbeide sammen på en dynamisk måte ved å bruke intelligente agenter. Agenter befinner seg på likestilte datamaskiner, og kommuniserer forskjellige typer informasjon frem og tilbake. Agenter kan også innlede oppgaver på vegne av andre likestilt systemer. Intelligente agenter kan f.eks. brukes til å prioritere oppgaver på et nett, endre trafikkstrøm, søke etter filer lokalt, eller bestemme uregelmessig oppførsel, slik som et virus, og stoppe det før det påvirker nettet. Alle andre slags tjenester kan også tenkes. Siden ett eller flere grafiske objekter og teksturkart i praksis kan være fysisk lokalisert på ett eller flere steder, er evnen til å distribuere tekstursamplingstjenester av stor nytte i et slikt system.
Det skal også bemerkes at et objekt, slik som 110c, kan befinne seg på en annen databehandlingsinnretning, 10a, 10b, osv., eller 110a, 110b, osv. Selv om det fysiske miljø som er skissert således kan vise de sammenkoplede innretninger som datamaskiner, er en slik illustrasjon kun et eksempel, og det fysiske miljø kan alternativt skisseres eller beskrives som omfattende forskjellige digitale innretninger, slik som PDA'er, fjernsyn, MP3-spillere, osv., programvareobjekter, slik som grensesnittanordninger, COM-objekter og lignende.
Det finnes en lang rekke systemer, komponenter og nettkonfigurasjoner som understøtter distribuerte databehandlingsmiljøer. Databehandlingssystemer kan f.eks. være sammenkoplet ved hjelp av ledningssystemer eller trådløse systemer, ved hjelp av lokalnett eller regionnett. For tiden er mange av nettene koplet til internett som tilveiebringer infrastrukturen for meget distribuert databehandling, og som omfatter mange forskjellige nett.
I hjemmenettmiljø er det minst fire forskjellige nettransport-medier som hvert kan understøtte en unik protokoll, slik som kraftlinje-data (både trådløs og lednings-ført), tale (f.eks. telefon) og underholdningsmedia. De fleste hjemmestyrings-innretninger, slik som lysbrytere og brytere på elektriske apparater, kan benytte kraftledningen som sammenkoplingsmedium. Datatjenester kan komme inn i hjemmet som bredbånd (f.eks. enten DSL eller kabelmodem) og er aksesserbare innenfor hjemmet ved å benyttet enten trådløse (f.eks. HomeRF eller 802.11b) eller ledningsførte (f.eks. HomePNA, Cat 5, selv kraftlinje) forbindelser. Taletrafikk kan komme inn i hjemmet enten som ledningsført (f.eks. Cat 3) eller trådløst (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 gjennom satellitt eller kabel, og blir vanligvis distribuert i hjemmet ved å benytte koaksialkabel. IEEE 1394 og DVI dukker også opp som digitale forbindelser mellom grupper av mediainnretninger. Alle disse nettmiljøene og andre som kan dukke opp som protokollstandarder, kan sammenkoples for å danne et intranett som kan være koplet til verden utenfor ved hjelp av internettet. Kort sagt finnes det en rekke forskjellige kilder til lagring og overføring av data, og følgelig vil databehandlingsinnretninger i tiden som kommer kreve måter å dele data på, slik som data som aksesseres eller benyttes i forbindelse med tekstursampling av ett eller flere grafikkobjekter og teksturkart 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 forkortelse for "Transport Control Protocol/lnterface Program". Internett kan beskrives som et system av geografisk distribuerte, fjerntliggende databehandlingsnett sammenkoplet ved hjelp av datamaskiner som utfører nettprotokoller som gjør det mulig for brukere å vekselvirke med hverandre 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, hvor utviklere kan utforme programvareapplikasjoner for å utføre spesialiserte operasjoner eller tjenester, hovedsakelig uten noen restriksjoner.
Nettinfrastrukturen muliggjør således en vert for nett-topologier, slik som klient/server, likemann-til-likemann eller hybrid-arkitekturer. "Klienten" er et medlem av en klasse eller gruppe som benytter tjenestene til en annen klasse eller gruppe som klienten er relatert til. I databehandling er en klient således en prosess, dvs. grovt sagt et sett med instruksjoner eller oppgaver som anmoder om en tjeneste levert av et annet program. Klientprosessen benytter den anmodede tjeneste uten å måtte "kjenne" detaljene ved det andre programmet eller den andre tjenesten. I en klient/server-arkitektur, spesielt i et nettkoplet system, er en klient vanligvis en datamaskin som aksesserer delte nettressurser fremskaffet av en annen datamaskin, f.eks. en server. I eksemplet på fig. 3A kan datamaskinene 110a, 110b, osv., tenkes på som klienter, og datamaskinene 10a, 10b, osv., kan tenkes på som den server hvor serveren 10a, 10b, osv., lagrer de data som så blir kopiert i klientdatamaskinene 110a, 110b, osv.
En server er typisk et fjerndatasystem 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 således å tilveiebringe distribuert funksjonalitet og gjøre det mulig for flere klienter å trekke fordel av de informasjons-samlende egenskapene til serveren.
Klient og server kommuniserer med hverandre under utnyttelse av den funksjonalitet som er fremskaffet ved hjelp av et protokoll-lag. Hypertekst-transfer-protokollen (HTTP) er f.eks. en vanlig protokoll som blir brukt i forbindelse med verdensveven (WWW). En datanettadresse, slik som en universell ressurslokalisator (URL) eller en internettprotokoll-adresse (IP-adresse), blir brukt til å identifisere server- eller klient-datamaskinene for hverandre. Nettadressen kan refereres til som en URL-adresse. Kommunikasjon kan f.eks. tilveiebringes over et kommunikasjonsmedium. Klienten og serveren kan spesielt være koplet til hverandre via TCP/IP-forbindelse for kommunikasjon med høy kapasitet.
Fig. 3A illustrerer således et eksempel på et nettkoplet eller distribuert miljø med en server i kommunikasjon med klientdatamaskiner via et/en nett/buss, hvor foreliggende oppfinnelse kan anvendes. Mer detaljert er et antall servere 10a, 10b, osv. sammenkoplet via et/en kommunikasjonsnett/buss 14, som kan være et LAN, WAN, intranett, internett, osv., med et antall klient- eller fjerntliggende
databehandlingsinnretninger 110a, 110b, 110c, 11 Od, 11 Oe, osv., slik som en bærbar datamaskin, en håndholdt datamaskin, en tynn klient, et nett-tilkoplet apparat eller en annen innretning slik som en VCR, TV, komfyr, lys, varmeovn, og lignende, i samsvar med foreliggende oppfinnelse. Det er således tenkt at foreliggende oppfinnelse kan
benyttes i forbindelse med en hvilken som helst databehandlingsinnretning som det er ønskelig å prosessere ett eller flere grafiske objekter i forbindelse med.
I et nettmiljø der kommunikasjonsnettet/bussen 14 er internett, kan f.eks. serverne 10a, 10b, osv. være nettservere som klientene 110a, 110b, 110c, 11 Od, 110e, osv., kommuniserer med via et antall kjente protokoller, slik som HTTP. Serverne 10a, 10b, osv. kan også tjene som klienter 110a, 110b, 110c, 110d, 110e, osv., som kan være karakteristiske for et distribuert databehandlingsmiljø. Kommunikasjonene kan være over ledning eller trådløse, alt etter behov. Klientinnretningene 110a, 110b, 110c, 11 Od, 11 Oe, osv., kan kommunisere, men behøver ikke å kommunisere, via kommunikasjonsnett/busser 14, og kan være tilknyttet uavhengige kommunikasjoner. I tilfelle av et TV eller en VCR, kan det være, men behøver ikke å være, et nettkoplingsaspekt i forbindelse med styringen. Hver klientdatamaskin 11 Oa, 110b, 110c, 11 Od, 11 Oe, osv., og hver serverdatamaskin 10a, 10b, osv., kan være utstyrt med forskjellige brukerprogram-moduler eller -objekter 135 og med forbindelser eller tilgang til forskjellige typer lagringselementer eller objekter, over hvilke filer kan lagres eller til hvilke en 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 vedlikeholdet og oppdateringen av en database 20 eller et annet lagringselement i samsvar med foreliggende oppfinnelse, slik som en database eller et lager 20 for lagring av ett eller flere grafikkobjekter eller mellomliggende grafikkobjekter som er prosessert i henhold til oppfinnelsen. Foreliggende oppfinnelse kan således benyttes i et datanettmiljø som har klientdatamaskiner 110a, 110b, osv., som kan aksessere og vekselvirke med et/en datanett/buss 14, og serverdatamaskiner 10a, 10b, osv., som kan vekselvirke med klientdatamaskiner 110a, 110b, osv., og andre lignende innretninger og databaser 20.
Eksempel på databehandlinqsinnretninq
Fig. 3B og den følgende diskusjon er ment å gi en kort, generell beskrivelse av et egnet databehandlingsmiljø der oppfinnelsen kan implementeres. Det skal imidlertid bemerkes at håndholdte, bærbare og andre databehandlingsinnretninger og databehandlingsobjekter 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 har evne til å operere og vekselvirke med et nett eller en buss. Foreliggende oppfinnelse kan således implementeres i et miljø av nettbaserte verts-tjenester, hvor meget lite av eller minimalt med klientressurser er implisert, f.eks. et nettmiljø hvor klientinnretningen kun tjener som en grensesnittanordning til nettet/bussen, slik som et objekt plassert i et elektrisk apparat. Over alt hvor data kan lagres eller hvorfra data kan hentes, er hovedsakelig et ønskelig eller egnet miljø for bruk av de styrbare tekstursamplingsteknikkene 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 applikasjonsprogramvare som opererer i forbindelse med den styrbare tekstursamplingen i henhold til oppfinnelsen. Programvare kan beskrives i den generelle forbindelse med datamaskin-utførbare instruksjoner, slik som programmoduler, som utføres ved hjelp av en eller flere datamaskiner, slik som klient-arbeidsstasjoner, servere eller andre innretninger. Program moduler innbefatter generelt rutiner, programmer, objekter, komponenter, datastrukturer og lignende som utfører spesielle oppgaver eller implementerer spesielle abstrakte datatyper. Funksjonaliteten til programmodulene kan typisk være kombinert eller distribuert etter ønske i forskjellige utførelsesformer. Fagkyndige på området vil dessuten forstå at oppfinnelsen kan praktiseres i forbindelse med andre datasystem-utforminger. Andre velkjente databehandlingssystemer, miljøer og/eller konfigurasjoner 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, multiprosessor-systemer, mikroprosessorbaserte systemer, programmerbar forbrukerelektronikk, nett-tilkoplede PCer, elektriske apparater og lignende. Oppfinnelsen kan også praktiseres i distribuerte databehandlingsmiljøer hvor oppgaver blir utført ved hjelp av fjerntliggende prosesseringsinnretninger som er tilkoplet gjennom et/en kommunikasjonsnett/buss eller andre dataoverføringsmedia. I et distribuert databehandlingsmiljø kan programmoduler være lokalisert i både lokale og fjerntliggende
datalagringsmedia, innbefattende lagringsinnretninger, og klientnoder kan i sin tur virke som servernoder.
Fig. 3B illustrerer således et eksempel på et egnet miljø 100 for et data-behandlingssystem hvor oppfinnelsen kan implementeres, selv om miljøet 100 som tydelig angitt ovenfor, kun er et eksempel på et egnet databehandlingsmiljø og er ikke ment å antyde noen begrensning med hensyn til bruksområde eller funksjonaliteten til oppfinnelsen. Heller ikke skal databehandlingsmiljøet 100 tolkes som å ha noen avhengighet eller krav vedrørende en hvilken som helst av eller en kombinasjon av komponenter som er illustrert i eksemplet på arbeidsmiljø 100.
På fig. 3B innbefatter et eksempel på et system for implementering av oppfinnelsen en generell databehandlingsinnretning i form av en datamaskin 110. Komponenter i datamaskinen 110 kan innbefatte, men er ikke begrenset til, en prosesseringsenhet 120, et systemlager 130 og en systembuss 121 som kopler forskjellige systemkomponenter, innbefattende systemlagre, til prosesseringsenheten 120. Systembussen 121 kan være en hvilken som helst av flere typer busstrukturer, innbefattende en lagerbuss eller en lagerstyringsenhet, en periferibuss og en lokal buss som benytter en hvilken som helst av en lang rekke bussarkitekturer. For eksempel, og ikke ment begrensende, innbefatter slike arkitekturer industristandard-arkitektur-bussen (ISA-bussen), mikrokanalarkitektur-bussen (MCA-bussen), den forbedrede ISA-buss (EISA-bussen), lokalbussen i henhold til Video Electronics Standards Association (VESA) og periferikomponentkoplings-bussen (PCI-bussen, også kjent som Mezzanine-bussen).
Datamaskinen 110 innbefatter vanligvis en rekke datamaskin-lesbare media. Datamaskin-lesbare media kan være et hvilket som helst tilgjengelig medium som kan aksesseres av datamaskinen 110, og omfatter både flyktige og ikke-flyktige media, fjernbare og ikke-fjernbare media. Som et ikke begrensende eksempel, kan datamaskin-lesbare media omfatte datalagringsmedia og kommunikasjonsmedia. Datalagringsmedia 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 datamaskin-lesbare instruksjoner, datastrukturer, programmoduler eller andre data. Datalagringsmedia innbefatter, men er ikke begrenset til, RAM, ROM, EEPROM, flash-minner eller annen minneteknologi, CDROM, digitale versatile disker eller plater (DVD) eller annen optisk platelagring, magnetkassetter, magnetbånd, magnetplatelagring eller andre magnetiske lagringsinnretninger, eller et hvilket som helst annet medium som kan brukes til å lagre den ønskede informasjon og som kan aksesseres av datamaskinen 110. Kommunikasjonsmedia omfatter typisk datamaskin-lesbare instruksjoner, datastrukturer, programmoduler eller andre data i et modulert datasignal, slik som en bærebølge eller en annen transportmekanisme, og innbefatter et hvilket som helst informasjonsleveringsmedium. Uttrykket "modulert datasignal" betyr et signal som har en eller flere av sine karakteristikker fastsatt eller endret på en måte for å kode informasjon inn i signalet. Som et ikke-begrensende eksempel innbefatter kommunikasjonsmedia ledningsførte media, slik som lednings-nett eller en direkte ledningsforbindelse, og trådløse media, slik som akustiske, radiofrekvente, infrarøde og andre trådløse media. Kombinasjoner av noen av de ovennevnte skal også være innbefattet innenfor begrepet datamaskin-lesbare media.
Systemlageret 130 innbefatter datalagringsmedia i form av flyktige og/eller ikke-flyktige lagre, slik som et leselager (ROM) 131 og et direkte lager (RAM) 132. Et grunnleggende inn/ut-system 133 (BIOS) som inneholder grunnrutinene som bidrar til å overføre informasjon mellom elementer i datamaskinen 110, slik som under start, blir vanligvis lagret i ROM 131. RAM 132 inneholder typisk data og/eller programmoduler som er umiddelbart tilgjengelige for og/eller som det for tiden arbeides med i prosesseringsenheten 120. Som et ikke-begrensende eksempel illustrerer fig. 3B et operativsystem 134, brukerprogrammer (applikasjonsprogrammer) 135, andre programmoduler 136 og programdata 137.
Datamaskinen 110 kan også innbefatte andre fjernbare/ikke-fjernbare flyktige/ikke-flyktige datalagringsmedia. Kun som et eksempel illustrerer fig. 3B en harddisk-stasjon 141 som leser fra eller skriver til et ikke-fjernbart, ikke-flyktig magnetisk medium, en magnetplate-stasjon 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 et CD-ROM eller andre optiske media. Andre fjernbare/ikke-fjernbare, flyktige/ikke-flyktige datalagringsmedia som kan brukes i eksemplet på et arbeidsmiljø, innbefatter, men er ikke begrenset til, magnetbånd-kassetter, flash-minnekort, digitale versatile plater, digitale videobånd, faststoff-RAM, faststoff-ROM og lignende. Harddisk-stasjonen 141 er typisk koplet til systembussen 121 gjennom et ikke-fjernbart minnegrensesnitt, slik som grensesnittet 140 og magnetplate-stasjonen 151 og den optiske platestasjonen 155 er typisk koplet til systembussen 121 ved hjelp av et fjernbart minnegrensesnitt, slik som grensesnittet 150.
Drivstasjonene og deres tilknyttede datalagringsmedia som er diskutert ovenfor og som er illustrert på fig. 3B, tilveiebringer lagring av datamaskin-lesbare instruksjoner, datastrukturer, programmoduler og andre data for datamaskinen 110. På fig. 3B er f.eks. harddisk-drivstasjonen 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 å illustrere 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 pekeranordning 161, vanligvis kalt en mus, en styrekule eller en berøringsskjerm. Andre innmatingsinnretninger (ikke vist) kan innbefatte en mikrofon, en styrespak, en spillekonsoll, 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 eller en universell seriebuss (USB). Et grafikkgrensesnitt 182, slik som Northbridge, kan også være koplet til systembussen 121. Northbridge er et brikkesett som kommuniserer med sentralenheten CPU eller vertsprosesseringsenheten 120, og som har ansvaret for kommunikasjoner gjennom den akselererte grafikkporten (AGP). En eller flere grafikk-prosesseringsenheter (GPU'er) 184 kan kommunisere med grafikkgrense-snittet 182.1 denne forbindelse innbefatter GPU'ene 184 vanligvis minnelageret på brikken, slik som registerlageret, og GPU'er 184 kommuniserer med et videolager 186. GPU'ene 184 er imidlertid kun et eksempel på en koprosessor, og dermed kan en rekke forskjellige koprosesseringsinnretninger være innbefattet i datamaskinen 110. 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 videolageret 186.1 tillegg til monitoren 191 kan datamaskinene også innbefatte andre perifere utmatingsinnretninger, slik som høyttalere 197 og en skriver 196, som kan være koplet til gjennom et perifert utmatingsgrensesnitt 195.
Datamaskinen 110 kan operere i et nettkoplet eller distribuert miljø ved å benytte logiske forbindelser til en 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 likestilt innretning eller en annen felles nettnode, og innbefatter vanligvis mange av eller alle de elementer som er beskrevet ovenfor i forhold til datamaskinen 110, selv om bare en minnelagringsinnretning 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å bedriftsomfattende datanett, intranett og internett.
Benyttet i et LAN-miljø, er datamaskinen 110 koplet til lokalnettet 171 gjennom et nettgrensesnitt eller en adapter 170. Brukt i et regionnett-miljø innbefatter datamaskinen 110 typisk et modem 172 eller et annet middel for å opprette kommunikasjoner over regionnettet 173, slik som internett. Modemet 172 som kan være internt eller eksternt, kan være koplet til systembussen 121 via bruker-innmatingsgrensesnittet 160 eller en annen passende mekanisme. I et nettmiljø kan programmoduler som er skissert i forhold til datamaskinen 110 eller deler av disse, være lagret i den fjerntliggende minnelagringsinnretning. Som et ikke-begrensende eksempel illustrerer fig. 3B fjerntliggende brukerprogrammer 185 som befinner seg på lagringsinnretningen 181. Man vil forstå at de nettforbindelser som er vist, bare er eksempler, og at andre midler for å opprette en kommunikasjonsforbindelse mellom datamaskinene kan benyttes.
Eksempel på distribuerte databehandlinas- strukturer eller - arkitekturer
Forskjellige distribuerte databehandlingsstrukturer er blitt og blir utviklet i lys av sammensmeltingen av personlig databehandling og internett. Individuelle brukere og forretningsbrukere er forsynt med et sømløst virkende og nett-grensesnitt for applikasjons- og databehandlingsinnretninger, noe som gjør databehandlings-aktiviteter statig mer nettleser- eller nett-orienterte.
MICROSOFT®'s.NET-plattform innbefatter f.eks. servere, byggeblokk-tjenester, slik som nettbasert datalagring og nedlastbar innetningsprogramvare. Generelt sagt, tilveiebringer NET-plattformen (1) muligheten til å gjøre hele områder av databehandlingsinnretninger i stand til å arbeide sammen og til å oppdatere og synkronisere brukerinformasjon automatisk på alle sammen, (2) øke interaktiv evne for nettsteder, muliggjort av større bruk av XML istedenfor HTML, (3) online-tjenester som gir skreddersydd tilgang til og levering av produkter og tjenester til brukeren fra et sentralt utgangspunkt for forvaltningen av de 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 telefon, (6) for utviklere, muligheten til å skape gjenbrukbare moduler for derved å øke produktiviteten og redusere antall programmeringsfeil, og (7) også mange andre integrasjonstrekk mellom plattformer.
Selv om utførelseseksempler her er beskrevet i forbindelse med programvare som befinner seg på en databehandlingsinnretning, kan en eller flere deler av oppfinnelsen også implementeres via et operativsystem, et brukerprogramgrensesnitt (API) eller et "mellommann"-objekt mellom en koprosessor og et anmodende objekt, slik som de styrbare tekstursamplingstjenester som kan utføres av, understøttes i, eller aksesseres via alle.NETers språk og tjenester, og i andre distribuerte databehandlingsstrukturer.
Styrbar tekstursampling
Som beskrevet i bakgrunnen for oppfinnelsen, er det et antall forskjellige teknikker som kan anvendes for å utføre tekstursampling med datagrafikk, avhengig av det aktuelle bruksområde. Problemet er likevel at når teknikken først er valgt, er den fiksert uten særlig fleksibilitet, slik at hvis unike omstendigheter oppstår som ikke er egnet for den valgte tekstursamplingsteknikk, eller hvis utvikleren skulle ønske visse uregelmessigheter, slik som sløring, i sluttresultatet, kan lite gjøres. Oppfinnelsen anvender følgelig intelligens i forbindelse med tekstursamplingsalgoritmer, slik at en utvikler blir gitt mer frihet ved frontenden til å muliggjøre mer dynamisk tekstursampling ved den bakre ende. Teknikken i henhold til oppfinnelsen trekker således fordel av trenden mot fleksfunksjons-GPLTer, ved å eksponere styrbar tekstursampling for utviklere for anvendelse på sparket, og dynamisk intelligens for å håndtere forskjellige omstendigheter på forskjellige måter. I forskjellige utførelsesformer tilveiebringer følgelig oppfinnelsen, for en eller flere av et operativsystem, en driverkode, en API, en verktøymappe og/eller funksjonalitet i selve grafikk-parallellbehandlingen, innbefattende GPU'en eller en annen koprosesseringsinnretning, en mekanisme som gir mulighet til styrbar tekstursampling.
Oppfinnelsen tilveiebringer således forskjellige teknikker for styring av
tekstursamplingsprosesser via programmerbar sampling. Som nevnt i bakgrunnen for oppfinnelsen, blir bilineær filtrering utført i en form for anisotrop filtrering, flere ganger langs samme vinkel. Som illustrert på fig. 4A, når det teksturerte polygon har en skjev
vinkel til skjermens plan, får det avtrykk som svarer til en skjermpiksel, tilordnet teksturen en langstrakt form, slik som en ellipse. Alle kjente metoder for beregning av den korrekte form som skal brukes for dette samplingsavtrykket, baserer sine beregninger bare på den relative geometrien mellom skjermpikselen og innretningen til polygontekslene, og ingen gir en fleksibilitet som gjør det mulig for en utvikler å styre størrelsen og orienteringen til avtrykket direkte på en forutsigbar og intelligent måte.
Oppfinnelsen tilveiebringer således forskjellige mekanismer for å muliggjøre enten en "manuell overstyring" av de automatiske beregninger som allerede er utført, og/eller en modifikasjon av resultatene som de genererer for å muliggjøre et nytt nivå av visuell realisme i tredimensjonal grafikk i sann tid.
Når det gjelder en manuell overstyring, kan oppfinnelsen benyttes til å erstatte størrelsen og orienteringen av avtrykket ved å erstatte Au og Av, som vanligvis benyttes til å beregne avtrykket, med erstatningsverdiene Aunew og Avnew Dette er illustrert på fig. 4A, hvor Aunew og Avnew definerer en erstatningsorientering 6new og definerer en erstatningstrinnstørrelse snew Selv om erstatningsverdiene Aunew og Avnew spesifiseres via et API, et operativsystem, en verktøymappe, drivere, osv., kan tekstursamplingsprosessen styres. I denne forbindelse kan dagens GPU'er med fleksible funksjoner motta tegn som representerer funksjonaliteten for å arkivere dette, ved å tildele og/eller gjentildele visse registre for å oppnå slik prosessering. GPl<T>ene kan også være prefabrikkert for å håndtere denne prosesseringen. Erstatning kan i noen tilfeller være hurtigere enn de for tiden brukte teknikker, siden brikken ikke lenger er involvert i beregning av de parametre som er definert av applikasjonen under erstatningen.
Når det gjelder en modifikasjon av foreliggende avtrykk som benyttes i forbindelse med de anisotrope teknikker, kan oppfinnelsen anvendes til å modifisere størrelsen og orienteringen til avtrykket ved å modifisere Au og Av, som vanligvis benyttes til å beregne avtrykket, med forskyvningsverdier Au0 og Av0. Dette er illustrert på fig. 4A, hvorved Au + Auo og Av + Av0 definerer en modifisert orientering hvor 60 og også definerer en modifisert trinnstørrelse So. Selv om forskyvningsverdiene Auo og Av0 således spesifiseres via en API, et operativsystem, en verktøymappe, drivere, osv., kan tekstursamplingsprosessen styres. I likhet med erstatningen, kan dagens GPU'er med fleksible funksjoner motta tegn som representerer funksjonaliteten for å oppnå dette, eller prefabrikkert for å oppnå de samme resultater. Modifikasjoner, som beskrevet her, innebærer en hvilken som helst funksjon av Au og Au0, eller Av og Av0, ikke bare enkel addisjon, dvs. multiplikasjon, eksponenter, kvadratrøtter, subtraksjon eller en hvilken som helst matematisk funksjon F(Au og Auo) eller F(Av og Avo) er tenkt, alt etter hva som kan være riktig i forbindelse med den foreliggende filtreringsoppgave.
Både modifikasjons- og erstatnings-egenskapene kan være tilveiebrakt samtidig, og er begge valgfrie hvis utvikleren velger å tillate maskinvaren å oppføre seg som vanlig med hensyn til teksturkartlegging. Oppfinnelsen forsyner imidlertid utvikleren med muligheten til å supplere for tiden eksisterende teknikker med erstatning og/eller modifisering av de parametre som definerer tekstursamplings-avtrykket for å oppnå styrbar tekstursampling.
Som beskrevet i bakgrunnen for oppfinnelsen, inkluderer også eksempler på ligninger for bilineær filtrering som er kjent for vanlig fagkyndige på grafikk-behandlingsområdet, følgende:
I en eller flere ytterligere utførelsesformer gjør oppfinnelsen det mulig for utviklere å erstatte eller modifisere den ota og ott, som er benyttet i forbindelse med den bilineære filtreringsberegning, for å tilveiebringe et ytterligere styringslag over tekstursamplingsprosessen.
Den eller de teknikker som tilveiebringes ved hjelp av oppfinnelsen, er generelle, og bruksområdet for anvendelsen er praktisk talt uten grenser. Selv om mange eksempler på bruken er gitt nedenfor, og selv om mange eksempler på virk-ninger i forbindelse med hvilke oppfinnelsen kan brukes, er gitt i bakgrunnen for oppfinnelsen, er oppfinnelsen således ment å gjelde en hvilken som helst tekstursamplingsprosess der det vil være ønskelig å styre aspekter ved kartleggingen eller tilordningen.
Eksempler på bruk av oppfinnelsen og eksempler på pseudokode for denne, blir derfor gitt nedenfor.
Nåværende fremgangsmåter for bevegelsessløring krever mange gjengivelseskjøringer, f.eks. mellom fire og åtte, noe som direkte resulterer i langsommere ytelse, f.eks. fire til åtte ganger langsommere ytelse. Ved å bruke en filtreringsløsning i samsvar med oppfinnelsen, kan det fremskaffes lignende resultater med bare én kjøring med en meget redusert virkning på ytelsen. I et slikt tilfelle vil oppfinnelsen benytte itererte (verteksnivå) data tii å styre den retningsvektoren som sløringen vil inntreffe i. Som forklart ovenfor kan retningsvektoren enten modifiseres eller erstattes ved å modifisere eller erstatte de definerende parametre. En lignende løsning kan brukes til å simulere og/eller styre refleksjons-Fresnel-sløring.
Det er mulig å generere anisotrope overflaterefleksjoner og belysningseffekter for diffus belysning, og for en viss tilnærmelse til speilbelysning. Sann speilbelysning kommer fra omgivelseskart som nåværende teknikker ikke kan sample på anisotrop måte. Teknikken eller teknikkene i henhold til oppfinnelsen muliggjør anisotrop gjengivelse av reflekterte omgivelseskart. En slik teknikk eller slike teknikker er spesielt egnet for blanke og likevel anisotrope overflater, slik som lett børstede metallflater på rustfritt tilbehør, og kan benytte enten per verteks og per piksel spesifikasjon av samplingsretningen ved å modifisere eller erstatte de definerende parametre i samplingsretningen.
Når det gjelder overflate-selvskygging finnes det mange teknikker som fremmer belysning av overflater per piksel. Flesteparten av disse teknikkene kan bare utføre diffuse belysningseffekter som pr. definisjon er glatte, myke lyseffekter. Den dominerende visuelle virkning av rue overflater kommer fra de skygger som høyere områder kaster på lavere områder, noe som tilveiebringer skarpe grenser med høy kontrast som klart gjengir ruheten til overflateteksturen. Andre fremgangsmåter for beregning av skygger i tredimensjonal grafikk, kan bare kaste skygger fra et polygon på et annet og er ikke gyldig for beregning av skygger mellom teksler på det samme polygon. Oppfinnelsen tilveiebringer således per piksel spesifikasjon av samplingsretningen ved å modifisere eller erstatte de definerende parametrene til samplingsretningen.
Fig. 5 illustrerer et grunnleggende prinsipp bak skyggelegging, og illustrerer ytterligere utførelsesformer av oppfinnelsen. På fig. 5 er det illustrert et vilkårlig ter-reng eller en overflate T som skal skyggelegges eller belyses, fra en punktkilde ps, slik at det skraverte område matematisk representerer de arealer av overflaten som er eksponert for stråler fra punktkilden ps. I denne forbindelse er terrenget T definert ved hjelp av et antall punkter som i tillegg til å ha u- og v-verdier, også har en w-verdi, som svarer til høyden av punktet til terrenget T. Samplingsretningen for skyggelegging eller belysning i tre dimensjoner, innebærer derfor typisk å fastsette en tredimensjonal samplingsretningsvektor som har en orientering og en trinn-størrelse definert av Au, Av og Aw-verdier. I dette henseende gjør oppfinnelsen det mulig å erstatte eller modifisere Au, Av og Aw-verdiene for å utvide de anvendte teknikker i forbindelse med Au og Av-verdiene, som er beskrevet ovenfor, til Aw-verdien.
Med hensyn til volumetrisk strålekastingssampling krever nåværende fremgangsmåter for volumetrisk gjengivelse, oppdeling av volumet i polygoner som er forholdsvis ortogonale til øyeretningen. Dette produserer båndformede uregelmessigheter langs kantene og hjørnene til slike volumer. Teknikken eller teknikkene i henhold til oppfinnelsen gjør det mulig å unngå disse uregelmessighetene på en regulerbar måte, samt å forbedre ytelsen. Oppfinnelsen muliggjør således spesifikasjonen eller modifikasjonen av en tredimensjonal vektor som bestemmer samplingsretningen, som så blir iterert lineært fra verteksene. Sampling kan så utføres ved hjelp av en rekke flercellede, f.eks. 8-cellede, trelineære sampler, eller ved hjelp av bilineære sampler.
Når det gjelder selvskyggende volumetrisk gjengivelse ved bruk av denne teknikken i kombinasjon med konvensjonell skive- eller list-lignende volumetrisk gjengivelse, kan enten selvskyggings- eller selvbelysnings-effekter simuleres innenfor det gjengitte volum. Oppfinnelsen muliggjør således en per verteks spesifikasjon eller modifikasjon av en tredimensjonal samplingsretningsvektor.
Med hensyn til selvskyggende, volumetrisk stråiekasting, blir det tilføyd et nestet sløyfenivå, hvor det ved hver sampel langs strålen blir kastet et separat sett med sampler langs retningen til lyskilden for å tilveiebringe sann volumetrisk strålekastingsgjengivelse med selvskygging. Denne teknikken er en enkel utvidelse av de teknikker som er diskutert så langt, men impliserer mer betydelige endringer i samplingsmaskinvaren.
Med hensyn til programmerbar tekstursampling og samplingsskyggeleggere, er den nøkkelteknikken som realiseres ved hjelp av oppfinnelsen, å tillate applikasjonen, eller utviklere, å spesifisere retning og avstand for anisotrope filterkjerneprøver.
Programmerte verdier som brukes i nåværende bilineær eller prelineær sampling, innbefatter en u-bredde og en v-bredde for en firepunkts kjerne. Ytterligere verdier for programmerbar anisotrop sampling i henhold til oppfinnelsen, innbefatter du-avstanden til sampler i u, og dv-avstanden mellom sampler i v.
I denne forbindelse muliggjør oppfinnelsen spesifikasjon eller modifikasjon av disse parametrene per piksel i tillegg til per verteks, fulgt av iterasjon. Slike teknikker vil f.eks. være tilstrekkelige for anisotropt slørede omgivelseskart.
Ikke- bearensende pseudokode- eksempler
Eksempler på pseudokode for en grunnleggende anisotrop skyggelegger er som følger:
for hver piksel
Eksempler på pseudokode for en skyggelegger for bevegelsessløring, f.eks. for en anisotrop sløringsskyggelegger, for å simulere børstet metall med omgivelseskart som opererer på todimensjonale data per verteks, er som følger: for hver piksel
Eksempler på pseudokode for en overflateskyggelegger med skarp skygge, f.eks. for en selvskyggende skyggelegger for en lokal overflate som gir skarpe skyggekaner, men som tillater tidlig sampling når det blir bestemt at posisjonen er i skygge, er som følger:
for hver piksel
Eksempler på pseudokode for en overflateskyggelegger med utydelige skygger, som beregner en fraksjonsmessig skyggeverdi ved å distribuere skyggen til den nærmeste eller de nærmeste inneslutninger, er som følger: for hver piksel
Ytterligere eksempler på bruken av oppfinnelsen innbefatter å tilveiebringe en programmerbar, volumetrisk strålekastingsskyggelegger som akkumulerer og
integrerer trelineære samplingsverdier. Slikt som en skyggelegger kan oppføre seg forskjellig, basert på hvor harde dataene er i det parallellbehandlede miljø. I denne forbindelse kan oppfinnelsen benyttes sammen med z-buffere til å integrere opake objekter. I et slikt tilfelle kan en z-bufferutlesning utføres, og x-buffere kan sammenlignes pr. sampel. En slik teknikk kan også forutsette at strålene alltid har
retning bort fra øyet, slik at integrasjon kan slutte i forbindelse med resultatet av dybdesammenligningsoperasjonen.
Andre eksempler på bruken av oppfinnelsen innbefatter å tilveiebringe en programmerbar, selvskyggende, volumetrisk tåke/pels-skyggelegger som benytter en aktuell gjengivelsesmetode av listtypen for volumdata, men som benytter den eller de teknikker som er beskrevet ovenfor til å beregne skyggestråler.
Det er flere måter å implementere foreliggende oppfinnelse på. En måte er å tilveiebringe en implementering hvorved koprosessoren eller koprosessorene, f.eks. GPlTer, er prefabrikkert for å utføre funksjonaliteten i henhold til oppfinnelsen, og for å motta kommandoer egnet til den styrbare tekstursampling som er beskrevet her. En annen implementering av oppfinnelsen innbefatter manuell eller automatisk programmering av koprosessoren eller koprosessorene for å oppnå funksjonaliteten i henhold til oppfinnelsen, hvorved et passende API, en verktøymappe, driverkode, operativsystem, et alenestående eller nedlastbart programvareobjekt, osv., muliggjør bruken av oppfinnelsen som mellom applikasjonen og koprosessoren. En annen implementering innbefatter endring av parametrene som mates til koprosessoren eller koprosessorene på applikasjonen for å gjøre modifikasjonen/erstatningen av avtrykksparametrene til tekstursamplingsprosessen transparent for koprosessoren eller koprosessorene. Oppfinnelsen er således tenkt for å implementere den programmerbare tekstursampling som er beskrevet her, fullstendig i maskinvare, delvis i maskinvare og delvis i programvare, samt som en programvare-implementering.
I henhold til et implementeringseksempel ifølge oppfinnelsen, er en API-komponent tilveiebrakt som muliggjør spesifikasjonen av parameteren eller parametrene i samplingsutsagnet som identifiserer en retningsvektor som sampling skal finne sted i. Alle de variantene som er beskrevet ovenfor under henvisning til multidimensjonale samplingsvektorer, er også ment å inngå. Den tredje komponenten som brukes for elevasjonshelningen, kan f.eks. benyttes til å kaste skygger, til volumetrisk gjengivelse, osv. Et eksempel på en slik API-komponent for å operere på maskinvareregistre, er som følger i pseudokodeformat:
LD#rO, tO, vO
sample texture set at stage #
place result in rO
sample at texcoord to
with footprint axis vO
and sampling count/blending mode defines in declaration of stage # as in:
stg # wrapmode = off,
tilemode = wrap,
filtermode = programmable,
samplecount = 16
width = 1
filterop = replace (app-specified values)
Et eksempel på en kretsdel eller maskinvaredel som gjør retningsvektoren/- kursen til den anisotrope skyggelegging styrbar ved hjelp av de ovenfor API-spesifiserte anordninger, innbefatter følgende funksjonalitet: (A) standardverdier, (B) erstatt, (C) tilføy og (D) modulasjon.
I denne forbindelse definerer standardverdier konvensjonell, ikke-brukerstyrt sampling som beregner stegstørrelse og retning for sampling basert på en standard anisotrop filtreringsalgoritme. Erstatt-funksjonen erstatter standardverdiene med brukerspesifiserte verdier. Tilføy-funksjonen tilføyer de brukerspesifiserte verdier til de brikkeberegnede verdier for å bestemme den endelige samplingsretning. Moduler-funksjonen multipliserer den brukerspesifiserte retningsvektor med den brikkeberegnede vektor for å bestemme den endelige samplingsretning.
I henhold til en utførelsesform av oppfinnelsen, gjør maskinvarebrikker bruk av eksisterende maskinvareteknikker for avhengig lesning til å ta individuelle sampler for å implementere de forskjellige teknikker ifølge oppfinnelsen. En slik utførelsesform gjør det mulig for en applikasjon å styre posisjonen til hver sampel i kjernen, ikke bare den i hvert sett med to og to bilineære avtrykk, og er derfor mer generell enn noen av de teknikker som er beskrevet ovenfor. Ytterligere anvendelser av oppfinnelsen innbefatter bruken av de deriverte i Nelson Max's horisontkatrleggings-løsning for å oppnå selvskyggede teksturer ved å styre innfallsparametrene som ble brukt til dette.
Oppfinnelsen i sine relevante utførelsesformer understøtter også (1) deteksjon av, (2) "tidlig ut" eller (3) en retur av null(er) når den utkastede stråle skjærer det aktuelle z-buffer, eller når metning inntreffer.
I andre utførelsesformer av oppfinnelsen er det tilveiebrakt programmerbare samplingsskyggeleggere som muliggjør algoritmisk styring av samplingsoperasjoner, som beskrevet mer eller mindre detaljert ovenfor. Videre blir det oppnådd visse annen ordens effekter, slik som muligheten til å variere avstanden mellom disse inkrementene, eller størrelsen av kjernen til hvert trinn, slik at sløring, distribuert lys osv. kan modelleres.
Som nevnt ovenfor kan de underliggende konsepter, selv om utførelses-eksempler av foreliggende oppfinnelse er blitt beskrevet i forbindelse med forskjellige databehandlingsinnretninger og nettarkitekturer, anvendes på en hvilken som helst databehandlingsinnretning eller et hvilket som helst system hvor det er ønskelig å utføre tekstursampling. Teknikkene for å tilveiebringe forbedret signalbehandling i samsvar med foreliggende oppfinnelse, kan således anvendes på en lang rekke bruksområder og innretninger. Algoritmen eller algoritmene i henhold til oppfinnelsen kan f.eks. anvendes på operativsystemet til en databehandlingsinnretning, tilveiebrakt som et separat objekt i 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, osv. Selv om eksempler på programmeringsspråk, navn og eksempler her er valgt 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 finnes mange måter å tilveiebringe objektkode på som oppnår den samme, en lignende eller en ekvivalent styrbar tekstursampling oppnådd ved hjelp av oppfinnelsen.
De forskjellige teknikker som er beskrevet her, kan implementeres i forbindelse med maskinvare eller programvare, eller når det passer, med en kombinasjon av begge. Fremgangsmåtene og anordningene i henhold til foreliggende oppfinnelse, eller visse aspekter eller deler av denne, kan ha form av programkode (dvs. instruksjoner) som befinner seg i berørbare media, slik som disketter, CD-ROM, harddisk-innretninger eller et hvilket som helst annet maskinlesbart lagringsmedium hvor, når programkoden er lastet inn i og blir utført av en maskin, slik som en datamaskin, maskinen blir en anordning for å praktisere oppfinnelsen. I tilfelle med utførelse av programkode på programmerbare datamaskiner, vil databehandlingsinnretningen vanligvis innbefatte en prosessor, et lagringsmedium som kan leses av prosessoren (innbefattende flyktige og ikke-flyktige lagre og/eller lagringselementer), minst én innmatingsinnretning og minst én utmatingsinnretning. Ett eller flere programmer som kan benytte signalbehandlings-tjenestene i henhold til foreliggende oppfinnelse, f.eks. ved bruk av et data-behandlende API eller lignende, er fortrinnsvis implementert i et høynivå, prosedyreorientert eller objektorientert programmeringsspråk for å kommunisere med et datasystem. 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 kombinert med maskinvareimplementeringer.
Fremgangsmåtene og anordningene i henhold til foreliggende oppfinnelse kan også praktiseres via kommunikasjoner utformet som programkode som blir sendt over et eller annet overføringsmedium, slik som over elektrisk ledningsføring eller kabling, gjennom fiberoptikk eller via en hvilken som helst annen form for overføring, hvor, når programkoden blir mottatt og er lastet inn i og utført av en maskin, slik som en EEPROM, en portgruppe, en programmerbar logikkinnretning (PLD), en klientdatamaskin, en videoopptaker eller lignende, eller en mottakende maskin med de signalbehandlingsegenskaper som er beskrevet i utførelseseksemplene ovenfor, blir en anordning for å praktisere oppfinnelsen. Implementert på en universalprosessor kombineres programkoden med prosessoren for å tilveiebringe et unikt apparat som opererer for å påkalle funksjonaliteten til foreliggende oppfinnelse. Eventuelle lagringsteknikker som brukes i forbindelse med foreliggende oppfinnelse, kan i tillegg, 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 figurer, vil man forstå at andre lignende utførelsesformer kan benyttes, eller at modifikasjoner og tillegg kan gjøres på den beskrevne utførelsesform for å utføre den samme funksjon i henhold til foreliggende oppfinnelse, uten å avvike fra denne. Selv om eksempler på nettmiljøer i henhold til oppfinnelsen er beskrevet i forbindelse med et nettkoplet miljø, slik som et likemann-til-likemann-nettmiljø, vil f.eks. en fagkyndig på området innse at foreliggende oppfinnelse ikke er begrenset til dette, og at fremgangsmåtene som er beskrevet i foreliggende oppfinnelse, kan anvendes på en hvilken som helst databehandlingsinnretning eller et hvilket som helst miljø, slik som en spillekonsoll, en håndholdt datamaskin, en bærbar datamaskin, osv., uansett om den er ledningstilkoplet eller trådløs, og kan anvendes på et hvilket som helst antall av slike databehandlingsinnretninger koplet via et kommunikasjonsnett og vekselvirkende over nettet. Det skal videre understrekes at en rekke datamaskinplattformer, innbefattende operativsystemer i håndholdte innretninger og andre brukerspesifikke operativsystemer, er påtenkt, spesielt når antallet trådløse nett-tilkoplede innretninger fortsetter å stige. Foreliggende oppfinnelse kan videre implementeres i eller over et antall proseseringsbrikker 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 ha et omfang og en rekkevidde i samsvar med de vedføyde patentkrav.

Claims (70)

1. Koprosesseringsanordning (184) for bruk i forbindelse med styrbare tekstur-samplingsinstruksjoner, omfattende en tekstursamplingskomponent innrettet for å utføre tekstursampling på et teksturkart (200,200b,200c) i samsvar med i det minste en spesifisert parameter (Au0, Av0, s0, Bo, Aunew, Avnew, snew, Bnew) som definerer et samplingsavtrykk anvendt i forbindelse med nevnte tekstursampling av teksturkartet, karakterisert ved at koprosesseringsanordningen videre omfatter en innmatingskomponent innrettet for å motta en spesifikasjon for minst én parameter som definerer samplingsavtrykket.
2. Anordning ifølge krav 11, hvor innmatingskomponenten innbefatter minst én av: en første innmatingskomponent som mottar instruksjoner for å modifisere minst én standardparameter (Au, Av, s, 9) ved å motta en spesifikasjon for minst én forskyvningsverdi (Auo, Av0) for den minst ene standardparameter, og en andre innmatingskomponent som mottar instruksjoner for å erstatte den minst ene standardparameter (Au, Av, s, 6) med minst én erstatningsparameter Aunew, Avnew. Snewi Qnew)-
3. Anordning ifølge krav 2, hvor den første innmatingskomponent som mottar instruksjoner for modifisering, innbefatter minst én av: en tredje innmatingskomponent som mottar instruksjoner for å addere forskyvningsverdien og standardparameteren, en fjerde innmatingskomponent som mottar instruksjoner for å multiplisere forskyvningsverdien og standardparameteren, en femte innmatingskomponent som mottar instruksjoner for å anvende en av forskyvningsverdien og standardparameteren som en eksponent, en sjette innmatingskomponent som mottar instruksjoner for å subtrahere forskyvningsverdien og standardparameteren, og en sjuende innmatingskomponent som mottar instruksjoner for å utføre en forhåndsbestemt matematisk funksjon basert på standardparameteren og forskyvningsverdien.
4. Anordning ifølge et av kravene 1 -3, hvor samplingsavtrykket er et samplingsavtrykk fra minst én av: en punktsamplingsprosess, en bilineær filtreringsprosess, en MlP-kartleggingsprosess, en anisotrop filtreringsprosess og en antioverlappings-prosess.
5. Anordning ifølge krav 1, hvor innmatingskomponenten som mottar instruksjoner for å spesifisere, innbefatter en komponent som mottar instruksjoner for å spesifisere den minst ene parameter ved minst én av per verteks og per piksel (222) i forbindelse med tekstursamplingskomponenten.
6. Anordning ifølge krav 5, videre innbefattende å anvende tekstursamplingen av tekstursamplingskomponenten iterativt.
7. Anordning ifølge krav 1, hvor innmatingskomponenten som mottar instruksjoner for å spesifisere, innbefatter en komponent som mottar instruksjoner for å spesifisere minst én av en trinnstørrelse (s0, snew) og en orientering (90,0new) for samplingsavtrykket.
8. Anordning ifølge krav 5 eller 6, hvor innmatingskomponenten som mottar instruksjoner for å spesifisere, innbefatter minst én av: en første innmatingskomponent som mottar instruksjoner for å spesifisere du-avstanden mellom sampler i en u-retning, og en annen innmatingskomponent som mottar instruksjoner for å spesifisere dv-avstanden mellom sampler i en v-retning.
9. Anordning ifølge krav 5 eller 6, hvor innmatingskomponenten som mottar instruksjoner for å spesifisere, innbefatter en komponent som mottar instruksjoner for å spesifisere minst én av en Au-verdi, en Av-verdi og en Aw-verdi.
10. Anordning ifølge krav 1, hvor innmatingskomponenten som mottar instruksjoner for å spesifisere, innbefatter en komponent som mottar instruksjoner for å spesifisere en av en cvverdi og en otb-verdi for bruk i forbindelse med bilineær filtreringsberegning.
11. Anordning ifølge et av kravene 1 - 3, hvor samplingsavtrykket er et anisotropt filtreringssamplingsavtrykk.
12. Anordning ifølge krav 11, hvor den minst ene parameter innbefatter minst én av en retning og en avstand for anisotrope filterkjernesampler.
13. Anordning ifølge et av kravene 1-12, hvor tekstursamplingen av teksturkartet i samsvar med de spesifiserte parametre endrer minst én visuell effekt ved pikselrommet som et resultat av tekstursamplingen, og at den minst ene visuelle effekt innbefatter minst én av: en sløringseffekt, en blokkeringseffekt, en teksturutflytings-effekt, en pikselpoppingseffekt, en tidsmessig aliasingseffekt eller overlappingseffekt, en teksturflimringseffekt, en teksturkrypingseffekt og en strekdannelseseffekt.
14. Anordning ifølge et av kravene 1-12, hvor tekstursamplingen av teksturkartet i samsvar med de spesifiserte parametre teksturerer en triangeloverflate for å oppnå minst én av: en lyseffekt, en dumpkartleggingseffekt, en sløringseffekt, en refleksjonssløringseffekt, en Fresnel-sløringseffekt, en marmoreffekt, en bevegelig vanneffekt, en lineær tåkeleggingseffekt, en eksponentiell tåkeleggingseffekt, en avstandsbasert tåkeleggingseffekt, en transparenseffekt, en transluktanseffekt, en buet overflateeffekt, en skarp skyggeeffekt, en uklar skyggeeffekt og en volumetrisk tekstureringseffekt.
15. Anordning ifølge krav 1, hvor innmatingskomponenten som mottar instruksjoner for å spesifisere minst én parameter, innbefatter minst én innmatingskomponent som mottar instruksjoner for å spesifisere minst én parameter for et samplingsavtrykk som angår bevegelsessløring, og hvor innmatingskomponenten videre innbefatter en annen komponent som mottar instruksjoner for å påføre itererte verteksnivå-data til å styre en retningsvektor for samplingsavtrykket.
16. Anordning ifølge krav 1, hvor innmatingskomponenten som mottar instruksjoner for å spesifisere minst én parameter, innbefatter en første innmatingskomponent som mottar instruksjoner for å spesifisere minst én parameter for et samplingsavtrykk som påfører minst én av: anisotrop overflaterefleksjon, diffus belysning, og en tilnærmelse til speilbelysning, og hvor innmatingskomponenten som mottar instruksjoner for å spesifisere, videre innbefatter en annen komponent som mottar instruksjoner for å påføre en av per verteks og per piksel spesifikasjon av samplingsretningen til samplingsavtrykket.
17. Anordning ifølge krav 11, hvor innmatingskomponenten som mottar instruksjoner for å spesifisere minst én parameter, innbefatter en første innmatingskomponent som mottar instruksjoner for å spesifisere minst én parameter for et samplingsavtrykk som påfører overflateselvskygging, og hvor innmatingskomponenten som mottar instruksjoner for å spesifisere, videre innbefatter en annen innmatingskomponent som mottar instruksjoner for å påføre spesifisering per piksel for samplingsretningen til samplingsavtrykket.
18. Anordning ifølge krav 17, hvor innmatingskomponenten som mottar instruksjoner for å spesifisere, videre innbefatter en komponent som mottar instruksjoner for å spesifisere styreparametre for derivasjonsberegninger av Nelson Max's horisontkartlegging.
19. Anordning ifølge krav 11, hvor innmatingskomponenten som mottar instruksjoner for å spesifisere minst én parameter, innbefatter en første innmatingskomponent som mottar instruksjoner for å spesifisere minst én parameter for et samplingsavtrykk som påfører volumetrisk strålekastingssampling, hvor den volumetriske strålekastingssamplingen innbefatter å skivedele et volum i polygoner relativt ortogonalt til en øyeretning, og hvor innmatingskomponenten som mottar instruksjoner for å spesifisere, videre innbefatter en annen innmatingskomponent som mottar instruksjoner for å spesifisere samplingsretningen til samplingsavtrykket, og hvor tekstursamplingskomponenten iterativt påføres den spesifiserte samplingsretning.
20. Anordning ifølge krav 19, videre innbefattende en detekteringskomponent som detekterer når en av en utkastet stråle skjærer et aktuelt z-buffer og når metning inntreffer.
21. Anordning ifølge krav 1, hvor innmatingskomponenten som mottar instruksjoner for å spesifisere minst én parameter, innbefatter en første innmatingskomponent som mottar instruksjoner for å spesifisere minst én parameter for et samplingsavtrykk som påfører volumetrisk selvskyggingsgjengivelse i kombinasjon med konvensjonell skive-eller listmessig volumetrisk gjengivelse, og hvor inngangskomponenten som mottar instruksjoner for å spesifisere, videre innbefatter en annen innmatingskomponent som mottar instruksjoner for å påføre spesifikasjon per verteks for samplingsretningen til samplingsavtrykket.
22. Anordning ifølge krav 1, hvor innmatingskomponenten som mottar instruksjoner for å spesifisere, innbefatter en komponent som mottar instruksjoner for å spesifisere en retningsvektor for samplingsavtrykket fra minst én av: et applikasjons-programmeringsgrensesnitt (API), driverkode, et operativsystem og en applikasjon.
23. Anordning ifølge et av kravene 1 - 22, hvor koprosesseringsanordning videre innbefatter minst én grafikkprosesseringsenhet (184).
24. Datamaskin-lesbart medium (20, 130-132,141,152,156,181, 186) for å tilveiebringe styrbar tekstursampling, som har lagret minst én datamaskinutførbar modul (135, 135a-135e, 136,145,146,185) som omfatter datamaskinutførbare instruksjoner for å utføre en fremgangsmåte, der fremgangsmåten omfatter: å spesifisere minst én parameter (Au0, Av0, s0, 60, Aunew. Avnew, snew, Onew) som definerer et samplingsavtrykk anvendt i forbindelse med tekstursampling av et teksturkart (200,200b,200c), og å innlede tekstursampling av teksturkartet i koprosesseringsanordningen i henhold til krav 1 i samsvar med de spesifiserte parametrene til samplingsavtrykket.
25. Datamaskinlesbart medium ifølge krav 24, hvor spesifiseringen innbefatter minst én av: (1) å modifisere minst én standardparameter (Au0, Av0, s0, Bo) ved å spesifisere minst én forskyvningsverdi (Auo, Avo) for den minst ene standardparameter, og (2) å erstatte den minst ene standardparameter (Au0, Av0, s0, Øo) med minst én erstatningsparameter (Aunew, Avnew, snew, Qnew)-
26. Minst ett datamaskinlesbart medium ifølge krav 25, hvor modifiseringen innbefatter minst én av: å tilføye forskyvningsverdien og standardparameteren, å multiplisere forskyvningsverdien og standardparameteren, å anvende enten forskyvningsverdien eller standardparameteren som en eksponent, å subtrahere forskyvningsverdien og standardparameteren, og å utføre en forhåndsbestemt matematisk funksjon basert på standardparameteren og forskyvningsverdien.
27. Minst ett datamaskinlesbart medium ifølge et av kravene 24 - 26, hvor samplingsavtrykket er et samplingsavtrykk fra minst én av: en punktsamplingsprosess, en bilineær filtreringsprosess, en MlP-kartleggingsprosess, en anisotrop filtreringsprosess og en antialiasing-prosess.
28. Minst ett datamaskinlesbart medium ifølge krav 27, hvor spesifiseringen innbefatter å spesifisere den minst ene parameter minst én gang per verteks og per piksel (222) i forbindelse med tekstursamplingen.
29. Minst ett datamaskinlesbart medium i henhold til krav 28, videre innbefattende å anvende tekstursamplingen iterativt.
30. Minst ett datamaskinlesbart medium ifølge krav 24, hvor spesifiseringen innbefatter å spesifisere minst én av en trinnstørrelse (so, snew) og en orientering (90, Ønew) for samplingsavtrykket.
31. Minst ett datamaskinlesbart medium ifølge krav 28 eller 29, hvor spesifiseringen innbefatter minst én av: du-avstanden mellom sampler i en u-retning, og å spesifisere dv-avstanden mellom sampler i en v-retning.
32. Minst ett datamaskinlesbart medium ifølge krav 28 eller 29, hvor spesifiseringen innbefatter å spesifisere minst én av en Au-verdi, en Av-verdi og en Aw-verdi.
33. Minst ett datamaskinlesbart medium ifølge krav 24, hvor spesifiseringen innbefatter å spesifisere en av en Oa-verdi og en Ob-verdi for bruk i forbindelse med bilineær filtreringsberegning.
34. Minst ett datamaskinlesbart medium ifølge krav 24, hvor samplingsavtrykket er et anisotropt filtrerings-samplingsavtrykk.
35. Minst ett datamaskinlesbart medium ifølge krav 34, hvor den minst ene parameter innbefatter minst én av en retning og en avstand for anisotrope filterkjernesampler.
36. Minst ett datamaskinlesbart medium ifølge et av kravene 24 - 35, hvor tekstursampling innledet ved hjelp av den innledende tekstursampling av teksturkartet i samsvar med de spesifiserte parametre, endrer minst én visuell effekt ved et pikselrom som et resultat av tekstursamplingen, hvor den minst ene visuelle effekt innbefatter minst én av: en sløringseffekt, en blokkeringseffekt, en tekstur-utflytings-effekt, en pikselpoppingseffekt, en tidsmessig overlappingseffekt, en teksturflimringseffekt, en teksturkrypingseffekt og en strekdannelseseffekt.
37. Minst ett datamaskinlesbart medium ifølge et av kravene 24 - 35, hvor tekstursamplingen som innledes ved hjelp av den innledende tekstursampling av teksturkartet i samsvar med de spesifiserte parametre, teksturerer en triangeloverflate for å oppnå minst én av: en belysningseffekt, en dumpkartleggingseffekt, en sløringseffekt, en refleksjonssløringseffekt, en Fresnel-sløringseffekt, en marmoreffekt, en bevegelig vanneffekt, en tåkedannelseseffekt, en eksponentiell tåkedannelseseffekt, en avstandsbasert tåkeleggingseffekt, en transparenseffekt, en transluktanseffekt, en buet overflateeffekt, en skarp skyggeeffekt, en uklar skyggeeffekt, og en volumetrisk tekstureringseffekt.
38. Minst ett datamaskinlesbart medium ifølge krav 24, hvor spesifiseringen av minst én parameter innbefatter å spesifisere minst én parameter for et samplingsavtrykk som påfører bevegelsessløring, og at spesifiseringen videre innbefatter å påføre itererte verteksnivå-data for å styre en retningsvektor for samplingsavtrykket.
39. Minst ett datamaskinlesbart medium ifølge krav 24, hvor spesifiseringen av den minst ene parameter innbefatter å spesifisere minst én parameter for et samplingsavtrykk som påfører minst én av: en anisotrop overflaterefleksjon, diffus belysning og en tilnærmelse til speilbelysning, og hvor spesifiseringen videre innbefatter å påføre en av per verteks og per piksel spesifikasjon for samplingsretningen til samplingsavtrykket.
40. Minst ett datamaskinlesbart medium ifølge krav 24, hvor spesifiseringen av minst én parameter innbefatter å spesifisere minst én parameter for et samplingsavtrykk som påfører overflateselvskygging, og at spesifiseringen videre innbefatter å anvende spesifikasjon per piksel av samplingsretning for samplingsavtrykket.
41. Minst ett datamaskinlesbart medium ifølge krav 40, hvor spesifiseringen videre innbefatter å spesifisere styreparametre for derivert-beregninger av Nelson Max's horisontkartlegging.
42. Minst ett datamaskinlesbart medium ifølge krav 24, hvor spesifiseringen av minst én parameter innbefatter å spesifisere minst én parameter for et samplingsavtrykk som angår volumetrisk strålekastesampling, hvor den volumetriske strålekastesamplingen innbefatter å skivedele et volum i polygoner relativt ortogonalt til en øyeretning, og at spesifiseringen videre innbefatter å spesifisere samplingsretningen til samplingsavtrykket, og at tekstursamplingen innbefatter å anvende den spesifiserte samplingsretning iterativt.
43. Minst ett datamaskinlesbart medium ifølge krav 42, videre innbefattende å detektere når en av en kastet stråle skjærer et aktuelt z-buffer og når metning inntreffer.
44. Minst ett datamaskinlesbart medium ifølge krav 24, hvor spesifiseringen av minst én parameter innbefatter å spesifisere minst én parameter for et samplingsavtrykk som angår volumetrisk, selvskyggende gjengivelse i kombinasjon med konvensjonell volumetrisk skive- eller listlignende gjengivelse, og at spesifiseringen videre innbefatter å anvende spesifikasjoner per verteks av samplingsretningen til samplingsavtrykket.
45. Minst ett datamaskinlesbart medium ifølge krav 24, hvor spesifiseringen innbefatter å spesifisere en retningsvektor for samplingsavtrykket via en applikasjons-programmeringsgrensesnitt-komponent (API-komponent).
46. Minst ett datamaskinlesbart medium ifølge et av kravene 24 - 45, hvor modulene er innbefattet i minst én av et brukerprogrammeringsgrensesnitt (API), en driverkode, et operativsystem og en applikasjon.
47. Fremgangsmåte for å tilveiebringe styrbar tekstursampling, omfattende:karakterisert ved: å spesifisere minst én parameter (Au0, Av0, s0, 60, Aunew, Avnew, snew. @new) som definerer et samplingsavtrykk benyttet i forbindelse med tekstursampling av et teksturkart (200, 200b, 200c)„ å motta ved en innmatingskomponent av en koprosesseringsanordning spesifikasjonen av minst en parameter som definerer samplingsavtrykket, og å tekstursample teksturkartet i samsvar med de spesifiserte parametre i samplingsavtrykket.
48. Fremgangsmåte ifølge krav 47, hvor spesifiseringen innbefatter minst en av å modifisere minst én standardparameter (Au, Av, s, 6) ved å spesifisere minst én forskyvningsverdi (Auo, Av0) for den minst ene standardparameter, og (2) å erstatte den minst ene standardparameter (Au, Av, s, 6) med minst én erstatningsparameter (AUnewi AVnewi Snewi Qnew)-
49. Fremgangsmåte ifølge krav 48, hvor modifiseringen innbefatter minst én av: å tilføye forskyvningsverdien og standardparameteren, å multiplisere forskyvningsverdien og standardparameteren, å anvende enten forskyvningsverdien eller standardparameteren som en eksponent, å subtrahere forskyvningsverdien og standardparameteren, og å utføre en forhåndsbestemt matematisk funksjon basert på standardparameteren og forskyvningsverdien.
50. Fremgangsmåte ifølge et av kravene 47 - 49, hvor samplingsavtrykket er et samplingsavtrykk fra minst én av: en punktsamplingsprosess, en bilineær filtreringsprosess, en MlP-kartleggingsprosess, en anisotrop filtreringsprosess og en antialiasing-prosess.
51. Fremgangsmåte ifølge krav 47, hvor spesifiseringen innbefatter å spesifisere den minst ene parameter minst én gang per verteks og per piksel (222) i forbindelse med tekstursamplingen.
52. Fremgangsmåte ifølge krav 51, videre innbefattende å anvende tekstursamplingen iterativt.
53. Fremgangsmåte ifølge krav 47, hvor spesifiseringen innbefatter å spesifisere minst én av en trinnstørrelse (s0, snew) og en orientering (00, 6new) for samplingsavtrykket.
54. Fremgangsmåte ifølge krav 51 eller 52, hvor spesifiseringen innbefatter minst én av: å spesifisere du-avstanden mellom sampler i en u-retning, og å spesifisere dv-avstanden mellom sampler i en v-retning.
55. Fremgangsmåte ifølge krav 51 eller 52, hvor spesifiseringen innbefatter å spesifisere minst én av en Au-verdi, en Av-verdi og en Aw-verdi.
56. Fremgangsmåte ifølge krav 47, hvor spesifiseringen innbefatter å spesifisere en av en Oa-verdi og en Ob-verdi for bruk i forbindelse med bilineær filtreringsberegning.
57. Fremgangsmåte ifølge et av kravene 47 - 49, hvor samplingsavtrykket er et anisotropt filtreringssamplingsavtrykk.
58. Fremgangsmåte ifølge krav 57, hvor den minst ene parameter innbefatter minst én av en retning og en avstand mellom anisotrope filterkjernesampler.
59. Fremgangsmåte ifølge et av kravene 47 - 58, hvor tekstursamplingen av teksturkartet i samsvar med de spesifiserte parametre, endrer minst én visuell effekt ved pikselrommet som et resultat av tekstursamplingen, og at den minst ene visuelle effekt innbefatter minst én av: en sløringseffekt, en blokkeringseffekt, en tekstur-utflytingseffekt, en pikselpoppingseffekt, en tidsmessig aliasingseffekt eller overlappingseffekt, en teksturflimringseffekt, en teksturkrypingseffekt og en strekdannelseseffekt.
60. Fremgangsmåte ifølge et av kravene 47 - 58, hvor tekstursamplingen av teksturkartet i samsvar med de spesifiserte parametre teksturerer en triangeloverflate for å oppnå minst én av: en lyseffekt, en dumpkartleggingseffekt, en sløringseffekt, en refleksjonssløringseffekt, en Fresnel-sløringseffekt, en marmoreffekt, en bevegelig vanneffekt, en lineær tåkeleggingseffekt, en eksponentiell tåkeleggingseffekt, en avstandsbasert tåkeleggingseffekt, en transparenseffekt, en transluktanseffekt, en buet overflateeffekt, en skarp skyggeeffekt, en uklar skyggeeffekt og en volumetrisk tekstureringseffekt.
61. Fremgangsmåte ifølge krav 47, hvor spesifiseringen av minst én parameter innbefatter å spesifisere minst én parameter for et samplingsavtrykk som anvender bevegelsessløring, og at spesifiseringen videre innbefatter å anvende itererte verteksnivå-data til å styre en retningsvektor for samplingsavtrykket.
62. Fremgangsmåte ifølge krav 47, hvor spesifiseringen av minst én parameter innbefatter å spesifisere minst én parameter for et samplingsavtrykk som gjelder minst én av: anisotrop overflaterefleksjon, diffus belysning og en tilnærmelse til speilbelysning, og at spesifiseringen videre innbefatter å anvende en av per verteks og per piksel spesifikasjon for samplingsretningen til samplingsavtrykket.
63. Fremgangsmåte ifølge krav 47, hvor spesifiseringen av minst én parameter innbefatter å spesifisere minst én parameter for et samplingsavtrykk som angår overflateselvskygging, og at spesifiseringen videre innbefatter å anvende spesifikasjon per piksel av samplingsretningen til samplingsavtrykket.
64. Fremgangsmåte ifølge krav 63, hvor spesifiseringen videre innbefatter å spesifisere styreparametre for derivasjonsberegninger av Nelson Max's horisontkartlegging.
65. Fremgangsmåte ifølge krav 47, hvor spesifiseringen av minst én parameter innbefatter å spesifisere minst én parameter for et samplingsavtrykk som angår volumetrisk strålekastesampling, hvor den volumetriske strålekastesamplingen innbefatter å skivedele et volum i polygoner relativt ortogonalt til en øyeretning, og at spesifiseringen videre innbefatter å spesifisere samplingsretningen til samplingsavtrykket, og at tekstursamplingen innbefatter å anvende den spesifiserte samplingsretning iterativt.
66. Fremgangsmåte ifølge krav 65, videre innbefattende å detektere når enten en kastet stråle skjærer et aktuelt z-buffer eller når metning inntreffer.
67. Fremgangsmåte ifølge krav 47, hvor spesifiseringen av minst én parameter innbefatter å spesifisere minst én parameter for et samplingsavtrykk som angår volumetrisk, selvskyggende gjengivelse i kombinasjon med konvensjonell volumetrisk skive- eller list-lignende gjengivelse, og at spesifiseringen videre innbefatter å anvende spesifikasjoner per verteks av samplingsretningen til samplingsavtrykket.
68. Fremgangsmåte ifølge krav 47, hvor spesifiseringen innbefatter å spesifisere en retningsvektor for samplingsavtrykket via en API-komponent.
69. Modulert datasignal som bærer datamaskin-utførbare instruksjoner for å utføre fremgangsmåten ifølge et av kravene 47 - 68.
70. Databehandlingsinnretning (1 Oa, 10b, 110,110a-110e, 180) omfattende anordninger for å utføre fremgangsmåten ifølge et av kravene 47-68.
NO20031557A 2002-06-20 2003-04-07 Systemer og fremgangsmater for tilveiebringelse av styrbar tekstursampling NO326851B1 (no)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/176,811 US7324116B2 (en) 2002-06-20 2002-06-20 Systems and methods for providing controllable texture sampling

Publications (3)

Publication Number Publication Date
NO20031557D0 NO20031557D0 (no) 2003-04-07
NO20031557L NO20031557L (no) 2003-12-22
NO326851B1 true NO326851B1 (no) 2009-03-02

Family

ID=22645931

Family Applications (1)

Application Number Title Priority Date Filing Date
NO20031557A NO326851B1 (no) 2002-06-20 2003-04-07 Systemer og fremgangsmater for tilveiebringelse av styrbar tekstursampling

Country Status (25)

Country Link
US (2) US7324116B2 (no)
EP (1) EP1376472B1 (no)
JP (1) JP4371355B2 (no)
KR (1) KR100863406B1 (no)
CN (1) CN100401325C (no)
AT (1) ATE352827T1 (no)
AU (1) AU2003203677B2 (no)
BR (1) BRPI0300983B1 (no)
CA (1) CA2424705C (no)
CO (1) CO5450258A1 (no)
DE (1) DE60311359T2 (no)
DK (1) DK1376472T3 (no)
ES (1) ES2279910T3 (no)
HK (1) HK1058420A1 (no)
IL (1) IL155337A (no)
MX (1) MXPA03004604A (no)
MY (1) MY135056A (no)
NO (1) NO326851B1 (no)
NZ (1) NZ525338A (no)
PL (1) PL360236A1 (no)
PT (1) PT1376472E (no)
RU (1) RU2324978C2 (no)
SG (1) SG119180A1 (no)
TW (1) TWI328200B (no)
ZA (1) ZA200302810B (no)

Families Citing this family (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7324116B2 (en) * 2002-06-20 2008-01-29 Microsoft Corporation Systems and methods for providing controllable texture sampling
US20070152977A1 (en) * 2005-12-30 2007-07-05 Apple Computer, Inc. Illuminated touchpad
KR100823373B1 (ko) * 2003-12-29 2008-04-17 인텔 코오퍼레이션 3차원 그래픽 서브시스템들에서의 텍스쳐 맵 데이터의프로그램 가능 필터링을 위한 방법 및 메카니즘
US20050140688A1 (en) * 2003-12-29 2005-06-30 Kim Pallister Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems
KR20070008707A (ko) 2004-05-03 2007-01-17 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 그래픽 파이프라인, 그래픽 렌더링 방법, 컴퓨터 및 그래픽디스플레이 디바이스
US8149235B2 (en) * 2004-08-20 2012-04-03 Microsoft Corporation System and method for upscaling low-resolution images
JP3961524B2 (ja) * 2004-09-21 2007-08-22 株式会社コナミデジタルエンタテインメント 画像処理装置、画像処理方法、ならびに、プログラム
US8189002B1 (en) * 2004-10-29 2012-05-29 PME IP Australia Pty, Ltd. Method and apparatus for visualizing three-dimensional and higher-dimensional image data sets
US7158143B2 (en) * 2004-12-03 2007-01-02 Via Technologies, Inc. Fast algorithm for anisotropic texture sampling
JP4660254B2 (ja) * 2005-04-08 2011-03-30 株式会社東芝 描画方法及び描画装置
US7463261B1 (en) * 2005-04-29 2008-12-09 Adobe Systems Incorporated Three-dimensional image compositing on a GPU utilizing multiple transformations
US7499051B1 (en) 2005-04-29 2009-03-03 Adobe Systems Incorporated GPU assisted 3D compositing
US20090267941A1 (en) * 2005-04-29 2009-10-29 Koninklijke Philips Electronics N. V. Multi-surface modelling
US20060250407A1 (en) * 2005-05-05 2006-11-09 Via Technologies, Inc. Texture filtering using a programmable table filter to improve computer graphics performmance
US7702131B2 (en) * 2005-10-13 2010-04-20 Fujifilm Corporation Segmenting images and simulating motion blur using an image sequence
US7262714B2 (en) * 2005-12-01 2007-08-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interpolating encoder utilizing a frequency multiplier
US7936359B2 (en) * 2006-03-13 2011-05-03 Intel Corporation Reconfigurable floating point filter
US7817161B2 (en) * 2006-06-26 2010-10-19 Microsoft Corporation Texture synthesis using dimensionality-reduced appearance space
US20080012874A1 (en) * 2006-07-14 2008-01-17 Spangler Steven J Dynamic selection of high-performance pixel shader code based on check of restrictions
US7659901B2 (en) * 2006-07-24 2010-02-09 Microsoft Corporation Application program interface for programmable graphics pipeline
US8970680B2 (en) * 2006-08-01 2015-03-03 Qualcomm Incorporated Real-time capturing and generating stereo images and videos with a monoscopic low power mobile device
US7764286B1 (en) * 2006-11-01 2010-07-27 Adobe Systems Incorporated Creating shadow effects in a two-dimensional imaging space
US7746352B2 (en) * 2006-11-03 2010-06-29 Nvidia Corporation Deferred page faulting in virtual memory based sparse texture representations
KR100818286B1 (ko) 2006-11-23 2008-04-01 삼성전자주식회사 안개 효과를 고려하여 3차원 그래픽스 데이터를 렌더링하는방법 및 장치
WO2008066292A1 (en) * 2006-12-02 2008-06-05 Electronics And Telecommunications Research Institute Apparatus for providing and transforming shader of 3d graphic system
CA2683841A1 (en) 2007-04-04 2008-10-16 Telefonaktiebolaget Lm Ericsson (Publ) Vector-based image processing
CN101286225B (zh) * 2007-04-11 2010-10-06 中国科学院自动化研究所 一种基于三维纹理硬件加速的海量数据体绘制方法
US7924290B2 (en) * 2007-05-30 2011-04-12 Nvidia Corporation Method and system for processing texture samples with programmable offset positions
US8134556B2 (en) * 2007-05-30 2012-03-13 Elsberg Nathan Method and apparatus for real-time 3D viewer with ray trace on demand
US8392529B2 (en) 2007-08-27 2013-03-05 Pme Ip Australia Pty Ltd Fast file server methods and systems
US9019287B2 (en) 2007-11-23 2015-04-28 Pme Ip Australia Pty Ltd Client-server visualization system with hybrid data processing
WO2011065929A1 (en) 2007-11-23 2011-06-03 Mercury Computer Systems, Inc. Multi-user multi-gpu render server apparatus and methods
US10311541B2 (en) 2007-11-23 2019-06-04 PME IP Pty Ltd Multi-user multi-GPU render server apparatus and methods
WO2009067680A1 (en) 2007-11-23 2009-05-28 Mercury Computer Systems, Inc. Automatic image segmentation methods and apparartus
US9904969B1 (en) 2007-11-23 2018-02-27 PME IP Pty Ltd Multi-user multi-GPU render server apparatus and methods
US8035641B1 (en) 2007-11-28 2011-10-11 Adobe Systems Incorporated Fast depth of field simulation
CN101751687B (zh) * 2008-12-18 2014-03-05 超威半导体(上海)有限公司 确定纹理映射参数以定义代表像素投影足迹的方法和装置
US8624907B2 (en) * 2009-06-26 2014-01-07 Intel Corporation Graphics analysis techniques
US8581916B2 (en) * 2009-06-26 2013-11-12 Intel Corporation Graphics analysis techniques
US8289341B2 (en) * 2009-06-29 2012-10-16 Intel Corporation Texture sampling
US9082216B2 (en) * 2009-07-01 2015-07-14 Disney Enterprises, Inc. System and method for filter kernel interpolation for seamless mipmap filtering
US8687011B2 (en) * 2010-10-28 2014-04-01 Microsoft Corporation Techniques for efficient sampling for image effects
KR101456404B1 (ko) * 2010-12-02 2014-10-31 디지털 프로세스 가부시끼가이샤 표시 처리 방법 및 장치
RU2467395C1 (ru) * 2011-07-11 2012-11-20 Российская Федерация, От Имени Которой Выступает Министерство Промышленности И Торговли Российской Федерации Способ создания изображений трехмерных объектов для систем реального времени
CN102254340B (zh) * 2011-07-29 2013-01-09 北京麒麟网文化股份有限公司 一种基于gpu加速的环境光遮挡图像绘制方法及系统
TWI470580B (zh) * 2011-09-01 2015-01-21 Univ Nat Taiwan 無資料庫之紋理合成的超解析度系統及方法
US9286122B2 (en) * 2012-05-31 2016-03-15 Microsoft Technology Licensing, Llc Display techniques using virtual surface allocation
WO2014003736A1 (en) * 2012-06-27 2014-01-03 Landmark Graphics Corporation Systems and methods for creating a three-dimensional texture atlas
US10540803B2 (en) 2013-03-15 2020-01-21 PME IP Pty Ltd Method and system for rule-based display of sets of images
US10070839B2 (en) 2013-03-15 2018-09-11 PME IP Pty Ltd Apparatus and system for rule based visualization of digital breast tomosynthesis and other volumetric images
US20140267273A1 (en) * 2013-03-15 2014-09-18 Janne Kontkanen System and method for overlaying two-dimensional map elements over terrain geometry
US10152820B2 (en) * 2013-03-15 2018-12-11 Intel Corporation Texture address mode discarding filter taps
US9286712B2 (en) 2013-03-15 2016-03-15 Google Inc. System and method for approximating cartographic projections by linear transformation
US11244495B2 (en) 2013-03-15 2022-02-08 PME IP Pty Ltd Method and system for rule based display of sets of images using image content derived parameters
US8976190B1 (en) 2013-03-15 2015-03-10 Pme Ip Australia Pty Ltd Method and system for rule based display of sets of images
US11183292B2 (en) 2013-03-15 2021-11-23 PME IP Pty Ltd Method and system for rule-based anonymized display and data export
US9183666B2 (en) * 2013-03-15 2015-11-10 Google Inc. System and method for overlaying two-dimensional map data on a three-dimensional scene
US9509802B1 (en) 2013-03-15 2016-11-29 PME IP Pty Ltd Method and system FPOR transferring data to improve responsiveness when sending large data sets
US9355489B2 (en) 2013-11-14 2016-05-31 Intel Corporation Land grid array socket for electro-optical modules
US9355490B2 (en) 2013-11-14 2016-05-31 Intel Corporation Minimum-maximum filtering of graphical texture data
US9367948B2 (en) 2013-11-14 2016-06-14 Intel Corporation Flexible filter logic for multi-mode filtering of graphical texture data
GB2525636B (en) * 2014-04-30 2020-08-19 Geomerics Ltd Graphics processing systems
US20150379664A1 (en) * 2014-06-27 2015-12-31 Kalyan K. Bhiravabhatla Accelerated single plane clipping of polygons in graphics processing
US9704272B2 (en) * 2014-11-21 2017-07-11 Microsoft Technology Licensing, Llc Motion blur using cached texture space blur
US9779134B2 (en) * 2014-12-26 2017-10-03 Business Objects Software Ltd. System and method of data wrangling
JP6482283B2 (ja) * 2015-01-13 2019-03-13 三菱プレシジョン株式会社 三次元映像生成装置およびキューブマップ生成方法
US9984478B2 (en) 2015-07-28 2018-05-29 PME IP Pty Ltd Apparatus and method for visualizing digital breast tomosynthesis and other volumetric images
US11599672B2 (en) 2015-07-31 2023-03-07 PME IP Pty Ltd Method and apparatus for anonymized display and data export
TWI550416B (zh) * 2015-08-18 2016-09-21 國立交通大學 利用高維度子空間產生取樣之方法
KR20170034727A (ko) 2015-09-21 2017-03-29 삼성전자주식회사 그림자 정보 저장 방법 및 장치, 3d 렌더링 방법 및 장치
US10521517B2 (en) 2016-02-10 2019-12-31 Autodesk, Inc. Designing objects using lattice structure optimization
CN106023292B (zh) * 2016-05-20 2018-11-06 浙江大学 一种基于数学函数的实时的大理石体纹理生成方法
CN108346178A (zh) 2017-01-23 2018-07-31 微软技术许可有限责任公司 混合现实对象呈现
US10388061B2 (en) 2017-02-22 2019-08-20 Microsoft Technology Licensing, Llc Generation of lighting data for a three-dimensional entity
US11270502B2 (en) 2017-08-22 2022-03-08 Alibaba Group Holding Limited Method and apparatus for image processing of three-dimensional model maps
US10909679B2 (en) 2017-09-24 2021-02-02 PME IP Pty Ltd Method and system for rule based display of sets of images using image content derived parameters
CN110570494A (zh) * 2018-06-05 2019-12-13 艾司科软件有限公司 用于各向异性地修改文本属性以符合分辨率极限的方法和设备
CN108955897B (zh) * 2018-08-13 2019-11-01 成都森川科技股份有限公司 运动货运列车测温还原方法
GB2583154B (en) * 2019-10-17 2021-04-28 Imagination Tech Ltd Texture filtering
US11158110B1 (en) * 2021-01-06 2021-10-26 Arm Limited Graphics texture mapping

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63213079A (ja) 1987-02-28 1988-09-05 Nippon Telegr & Teleph Corp <Ntt> 画像生成装置
GB2245805A (en) * 1990-06-29 1992-01-08 Philips Electronic Associated Generating an anti-aliased image
US5307451A (en) * 1992-05-12 1994-04-26 Apple Computer, Inc. Method and apparatus for generating and manipulating graphical data for display on a computer output device
US5550960A (en) * 1993-08-02 1996-08-27 Sun Microsystems, Inc. Method and apparatus for performing dynamic texture mapping for complex surfaces
US5651104A (en) 1995-04-25 1997-07-22 Evans & Sutherland Computer Corporation Computer graphics system and process for adaptive supersampling
US5977977A (en) * 1995-08-04 1999-11-02 Microsoft Corporation Method and system for multi-pass rendering
JPH09245179A (ja) * 1996-03-08 1997-09-19 Mitsubishi Electric Corp コンピュータグラフィックス装置
US5877771A (en) * 1996-07-12 1999-03-02 Silicon Graphics, Inc. Method and apparatus for supersampling based on the local rate of change in texture
US5990903A (en) * 1997-02-03 1999-11-23 Micron Technologies, Inc. Method and apparatus for performing chroma key, transparency and fog operations
KR100603173B1 (ko) * 1997-04-12 2006-12-15 소니 가부시끼 가이샤 편집장치및편집방법
KR100603161B1 (ko) * 1997-04-12 2006-12-13 소니 가부시끼 가이샤 편집시스템및편집방법
GB9716251D0 (en) 1997-08-01 1997-10-08 Philips Electronics Nv Attribute interpolation in 3d graphics
US6037949A (en) 1997-08-04 2000-03-14 Pixar Animation Studios Texture mapping and other uses of scalar fields on subdivision surfaces in computer graphics and animation
US6300960B1 (en) 1997-08-04 2001-10-09 Pixar Animation Studios Realistic surface simulation in computer animation
US6097397A (en) 1997-11-20 2000-08-01 Real 3D, Inc. Anisotropic texture mapping using silhouette/footprint analysis in a computer image generation system
JP2000155845A (ja) 1998-05-29 2000-06-06 Mitsubishi Electronics America Inc 記憶装置、デ―タフォ―マッタ、デ―タにアクセスする方法、デ―タの領域をクリアする方法、デ―タを圧縮する方法、デ―タをフォ―マット化する方法、グラフィックスシステムおよびグラフィックスシステムを動作させる方法
AU757621B2 (en) 1998-07-16 2003-02-27 Research Foundation Of The State University Of New York, The Apparatus and method for real-time volume processing and universal 3D rendering
US6600487B1 (en) * 1998-07-22 2003-07-29 Silicon Graphics, Inc. Method and apparatus for representing, manipulating and rendering solid shapes using volumetric primitives
US6292193B1 (en) * 1998-07-30 2001-09-18 Compaq Computer Corporation Techniques for anisotropic texture mapping using multiple space-invariant filtering operations per pixel
GB9921777D0 (en) 1999-09-16 1999-11-17 Koninkl Philips Electronics Nv Method and apparatus for handling translucency in 3d graphics
JP3367509B2 (ja) 1999-12-16 2003-01-14 株式会社セガ 画像生成方法及びこれを用いた画像生成装置
AU2001239926A1 (en) * 2000-02-25 2001-09-03 The Research Foundation Of State University Of New York Apparatus and method for volume processing and rendering
US6509902B1 (en) * 2000-02-28 2003-01-21 Mitsubishi Electric Research Laboratories, Inc. Texture filtering for surface elements
US6580425B1 (en) * 2000-02-28 2003-06-17 Mitsubishi Electric Research Laboratories, Inc. Hierarchical data structures for surface elements
US6426755B1 (en) * 2000-05-16 2002-07-30 Sun Microsystems, Inc. Graphics system using sample tags for blur
JP2002032779A (ja) 2000-07-19 2002-01-31 Sony Corp データ処理装置及びデータ処理方法、並びに記憶媒体
US6664962B1 (en) * 2000-08-23 2003-12-16 Nintendo Co., Ltd. Shadow mapping in a low cost graphics system
US6664971B1 (en) * 2000-08-25 2003-12-16 Microsoft Corporation Method, system, and computer program product for anisotropic filtering and applications thereof
KR100393086B1 (ko) * 2001-05-15 2003-07-31 한국과학기술원 서브 텍셀 수준의 면적 점유비를 이용한 이방성 텍스춰필터링 방법 및 장치
US7324116B2 (en) * 2002-06-20 2008-01-29 Microsoft Corporation Systems and methods for providing controllable texture sampling

Also Published As

Publication number Publication date
MY135056A (en) 2008-01-31
US7324116B2 (en) 2008-01-29
ZA200302810B (en) 2004-02-12
DE60311359D1 (de) 2007-03-15
IL155337A (en) 2008-11-03
DK1376472T3 (da) 2007-05-21
JP2004021979A (ja) 2004-01-22
KR20030097646A (ko) 2003-12-31
MXPA03004604A (es) 2004-01-22
AU2003203677A1 (en) 2004-01-22
PT1376472E (pt) 2007-03-30
DE60311359T2 (de) 2007-05-16
IL155337A0 (en) 2003-11-23
NO20031557L (no) 2003-12-22
US7719544B2 (en) 2010-05-18
EP1376472A1 (en) 2004-01-02
KR100863406B1 (ko) 2008-10-14
BRPI0300983B1 (pt) 2016-04-05
CA2424705C (en) 2013-02-12
CA2424705A1 (en) 2003-12-20
CO5450258A1 (es) 2004-10-29
RU2324978C2 (ru) 2008-05-20
NO20031557D0 (no) 2003-04-07
AU2003203677B2 (en) 2009-11-05
TWI328200B (en) 2010-08-01
ATE352827T1 (de) 2007-02-15
NZ525338A (en) 2005-01-28
EP1376472B1 (en) 2007-01-24
US20080122856A1 (en) 2008-05-29
ES2279910T3 (es) 2007-09-01
BR0300983A (pt) 2004-11-09
JP4371355B2 (ja) 2009-11-25
CN100401325C (zh) 2008-07-09
US20030234791A1 (en) 2003-12-25
PL360236A1 (en) 2003-12-29
CN1467687A (zh) 2004-01-14
SG119180A1 (en) 2006-02-28
HK1058420A1 (en) 2004-05-14
TW200400471A (en) 2004-01-01

Similar Documents

Publication Publication Date Title
NO326851B1 (no) Systemer og fremgangsmater for tilveiebringelse av styrbar tekstursampling
CA2772030C (en) Systems and methods for providing intermediate targets in a graphics system
US7839419B2 (en) Compositing desktop window manager
EP4285330A1 (en) Systems and methods of texture super sampling for low-rate shading

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