Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
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 insicheren Kontexten (HTTPS) in einigen oder allenunterstützenden Browsern verfügbar.
Hinweis: Diese Funktion ist inWeb Workers verfügbar.
DiecreateSampler()-Methode desGPUDevice-Interfaces erzeugt einGPUSampler, das kontrolliert, wie Shader Textur-Ressourcendaten transformieren und filtern.
In diesem Artikel
Syntax
createSampler()createSampler(descriptor)Parameter
descriptorOptionalEin Objekt, das die folgenden Eigenschaften enthält:
addressModeUOptionalEin 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".addressModeVOptionalEin 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.addressModeWOptionalEin 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.compareOptionalWenn 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.
labelOptionalEin String, der eine Bezeichnung bereitstellt, die verwendet werden kann, um das Objekt zu identifizieren, zum Beispiel in
GPUError-Meldungen oder Konsolenwarnungen.lodMinClampOptionalEine Zahl, die das minimale Detaillevel angibt, das intern verwendet wird, wenn eine Textur abgetastet wird. Wenn weggelassen, ist der Standardwert für
lodMinClamp0.lodMaxClampOptionalEine Zahl, die das maximale Detaillevel angibt, das intern verwendet wird, wenn eine Textur abgetastet wird. Wenn weggelassen, ist der Standardwert für
lodMaxClamp32.maxAnisotropyOptionalGibt 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.magFilterOptionalEin 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.minFilterOptionalEin 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.mipmapFilterOptionalEin enumerierter Wert, der das Verhalten beim Abtasten zwischen Mipmap-Ebenen angibt. Mögliche und Standardwerte sind die gleichen wie für
magFilter.
Rückgabewert
EineGPUSampler-Objektinstanz.
Validierung
Die folgenden Kriterien müssen erfüllt sein, wenncreateSampler() aufgerufen wird, andernfalls wird einGPUValidationError erzeugt und ein ungültigesGPUSampler-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 einGPUSampler, das trilineares Filtern durchführt und Texturkoordinaten wiederholt:
// …const sampler = device.createSampler({ addressModeU: "repeat", addressModeV: "repeat", magFilter: "linear", minFilter: "linear", mipmapFilter: "linear",});Das WebGPU-BeispielShadow Mapping sample verwendet Vergleichssampler, um aus einer Tiefentextur Schatten zu rendern.
Spezifikationen
| Specification |
|---|
| WebGPU> # dom-gpudevice-createsampler> |
Browser-Kompatibilität
Siehe auch
- DieWebGPU API