GPUDevice: Methode createSampler()
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more support for this feature? Tell us why.
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
descriptorOptional-
Ein Objekt, das die folgenden Eigenschaften enthält:
addressModeUOptional-
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". addressModeVOptional-
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. addressModeWOptional-
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. compareOptional-
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.
labelOptional-
Ein String, der eine Bezeichnung bereitstellt, die verwendet werden kann, um das Objekt zu identifizieren, zum Beispiel in
GPUError-Meldungen oder Konsolenwarnungen. lodMinClampOptional-
Eine Zahl, die das minimale Detaillevel angibt, das intern verwendet wird, wenn eine Textur abgetastet wird. Wenn weggelassen, ist der Standardwert für
lodMinClamp0. lodMaxClampOptional-
Eine Zahl, die das maximale Detaillevel angibt, das intern verwendet wird, wenn eine Textur abgetastet wird. Wenn weggelassen, ist der Standardwert für
lodMaxClamp32. maxAnisotropyOptional-
Gibt den maximalen Anisotropie-Wert an, der durch den Sampler begrenzt wird. Wenn weggelassen, ist der Standardwert für
maxAnisotropy1.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. magFilterOptional-
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-filterableFeature muss aktiviert sein, damitr32float-,rg32float- undrgba32float-formatGPUTextures filterbar sind. minFilterOptional-
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. mipmapFilterOptional-
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:
lodMinClampist gleich oder größer als 0.lodMaxClampist gleich oder größer alslodMinClamp.maxAnisotropyist gleich oder größer als 1.- Wenn
maxAnisotropygrößer als 1 ist, sindmagFilter,minFilterundmipmapFilter"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
| Spezifikation |
|---|
| WebGPU> # dom-gpudevice-createsampler> |
Browser-Kompatibilität
Siehe auch
- Die WebGPU API