GPUDevice: createSampler() Methode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die createSampler()
-Methode des GPUDevice
-Interfaces erstellt einen GPUSampler
, der steuert, wie Shader Texturressourcendaten transformieren und filtern.
Syntax
createSampler()
createSampler(descriptor)
Parameter
descriptor
Optional-
Ein Objekt, das die folgenden Eigenschaften enthält:
addressModeU
Optional-
Ein enumerierter Wert, der das Verhalten des Samplers angibt, wenn die Sample-Footprint-Breite über die Breite der Textur hinausgeht. Mögliche Werte sind:
"clamp-to-edge"
: Die Texturkoordinaten werden zwischen 0,0 und 1,0 eingeschränkt."repeat"
: Die Texturkoordinaten wickeln sich auf die andere Seite der Textur."mirror-repeat"
: Die Texturkoordinaten wickeln sich auf die andere Seite der Textur, jedoch wird die Textur gespiegelt, wenn der ganzzahlige Teil der Koordinate ungerade ist.
Wenn weggelassen, ist
addressModeU
standardmäßig auf"clamp-to-edge"
gesetzt. addressModeV
Optional-
Ein enumerierter Wert, der das Verhalten des Samplers angibt, wenn die Sample-Footprint-Höhe über die Höhe der Textur hinausgeht. Mögliche und Standardwerte sind die gleichen wie für
addressModeU
. addressModeW
Optional-
Ein enumerierter Wert, der das Verhalten des Samplers angibt, wenn die Sample-Footprint-Tiefe über die Tiefe der Textur hinausgeht. Mögliche und Standardwerte sind die gleichen wie für
addressModeU
. compare
Optional-
Wenn angegeben, wird der Sampler ein Vergleichssampler des angegebenen Typs sein. Mögliche (enumerierte) Werte sind:
"never"
: Vergleichstests bestehen niemals."less"
: Ein bereitgestellter Wert besteht den Vergleichstest, wenn er kleiner als der abgetastete Wert ist."equal"
: Ein bereitgestellter Wert besteht den Vergleichstest, wenn er gleich dem abgetasteten Wert ist."less-equal"
: Ein bereitgestellter Wert besteht den Vergleichstest, wenn er kleiner oder gleich dem abgetasteten Wert ist."greater"
: Ein bereitgestellter Wert besteht den Vergleichstest, wenn er größer als der abgetastete Wert ist."not-equal"
: Ein bereitgestellter Wert besteht den Vergleichstest, wenn er nicht gleich dem abgetasteten Wert ist."greater-equal"
: Ein bereitgestellter Wert besteht den Vergleichstest, wenn er größer oder gleich dem abgetasteten Wert ist."always"
: Vergleichstests bestehen immer.
Vergleichssampler können Filtern verwenden, aber die Abtastergebnisse werden implementierungsabhängig sein und können sich von den normalen Filterregeln unterscheiden.
label
Optional-
Ein String, der eine Bezeichnung bereitstellt, welche zur Identifizierung des Objekts verwendet werden kann, zum Beispiel in
GPUError
-Meldungen oder Konsolenwarnungen. lodMinClamp
Optional-
Eine Zahl, die das minimale interne Detailniveau angibt, das beim Abtasten einer Textur verwendet wird. Wenn weggelassen, ist
lodMinClamp
standardmäßig auf 0 gesetzt. lodMaxClamp
Optional-
Eine Zahl, die das maximale interne Detailniveau angibt, das beim Abtasten einer Textur verwendet wird. Wenn weggelassen, ist
lodMaxClamp
standardmäßig auf 32 gesetzt. maxAnisotropy
Optional-
Gibt den maximalen Anisotropiewert an, der vom Sampler verwendet wird. Wenn weggelassen, ist
maxAnisotropy
standardmäßig auf 1 gesetzt.Die meisten Implementierungen unterstützen
maxAnisotropy
-Werte in einem Bereich zwischen 1 und 16, inklusive. Der verwendete Wert wird auf den maximalen Wert begrenzt, den die zugrunde liegende Plattform unterstützt. magFilter
Optional-
Ein enumerierter Wert, der das Abtastverhalten angibt, wenn die Sample-Footprint-Größe kleiner oder gleich einem Texel ist. Mögliche Werte sind:
"nearest"
: Gibt den Wert des Texels zurück, der den Texturkoordinaten am nächsten ist."linear"
: Wählt zwei Texel in jeder Dimension und gibt eine lineare Interpolation zwischen ihren Werten zurück.
Wenn weggelassen, ist
magFilter
standardmäßig auf"nearest"
gesetzt.Hinweis: Das
float32-filterable
Feature muss aktiviert sein, damitr32float
-,rg32float
- undrgba32float
-format
-GPUTexture
s filterbar sind. minFilter
Optional-
Ein enumerierter Wert, der das Abtastverhalten angibt, wenn die Sample-Footprint-Größe größer als ein Texel ist. Mögliche und Standardwerte sind die gleichen wie für
magFilter
. mipmapFilter
Optional-
Ein enumerierter Wert, der das Verhalten beim Abtasten zwischen Mipmap-Ebenen angibt. Mögliche und Standardwerte sind die gleichen wie für
magFilter
.
Rückgabewert
Eine GPUSampler
-Objektinstanz.
Validierung
Die folgenden Kriterien müssen beim Aufruf von createSampler()
erfüllt sein, sonst wird ein GPUValidationError
generiert und ein ungültiges GPUSampler
-Objekt zurückgegeben:
lodMinClamp
ist größer oder gleich 0.lodMaxClamp
ist größer oder gleichlodMinClamp
.maxAnisotropy
ist größer oder gleich 1.- Wenn
maxAnisotropy
größer als 1 ist, sindmagFilter
,minFilter
undmipmapFilter
"linear"
.
Beispiele
Der folgende Codeausschnitt erstellt einen GPUSampler
, der trilineares Filtern durchführt und Texturkoordinaten wiederholt:
// …
const sampler = device.createSampler({
addressModeU: "repeat",
addressModeV: "repeat",
magFilter: "linear",
minFilter: "linear",
mipmapFilter: "linear",
});
Das WebGPU-Beispiel Shadow Mapping sample verwendet Vergleichssampler, um aus einer Tiefentextur Schatten zu rendern.
Spezifikationen
Specification |
---|
WebGPU # dom-gpudevice-createsampler |
Browser-Kompatibilität
Siehe auch
- Die WebGPU API