GPUDevice: createSampler() 方法
注意:此功能在 Web Workers 中可用。
createSampler() 方法是 GPUDevice 介面的一部分,用於建立一個 GPUSampler 物件,該物件控制著著色器如何轉換和過濾紋理資源資料。
語法
createSampler()
createSampler(descriptor)
引數
descriptor可選-
包含以下屬性的物件:
addressModeU可選-
一個列舉值,指定當取樣足跡寬度超出紋理寬度時取樣器的行為。可能的值有:
"clamp-to-edge":紋理座標將被鉗制在 0.0 和 1.0 之間(包含邊界)。"repeat":紋理座標將環繞到紋理的另一側。"mirror-repeat":紋理座標將環繞到紋理的另一側,但當座標的整數部分為奇數時,紋理會翻轉。
如果省略,
addressModeU預設值為"clamp-to-edge"。 addressModeV可選-
一個列舉值,指定當取樣足跡高度超出紋理高度時取樣器的行為。可能的值和預設值與
addressModeU相同。 addressModeW可選-
一個列舉值,指定當取樣足跡深度超出紋理深度時取樣器的行為。可能的值和預設值與
addressModeU相同。 compare可選-
如果指定,則該取樣器將是指定型別的比較取樣器。可能(列舉)值為:
"never":比較測試永遠不會透過。"less":如果提供的數值小於取樣值,則該比較測試透過。"equal":如果提供的數值等於取樣值,則該比較測試透過。"less-equal":如果提供的數值小於或等於取樣值,則該比較測試透過。"greater":如果提供的數值大於取樣值,則該比較測試透過。"not-equal":如果提供的數值不等於取樣值,則該比較測試透過。"greater-equal":如果提供的數值大於或等於取樣值,則該比較測試透過。"always":比較測試總是透過。
比較取樣器可能使用過濾,但取樣結果將取決於具體實現,並且可能與常規過濾規則不同。
label可選-
一個字串,提供可用於識別物件的標籤,例如在
GPUError訊息或控制檯警告中。 lodMinClamp可選-
一個數值,指定在取樣紋理時內部使用的最小細節級別。如果省略,
lodMinClamp預設為 0。 lodMaxClamp可選-
一個數值,指定在取樣紋理時內部使用的最大細節級別。如果省略,
lodMaxClamp預設為 32。 maxAnisotropy可選-
指定取樣器使用的最大各向異性值鉗制。如果省略,
maxAnisotropy預設為 1。大多數實現支援 1 到 16(包含)之間的
maxAnisotropy值。實際使用的值將被鉗制在底層平臺支援的最大值。 magFilter可選-
一個列舉值,指定當取樣足跡小於或等於一個紋理單元(texel)時取樣行為。可能的值有:
"nearest":返回最接近紋理座標的紋理單元的值。"linear":在每個維度上選擇兩個紋理單元,並返回它們值之間的線性插值。
如果省略,
magFilter預設為"nearest"。注意: 為了使
r32float、rg32float和rgba32floatformat的GPUTexture可過濾,需要啟用float32-filterable功能。 minFilter可選-
一個列舉值,指定當取樣足跡大於一個紋理單元時取樣行為。可能的值和預設值與
magFilter相同。 mipmapFilter可選-
一個列舉值,指定在取樣不同 Mipmap 級別時的行為。可能的值和預設值與
magFilter相同。
返回值
一個 GPUSampler 物件例項。
驗證
呼叫 createSampler() 時必須滿足以下條件,否則將生成 GPUValidationError 並返回一個無效的 GPUSampler 物件。
lodMinClamp大於或等於 0。lodMaxClamp大於或等於lodMinClamp。maxAnisotropy大於或等於 1。- 如果
maxAnisotropy大於 1,則magFilter、minFilter和mipmapFilter必須為"linear"。
示例
以下程式碼片段建立了一個執行三線性過濾並重復紋理座標的 GPUSampler。
// …
const sampler = device.createSampler({
addressModeU: "repeat",
addressModeV: "repeat",
magFilter: "linear",
minFilter: "linear",
mipmapFilter: "linear",
});
WebGPU 示例中的 陰影貼圖示例 使用比較取樣器從深度紋理進行取樣以渲染陰影。
規範
| 規範 |
|---|
| WebGPU # dom-gpudevice-createsampler |
瀏覽器相容性
載入中…