GPUDevice: createSampler()-Methode

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig, bevor Sie diese produktiv verwenden.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Hinweis: Dieses Feature ist verfügbar in Web Workers.

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 beschreibt, wenn die Sample-Footprint-Breite die Breite der Textur überschreitet. Mögliche Werte sind:

  • "clamp-to-edge": Die Texturkoordinaten werden zwischen 0,0 und 1,0 eingeschlossen begrenzt.
  • "repeat": Die Texturkoordinaten werden auf die andere Seite der Textur gewickelt.
  • "mirror-repeat": Die Texturkoordinaten werden auf die andere Seite der Textur gewickelt, aber die Textur wird gespiegelt, wenn der ganzzahlige Teil der Koordinate ungerade ist.

Wenn nicht angegeben, ist der Standardwert für addressModeU "clamp-to-edge".

addressModeV Optional

Ein enumerierter Wert, der das Verhalten des Samplers beschreibt, wenn die Sample-Footprint-Höhe die Höhe der Textur überschreitet. Mögliche und Standardwerte sind die gleichen wie für addressModeU.

addressModeW Optional

Ein enumerierter Wert, der das Verhalten des Samplers beschreibt, wenn die Sample-Footprint-Tiefe die Tiefe der Textur überschreitet. Mögliche und Standardwerte sind die gleichen wie für addressModeU.

compare Optional

Wenn angegeben, wird der Sampler ein Vergleichs-Sampler des angegebenen Typs sein. Mögliche (enumerierte) Werte sind:

  • "never": Vergleichstests bestehen nie.
  • "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.

Vergleichs-Sampler können Filterung verwenden, aber die Abtastergebnisse werden implementierungsabhängig sein und möglicherweise von den normalen Filterungsregeln abweichen.

label Optional

Ein String, der ein Label bereitstellt, mit dem das Objekt identifiziert werden kann, beispielsweise in GPUError-Meldungen oder Konsolenwarnungen.

lodMinClamp Optional

Eine Zahl, die das minimale Detailniveau angibt, das intern beim Abtasten einer Textur verwendet wird. Wenn nicht angegeben, ist der Standardwert für lodMinClamp 0.

lodMaxClamp Optional

Eine Zahl, die das maximale Detailniveau angibt, das intern beim Abtasten einer Textur verwendet wird. Wenn nicht angegeben, ist der Standardwert für lodMaxClamp 32.

maxAnisotropy Optional

Gibt die maximale Anisotropie-Wertbegrenzung an, die vom Sampler verwendet wird. Wenn nicht angegeben, ist der Standardwert für maxAnisotropy 1.

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

magFilter Optional

Ein enumerierter Wert, der das Abtastverhalten beschreibt, wenn der Sample-Footprint 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 aus und gibt eine lineare Interpolation zwischen ihren Werten zurück.

Wenn nicht angegeben, ist der Standardwert für magFilter "nearest".

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 beschreibt, wenn der Sample-Footprint 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 beschreibt. 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 als lodMinClamp.
  • maxAnisotropy ist gleich oder größer als 1.
  • Wenn maxAnisotropy größer als 1 ist, sind magFilter, minFilter und mipmapFilter "linear".

Beispiele

Der folgende Codeausschnitt erstellt einen GPUSampler, der trilineare Filterung durchführt und Texturkoordinaten wiederholt:

js
// ...

const sampler = device.createSampler({
  addressModeU: "repeat",
  addressModeV: "repeat",
  magFilter: "linear",
  minFilter: "linear",
  mipmapFilter: "linear",
});

Die WebGPU-Beispiele Shadow Mapping sample verwenden Vergleichs-Sampler, um aus einer Tiefentextur Schatten zu rendern.

Spezifikationen

Specification
WebGPU
# dom-gpudevice-createsampler

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch