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
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
| Specification |
|---|
| WebGPU> # dom-gpudevice-createsampler> |
Browser-Kompatibilität
Loading…
Siehe auch
- Die WebGPU API