GPUDevice: createSampler() Methode

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 erstellt einen GPUSampler, der steuert, wie Shader Texturressourcendaten transformieren und filtern.

Syntax

js
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 Sample-Footprint-Breite über die Breite der Textur hinausgeht. Mögliche Werte sind:

  • "clamp-to-edge": Die Texturkoordinaten werden zwischen 0,0 und 1,0 eingeschränkt.
  • "repeat": Die Texturkoordinaten wickeln sich auf die andere Seite der Textur.
  • "mirror-repeat": Die Texturkoordinaten wickeln sich auf die andere Seite der Textur, jedoch wird die Textur gespiegelt, wenn der ganzzahlige Teil der Koordinate ungerade ist.

Wenn weggelassen, ist addressModeU standardmäßig auf "clamp-to-edge" gesetzt.

addressModeV Optional

Ein enumerierter Wert, der das Verhalten des Samplers angibt, wenn die Sample-Footprint-Höhe ü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 Sample-Footprint-Tiefe ü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 sein. Mögliche (enumerierte) Werte sind:

  • "never": Vergleichstests bestehen niemals.
  • "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 werden implementierungsabhängig sein und können sich von den normalen Filterregeln unterscheiden.

label Optional

Ein String, der eine Bezeichnung bereitstellt, welche zur Identifizierung des Objekts verwendet werden kann, zum Beispiel in GPUError-Meldungen oder Konsolenwarnungen.

lodMinClamp Optional

Eine Zahl, die das minimale interne Detailniveau angibt, das beim Abtasten einer Textur verwendet wird. Wenn weggelassen, ist lodMinClamp standardmäßig auf 0 gesetzt.

lodMaxClamp Optional

Eine Zahl, die das maximale interne Detailniveau angibt, das beim Abtasten einer Textur verwendet wird. Wenn weggelassen, ist lodMaxClamp standardmäßig auf 32 gesetzt.

maxAnisotropy Optional

Gibt den maximalen Anisotropiewert an, der vom Sampler verwendet wird. Wenn weggelassen, ist maxAnisotropy standardmäßig auf 1 gesetzt.

Die meisten Implementierungen unterstützen maxAnisotropy-Werte in einem Bereich zwischen 1 und 16, inklusive. Der verwendete Wert wird auf den maximalen Wert begrenzt, den die zugrunde liegende Plattform unterstützt.

magFilter Optional

Ein enumerierter Wert, der das Abtastverhalten angibt, wenn die Sample-Footprint-Größe kleiner oder gleich einem Texel ist. Mögliche Werte sind:

  • "nearest": Gibt den Wert des Texels zurück, der den Texturkoordinaten am nächsten ist.
  • "linear": Wählt zwei Texel in jeder Dimension und gibt eine lineare Interpolation zwischen ihren Werten zurück.

Wenn weggelassen, ist magFilter standardmäßig auf "nearest" gesetzt.

Hinweis: Das float32-filterable Feature muss aktiviert sein, damit r32float-, rg32float- und rgba32float-format-GPUTextures filterbar sind.

minFilter Optional

Ein enumerierter Wert, der das Abtastverhalten angibt, wenn die Sample-Footprint-Größe 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 beim Aufruf von createSampler() erfüllt sein, sonst wird ein GPUValidationError generiert und ein ungültiges GPUSampler-Objekt zurückgegeben:

  • lodMinClamp ist größer oder gleich 0.
  • lodMaxClamp ist größer oder gleich lodMinClamp.
  • maxAnisotropy ist größer oder gleich 1.
  • Wenn maxAnisotropy größer als 1 ist, sind magFilter, minFilter und mipmapFilter "linear".

Beispiele

Der folgende Codeausschnitt erstellt einen GPUSampler, der trilineares Filtern durchführt und Texturkoordinaten wiederholt:

js
// …

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