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.