DE102010025310A1 - texture sampling - Google Patents

texture sampling 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
German (de)
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/en
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.A texture sampler is implemented using a shader language. The shader compiler is used to compile the texture sampler into a target machine based on sampler state, sampler operation, and other static fan-in input values provided to the texture sampler. The shaders, such as For example, a vertex shader, geometry shaders, pixel shaders, hull shaders, domain shaders, and a compute shader can retrieve one or more texture samplers while the shaders are being invoked. The one or more texture samplers that are part of a software code can generate texture samples of the texture data and provide the shaders with such texture samples. The shaders generate reductions on graphic elements using texture samples. The graphics are then rendered along with the shading effects on a display device.

Figure 00000001
Figure 00000001

Description

HINTERGRUNDBACKGROUND

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.texture generally refers to images that are repetitive patterns include that can be used to enclose the graphic patterns. The texture data can using texture sampling techniques based on Nyquist criteria be sampled. Texture sampling techniques are becoming increasingly complex and are widely used. The texture sampling techniques can be point-sampling, bilinear Filtering, trilinear filtering, anisotropic filtering, anti-aliasing (Anti-aliasing) and other similar ones Techniques include. Texture sampling is being used more and more often for example, a vertex shader, geometry shaders, and pixel shaders.

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.Also the complexity increases and use of such texture sampling techniques and thus always increases the complexity the one to carry of the texture sampling used hardware. There are only a few Applications requiring the use of texture sampling techniques may require who do not need or have direct access to the hardware device. Also can the already existing hardware devices complex texture sampling operations do not fully support or the existing hardware devices can perform complex texture sampling operations not perform efficiently.

KURZE BESCHREIBUNG DER ZEICHUNGENBRIEF DESCRIPTION OF THE DRAWINGS

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.The The invention described herein will be exemplified in the accompanying drawings and not restrictive illustrated. For reasons The simplicity and clarity of the illustration are in the figures illustrated elements are not necessarily to scale drawn. The dimensions of some elements may differ with respect to the other Elements for reasons clarity, exaggerated, for example shown big be. Further, fiducial marks in the figures became appropriate Repeat digits to display corresponding or analogous items.

1 veranschaulicht eine Grafikverarbeitungs-Technik, die einen Textursampler verwendet, umgesetzt durch Verwendung einer Shader-Sprache in Übereinstimmung mit einer Ausführungsform. 1 FIG. 12 illustrates a graphics processing technique using a texture sampler implemented by using a shader language in accordance with an embodiment. FIG.

2 veranschaulicht dreidimensionale Pipelinestufen einer Grafikverarbeitungs-Technik, die Textursampler verwendet, umgesetzt durch Verwendung einer Shader-Sprache in Übereinstimmung mit einer Ausführungsform. 2 Figure 3 illustrates three-dimensional pipeline stages of a graphics processing technique using texture samplers implemented using a shader language in accordance with one embodiment.

3 ist ein Ablaufdiagramm, das einen Textursampler veranschaulicht, umgesetzt durch Verwendung einer Shader-Sprache in Übereinstimmung mit einer Ausführungsform. 3 FIG. 10 is a flow chart illustrating a texture sampler implemented by using a shader language in accordance with an embodiment.

4 veranschaulicht ein Ablaufdiagramm, das einen Textursampling-Prozess unter Verwendung einer Shader-Sprache in Übereinstimmung mit einer Ausführungsform darstellt. 4 FIG. 12 illustrates a flowchart illustrating a texture sampling process using a shader language in accordance with an embodiment. FIG.

5 veranschaulicht ein Computersystem 500, bei dem das Textursampling unter Verwendung einer Shader-Sprache in Übereinstimmung mit einer Ausführungsform implementiert sein kann. 5 illustrates a computer system 500 in which texture sampling may be implemented using a shader language in accordance with an embodiment.

AUSFÜHRLICHE BESCHREIBUNGDETAILED DESCRIPTION

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.The The following description describes techniques for performing Texture sampling using a texture sampler that implements a shader language is. In the following description will be numerous specific Details, such. B. logic implementations, resource allocation or division or duplication implementations, types and relationships of System components and logic partition or integration selections set out to be thorough understanding to provide the present invention. It's for one Professional, of course, that the invention can be operated without such specific details. In other cases were tax structures, circuits at the gate level and complete Software command sequences not shown in detail to the invention not to be in the background. The person skilled in the art is based on the descriptions contained in the Be able to do proper functionality without undue To implement experiments.

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.references in the description on "one Embodiment "," an exemplary Embodiment "give that the described embodiment a specific feature, structure or characteristic can, but any embodiment does not necessarily have the specific feature, the structure or characteristic. Furthermore, such relate Not expressions necessarily to the same embodiment. If further on certain feature, structure or characteristic with an embodiment is requested, that it / she is within the knowledge a person skilled in the art, such a feature, structure or characteristic in conjunction with other embodiments, which are explicitly described or not to influence.

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.Embodiments of the invention may be implemented in hardware, firmware, software, or any combination thereof. Embodiments of the invention may also be stored as being stored on a machine-readable medium Commands that can be read and executed by one or more processors. A machine-readable storage medium may include any mechanism for storing or transmitting information in a form that may be read by a machine (eg, a computing device).

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.One Machine-readable storage medium can be, for example, solid-state storage (read only memory, ROM); Random access memory, R.A.M); magnetic disk storage media; optical storage media; Flash memory devices; electric, include optical forms of signals. Next, firmware, Software, routines, and instructions described herein as performing particular actions become. However, it should be understood that such descriptions alone to serve the benefit and that such actions in reality from computer equipment, Processors, controllers, and other devices that result in the firmware, Execute software, routines, and commands.

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.One embodiment of an n-to-n relationship between multiple shaders and texture samplers is in FIG 1 illustrated. In one embodiment, the relationships diagram may be "M" shaders 110-A to 110 M include and "K" texture sampler 120-A to 120-K may support various sampling operations ("N", sampling operations, for example) with different sampler states ("p" sampler states, for example). In one embodiment, the texture sampler 120 may be configured with a sampler state and may receive a sample operation to be performed based on the sampler state. In one embodiment, the shader 110-A Texture samples from the texture samplers 120-A to 120-K seek. In another embodiment, the shader 110-A Texture samples of, for example, texture samplers 120-B . 120-D . 120-G and 120-J seek. In one embodiment, the shaders 110-A to 110 M For example, represent vertex, geometry, hull, domain, pixel or compute shaders. In one embodiment, the shader 110-A contains several sample states (SS) that can be used for sampling and the shader 110-A For example, you can perform multiple sample operations using a specific sampler state. In one embodiment, a sampler state may have separate logic for the sampling operations. At compile time, the sampler state may be added to the sampler state (SS) to obtain optimal code for the specific sampler state and sampler operation. In one embodiment, the texture samplers 120-A to 120-K Represent texture sampler operations that can implement a subset of sampler and sampler states supporting texture sampler.

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.In one embodiment, each shader 110 Get texture samples from one or more texture samplers 120 were generated. In one embodiment, the texture samplers 120-A to 120-K offline using a shader language, such as. Assembler, Cg, GLSL, HLSL and other shader languages. In one embodiment, the texture samplers 120 during the generation of shaders 110 or compiled during orthogonal sampler state object generation or on demand at a later time after the generation phase. In one embodiment, a sampler binary (SS-BIN) may be generated and used by the shaders 110 used while the shaders 110 Require texture samples.

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.In one embodiment, the shaders 110 and the texture samplers 120 For example, be used in programmable 3D graphics pipeline. In one embodiment, the programmable 3D graphics pipeline may include Direct3D10 (D3D10) Direct3D11 (D3D11) or other such pipeline stages of a DirectX application programming interface application program interface (API), the ® from Microsoft Corporation is available, or OpenGL pipeline stages of a Cross Platform API, available from Silicon Graphics Inc. The texture sampler 120 however, they can also be used by any other shader in other environments.

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.One embodiment of a programmable three-dimensional (3D) graphics pipeline that can use a texture sampler implemented using higher shader language is in FIG 2 illustrated. In one embodiment, a programmable 3D graphics pipeline 200 Include steps such. An input data processing block 210 , a variety of shaders, such as. B. a vertex shader 220 , Hull shader 230 , Domain shaders 250 , Geometry shader 260 and pixel shaders 270 , a tessellator 235 , a grid block 265 , a mixer 275 , Texture sampler 280-A to 280-K and a memory 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.In one embodiment, the programmable pipeline stages may include graphics for real-time applications, such as graphics. As games generate. In one embodiment, the pipeline stage 200 D3D11 a DirectX application programming interface application program interface (API) represent, which is available from the Microsoft ® Corporation.

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.In one embodiment, the input data processing block 210 Data units by means of buffers 290-A and 290-B of the memory 290 stored index data or vertex data generie In one embodiment, the vertex data may represent vertices of triangles, points, lines, and other similar data. In one embodiment, the input data processing block 210 the data units to the vertex shader 220 provide. In one embodiment, the input data processing block 210 the geometric data using vertex and index data stored in the buffers 290-A and 290-B are stored before the geometric data is put into the vertex shader 220 and the geometry shader 260 to be provided.

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.In one embodiment, the vertex shader 220 handle the vertices coming from the input data processing block 210 were received, by means of the texture samples, by the texture samplers 280-A to 280-K were generated. In one embodiment, the vertex shader 220 Use the texture samples that come from any or some or all of the texture samplers 280-A to 280-K were generated. In one embodiment, the vertex shader 220 generate a single output vertex that can be processed using the texture samples after receiving a single input vertex. In one embodiment, the vertex shader 220 Perform transformations to add special effects to the input vertex, such as: Lighting and skinning. In one embodiment, the vertex shader 220 perform mathematical operations to change the color, texture, or position of the input vertex. In one embodiment, the vertex shader 220 using shader languages, such as Assembler language, C for graphics (Cg) language, OpenGL shader language (GLSL) or higher shader language (HLSL) or any other shader language.

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.In one embodiment, the Hull shader 230 Patch control points receive and can use the patch control points for the fixed functional tessellator 235 to prepare. In one embodiment, the Hull shader 230 Texture samples of one or more texture samplers 280-A to 280-K receive. In one embodiment, the Hull shader 230 Texture samples from the texture samplers 280-A and 280-B receive. In one embodiment, the Hull shader 230 be implemented using shader language. In one embodiment, the tessellator 235 the patch based on control input from the Hull shader 230 divide and can the results of tessellation to the domain shader 250 pass on. In one embodiment, the domain shader 250 manipulate the generated vertices to fit the vertices to a shape, or by means of the inputs from the tessellator block 235 and the texture samples from one or more of the texture samplers 280-A to 280-K perform a displacement mapping. In one embodiment, the domain shader 250 Use texture samples taken from the texture sampler 280-B are provided. In one embodiment, the domain shader 250 the results to the geometry shader 260 or the grid block 265 provide. In one embodiment, the domain shader 250 be implemented using higher shader languages.

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.In one embodiment, the geometry shader 260 shaded primitives in response to receiving whole primitives from the vertex shader 220 or the domain shader 250 and texture samples taken from one or more of the texture samplers 280-A to 280-K generated, generate. In one embodiment, the geometry shader 260 Texture samples received by the texture samplers 280-A and 280-K were generated. In one embodiment, the entire primitives may comprise a plurality of vertices. In one embodiment, the geometry shader 260 Generate zero or more shaded primitives in response to receiving the plurality of vertices and texture samples as inputs.

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.In one embodiment, the plurality of vertices may include three vertices of a triangle, or two vertices of a line, or a single vertex of a point along with adjacency information as inputs, and may generate zero or more shaded vertices as outputs. In one embodiment, the geometry shader 260 Perform operations, such. For example, point-stripe generation, geometry tessellation, and shadow-volume extrusion to generate shaded primitives. In one embodiment, the geometry shader 260 one or more of the texture samplers 280 compile and the texture sampler 280-A to 280-K then interrogate texture samples from the texture data values contained in the buffer, for example 290-D are saved. In one embodiment, the geometry shader 260 be programmed using assembler, Cg, HLSL and GLSL languages.

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.In one embodiment, the grid block 265 Corner points (vector graphic information) of the vertex shader 220 and the geometry shader 260 receive and generate a raster image that may include pixels or dots that may be displayed on a display device. In one embodiment, the grid block 265 Perform screening techniques, such. Transformations, clipping, scan conversion, culling, texture filtering, and other techniques. In one embodiment, the grid block 265 the pixels to a pixel shader 270 provide for processing the raster image.

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.In one embodiment, the pi xel shader 270 Perform rich shading techniques on the raster image to generate per-pixel output. In one embodiment, the pixel shader 270 Perform techniques such. B. per-pixel illumination and related effects, such. Bump mapping, color toning, shadows, specular highlights, and translucency to deliver crisper, more realistic images. In one embodiment, the pixel shader 270 be programmed using assembler, Cg, HLSL and GLSL languages or other similar languages. In one embodiment, the pixel shader 270 prior to generating shading effects, pixel data from the grid block 265 and texture samples of one or more texture samplers 280-A to 280-K receive. In one embodiment, the pixel shader 270 Texture samples of texture samplers 280-B and 280-K receive. In one embodiment, the pixel shader 270 the texture data values also directly from the buffer 290-F receive. In one embodiment, the output of the pixel shader 270 to the mixer 275 be provided for further processing.

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.In one embodiment, the texture samplers 280-A to 280-K the texture data values that are in the texture buffers 290-C . 290-D and 290-F and other buffers are stored, sample. In one embodiment, the texture samplers 280-A to 280-K be implemented using a shader language that is used to create the shaders 220 . 230 . 250 . 260 and 270 to implement. Such an approach may allow a complex texture sampling function to be implemented as part of a software code that may match a sampler state. In one embodiment, the texture samplers 280-A to 280-K be implemented using Cg or GLSL or HLSL languages. In one embodiment, the texture samplers 280-A to 280-K be implemented using higher shader languages during an offline phase. In one embodiment, the texture samplers 280-A to 280-K compiled using the shader compiler during a preparation phase to generate binaries from the sampler implemented using shader language. In one embodiment, one or more of the texture sampler binaries may be from the shaders 220 . 230 . 250 . 260 and 270 be retrieved while the shaders 220 to 270 be called. In one embodiment, one or more of the texture samplers 280-A to 280-K during the generation of shaders 220 . 230 . 250 . 260 and 270 during orthogonal sampler state object generation or compiled on demand at a later time after the generation phase.

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.In one embodiment, the texture samplers 280-A to 280-K Perform operations, such. B. Resolving the levels of detail (LOD), determining the samples, resolving texel addresses, retrieving samples, and merging samples. In one embodiment, the operations of the texture sampler 280-A to 280-K be implemented using shader language.

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.In one embodiment, resolving the levels of detail may determine the MIP maps that identify the area from which to select samples. In one embodiment, resolving the texel addresses may determine the location from which to retrieve the samples. In one embodiment, the texture samplers 280-A to 280-K Sampling techniques, such as Point sampling, bilinear sampling, trilinear sampling and anisotropic filtering support. In one embodiment, the texture samplers 280-A to 280-K that are implemented using a shader language to match the sampler state of the shaders 220 to 270 Improving the speed of operation of texture sampling as compared to a texture sampler implemented using a generic software based texture sampling technique.

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.In one embodiment, the texture samplers 280-A to 280-K used to apply the texture samples to the vertex shader 220 , the Hull shader 230 , the domain shader, the geometry shader 260 and the pixel shader 270 provide. In one embodiment, the texture samplers 280-A to 280-K that are implemented using the shader language while generating the vertex shader 220 or compiled during generation of the sampler state object. In one embodiment, the texture samplers 280-A . 280-B and 280-K from the vertex shader 220 be retrieved while the vertex shader 220 is called. In one embodiment, the texture samplers 280-A and 280-B from the Hull shader 230 be retrieved while the Hull shader 230 is called. In one embodiment, the texture sampler 280-B from the domain shader 250 be retrieved while the domain shader 250 is called. In one embodiment, texture samplers 280-B and 280-K from the geometry shader 260 be retrieved while the geometry shader 260 is called, and the texture sampler 280-B and 280-K can from the pixel shader 270 be retrieved while the pixel shader 270 is called.

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.Such an approach may allow a complex texture sampling function to be implemented as part of a software code that uses a sampler state of the shaders 220 . 230 . 250 . 260 and 270 can match or with an ortho gonal sampler state can match. In one embodiment, the texture samplers 280 that are implemented using a shader language to match the sampler state of the shaders 220 . 230 . 250 . 260 and or 270 Improve the speed of operation by a factor of N compared to a texture sampler, which is implemented by means of a generic software based Texturesampling technique. In one embodiment, the texture samplers 280 , which are implemented using the shader language, improve performance by N = KX as compared to a generic software based texture sampling technique, where the performance of the generic software based texture sampling is X and K is a positive integer value.

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.A flowchart 300 that the texture sampler 280 represented by a higher shader language is in 3 illustrated. At block 310 can the texture sampler 280-A to 280-K generated using a shader language. In one embodiment, the texture samplers 280-A to 280-K using shader languages, such as Assembler, Cg, HLSL or GLSL. In one embodiment, the texture samplers 280-A to 280-K generated offline, for example, during the development of a driver module.

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.At block 320 You can use the shader samplers that are used to texture sampler 280-A to 280-K to be compiled to a sampler state object generation time. In another embodiment, the shader samplers may be generated upon request. In one embodiment, a specific sample operation may be generated on demand, for example, if the sample operation were needed for a draw command.

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.At block 330 can the texture sampler 280-A to 280-K be compiled into a target machine code using a higher shader compiler. In one embodiment, the texture samplers 280-A to 280-K be compiled into a target machine code by means of a target machine compiler. In one embodiment, the texture samplers 280-A . 280-B and 280-K Compile to a target machine using a higher vertex shader compiler. Similarly, one or more of the texture samplers 280-A to 280-K using a higher shader compiler of the shaders 230 to 270 be compiled into a target machine code.

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.At block 340 can the shaders 220 to 270 be called. In one embodiment, the shaders, such as. For example, the vertex shader 220 , the Hull shader 230 , the domain shader 250 , the geometry shader 260 and the pixel shader 270 , be called.

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.At block 360 can use one or more texture samplers 280-A to 280-K be retrieved from a shader. In one embodiment, the texture samplers 280-A . 280-B and 280-K in response to getting the vertex shader 220 perform a sampling operation and can generate texture samples. In one embodiment, the Hull shader 230 the texture sampler 280-A and 280-B retrieve the domain shader 250 can the texture sampler 280-B get the geometry shader 260 can the texture sampler 280-A and 280-K retrieve and the pixel shader 270 can the texture sampler 280-B and 280-K recall.

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.At block 380 can the texture sampler 280-A to 280-K Texture samples using the texture data stored in the texture buffers within the memory 190 are stored, generate. In one embodiment, the texture sampler 280-A perform a sampling operation to buffer texture samples using the texture data, for example, in one or more texture buffers 290-C to 290-F are stored to generate. In one embodiment, the texture sampler 280-B perform a sampling operation to texture samples using the texture data stored in the texture buffer 290-D are saved and can generate the texture samples to the pixel shader 270 provide.

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.At block 390 can use the texture samples provided by the texture samplers 280-A to 280-K were generated by the shaders 220 to 270 used to create a shader effect on the graphic elements. In one embodiment, the vertex shader 220 receive a single vertex value and create a shader effect on the vertex. In one embodiment, the geometry shader 260 receive entire primitives and can create a shader effect on the whole primitives. In one embodiment, the pixel shader 270 generate a shading effect on the pixels or points (or raster image).

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.An embodiment of a flowchart 400 that demonstrates the generation and use of texture samplers that are implemented using a higher shader language is in 4 illustrated. In one embodiment, the flowchart illustrates 400 three stages - one stage 401 , a step 411 and a step 481 , In one embodiment, stage 401 represent an offline phase, the stage 411 can represent a preparation phase and the stage 481 can represent a rendering phase.

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.In one embodiment, the stage 401 a texture sampler generation block 410 include. In one embodiment, the texture sampler generation block may 410 refer to the generation of texture samplers such. B. the texture sampler 280-A to 280-K that can be generated offline and using a higher shader language such. Cg, HLSL or GLSL, as in block 310 described.

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.In one embodiment, the stage 411 Sampler state block 415 , Create-Sampler-Block 420 , Shader compiler block 445 , Compile-Sampler-Block 450 and Sampler Shader Binaries (SS-Bin) block 470 include. In one embodiment, the sampler state block 415 Represent input data values. In one embodiment, the input data values of the block 415 determine the sampling operation of the block's texture sample 410 is carried out. block 420 represents a Create Texture Sampler block that is responsive to the receipt of the texture sampler code from the block 410 and the input data values from the block 415 generates a texture sampler, such. B. the 280-A to 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.block 445 represents a shader compiler block that can catch the texture sampler's shading language at an abstraction level and compile the texture sampler code into another level of abstraction. In one embodiment, the shader compiler block 445 the texture sampler code from the Create Texture Sampler block 420 and can initiate a compilation of the texture sampler code, as in compile-sampler-shader-block 450 shown.

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.In one embodiment, the texture sampler code may be at block 420 using a higher shader language and the compile sampler shader block 450 can compile the texture-sampler code and create an intermediate code, such as Assembler language code. In one embodiment, the compile-sampler-shader block 450 further a machine-specific shader compiler, such. For example, a graphics shader compiler or a central processing unit (CPU) shader compiler may be able to compile the intermediate code in assembler language into machine-specific code. In one embodiment, a graphics processor or central processor may assist in executing the machine-specific code.

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.block 470 represents a sampler shader binary file (SS-BIN) generated as a result of compilation performed by the block 450 was performed, can be generated. In one embodiment, the sampler shader binary file (SS-BIN) may be used by the shaders in the rendering phase.

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.In one embodiment, the stage 481 represent a rendering phase in which the graphic elements such. The corner points or the entire primitives are rendered on a display device after the shaders provide a shading effect to the graphics elements. In one embodiment, the stage 481 a shader call block 485 , an execute shader block 490 and a fetch SS-BIN block 495 include. In one embodiment, the shader call block 485 Call shaders, such as For example, the vertex shader 220 , the Hull shader 230 , the domain shader 250 , the geometry shader 260 and the pixel shader 270 , as with block 340 shown.

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.In one embodiment, the execute shader block 490 make sure that the shader binaries 220 to 270 be executed. In one embodiment, a graphics processor may execute shader binaries 220 to 270 support. In one embodiment, the fetch SS-BIN block 495 the binaries of one or more texture samplers 280-A to 280-K recall. In one embodiment, when the block 490 the vertex shader 220 can perform the block 495 the SS-BIN the texture sampler 280-A . 280-B and 280-K recall. In one embodiment, when the block 490 the Hull shader 230 can perform the block 495 the SS-BIN the texture sampler 280-A and 280-B recall. In one embodiment, when the block 490 the domain shader 250 can perform the block 495 the SS-BIN of the texture sampler 280-B recall. In one embodiment, when the block 490 the geometry shader 260 can perform the block 495 the SS-BIN the texture sampler 280-A and 280-K recall. In one embodiment, when the block 490 the pixel shader 150 performs, the block can 495 the SS-BIN of texture samplers 280-B and 280-K recall.

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.In one embodiment, the texture samplers 280-A to 280-K in response to receiving a poll from the shaders 220 to 270 perform a texture-sampling operation on the texture data and can generate texture samples. In one embodiment, the texture samples from the shaders may be used to create a shader effect on the graphics elements.

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.With reference to 5 can be a computer system 500 a universal processor 502 including a single instruction multiple data (SIMD) processor and a graphics processor unit (GPU). 505 , The processor 502 In one embodiment, in addition to performing various other tasks, it may perform contrast enhancement operations or store a sequence of instructions to enhance contrast tion operations in machine-readable storage medium 525 provide. However, the sequence of commands may also be in the memory 520 or stored in any other suitable storage medium. In one embodiment, the graphics application program interface (GPI) may be used. 510 from the processor 502 or the GPU 505 get supported.

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.While a single graphics processor GPU 505 in 5 is shown, the processor 502 in some embodiments, to perform contrast enhancement operations, as another example. The processor 502 that the computer system 500 can be one or more processor cores with logic 530 are coupled. The logic 530 can with one or more input / output (I / O input / output) devices 560 be coupled to the computer system 500 can provide an interface. The logic 530 For example, in one embodiment, it could be chipset logic. The logic 530 is with the store 520 coupled, which may be any type of memory, including optical, magnetic or semiconductor memory. The graphics processor 505 is through a frame buffer with a display 540 coupled.

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.In one embodiment, the graphics application program interface (GPI) may be used. 510 within the processor 502 be provided. In another embodiment, the graphics application program interface (GPI) may be used. 510 however within the GPU 505 be provided (shown by dotted box). In one embodiment, the GPI 510 support a 3D pipeline and can implement texture sampler using higher shader language. In one embodiment, the GPI 510 the texture sampler 280-A to 280-K implement offline and using higher shader languages and the thus implemented Textursamplern 280-A to 280-K they can be compiled based on the target machine. In one embodiment, the texture samplers 280-A to 280-K from one or more shaders 220 to 270 be retrieved to obtain texture samples. In one embodiment, the shaders 220 to 270 the texture samples taken by the texture samplers 280-A to 280-K used to create a shading effect on the graphic elements.

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.The Graphic processing techniques described herein can be used in various hardware architectures are implemented. For example can graphic functionality be integrated within a chipset. Alternatively, a separate graphics processor can be used. As yet another embodiment can the graphics functions implemented by a universal processor be inclusive a multi-core processor or as a set of software instructions, which are stored in a machine-readable medium.

Claims (26)

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.A method of performing texture sampling comprising: To implement a texture sampler using a shader language, generating a Texture sampler binary code by compiling the texture sampler into a target machine based on input values provided to the texture sampler, Recall of the texture sampler binary code from at least a first shader of a plurality of shaders, during the first shader is called, and Generate shading effects on graphic elements by means of a first set of samples generated by the texture sampler while the texture sampler is generated by the first shader and the second shader is retrieved, the Graphic elements include vertices of a line and a triangle. 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.The method of claim 1 further comprises Recall of the texture sampler binary code of at least a second shader of the plurality of shaders, during the second shader is called, and Generate shading effects on graphic elements by means of a second set of samples, the generated by the texture sampler, while the texture sampler of the second shader is called. Verfahren nach Anspruch 1, wobei ein Implementieren des Textursamplers mittels einer Shader-Sprache in einer Offline-Phase vor einer Vorbereitungsphase durchgeführt wird.The method of claim 1, wherein implementing of the texture sampler using a shader language in an offline phase before a preparation phase is carried out. 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.The method of claim 3 further comprising generating of the texture sampler, based on texture sampler code, offline is implemented, and the sampler state input values in one Preparation phase, where the sampler state input values are the sampling operations determined by the texture sampler. 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.The method of claim 4, wherein compiling of the texture sampler into a target machine, an intermediate language code to generate from the texture sampler that implements in the shader language is, by means of a shader compiler, and a code at the machine level from the intermediate language using a machine-specific shader compiler to generate. Verfahren nach Anspruch 5, wobei die Shader-Sprache eine höhere Sprache ist und die Zwischensprache eine Sprache auf Assembler-Ebene ist.The method of claim 5, wherein the shader language a higher one Language is and the intermediate language is a language on assembler level. 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.The method of claim 7 further comprising retrieving of the texture sampler binary code of the first shader while the first shader is executed in a rendering phase. 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.The method of claim 1 further comprising retrieving of the texture sampler binary code of the second shader while the second shader is executed in a rendering phase. 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.The method of claim 1 further comprising linking a first texture sampler with a first shader and the second shader, wherein the first texture sampler samples for the first shader and the to generate second shader. 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.A machine-readable storage medium, comprising a Variety of commands in response to their execution in result in a processor comprising: Implement a Texture sampler using a shader language, Generate one Texture sampler binary code by compiling the texture sampler into a target machine based on sampler state and sampler operation, Recall of the texture sampler binary code from a first shader while the first shader is called, and Generate shading effects on graphic elements by means of a first set of samples generated by the texture sampler while the texture sampler is generated by The first shader is called, with the graphic elements vertices include a line and a triangle. 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.Machine-readable storage medium 10 further comprises retrieving the texture sampler binary code from a second shader while invoking the second shader, and generating shading effects on graphics elements using a second set of samples generated by the texture sampler while retrieving the texture sampler from the second shader. Maschinenlesbares Speichermedium nach Anspruch 11, wobei ein Implementieren des Textursamplers mittels einer Shader-Sprache in einer Offline-Phase vor einer Vorbereitungsphase durchgeführt wird.Machine-readable storage medium according to claim 11, wherein implementing the texture sampler using a shader language in an offline phase before a preparation phase is carried out. 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.Machine-readable storage medium according to claim 12 further comprises generating the texture sampler based on texture sampler code, implemented offline, and the sampler state input values in a preparation phase, wherein the sampler state input values the sampling operations determined by the texture sampler. 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.Machine-readable storage medium according to claim 13, wherein compiling the texture sampler into a target machine comprises one Intermediate language code from the texture sampler, which implements in the shader language is to generate using a shader compiler, and one Code at the machine level of the intermediate language by means of a machine-specific Generate shader compilers. Maschinenlesbares Speichermedium nach Anspruch 14, wobei die Shader-Sprache eine höhere Sprache ist und die Zwischensprache eine Sprache auf Assembler-Ebene ist.Machine-readable storage medium according to claim 14, where the shader language is a higher language is and the intermediate language is a language at assembler level. 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.Machine-readable storage medium according to claim 10 further comprises retrieving the texture sampler binary code from the first shader, while the first shader is executed in a rendering phase. 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.Machine-readable storage medium according to claim 10 further includes fetching the texture sampler binary code from the second shader while the second shader is executed in a rendering phase. 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.Machine-readable storage medium according to claim 10 further includes linking a first texture sampler and a second texture sampler with a first shader and the second texture sampler and a third one Texture sampler with the second shader. 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.A system, comprising: a processor, wherein the processor is to support a plurality of graphics applications and one or more programmable graphics application interfaces, a graphics processor, and a memory coupled to the processor and the graphics processor, the programmable graphics application interface to include one or more texture samplers implemented using a shader language, wherein a texture sampler binary code is generated by compiling the texture sampler into a target machine based on sampler state and sampler operation, wherein the texture sampler binary code is retrieved from a first shader while the first Shader is called, and wherein reddening effects on graphic elements are generated by means of a first set of samples generated by the texture sampler, while the texture sampler is retrieved from the first shader, the graphic elements comprising vertices of a line and a triangle. 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.The system of claim 19, wherein the memory is a or more buffers to store texture data, wherein the one or more texture sampler data values of one or more Buffs catching up and creating texture samples. System nach Anspruch 19, wobei der Textursampler, der mittels einer Shader-Sprache implementiert ist, in einer Offline-Phase vor einer Vorbereitungsphase durchgeführt wird.The system of claim 19, wherein the texture sampler, which is implemented by means of a shader language, in an offline phase before a preparation phase is carried out. 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.The system of claim 21, wherein the texture sampler based on texture sampler code implemented offline and the sampler state input values is generated in a preparation phase, wherein the sampler state input values determine the sampling operations performed by the texture sampler. 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.The system of claim 22, wherein compiling the Includes a texture sampler in a target machine, an intermediate language code from the texture sampler implemented in the shader language by means of a Generate shader compilers, and a code at the machine level from the intermediate language using a machine-specific shader compiler to generate, where the shader language is a higher language is and the intermediate language is a language at assembler level. 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.The system of claim 18 further comprises Recall of the texture sampler binary code from the first shader while the first shader is executed in a rendering phase, and Recall of the texture sampler binary code from the second shader while the second shader is executed in a rendering phase. 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.The system of claim 19 further comprising linking one first texture sampler and a second texture sampler with the first Shaders, and the first texture sampler and a third texture sampler with the second shader, where the first texture sampler samples for the first Shader and the second shader should generate, with the second texture sampler Samples for generate the first shader and the third texture sampler samples for the to generate second shader. 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.The system of claim 19, wherein the graphics processor to support the programmable graphics application interface, in which the programmable graphics application interface a programmable Graphics pipeline should include, with the programmable graphics pipeline Continue with a variety of shaders and one or more texture samplers includes that are implemented using a shader language, in which a texture sampler binary code of one or more texture samplers by compiling the one or more the more texture sampler into a target machine, based on input values, which are provided to one or more texture samplers, is generated wherein the texture sampler binary code of at least one of Variety of shaders is retrieved while the at least one of the Variety of shaders is called, and the one or the other The more texture sampler should generate texture samples while the one or more texture samplers of the at least one of the plurality retrieved from shaders, wherein the at least one of the plurality of texture samplers to use the texture samples for redness effects Generate graphic elements, where the graphic elements vertices a line and a triangle and a point.
DE102010025310A 2009-06-29 2010-06-28 texture sampling Withdrawn DE102010025310A1 (en)

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 (en) 2011-02-03

Family

ID=42334694

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102010025310A Withdrawn DE102010025310A1 (en) 2009-06-29 2010-06-28 texture sampling

Country Status (6)

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

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
JP5829684B2 (en) * 2011-04-28 2015-12-09 株式会社ディジタルメディアプロフェッショナル Heterogeneous graphics processor and configuration method thereof
US10559123B2 (en) 2012-04-04 2020-02-11 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
EP3167361A1 (en) * 2014-07-10 2017-05-17 INTEL Corporation Method and apparatus for updating a shader program based on current state
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 (en) * 2017-11-14 2021-06-04 创新先进技术有限公司 Texture synthesis method, device and equipment
CN108648252A (en) * 2018-05-17 2018-10-12 成都明镜视觉科技有限公司 A kind of skeleton cartoon compatibility processing method
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 (en) * 2018-11-29 2023-06-09 武汉凌久微电子有限公司 Method and device for realizing OpenGL cumulative operation

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
US20070091088A1 (en) * 2005-10-14 2007-04-26 Via Technologies, Inc. System and method for managing the computation of graphics shading operations
CN1928918B (en) * 2005-10-14 2012-10-10 威盛电子股份有限公司 Graphics processing apparatus and method for performing shading operations therein
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
CN101937556B (en) 2013-09-18
CN103489213B (en) 2016-08-17
GB2471926B (en) 2011-12-28
CN101937556A (en) 2011-01-05
CN103489213A (en) 2014-01-01
RU2459260C2 (en) 2012-08-20
US20100328309A1 (en) 2010-12-30
GB201007971D0 (en) 2010-06-30
GB2471926A (en) 2011-01-19
RU2010126453A (en) 2012-01-10
TW201126450A (en) 2011-08-01
TWI443599B (en) 2014-07-01
US8289341B2 (en) 2012-10-16

Similar Documents

Publication Publication Date Title
DE102010025310A1 (en) texture sampling
DE102008026431B4 (en) Extrapolation of non-resident mipmap data using resident mipmap data
DE102020115026A1 (en) Systems and methods for the sound mapping of high dynamic range images for high quality deep learning based processing
US9177351B2 (en) Multi-primitive graphics rendering pipeline
KR101732288B1 (en) Sprite graphics rendering system
DE102019102279A1 (en) Generation of synthetic images for training a neuronal network model
DE102018113845A1 (en) Systems and methods for training neural networks with sparse data
DE112017001703T5 (en) Method and apparatus for more efficiently ray tracing instantiated geometry
DE102019135639A1 (en) Real-time ray tracing (RTRT) based adaptive multi-frequency shading (AMFS)
DE102016122297A1 (en) Multi-pass rendering in a screen space pipeline
DE102013020613A1 (en) Bypass pixel shading for low power graphic imaging
DE112017003234T5 (en) Reduce memory access latencies during beam traversal
DE102020107080A1 (en) Graphics systems and methods for accelerating synchronization by means of fine-grain dependency checking and planning optimizations based on available shared storage space
DE102020121814A1 (en) Apparatus and method for using pairs of triangles and shared transform circuits to improve ray tracing performance
CN103871019B (en) Method and apparatus for processing path image to promote rasterisation
DE112020000854T5 (en) THREAD GROUP PLANNING FOR GRAPHICS PROCESSING
DE102013222685A1 (en) System, method and computer program product for scanning a hierarchical depth map
KR100823373B1 (en) Method and mechanism for programmable filtering of texture map data in 3d graphics subsystems
DE102019132001A1 (en) DEVICE AND METHOD FOR A HIERARCHICAL BEAMTRACER
DE112017001845T5 (en) Beam traversing with reduced accuracy with reuse of layers
DE102017109472A1 (en) STEREO MULTIPLE PROJECTION IMPLEMENTED BY USING A GRAPHIC PROCESSING PIPELINE
DE102020108526A1 (en) ADAPTIVE PIXEL SCAN ORDER FOR DENSE RENDERING
US10192348B2 (en) Method and apparatus for processing texture
DE112017001628T5 (en) Method and apparatus for generating sampling patterns for a raytracing architecture
DE102019120922A1 (en) DEVICE AND METHOD FOR MULTI-FREQUENCY VERTEX SHADING BACKGROUND

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