方法与结果说明
纹理内存计算公式
未压缩二维纹理的基础层像素数据量 = 宽度 × 高度 × 每像素字节数 × 张数。RGBA8 包含四个 8 位通道,即每像素 4 字节。4 张 1024 × 1024 RGBA8 纹理合计 16,777,216 字节,恰好为 16 MiB,约为 16.78 MB。
宽高同时从 1024 增加到 2048,基础层数据量变为四倍,即 64 MiB。RGBA16F 每像素为 8 字节,RGBA32F 为 16 字节。选择某种格式只是计算该格式的数据预算,并不保证浏览器能够上传或过滤此格式。
为什么 mipmap 必须逐层计算
完整 mip 链逐次将宽高减半、向下取整,最小保持为 1,直到得到 1 × 1 层。计算器逐层累加像素数据。较大的方形纹理完整 mip 链总量接近基础层的 4/3,但这不是适用于所有形状的精确公式。
例如 8 × 1 RGBA8 纹理的各层为 8 × 1、4 × 1、2 × 1、1 × 1,合计 60 字节,基础层为 32 字节。直接乘 4/3 会低估这种细长纹理。非二次幂尺寸同样需要按照取整后的实际层级求和。
二进制与十进制单位如何比较
1 MiB = 1,048,576 字节,1 GiB = 1,073,741,824 字节;1 MB = 1,000,000 字节,1 GB = 1,000,000,000 字节。比较不同工具时,优先核对字节总量,避免只看单位名称。
宽、高和张数需要为界面所示范围内的整数。不合法输入会显示原因,不会悄悄截断或改成别的数值。即使预算很大,也只进行数学运算,不会实际分配对应纹理。
像素数据预算不等于实际显存占用
结果不包含驱动对齐、平铺、浏览器副本、帧缓冲、多重采样及其他应用资源。共享内存设备可能把资源放在系统内存中。计算结果不测量剩余显存,也不保证对应资源能够分配成功。
当前支持列出的未压缩二维格式与可选完整 mip 链,不估算 BC/ASTC 压缩块、立方体贴图、三维纹理或整款游戏的总需求。可下载计算记录保留假设;首页 RGBA8 负载的估算说明见测试方法。