DE102010025310A1 - Textursampling - Google Patents

Textursampling Download PDF

Info

Publication number
DE102010025310A1
DE102010025310A1 DE102010025310A DE102010025310A DE102010025310A1 DE 102010025310 A1 DE102010025310 A1 DE 102010025310A1 DE 102010025310 A DE102010025310 A DE 102010025310A DE 102010025310 A DE102010025310 A DE 102010025310A DE 102010025310 A1 DE102010025310 A1 DE 102010025310A1
Authority
DE
Germany
Prior art keywords
shader
texture
sampler
texture sampler
language
Prior art date
Legal status (The legal status 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 status listed.)
Withdrawn
Application number
DE102010025310A
Other languages
English (en)
Inventor
Uzi Sarel
Piotr Rozenfeld
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE102010025310A1 publication Critical patent/DE102010025310A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

Ein Textursampler ist mittels einer Shader-Sprache implementiert. Der Shader-Compiler wird verwendet, um den Textursampler in eine Zielmaschine zu kompilieren, basierend auf Sampler-Zustand, Sampler-Operation und anderen statischen Fachtoreingabewerten, die dem Textursampler bereitgestellt werden. Die Shader, wie z. B. ein Vertex-Shader, Geometrie-Shader, Pixel-Shader, Hull-Shader, Domain-Shader und ein Compute-Shader, können einen oder mehrere Textursampler abrufen, während die Shader aufgerufen werden. Der eine oder die mehreren Textursampler, die Teil eines Softwarecodes sind, können Textursamples von den Texturdaten generieren und stellen den Shadern solche Textursamples bereit. Die Shader generieren mittels Textursamples Rötungseffekte auf Grafikelementen. Die Grafikelemente werden sodann zusammen mit den Schattierungseffekten auf einem Display-Gerät gerendert.

Description

  • HINTERGRUND
  • Textur bezieht sich im Allgemeinen auf Bilder, die sich wiederholende Muster umfassen, die verwendet werden können, um die Grafikmuster zu umschließen. Die Texturdaten können mittels Textursampling-Techniken basierend auf Nyquist-Kriterien gesampelt werden. Textursampling-Techniken werden immer komplexer und sind weitverbreitet. Die Textursampling-Techniken können Point-Sampling, bilineares Filtern, trilineares Filtern, anisotropes Filtern, Anti-Aliasing (Kantenglättung) und andere ähnliche Techniken beinhalten. Das Textursampling wird immer häufiger verwendet, beispielsweise von einem Vertex-Shader, Geometrie-Shader und Pixel-Shader.
  • Ebenfalls steigt die Komplexität und Verwendung solcher Textursampling-Techniken und damit steigt stets die Komplexität der zur Durchführung des Textursamplings verwendeten Hardware. Es gibt immerhin wenige Applikationen, die eine Verwendung von Textursampling-Techniken erfordern können, die keinen direkten Zugang zu dem Hardware-Gerät benötigen oder haben. Ebenfalls können die bereits bestehenden Hardware-Geräte komplexe Textursampling-Operationen nicht umfassend unterstützen oder die bereits bestehenden Hardware-Geräte können komplexe Textursampling-Operationen nicht effizient durchführen.
  • KURZE BESCHREIBUNG DER ZEICHUNGEN
  • Die hierin beschriebene Erfindung wird in den begleitenden Figuren beispielhaft und nicht einschränkend veranschaulicht. Aus Gründen der Einfachheit und Klarheit der Veranschaulichung sind in den Figuren veranschaulichte Elemente nicht notwendigerweise maßstabsgetreu gezeichnet. Die Abmessungen einiger Elemente können hinsichtlich der anderen Elemente aus Gründen der Klarheit beispielsweise übertrieben groß dargestellt sein. Weiter wurden Bezugsmarken in den Figuren an angemessenen Stellen wiederholt, um entsprechende oder analoge Elemente anzuzeigen.
  • 1 veranschaulicht eine Grafikverarbeitungs-Technik, die einen Textursampler verwendet, umgesetzt durch Verwendung einer Shader-Sprache in Übereinstimmung mit einer Ausführungsform.
  • 2 veranschaulicht dreidimensionale Pipelinestufen einer Grafikverarbeitungs-Technik, die Textursampler verwendet, umgesetzt durch Verwendung einer Shader-Sprache in Übereinstimmung mit einer Ausführungsform.
  • 3 ist ein Ablaufdiagramm, das einen Textursampler veranschaulicht, umgesetzt durch Verwendung einer Shader-Sprache in Übereinstimmung mit einer Ausführungsform.
  • 4 veranschaulicht ein Ablaufdiagramm, das einen Textursampling-Prozess unter Verwendung einer Shader-Sprache in Übereinstimmung mit einer Ausführungsform darstellt.
  • 5 veranschaulicht ein Computersystem 500, bei dem das Textursampling unter Verwendung einer Shader-Sprache in Übereinstimmung mit einer Ausführungsform implementiert sein kann.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende Beschreibung beschreibt Techniken zur Durchführung von Textursampling mittels eines Textursamplers, der mit einer Shader-Sprache implementiert ist. In der folgenden Beschreibung werden zahlreiche spezifische Details, wie z. B. Logikimplementierungen, Ressourcenaufteilung oder -teilung oder Duplikationsimplementierungen, Arten und Zusammenhänge von Systemkomponenten und Logikaufteilung oder Integrationsauswahlen dargelegt, um ein gründliches Verständnis der vorliegenden Erfindung bereitzustellen. Es ist für einen Fachmann jedoch selbstverständlich, dass die Erfindung ohne solche spezifischen Details betrieben werden kann. In anderen Fällen wurden Steuerstrukturen, Schaltungen auf Gatterebene und komplette Softwarebefehlssequenzen nicht im Detail gezeigt, um die Erfindung nicht in den Hintergrund zu rücken. Der Fachmann wird anhand der beinhalteten Beschreibungen in der Lage sein, angemessene Funktionalität ohne ungebührliche Experimente zu implementieren.
  • Verweise in der Beschreibung auf „eine Ausführungsform”, „eine beispielhafte Ausführungsform” geben an, dass die beschriebene Ausführungsform ein bestimmtes Merkmal, eine Struktur oder Charakteristikum beinhalten kann, aber jede Ausführungsform muss nicht notwendigerweise das bestimmte Merkmal, die Struktur oder Charakteristikum beinhalten. Des Weiteren beziehen sich solche Ausdrücke nicht notwendigerweise auf die gleiche Ausführungsform. Wenn weiter ein bestimmtes Merkmal, eine Struktur oder Charakteristikum in Verbindung mit einer Ausführungsform beschrieben wird, wird beantragt, dass es/sie innerhalb des Wissens eines Fachmannes liegt, solch ein Merkmal, eine Struktur oder Charakteristikum in Verbindung mit anderen Ausführungsformen, die explizit beschrieben sind oder nicht, zu beeinflussen.
  • Erfindungsgemäße Ausführungsformen können in Hardware, Firmware, Software oder jeder Kombination davon implementiert sein. Erfindungsgemäße Ausführungsformen können ebenfalls als auf einem maschinenlesbaren Medium gespeicherte Befehle implementiert sein, die von einem oder mehr Prozessoren gelesen und ausgeführt werden können. Ein maschinenlesbares Speichermedium kann jeden Mechanismus zum Speichern oder Übertragen von Informationen in einer Form, die von einer Maschine (z. B. ein EDV-Gerät) gelesen werden kann, beinhalten.
  • Ein maschinenlesbares Speichermedium kann beispielsweise Festspeicher (read only memory, ROM); Direktzugriffsspeicher (random access memory, RAM); magnetische Diskettenspeichermedien; optische Speichermedien; Flash-Memory-Geräte; elektrische, optische Formen von Signalen beinhalten. Weiter können Firmware, Software, Routinen und Befehle hierin als bestimmte Aktionen durchführend beschrieben werden. Es sollte jedoch selbstverständlich sein, dass solche Beschreibungen alleine dem Nutzen dienen und dass solche Aktionen in Wirklichkeit aus EDV-Geräten, Prozessoren, Controllern und anderen Geräten resultieren, die die Firmware, Software, Routinen und Befehle ausführen.
  • Eine Ausführungsform einer n-zu-n-Beziehung zwischen mehreren Shadern und Textursamplern ist in 1 veranschaulicht. Bei einer Ausführungsform kann das Beziehungsdiagramm „M” Shader 110-A bis 110-M umfassen und „K” Textursampler 120-A bis 120-K können verschiedene Sampling-Operationen („N”, Sampling-Operationen beispielsweise) mit verschiedenen Sampler-Zuständen („ p” Sampler-Zustände beispielsweise) unterstützen. Bei einer Ausführungsform kann der Textursampler 120 mit einem Sampler-Zustand konfiguriert sein und kann, basierend auf dem Sampler-Zustand, eine durchzuführende Sample-Operation empfangen. Bei einer Ausführungsform kann der Shader 110-A Textursamples von den Textursamplern 120-A bis 120-K einholen. Bei einer anderen Ausführungsform kann der Shader 110-A Textursamples von beispielsweise Textursamplern 120-B, 120-D, 120-G und 120-J einholen. Bei einer Ausführungsform können die Shader 110-A bis 110-M beispielsweise Vertex-, Geometrie-, Hull-, Domain-, Pixel- oder Compute-Shader darstellen. Bei einer Ausführungsform kann der Shader 110-A mehrere Sample-Zustände (sample-states, SS) beinhalten, die zum Sampling verwendet werden können, und der Shader 110-A kann beispielsweise mehrere Sample-Operationen mittels eines spezifischen Sampler-Zustandes durchführen. Bei einer Ausführungsform kann ein Sampler-Zustand getrennte Logik für die Sampling-Operationen haben. Zur Kompilierzeit kann der Sampler-Zustand zu dem Sampler-Zustand (SS) hinzugefügt werden, um einen optimalen Code für den spezifischen Sampler-Zustand und die Sampler-Operation zu erhalten. Bei einer Ausführungsform können die Textursampler 120-A bis 120-K Textursampler-Operationen darstellen, die eine Untermenge von Textursampler unterstützenden Sampling-Operationen und Sampler-Zuständen implementieren können.
  • Bei einer Ausführungsform kann jeder Shader 110 Textursamples einholen, die von einem oder mehr Textursamplern 120 generiert wurden. Bei einer Ausführungsform können die Textursampler 120-A bis 120-K offline mittels einer Shader-Sprache, wie z. B. Assembler, Cg, GLSL, HLSL und anderen Shader-Sprachen, implementiert sein. Bei einer Ausführungsform können die Textursampler 120 während der Erzeugung der Shader 110 oder während orthogonaler Sampler-Zustand-Objekt-Erzeugung oder auf Anfrage zu einem späteren Zeitpunkt nach der Erzeugungsphase kompiliert werden. Bei einer Ausführungsform kann ein Sampler-Binary (sampler binary, SS-BIN) erzeugt und von den Shadern 110 verwendet werden, während die Shader 110 Textursamples erfordern.
  • Bei einer Ausführungsform können die Shader 110 und die Textursampler 120 beispielsweise in programmierbarer 3D-Grafikpipeline verwendet werden. Bei einer Ausführungsform kann die programmierbare 3D-Grafikpipeline Direct3D10 (D3D10), Direct3D11 (D3D11) oder andere solche Pipelinestufen einer DirectX-Applikationsprogrammschnittstelle (application program interface, API) umfassen, die von der Microsoft® Corporation erhältlich ist, oder OpenGL-Pipelinestufen einer Cross-Plattform-API, die von Silicon Graphics Inc. erhältlich ist. Die Textursampler 120 können jedoch ebenfalls von jedem anderen Shader in anderen Umgebungen verwendet werden.
  • Eine Ausführungsform einer programmierbaren dreidimensionalen (3D) Grafikpipeline, die einen Textursampler verwenden kann, der mittels höherer Shader-Sprache implementiert ist, ist in 2 veranschaulicht. Bei einer Ausführungsform kann programmierbare 3D-Grafikpipeline 200 Stufen umfassen, wie z. B. einen Eingabedaten-Verarbeitungsblock 210, eine Vielzahl von Shadern, wie z. B. einen Vertex-Shader 220, Hull-Shader 230, Domain-Shader 250, Geometrie-Shader 260 und Pixel-Shader 270, einen Tessellator 235, einen Rasterblock 265, einen Mischer 275, Textursampler 280-A bis 280-K und einen Speicher 290.
  • Bei einer Ausführungsform können die programmierbaren Pipelinestufen Grafiken für Echtzeitapplikationen, wie z. B. Spiele, generieren. Bei einer Ausführungsform kann die Pipelinestufe 200 D3D11 einer DirectX-Applikationsprogrammschnittstelle (application program interface, API) darstellen, die von der Microsoft® Corporation erhältlich ist.
  • Bei einer Ausführungsform kann der Eingabedaten-Verarbeitungsblock 210 Dateneinheiten mittels in Puffern 290-A und 290-B des Speichers 290 gespeicherter Indexdaten bzw. Vertexdaten generieren. Bei einer Ausführungsform können die Vertexdaten Eckpunkte von Dreiecken, Punkten, Linien und anderen ähnlichen Daten darstellen. Bei einer Ausführungsform kann der Eingabedaten-Verarbeitungsblock 210 die Dateneinheiten an den Vertex-Shader 220 bereitstellen. Bei einer Ausführungsform kann der Eingabedaten-Verarbeitungsblock 210 die geometrischen Daten mittels Vertex- und Indexdaten, die in den Puffern 290-A und 290-B gespeichert sind, zusammenstellen, bevor die geometrischen Daten dem Vertex-Shader 220 und dem Geometrie-Shader 260 bereitgestellt werden.
  • Bei einer Ausführungsform kann der Vertex-Shader 220 die Eckpunkte verarbeiten, die von dem Eingabedaten-Verarbeitungsblock 210 empfangen wurden, mittels der Textursamples, die von den Textursamplern 280-A bis 280-K generiert wurden. Bei einer Ausführungsform kann der Vertex-Shader 220 die Textursamples verwenden, die von irgendeinem oder einigen oder allen Textursamplern 280-A bis 280-K generiert wurden. Bei einer Ausführungsform kann der Vertex-Shader 220 einen einzelnen Ausgabeeckpunkt generieren, der mittels der Textursamples nach Empfang eines einzelnen Eingabeeckpunktes verarbeitet werden kann. Bei einer Ausführungsform kann der Vertex-Shader 220 Transformationen durchführen, um dem Eingabeeckpunkt Spezialeffekte, wie z. B. Ausleuchtung und Skinning, bereitzustellen. Bei einer Ausführungsform kann der Vertex-Shader 220 mathematische Operationen durchführen, um die Farbe, Textur oder Position des Eingabeeckpunktes zu verändern. Bei einer Ausführungsform kann der Vertex-Shader 220 mittels Shader-Sprachen, wie z. B. Assembler-Sprache, C für Grafik-(Cg)-Sprache, OpenGL-Shader-Sprache (GLSL) oder höhere Shader-Sprache (HLSL) oder jede andere Shader-Sprache, implementiert werden.
  • Bei einer Ausführungsform kann der Hull-Shader 230 Patch-Steuerpunkte empfangen und kann die Patch-Steuerpunkte für den festen Funktionstessellator 235 vorbereiten. Bei einer Ausführungsform kann der Hull-Shader 230 Textursamples von einem oder mehr Textursamplern 280-A bis 280-K empfangen. Bei einer Ausführungsform kann der Hull-Shader 230 Textursamples von den Textursamplern 280-A und 280-B empfangen. Bei einer Ausführungsform kann der Hull-Shader 230 mittels Shader-Sprache implementiert sein. Bei einer Ausführungsform kann der Tessellator 235 das Patch basierend auf Steuereingaben von dem Hull-Shader 230 unterteilen und kann die Ergebnisse der Tessellation an den Domain-Shader 250 weitergeben. Bei einer Ausführungsform kann der Domain-Shader 250 die generierten Eckpunkte manipulieren, um die Eckpunkte an eine Form anzupassen, oder kann mittels der Eingaben von dem Tessellatorblock 235 und der Textursamples von einem oder mehr der Textursampler 280-A bis 280-K ein Displacement-Mapping durchführen. Bei einer Ausführungsform kann der Domain-Shader 250 Textursamples verwenden, die von dem Textursampler 280-B bereitgestellt sind. Bei einer Ausführungsform kann der Domain-Shader 250 die Ergebnisse an den Geometrie-Shader 260 oder den Rasterblock 265 bereitstellen. Bei einer Ausführungsform kann der Domain-Shader 250 mittels höherer Shader-Sprachen implementiert sein.
  • Bei einer Ausführungsform kann der Geometrie-Shader 260 schattierte Grundelemente in Antwort auf den Empfang von ganzen Grundelementen von dem Vertex-Shader 220 oder dem Domain-Shader 250 und Textursamples, die von einem oder mehr der Textursampler 280-A bis 280-K generiert wurden, generieren. Bei einer Ausführungsform kann der Geometrie-Shader 260 Textursamples empfangen, die von den Textursamplern 280-A und 280-K generiert wurden. Bei einer Ausführungsform können die ganzen Grundelemente eine Vielzahl von Eckpunkten umfassen. Bei einer Ausführungsform kann der Geometrie-Shader 260 null oder mehr schattierte Grundelemente in Antwort auf den Empfang der Vielzahl von Eckpunkten und Textursamples als Eingaben erzeugen.
  • Bei einer Ausführungsform kann die Vielzahl von Eckpunkten drei Eckpunkte eines Dreiecks oder zwei Eckpunkte einer Linie oder einen einzelnen Eckpunkt eines Punktes zusammen mit Adjazenzinformationen als Eingaben umfassen und kann null oder mehr schattierte Eckpunkte als Ausgaben generieren. Bei einer Ausführungsform kann der Geometrie-Shader 260 Operationen durchführen, wie z. B. Point-Stripe-Generierung, Geometrie-Tessellation und Shadow-Volume-Extrusion, um schattierte Grundelemente zu generieren. Bei einer Ausführungsform kann der Geometrie-Shader 260 einen oder mehr der Textursampler 280 kompilieren und die Textursampler 280-A bis 280-K sodann abfragen, um Textursamples von den Texturdatenwerten, die beispielsweise in dem Puffer 290-D gespeichert sind, zu erhalten. Bei einer Ausführungsform kann der Geometrie-Shader 260 mittels Assembler-, Cg-, HLSL- und GLSL-Sprachen programmiert sein.
  • Bei einer Ausführungsform kann der Rasterblock 265 Eckpunkte (Vektorgrafik-Information) von dem Vertex-Shader 220 und dem Geometrie-Shader 260 empfangen und ein Rasterbild generieren, das Pixel oder Punkte beinhalten kann, die auf einem Display-Gerät angezeigt werden können. Bei einer Ausführungsform kann der Rasterblock 265 Rastertechniken durchführen, wie z. B. Transformationen, Clipping, Abtastumsetzung, Culling, Texturfilterung und andere Techniken. Bei einer Ausführungsform kann der Rasterblock 265 die Pixel an einen Pixel-Shader 270 zur Verarbeitung des Rasterbildes bereitstellen.
  • Bei einer Ausführungsform kann der Pixel-Shader 270 Rich-Shading-Techniken an dem Rasterbild durchführen, um Pro-Pixel-Ausgaben zu generieren. Bei einer Ausführungsform kann der Pixel-Shader 270 Techniken durchführen, wie z. B. Pro-Pixel-Ausleuchtung und verwandte Effekte, wie z. B. Bump-Mapping, Farbtoning, Schatten, spiegelnde Highlights und Durchsichtigkeit, um scharfe und realistischere Bilder bereitzustellen. Bei einer Ausführungsform kann der Pixel-Shader 270 mittels Assembler-, Cg-, HLSL- und GLSL-Sprachen oder anderen ähnlichen Sprachen programmiert sein. Bei einer Ausführungsform kann der Pixel-Shader 270 vor dem Generieren von Schattierungseffekten Pixel-Daten von dem Rasterblock 265 und Textursamples von einem oder mehr Textursamplern 280-A bis 280-K empfangen. Bei einer Ausführungsform kann der Pixel-Shader 270 Textursamples von Textursamplern 280-B und 280-K empfangen. Bei einer Ausführungsform kann der Pixel-Shader 270 die Texturdatenwerte ebenfalls direkt von dem Puffer 290-F empfangen. Bei einer Ausführungsform kann die Ausgabe des Pixel-Shaders 270 an den Mischer 275 zur weiteren Verarbeitung bereitgestellt werden.
  • Bei einer Ausführungsform können die Textursampler 280-A bis 280-K die Texturdatenwerte, die in den Texturpuffern 290-C, 290-D und 290-F und anderen Puffern gespeichert sind, sampeln. Bei einer Ausführungsform können die Textursampler 280-A bis 280-K mittels einer Shader-Sprache implementiert werden, die verwendet wird, um die Shader 220, 230, 250, 260 und 270 zu implementieren. Solch ein Ansatz kann einer komplexen Textursampling-Funktion ermöglichen, als Teil eines Softwarecodes implementiert zu werden, der mit einem Sampler-Zustand übereinstimmen kann. Bei einer Ausführungsform können die Textursampler 280-A bis 280-K mittels Cg- oder GLSL- oder HLSL-Sprachen implementiert werden. Bei einer Ausführungsform können die Textursampler 280-A bis 280-K mittels höherer Shader-Sprachen während einer Offline-Phase implementiert werden. Bei einer Ausführungsform können die Textursampler 280-A bis 280-K mittels des Shader-Compilers während einer Vorbereitungsphase kompiliert werden, um Binärdateien von dem Sampler zu generieren, der mittels Shader-Sprache implementiert ist. Bei einer Ausführungsform können eine oder mehrere der Textursampler-Binärdateien von den Shadern 220, 230, 250, 260 und 270 abgerufen werden, während die Shader 220 bis 270 aufgerufen werden. Bei einer Ausführungsform können einer oder mehrere der Textursampler 280-A bis 280-K während der Erzeugung der Shader 220, 230, 250, 260 und 270 während orthogonaler Sampler-Zustand-Objekt-Erzeugung oder auf Anfrage zu einem späteren Zeitpunkt nach der Erzeugungsphase kompiliert werden.
  • Bei einer Ausführungsform können die Textursampler 280-A bis 280-K Operationen durchführen, wie z. B. Auflösen der Detailstufen (level of details, LOD), Bestimmen der Samples, Auflösen von Texel-Adressen, Abrufen von Samples und Zusammenführen von Samples. Bei einer Ausführungsform können die Operationen der Textursampler 280-A bis 280-K mittels Shader-Sprache implementiert werden.
  • Bei einer Ausführungsform kann das Auflösen der Detailstufen die MIP-Maps bestimmen, die den Bereich identifizieren, aus dem Samples ausgewählt werden sollen. Bei einer Ausführungsform kann das Auflösen der Texel-Adressen die Stelle bestimmen, von der die Samples abgerufen werden sollen. Bei einer Ausführungsform können die Textursampler 280-A bis 280-K Samplingtechniken, wie z. B. Point-Sampling, bilineares Sampling, trilineares Sampling und anisotropes Filtern, unterstützen. Bei einer Ausführungsform können die Textursampler 280-A bis 280-K, die mittels einer Shader-Sprache implementiert sind, um mit dem Sampler-Zustand der Shader 220 bis 270 übereinzustimmen, die Operationsgeschwindigkeit von Textursampling im Vergleich zu einem Textursampler, der mittels einer auf einer generischen Software basierten Textursampling-Technik implementiert ist, verbessern.
  • Bei einer Ausführungsform können die Textursampler 280-A bis 280-K verwendet werden, um die Textursamples an den Vertex-Shader 220, den Hull-Shader 230, den Domain-Shader, den Geometrie-Shader 260 und den Pixel-Shader 270 bereitzustellen. Bei einer Ausführungsform können die Textursampler 280-A bis 280-K, die mittels der Shader-Sprache implementiert sind, während Erzeugung des Vertex-Shaders 220 oder während der Erzeugung des Sampler-Zustand-Objekts kompiliert werden. Bei einer Ausführungsform können die Textursampler 280-A, 280-B und 280-K von dem Vertex-Shader 220 abgerufen werden, während der Vertex-Shader 220 aufgerufen wird. Bei einer Ausführungsform können die Textursampler 280-A und 280-B von dem Hull-Shader 230 abgerufen werden, während der Hull-Shader 230 aufgerufen wird. Bei einer Ausführungsform kann der Textursampler 280-B von dem Domain-Shader 250 abgerufen werden, während der Domain-Shader 250 aufgerufen wird. Bei einer Ausführungsform können Textursampler 280-B und 280-K von dem Geometrie-Shader 260 abgerufen werden, während der Geometrie-Shader 260 aufgerufen wird, und die Textursampler 280-B und 280-K können von dem Pixel-Shader 270 abgerufen werden, während der Pixel-Shader 270 aufgerufen wird.
  • Solch ein Ansatz kann einer komplexen Textursampling-Funktion ermöglichen, als Teil eines Softwarecodes implementiert zu werden, der mit einem Sampler-Zustand der Shader 220, 230, 250, 260 und 270 übereinstimmen kann oder mit einem orthogonalen Sampler-Zustand übereinstimmen kann. Bei einer Ausführungsform können die Textursampler 280, die mittels einer Shader-Sprache implementiert sind, um mit dem Sampler-Zustand der Shader 220, 230, 250, 260 und/oder 270 übereinzustimmen, die Operationsgeschwindigkeit um einen Faktor N im Vergleich zu einem Textursampler, der mittels einer auf einer generischen Software basierten Textursampling-Technik implementiert ist, verbessern. Bei einer Ausführungsform können die Textursampler 280, die mittels der Shader-Sprache implementiert sind, die Leistung um N = KX im Vergleich zu einer auf einer generischen Software basierten Textursampling-Technik verbessern, wobei die Leistung des auf der generischen Software basierten Textursamplings X ist und K ein positiver ganzzahliger Wert ist.
  • Ein Ablaufdiagramm 300, das die Textursampler 280 darstellt, die mittels einer höheren Shader-Sprache umgesetzt sind, ist in 3 veranschaulicht. Bei Block 310 können die Textursampler 280-A bis 280-K mittels einer Shader-Sprache generiert werden. Bei einer Ausführungsform können die Textursampler 280-A bis 280-K mittels Shader-Sprachen, wie z. B. Assembler, Cg, HLSL oder GLSL, entwickelt werden. Bei einer Ausführungsform können die Textursampler 280-A bis 280-K offline generiert werden, beispielsweise während der Entwicklung eines Treibermoduls.
  • Bei Block 320 können die Shader-Sampler, die verwendet werden, um die Textursampler 280-A bis 280-K zu generieren, zu einer Sampler-Zustand-Objekt-Erzeugungszeit kompiliert werden. Bei einer anderen Ausführungsform können die Shader-Sampler auf Anfrage erzeugt werden. Bei einer Ausführungsform kann eine spezifische Sample-Operation auf Anfrage erzeugt werden, wenn beispielsweise die Sample-Operation für einen Zeichenbefehl benötigt würde.
  • Bei Block 330 können die Textursampler 280-A bis 280-K mittels eines höheren Shader-Compilers in einen Zielmaschinencode kompiliert werden. Bei einer Ausführungsform können die Textursampler 280-A bis 280-K mittels eines Zielmaschinen-Compilers in einen Zielmaschinencode kompiliert werden. Bei einer Ausführungsform können die Textursampler 280-A, 280-B und 280-K mittels eines höheren Vertex-Shader-Compilers in eine Zielmaschine kompiliert werden. Gleichermaßen kann einer oder mehr der Textursampler 280-A bis 280-K mittels eines höheren Shader-Compilers der Shader 230 bis 270 in einen Zielmaschinencode kompiliert werden.
  • Bei Block 340 können die Shader 220 bis 270 aufgerufen werden. Bei einer Ausführungsform können die Shader, wie z. B. der Vertex-Shader 220, der Hull-Shader 230, der Domain-Shader 250, der Geometrie-Shader 260 und der Pixel-Shader 270, aufgerufen werden.
  • Bei Block 360 können ein oder mehr Textursampler 280-A bis 280-K von einem Shader abgerufen werden. Bei einer Ausführungsform können die Textursampler 280-A, 280-B und 280-K in Antwort auf das Abrufen von dem Vertex-Shader 220 eine Sampling-Operation durchführen und können Textursamples generieren. Bei einer Ausführungsform kann der Hull-Shader 230 die Textursampler 280-A und 280-B abrufen, der Domain-Shader 250 kann den Textursampler 280-B abrufen, der Geometrie-Shader 260 kann die Textursampler 280-A und 280-K abrufen und der Pixel-Shader 270 kann die Textursampler 280-B und 280-K abrufen.
  • Bei Block 380 können die Textursampler 280-A bis 280-K Textursamples mittels der Texturdaten, die in den Texturpuffern innerhalb des Speichers 190 gespeichert sind, generieren. Bei einer Ausführungsform kann der Textursampler 280-A eine Sampling-Operation durchführen, um Textursamples mittels der Texturdaten, die beispielsweise in einem oder mehr Texturpuffern 290-C bis 290-F gespeichert sind, zu generieren. Bei einer Ausführungsform kann der Textursampler 280-B eine Sampling-Operation durchführen, um Textursamples mittels der Texturdaten, die in dem Texturpuffer 290-D gespeichert sind, zu generieren und kann die Textursamples an den Pixel-Shader 270 bereitstellen.
  • Bei Block 390 können die Textursamples, die von den Textursamplern 280-A bis 280-K generiert wurden, von den Shadern 220 bis 270 verwendet werden, um einen Shadereffekt auf den Grafikelementen zu erzeugen. Bei einer Ausführungsform kann der Vertex-Shader 220 einen einzelnen Eckpunktwert empfangen und einen Shadereffekt auf dem Eckpunkt erzeugen. Bei einer Ausführungsform kann der Geometrie-Shader 260 ganze Grundelemente empfangen und kann einen Shadereffekt auf den ganzen Grundelementen erzeugen. Bei einer Ausführungsform kann der Pixel-Shader 270 einen Schattierungseffekt auf den Pixeln oder Punkten (oder Rasterbild) generieren.
  • Eine Ausführungsform eines Ablaufdiagramms 400, das das Generieren und Verwenden von Textursamplern darstellt, die mittels einer höheren Shader-Sprache implementiert sind, ist in 4 veranschaulicht. Bei einer Ausführungsform stellt das Ablaufdiagramm 400 drei Stufen dar – eine Stufe 401, eine Stufe 411 und eine Stufe 481. Bei einer Ausführungsform kann Stufe 401 eine Offline-Phase darstellen, die Stufe 411 kann eine Vorbereitungsphase darstellen und die Stufe 481 kann eine Renderingphase darstellen.
  • Bei einer Ausführungsform kann die Stufe 401 einen Textursampler-Generierungsblock 410 umfassen. Bei einer Ausführungsform kann sich der Textursampler-Generierungsblock 410 auf das Generieren von Textursamplern beziehen, wie z. B. die Textursampler 280-A bis 280-K, die offline generiert werden können und mittels einer höheren Shader-Sprache, wie z. B. Cg, HLSL oder GLSL, wie bei Block 310 beschrieben.
  • Bei einer Ausführungsform kann die Stufe 411 Sampler-Zustand-Block 415, Erzeuge-Sampler-Block 420, Shader-Compiler-Block 445, Kompiliere-Sampler-Block 450 und Sampler-Shader-Binärdateien-(SS-Bin)-Block 470 umfassen. Bei einer Ausführungsform kann der Sampler-Zustand-Block 415 Eingabedatenwerte darstellen. Bei einer Ausführungsform können die Eingabedatenwerte des Blockes 415 die Sampling-Operation bestimmen, die von dem Textursample von Block 410 durchgeführt wird. Block 420 stellt einen Erzeuge-Textursampler-Block dar, der in Antwort auf den Empfang des Textursamplercodes von dem Block 410 und den Eingabedatenwerten von dem Block 415 einen Textursampler erzeugt, wie z. B. den 280-A bis 280-K.
  • Block 445 stellt einen Shader-Compiler-Block dar, der die Shading-Sprache des Textursamplers auf einer Abstraktionsebene einholen und den Textursamplercode in eine andere Abstraktionsebene kompilieren kann. Bei einer Ausführungsform kann der Shader-Compiler-Block 445 den Textursamplercode von dem Erzeuge-Textursampler-Block 420 einholen und kann eine Kompilierung des Textursamplercodes einleiten, wie in Kompiliere-Sampler-Shader-Block 450 dargestellt.
  • Bei einer Ausführungsform kann der Textursamplercode bei Block 420 mittels einer höheren Shader-Sprache erzeugt werden und der Kompiliere-Sampler-Shader-Block 450 kann den Textursamplercode kompilieren und einen Zwischencode, wie z. B. Assembler-Sprachcode, generieren. Bei einer Ausführungsform kann der Kompiliere-Sampler-Shader-Block 450 weiter einen maschinenspezifischen Shader-Compiler, wie z. B. einen Grafik-Shader-Compiler oder einen Zentralprozessor-(central processing unit, CPU)-Shader-Compiler umfassen, der den Zwischencode in Assembler-Sprache in einen maschinenspezifischen Code kompilieren kann. Bei einer Ausführungsform kann ein Grafikprozessor oder ein Zentralprozessor das Ausführen des maschinenspezifischen Codes unterstützen.
  • Block 470 stellt eine Sampler-Shader-Binärdatei-(SS-BIN) dar, die als Folge einer Kompilierung, die von dem Block 450 durchgeführt wurde, erzeugt werden kann. Bei einer Ausführungsform kann die Sampler-Shader-Binärdatei-(SS-BIN) von den Shadern in der Renderingphase verwendet werden.
  • Bei einer Ausführungsform kann die Stufe 481 eine Renderingphase darstellen, in der die Grafikelemente, wie z. B. die Eckpunkte oder die ganzen Grundelemente, auf einem Display-Gerät gerendert werden, nachdem die Shader einen Schattierungseffekt an die Grafikelemente bereitstellen. Bei einer Ausführungsform kann die Stufe 481 einen Shader-Aufruf-Block 485, einen Ausführ-Shader-Block 490 und einen Abruf-SS-BIN-Block 495 umfassen. Bei einer Ausführungsform kann der Shader-Aufruf-Block 485 Shader aufrufen, wie z. B. den Vertex-Shader 220, den Hull-Shader 230, den Domain-Shader 250, den Geometrie-Shader 260 und den Pixel-Shader 270, wie bei Block 340 dargestellt.
  • Bei einer Ausführungsform kann der Ausführ-Shader-Block 490 dafür sorgen, dass Binärdateien der Shader 220 bis 270 ausgeführt werden. Bei einer Ausführungsform kann ein Grafikprozessor ein Ausführen von Binärdateien der Shader 220 bis 270 unterstützen. Bei einer Ausführungsform kann der Abruf-SS-BIN-Block 495 die Binärdateien von einem oder mehr Textursamplern 280-A bis 280-K abrufen. Bei einer Ausführungsform, wenn der Block 490 den Vertex-Shader 220 ausführen kann, kann der Block 495 den SS-BIN der Textursampler 280-A, 280-B und 280-K abrufen. Bei einer Ausführungsform, wenn der Block 490 den Hull-Shader 230 ausführen kann, kann der Block 495 den SS-BIN der Textursampler 280-A und 280-B abrufen. Bei einer Ausführungsform, wenn der Block 490 den Domain-Shader 250 ausführen kann, kann der Block 495 den SS-BIN des Textursamplers 280-B abrufen. Bei einer Ausführungsform, wenn der Block 490 den Geometrie-Shader 260 ausführen kann, kann der Block 495 den SS-BIN der Textursampler 280-A und 280-K abrufen. Bei einer Ausführungsform, wenn der Block 490 den Pixel-Shader 150 ausführt, kann der Block 495 den SS-BIN von Textursamplern 280-B und 280-K abrufen.
  • Bei einer Ausführungsform können die Textursampler 280-A bis 280-K in Antwort auf den Empfang eines Abrufs von den Shadern 220 bis 270 eine Textursampling-Operation an den Texturdaten durchführen und können Textursamples generieren. Bei einer Ausführungsform können die Textursamples von den Shadern verwendet werden, um einen Shadereffekt auf den Grafikelementen zu erzeugen.
  • Unter Bezugnahme auf 5 kann ein Computersystem 500 einen Universalprozessor 502 beinhalten, einschließlich eines Ein-Befehl-Mehrfache-Daten-(single instruction multiple data, SIMD)-Prozessors und eines Grafikprozessors (graphics processor unit, GPU) 505. Der Prozessor 502 kann bei einer Ausführungsform neben der Durchführung verschiedener anderer Tasks Kontrastverbesserungs-Operationen durchführen oder eine Sequenz von Befehlen speichern, um Kontrastverbesserungs-Operationen in maschinenlesbarem Speichermedium 525 bereitzustellen. Die Sequenz von Befehlen kann jedoch ebenfalls in dem Speicher 520 oder in jedem anderen geeigneten Speichermedium gespeichert werden. Bei einer Ausführungsform kann die Grafikapplikationsprogrammschnittstelle (graphics application program interface, GPI) 510 von dem Prozessor 502 oder dem GPU 505 unterstützt werden.
  • Während ein einzelner Grafikprozessor GPU 505 in 5 dargestellt ist, kann der Prozessor 502 bei einigen Ausführungsformen verwendet werden, um Kontrastverbesserungs-Operationen durchzuführen, um ein anderes Beispiel zu nennen. Der Prozessor 502, der das Computersystem 500 betreibt, kann ein oder mehr Prozessorkerne sein, die mit Logik 530 gekoppelt sind. Die Logik 530 kann mit einem oder mehr Eingangs-/Ausgangs-(I/O-Input/Output)-Geräten 560 gekoppelt sein, die dem Computersystem 500 eine Schnittstelle bereitstellen können. Die Logik 530 könnte beispielsweise bei einer Ausführungsform Chipsatz-Logik sein. Die Logik 530 ist mit dem Speicher 520 gekoppelt, der jede Art von Speicher sein kann, einschließlich optischer, magnetischer oder Halbleiterspeicher. Der Grafikprozessor 505 ist durch einen Framepuffer mit einem Display 540 gekoppelt.
  • Bei einer Ausführungsform kann die Grafikapplikationsprogrammschnittstelle (graphics application program interface, GPI) 510 innerhalb des Prozessors 502 vorgesehen sein. Bei einer anderen Ausführungsform kann die Grafikapplikationsprogrammschnittstelle (graphics application program interface, GPI) 510 jedoch innerhalb des GPU 505 vorgesehen sein (gezeigt durch gepunkteten Kasten). Bei einer Ausführungsform kann die GPI 510 eine 3D-Pipeline unterstützen und kann Textursampler mittels höherer Shader-Sprache implementieren. Bei einer Ausführungsform kann die GPI 510 die Textursampler 280-A bis 280-K offline implementieren und mittels höherer Shader-Sprachen und den so implementierten Textursamplern 280-A bis 280-K können sie basierend auf der Zielmaschine kompiliert werden. Bei einer Ausführungsform können die Textursampler 280-A bis 280-K von einem oder mehr Shadern 220 bis 270 abgerufen werden, um Textursamples zu erhalten. Bei einer Ausführungsform können die Shader 220 bis 270 die Textursamples, die von den Textursamplern 280-A bis 280-K generiert wurden, verwenden, um einen Schattierungseffekt auf den Grafikelementen zu erzeugen.
  • Die hierin beschriebenen Grafikverarbeitungs-Techniken können in verschiedenen Hardware-Architekturen implementiert werden. Beispielsweise kann Grafikfunktionalität innerhalb eines Chipsatzes integriert sein. Alternativ kann ein getrennter Grafikprozessor verwendet werden. Als noch weitere Ausführungsform können die Grafikfunktionen durch einen Universalprozessor implementiert werden, einschließlich eines Mehrkernprozessors oder als ein Satz von Softwarebefehlen, die in einem maschinenlesbaren Medium gespeichert sind.

Claims (26)

  1. Verfahren zur Durchführung von Textursampling, umfassend: Implementieren eines Textursamplers mittels einer Shader-Sprache, Generieren eines Textursampler-Binärcodes durch Kompilieren des Textursamplers in eine Zielmaschine, basierend auf Eingabewerten, die dem Textursampler bereitgestellt werden, Abrufen des Textursampler-Binärcodes von zumindest einem ersten Shader einer Vielzahl von Shadern, während der erste Shader aufgerufen wird, und Generieren von Schattierungseffekten auf Grafikelementen mittels eines ersten Satzes von Samples, die von dem Textursampler generiert werden, während der Textursampler von dem ersten Shader und dem zweiten Shader abgerufen wird, wobei die Grafikelemente Eckpunkte einer Linie und eines Dreiecks umfassen.
  2. Verfahren nach Anspruch 1 umfasst weiter, Abrufen des Textursampler-Binärcodes von zumindest einem zweiten Shader der Vielzahl von Shadern, während der zweite Shader aufgerufen wird, und Generieren von Schattierungseffekten auf Grafikelementen mittels eines zweiten Satzes von Samples, die von dem Textursampler generiert werden, während der Textursampler von dem zweiten Shader abgerufen wird.
  3. Verfahren nach Anspruch 1, wobei ein Implementieren des Textursamplers mittels einer Shader-Sprache in einer Offline-Phase vor einer Vorbereitungsphase durchgeführt wird.
  4. Verfahren nach Anspruch 3 umfasst weiter ein Erzeugen des Textursamplers, basierend auf Textursamplercode, der offline implementiert wird, und den Sampler-Zustand-Eingabewerten in einer Vorbereitungsphase, wobei die Sampler-Zustand-Eingabewerte die Sampling-Operationen bestimmen, die von dem Textursampler durchgeführt werden.
  5. Verfahren nach Anspruch 4, wobei ein Kompilieren des Textursamplers in eine Zielmaschine umfasst, einen Zwischensprachencode von dem Textursampler zu generieren, der in der Shader-Sprache implementiert ist, mittels eines Shader-Compilers, und einen Code auf Maschinenebene von der Zwischensprache mittels eines maschinenspezifischen Shader-Compilers zu generieren.
  6. Verfahren nach Anspruch 5, wobei die Shader-Sprache eine höhere Sprache ist und die Zwischensprache eine Sprache auf Assembler-Ebene ist.
  7. Verfahren nach Anspruch 7 umfasst weiter ein Abrufen des Textursampler-Binärcodes von dem ersten Shader, während der erste Shader in einer Renderingphase ausgeführt wird.
  8. Verfahren nach Anspruch 1 umfasst weiter ein Abrufen des Textursampler-Binärcodes von dem zweiten Shader, während der zweite Shader in einer Renderingphase ausgeführt wird.
  9. Verfahren nach Anspruch 1 umfasst weiter ein Verknüpfen eines ersten Textursamplers mit einem ersten Shader und dem zweiten Shader, wobei der erste Textursampler Samples für den ersten Shader und den zweiten Shader generieren soll.
  10. Maschinenlesbares Speichermedium, umfassend eine Vielzahl von Befehlen, die in Antwort auf ihr Ausführen in einem Prozessor resultieren, umfassend: Implementieren eines Textursamplers mittels einer Shader-Sprache, Generieren eines Textursampler-Binärcodes durch Kompilieren des Textursamplers in eine Zielmaschine, basierend auf Sampler-Zustand und Sampler-Operation, Abrufen des Textursampler-Binärcodes von einem ersten Shader, während der erste Shader aufgerufen wird, und Generieren von Schattierungseffekten auf Grafikelementen mittels eines ersten Satzes von Samples, die von dem Textursampler generiert werden, während der Textursampler von dem ersten Shader abgerufen wird, wobei die Grafikelemente Eckpunkte einer Linie und eines Dreiecks umfassen.
  11. Maschinenlesbares Speichermedium 10 umfasst weiter, Abrufen des Textursampler-Binärcodes von einem zweiten Shader, während der zweite Shader aufgerufen wird, und Generieren von Schattierungseffekten auf Grafikelementen mittels eines zweiten Satzes von Samples, die von dem Textursampler generiert werden, während der Textursampler von dem zweiten Shader abgerufen wird.
  12. Maschinenlesbares Speichermedium nach Anspruch 11, wobei ein Implementieren des Textursamplers mittels einer Shader-Sprache in einer Offline-Phase vor einer Vorbereitungsphase durchgeführt wird.
  13. Maschinenlesbares Speichermedium nach Anspruch 12 umfasst weiter ein Erzeugen des Textursamplers, basierend auf Textursamplercode, der offline implementiert ist, und den Sampler-Zustand-Eingabewerten in einer Vorbereitungsphase, wobei die Sampler-Zustand-Eingabewerte die Sampling-Operationen bestimmen, die von dem Textursampler durchgeführt werden.
  14. Maschinenlesbares Speichermedium nach Anspruch 13, wobei ein Kompilieren des Textursamplers in eine Zielmaschine umfasst, einen Zwischensprachencode von dem Textursampler, der in der Shader-Sprache implementiert ist, mittels eines Shader-Compilers zu generieren, und einen Code auf Maschinenebene von der Zwischensprache mittels eines maschinenspezifischen Shader-Compilers zu generieren.
  15. Maschinenlesbares Speichermedium nach Anspruch 14, wobei die Shader-Sprache eine höhere Sprache ist und die Zwischensprache eine Sprache auf Assembler-Ebene ist.
  16. Maschinenlesbares Speichermedium nach Anspruch 10 umfasst weiter ein Abrufen des Textursampler-Binärcodes von dem ersten Shader, während der erste Shader in einer Renderingphase ausgeführt wird.
  17. Maschinenlesbares Speichermedium nach Anspruch 10 umfasst weiter ein Abrufen des Textursampler-Binärcodes von dem zweiten Shader, während der zweite Shader in einer Renderingphase ausgeführt wird.
  18. Maschinenlesbares Speichermedium nach Anspruch 10 umfasst weiter ein Verknüpfen eines ersten Textursamplers und eines zweiten Textursamplers mit einem ersten Shader und des zweiten Textursamplers und eines dritten Textursamplers mit dem zweiten Shader.
  19. System, umfassend: einen Prozessor, wobei der Prozessor eine Vielzahl von Grafikapplikationen und eine oder mehr programmierbare Grafikapplikationsschnittstellen unterstützen soll, einen Grafikprozessor, und einen Speicher, der mit dem Prozessor und dem Grafikprozessor gekoppelt ist, wobei die programmierbare Grafikapplikationsschnittstelle einen oder mehr Textursampler umfassen soll, die mittels einer Shader-Sprache implementiert sind, wobei ein Textursampler-Binärcode durch Kompilieren des Textursamplers in eine Zielmaschine generiert wird, basierend auf Sampler-Zustand und Sampler-Operation, wobei der Textursampler-Binärcode von einem ersten Shader abgerufen wird, während der erste Shader aufgerufen wird, und wobei Rötungseffekte auf Grafikelementen mittels eines ersten Satzes von Samples, die von dem Textursampler generiert werden, generiert werden, während der Textursampler von dem ersten Shader abgerufen wird, wobei die Grafikelemente Eckpunkte einer Linie und eines Dreiecks umfassen.
  20. System nach Anspruch 19, wobei der Speicher einen oder mehr Puffer umfasst, um Texturdaten zu speichern, wobei der eine oder mehr Textursampler Datenwerte von dem einen oder mehr Puffern einholt und Textursamples erzeugt.
  21. System nach Anspruch 19, wobei der Textursampler, der mittels einer Shader-Sprache implementiert ist, in einer Offline-Phase vor einer Vorbereitungsphase durchgeführt wird.
  22. System nach Anspruch 21, wobei der Textursampler basierend auf Textursamplercode, der offline implementiert ist, und den Sampler-Zustand-Eingabewerten in einer Vorbereitungsphase erzeugt wird, wobei die Sampler-Zustand-Eingabewerte die Sampling-Operationen bestimmen, die von dem Textursampler durchgeführt werden.
  23. System nach Anspruch 22, wobei ein Kompilieren des Textursamplers in eine Zielmaschine umfasst, einen Zwischensprachencode von dem Textursampler, der in der Shader-Sprache implementiert ist, mittels eines Shader-Compilers zu generieren, und einen Code auf Maschinenebene von der Zwischensprache mittels eines maschinenspezifischen Shader-Compilers zu generieren, wobei die Shader-Sprache eine höhere Sprache ist und die Zwischensprache eine Sprache auf Assembler-Ebene ist.
  24. System nach Anspruch 18 umfasst weiter, Abrufen des Textursampler-Binärcodes von dem ersten Shader, während der erste Shader in einer Renderingphase ausgeführt wird, und Abrufen des Textursampler-Binärcodes von dem zweiten Shader, während der zweite Shader in einer Renderingphase ausgeführt wird.
  25. System nach Anspruch 19 umfasst weiter ein Verknüpfen eines ersten Textursamplers und eines zweiten Textursamplers mit dem ersten Shader, und des ersten Textursamplers und eines dritten Textursamplers mit dem zweiten Shader, wobei der erste Textursampler Samples für den ersten Shader und den zweiten Shader generieren soll, wobei der zweite Textursampler Samples für den ersten Shader generieren soll und der dritte Textursampler Samples für den zweiten Shader generieren soll.
  26. System nach Anspruch 19, wobei der Grafikprozessor die programmierbare Grafikapplikationsschnittstelle unterstützen soll, wobei die programmierbare Grafikapplikationsschnittstelle eine programmierbare Grafikpipeline umfassen soll, wobei die programmierbare Grafikpipeline weiter eine Vielzahl von Shadern und einen oder mehr Textursampler umfasst, die mittels einer Shader-Sprache implementiert sind, wobei ein Textursampler-Binärcode des einen oder der mehr Textursampler durch Kompilieren des einen oder der mehr Textursampler in eine Zielmaschine, basierend auf Eingabewerten, die dem einen oder den mehr Textursamplern bereitgestellt werden, generiert wird, wobei der Textursampler-Binärcode von zumindest einem der Vielzahl von Shadern abgerufen wird, während der zumindest eine der Vielzahl von Shadern aufgerufen wird, und wobei der eine oder die mehr Textursampler Textursamples generieren soll, während der eine oder die mehr Textursampler von dem zumindest einen der Vielzahl von Shadern abgerufen wird, wobei der zumindest eine der Vielzahl von Textursamplern die Textursamples verwenden soll, um Rötungseffekte auf Grafikelementen zu generieren, wobei die Grafikelemente Eckpunkte einer Linie und eines Dreiecks und eines Punktes umfassen.
DE102010025310A 2009-06-29 2010-06-28 Textursampling Withdrawn DE102010025310A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/493,900 2009-06-29
US12/493,900 US8289341B2 (en) 2009-06-29 2009-06-29 Texture sampling

Publications (1)

Publication Number Publication Date
DE102010025310A1 true DE102010025310A1 (de) 2011-02-03

Family

ID=42334694

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102010025310A Withdrawn DE102010025310A1 (de) 2009-06-29 2010-06-28 Textursampling

Country Status (6)

Country Link
US (1) US8289341B2 (de)
CN (2) CN101937556B (de)
DE (1) DE102010025310A1 (de)
GB (1) GB2471926B (de)
RU (1) RU2459260C2 (de)
TW (1) TWI443599B (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8289341B2 (en) 2009-06-29 2012-10-16 Intel Corporation Texture sampling
US8633928B2 (en) * 2009-08-13 2014-01-21 Intel Corporation Reducing the bandwidth of sampler loads in shaders
US8917271B2 (en) * 2009-10-05 2014-12-23 Nvidia Corporation Redistribution of generated geometric primitives
US9619918B2 (en) * 2011-04-28 2017-04-11 Digital Media Professionals Inc. Heterogenious 3D graphics processor and configuration method thereof
US9412197B2 (en) * 2012-04-04 2016-08-09 Qualcomm Incorporated Patched shading in graphics processing
US9235926B2 (en) * 2012-12-24 2016-01-12 Intel Corporation Techniques for improving MSAA rendering efficiency
US9569883B2 (en) 2013-12-12 2017-02-14 Intel Corporation Decoupled shading pipeline
JP6470766B2 (ja) * 2014-07-10 2019-02-13 インテル・コーポレーション 現在の状態に基づいてシェーダプログラムをアップデートするための方法および装置
US10089775B2 (en) * 2015-06-04 2018-10-02 Samsung Electronics Co., Ltd. Automated graphics and compute tile interleave
US10269143B2 (en) 2016-03-25 2019-04-23 Microsoft Technology Licensing, Llc Multiple texture variable opacity stroke rendering and blending
US10559056B2 (en) * 2017-06-12 2020-02-11 Arm Limited Graphics processing
CN108010095B (zh) * 2017-11-14 2021-06-04 创新先进技术有限公司 一种纹理合成的方法、装置及设备
CN108648252A (zh) * 2018-05-17 2018-10-12 成都明镜视觉科技有限公司 一种骨骼动画兼容处理方法
US11037356B2 (en) 2018-09-24 2021-06-15 Zignal Labs, Inc. System and method for executing non-graphical algorithms on a GPU (graphics processing unit)
CN109785417B (zh) * 2018-11-29 2023-06-09 武汉凌久微电子有限公司 一种实现OpenGL累积操作的方法及装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6130674A (en) * 1997-03-31 2000-10-10 Cirrus Logic, Inc. Dynamically selectable texture filter for computer graphics
US7564460B2 (en) * 2001-07-16 2009-07-21 Microsoft Corporation Systems and methods for providing intermediate targets in a graphics system
US7324116B2 (en) * 2002-06-20 2008-01-29 Microsoft Corporation Systems and methods for providing controllable texture sampling
US7800620B2 (en) * 2004-11-05 2010-09-21 Microsoft Corporation Optimizing automated shader program construction
US7733347B2 (en) * 2004-11-05 2010-06-08 Microsoft Corporation Automated construction of shader programs
US7782334B1 (en) * 2005-09-13 2010-08-24 Nvidia Corporation Pixel shader-based data array resizing
CN1928918B (zh) * 2005-10-14 2012-10-10 威盛电子股份有限公司 图形处理装置及于图形处理装置中执行着色操作的方法
US20070091088A1 (en) * 2005-10-14 2007-04-26 Via Technologies, Inc. System and method for managing the computation of graphics shading operations
US20080024510A1 (en) * 2006-07-27 2008-01-31 Via Technologies, Inc. Texture engine, graphics processing unit and video processing method thereof
US7859548B1 (en) * 2006-10-19 2010-12-28 Nvidia Corporation Offloading cube map calculations to a shader
US20080094408A1 (en) * 2006-10-24 2008-04-24 Xiaoqin Yin System and Method for Geometry Graphics Processing
US7623136B1 (en) * 2006-12-05 2009-11-24 Nvidia Corporation Method and system for processing texture samples with programmable filter weights
US8355021B2 (en) * 2007-05-17 2013-01-15 Siemens Aktiengesellschaft Fused volume rendering
US8495602B2 (en) * 2007-09-28 2013-07-23 Qualcomm Incorporated Shader compile system and method
US8174534B2 (en) * 2007-12-06 2012-05-08 Via Technologies, Inc. Shader processing systems and methods
US8289341B2 (en) 2009-06-29 2012-10-16 Intel Corporation Texture sampling

Also Published As

Publication number Publication date
RU2459260C2 (ru) 2012-08-20
CN101937556B (zh) 2013-09-18
GB2471926B (en) 2011-12-28
US8289341B2 (en) 2012-10-16
CN101937556A (zh) 2011-01-05
TW201126450A (en) 2011-08-01
CN103489213B (zh) 2016-08-17
US20100328309A1 (en) 2010-12-30
TWI443599B (zh) 2014-07-01
GB2471926A (en) 2011-01-19
RU2010126453A (ru) 2012-01-10
GB201007971D0 (en) 2010-06-30
CN103489213A (zh) 2014-01-01

Similar Documents

Publication Publication Date Title
DE102010025310A1 (de) Textursampling
DE102008026431B4 (de) Extrapolation von nicht residenten Mipmap-Daten unter Verwendung residenter Mipmap-Daten
DE102020115026A1 (de) Systeme und Verfahren zur Tonabbildung von Bildern mit hohem Dynamikumfang für auf tiefem Lernen basierende Verarbeitung von hoher Qualität
US9177351B2 (en) Multi-primitive graphics rendering pipeline
DE102019102279A1 (de) Erzeugung von synthetischen Bildern zum Trainieren eines Neuronal-Netzwerkmodells
DE102018113845A1 (de) Systeme und Verfahren zum Trainieren von neuronalen Netzwerken mit dünnbesetzten Daten
DE112017001703T5 (de) Verfahren und Vorrichtung zum effizienteren Ray-Tracing von instanziierter Geometrie
DE102019135639A1 (de) Auf Echtzeit-Strahlverfolgung (RTRT) basierende adaptive Mehrfrequenzschattierung (AMFS)
DE102016122297A1 (de) Mehrfach-Durchlauf-Rendering in einer Bildschirm-Raum-Pipeline
DE102013020613A1 (de) Umgehung der Pixel-Schattierung für die grafische Bilderzeugung mit geringer Leistung
DE112017003234T5 (de) Reduzieren von Speicherzugrifflatenzen während der Strahltraversierung
DE102020107080A1 (de) Grafiksysteme und Verfahren zum Beschleunigen von Synchronisation mittels feinkörniger Abhängigkeitsprüfung und Planungsoptimierungen basierend auf verfügbarem gemeinsam genutztem Speicherplatz
DE102020121814A1 (de) Vorrichtung und Verfahren zum Verwenden von Dreieckspaaren und gemeinsam genutzten Transformationsschaltungen zum Verbessern der Strahlverfolgungsleistung
CN103871019B (zh) 用于处理路径图像以促进光栅化的方法和设备
DE102013222685A1 (de) System, Verfahren und Computer-Programm-Produkt zum Abtasten einer hierarchischen Tiefe-Karte
DE102019132001A1 (de) Vorrichtung und verfahren für einen hierarchischen beamtracer
KR100823373B1 (ko) 3차원 그래픽 서브시스템들에서의 텍스쳐 맵 데이터의프로그램 가능 필터링을 위한 방법 및 메카니즘
DE102019101871A1 (de) Verfahren und Vorrichtung zum Gewinnen von Abtastpositionen von Textuieroperationen
DE112017001845T5 (de) Strahltraversierung mit reduzierter Genauigkeit mit Wiederverwendung von Ebenen
DE102017109472A1 (de) Stereo-mehrfach-projektion implementiert unter verwendung einer graphikverarbeitungs-pipeline
DE102020108526A1 (de) Adaptive pixelabtastreihenfolge für zeitlich dichtes rendern
US10192348B2 (en) Method and apparatus for processing texture
DE112017001628T5 (de) Verfahren und Vorrichtung zur Erzeugung von Samplingmustern für eine Raytracing-Architektur
DE102019120922A1 (de) Vorrichtung und verfahren für multifrequenz-vertex-shadinghintergrund
DE102021114013A1 (de) Techniken zum effizienten abtasten eines bildes

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee