GPUDevice: createSampler() Methode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
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 der GPUDevice
Schnittstelle 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 spezifiziert, wenn die Abtastfläche die Breite der Textur überschreitet. Mögliche Werte sind:
"clamp-to-edge"
: Die Texturkoordinaten werden auf den Bereich zwischen 0,0 und 1,0 begrenzt."repeat"
: Die Texturkoordinaten umwickeln auf die andere Seite der Textur."mirror-repeat"
: Die Texturkoordinaten umwickeln auf die andere Seite der Textur, aber die Textur wird gespiegelt, wenn der ganzzahlige Teil der Koordinate ungerade ist.
Wenn weggelassen, ist der Standardwert für
addressModeU
"clamp-to-edge"
. addressModeV
Optional-
Ein enumerierter Wert, der das Verhalten des Samplers spezifiziert, wenn die Abtastfläche die Höhe der Textur überschreitet. Mögliche und Standardwerte sind dieselben wie für
addressModeU
. addressModeW
Optional-
Ein enumerierter Wert, der das Verhalten des Samplers spezifiziert, wenn die Abtastfläche die Tiefe der Textur überschreitet. Mögliche und Standardwerte sind dieselben wie für
addressModeU
. compare
Optional-
Wenn angegeben, ist der Sampler ein Vergleichs-Sampler des angegebenen Typs. Mögliche (enumerierte) Werte sind:
"never"
: Vergleichstests schlagen immer fehl."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.
Vergleichs-Sampler können Filtern verwenden, aber die Abtastergebnisse werden implementierungsabhängig sein und können von den normalen Filterregeln abweichen.
label
Optional-
Ein String, der ein Label bereitstellt, das verwendet werden kann, um das Objekt zu identifizieren, zum Beispiel in
GPUError
Nachrichten oder Konsolenwarnungen. lodMinClamp
Optional-
Eine Zahl, die die minimale Detailebene spezifiziert, die intern beim Abtasten einer Textur verwendet wird. Wenn weggelassen, ist der Standardwert für
lodMinClamp
0. lodMaxClamp
Optional-
Eine Zahl, die die maximale Detailebene spezifiziert, die intern beim Abtasten einer Textur verwendet wird. Wenn weggelassen, ist der Standardwert für
lodMaxClamp
32. maxAnisotropy
Optional-
Spezifiziert den maximalen Wert für Anisotropie, der vom Sampler verwendet wird. Wenn weggelassen, beträgt der Standardwert für
maxAnisotropy
1.Die meisten Implementierungen unterstützen
maxAnisotropy
Werte in einem Bereich von 1 bis einschließlich 16. Der verwendete Wert wird auf den maximalen Wert, den die zugrunde liegende Plattform unterstützt, begrenzt. magFilter
Optional-
Ein enumerierter Wert, der das Abtastverhalten spezifiziert, wenn die Abtastfläche kleiner oder gleich einem Texel ist. Mögliche Werte sind:
"nearest"
: Gibt den Wert des Texels zurück, der den Texturkoordinaten am nächsten liegt."linear"
: Wählt zwei Texel in jeder Dimension und gibt eine lineare Interpolation zwischen ihren Werten zurück.
Wenn weggelassen, ist der Standardwert für
magFilter
"nearest"
.Hinweis: Das
float32-filterable
Feature muss aktiviert sein, damitr32float
-,rg32float
- undrgba32float
-format
GPUTexture
s filterbar sind. minFilter
Optional-
Ein enumerierter Wert, der das Abtastverhalten spezifiziert, wenn die Abtastfläche 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 Mip-Kartierungsebenen spezifiziert. Mögliche und Standardwerte sind die gleichen wie für
magFilter
.
Rückgabewert
Eine GPUSampler
Objektinstanz.
Validierung
Die folgenden Kriterien müssen erfüllt sein, wenn createSampler()
aufgerufen wird, andernfalls wird ein GPUValidationError
erzeugt und ein ungültiges GPUSampler
Objekt zurückgegeben:
lodMinClamp
ist gleich oder größer als 0.lodMaxClamp
ist gleich oder größer alslodMinClamp
.maxAnisotropy
ist gleich oder größer als 1.- Wenn
maxAnisotropy
größer als 1 ist, sindmagFilter
,minFilter
undmipmapFilter
"linear"
.
Beispiele
Das folgende Beispiel 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",
});
Die WebGPU-Beispiele Schattenmappierung Beispiel verwenden Vergleichs-Sampler, um aus einer Tiefentextur zu sampeln, um Schatten zu rendern.
Spezifikationen
Specification |
---|
WebGPU # dom-gpudevice-createsampler |
Browser-Kompatibilität
Siehe auch
- Die WebGPU API