GPUDevice: Methode createSampler()
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 erzeugt ein GPUSampler
, das kontrolliert, wie Shader Textur-Ressourcendaten 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 Breite des Proben-Fußabdrucks über die Breite der Textur hinausgeht. Mögliche Werte sind:
"clamp-to-edge"
: Die Texturkoordinaten werden zwischen 0,0 und 1,0 inklusive begrenzt."repeat"
: Die Texturkoordinaten umschließen die andere Seite der Textur."mirror-repeat"
: Die Texturkoordinaten umschließen 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 angibt, wenn die Höhe des Proben-Fußabdrucks ü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 Tiefe des Proben-Fußabdrucks ü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. Mögliche (enumerierte) Werte sind:
"never"
: Vergleichstests schlagen nie 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.
Vergleichssampler können Filtern verwenden, aber die Abtastergebnisse sind implementierungsabhängig und können von den normalen Filterregeln abweichen.
label
Optional-
Ein String, der eine Bezeichnung bereitstellt, die verwendet werden kann, um das Objekt zu identifizieren, zum Beispiel in
GPUError
-Meldungen oder Konsolenwarnungen. lodMinClamp
Optional-
Eine Zahl, die das minimale Detaillevel angibt, das intern verwendet wird, wenn eine Textur abgetastet wird. Wenn weggelassen, ist der Standardwert für
lodMinClamp
0. lodMaxClamp
Optional-
Eine Zahl, die das maximale Detaillevel angibt, das intern verwendet wird, wenn eine Textur abgetastet wird. Wenn weggelassen, ist der Standardwert für
lodMaxClamp
32. maxAnisotropy
Optional-
Gibt den maximalen Anisotropie-Wert an, der durch den Sampler begrenzt wird. Wenn weggelassen, ist der Standardwert für
maxAnisotropy
1.Die meisten Implementierungen unterstützen
maxAnisotropy
-Werte in einem Bereich zwischen 1 und 16 inklusive. Der benutzte Wert wird auf den maximalen Wert begrenzt, den die zugrunde liegende Plattform unterstützt. magFilter
Optional-
Ein enumerierter Wert, der das Abtastverhalten angibt, wenn der Proben-Fußabdruck 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 Texels in jeder Dimension und gibt eine lineare Interpolation zwischen deren 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 angibt, wenn der Proben-Fußabdruck 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 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 Snippet erzeugt ein GPUSampler
, das 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