Skip to content

纹理格式详解

颜色格式

formatrenderablemultisamplestoragesample typebytes per pixel
r8unormtruetruefalsefloat1
r8snormfalsefalsefalsefloat1
r8uinttruetruefalseuint1
r8sinttruetruefalsesint1
r16uinttruetruefalseuint2
r16sinttruetruefalsesint2
r16floattruetruefalsefloat2
rg8unormtruetruefalsefloat2
rg8snormfalsefalsefalsefloat2
rg8uinttruetruefalseuint2
rg8sinttruetruefalsesint2
r32uinttruefalsetrueuint4
r32sinttruefalsetruesint4
r32floattruefalsetrueunfilterable-float4
rg16uinttruetruefalseuint4
rg16sinttruetruefalsesint4
rg16floattruetruefalsefloat4
rgba8unormtruetruetruefloat4
rgba8unorm-srgbtruetruefalsefloat4
rgba8snormfalsefalsetruefloat4
rgba8uinttruetruetrueuint4
rgba8sinttruetruetruesint4
bgra8unormtruetruefalsefloat4
bgra8unorm-srgbtruetruefalsefloat4
rgb10a2unormtruetruefalsefloat4
rg11b10ufloatfalsefalsefalsefloat4
rgb9e5ufloatfalsefalsefalsefloat4
rg32uinttruefalsetrueuint8
rg32sinttruefalsetruesint8
rg32floattruefalsetrueunfilterable-float8
rgba16uinttruetruetrueuint8
rgba16sinttruetruetruesint8
rgba16floattruetruetruefloat8
rgba32uinttruefalsetrueuint16
rgba32sinttruefalsetruesint16
rgba32floattruefalsetrueunfilterable-float16

格式说明

  • 通道表示:如 rg16float 表示红(R)、绿(G)两个通道,每个通道16bits浮点型
  • 数据类型
    • unorm:无符号归一化(0-1范围),整型最大值映射为1.0
    • snorm:有符号归一化(-1-1范围),整型范围映射为[-1,1]
    • uint/sint:无符号/有符号整型
    • float:浮点型
  • 特殊标记
    • unfilterable-float:需采样器使用nearest过滤,且需手动创建绑定组布局(移动设备可能不支持)
    • 组合格式如 rg11b10ufloat 表示红绿通道11bits,蓝通道10bits,无符号浮点

深度和模板格式

formatrenderablemultisamplestoragesampler typebytes per pixelcopy srccopy dstfeature
depth32floattruetruefalsedepth4truefalse
depth16unormtruetruefalsedepth2truetrue
stencil8truetruefalseuint1truetrue
depth24plustruetruefalsedepthfalsefalse
depth24plus-stencil8truetruefalsedepthfalsefalse
depth32float-stencil8truetruefalsedepthfalsefalsedepth32float-stencil8

特殊属性说明

  • copy src/dst:是否支持GPUTextureUsage.COPY_SRC/DST
  • feature:使用需启用可选功能

关键概念

  • renderable:可渲染到该纹理(需设置GPUTextureUsage.RENDER_ATTACHMENT
  • multisample:支持多重采样
  • storage:可作为存储纹理写入
  • sampler type:WGSL中纹理类型声明依据(如texture_2d<f32>对应float类型)

注:unfilterable-float格式在支持float32-filterable特性的设备上可自动升级为普通float格式,无需修改代码(2023年移动设备普遍不支持)