15. 纹理尺寸是4的倍数

1. 纹理尺寸是4的倍数


1. 纹理尺寸是4的倍数

csharp 复制代码
1).内存对齐

计算机(CPU/GPU)读取内存时不是逐字节读取, 而是按固定"对齐块"(比如4字节、16 字节、64 字节)批量读取 ------ 这是硬

件层面的优化, 能大幅提升访问效率
csharp 复制代码
Unity在导入非4倍数纹理时, 即使现代GPU支持非对齐读取, 也会在内存中自动填充到最近的2的幂次尺寸(比如 127×127 

→ 128×128), 这一步本身就会增加导入时间和内存占用

csharp 复制代码
2).GPU 的纹理块(Tile)处理机制

GPU渲染纹理时, 会将纹理分割成固定大小的块(Tile)并行处理(常见块尺寸: 4×4、8×8、16×16), 这是GPU并行计算的核

心逻辑(每个SP流处理器处理一个块)

csharp 复制代码
3).纹理压缩格式

Unity常用的纹理压缩格式(ETC2、ASTC、PVRTC)"基于4×4块压缩/解压", 先把纹理图像分割成一个个「4×4 像素的独立小

方块(Block/Tile)」, 再以这个4 × 4块为最小压缩/解压单元------ 每个块单独编码(压缩)、单独解码(解压), GPU硬件也针

对4×4块的并行处理做了深度优化

csharp 复制代码
若纹理尺寸是4的倍数(如: 128 × 128): 整张纹理能被完整分割为4 × 4块(128 / 4 = 32, 即 32 × 32个4 × 4 块), 无

任何零碎块

若纹理尺寸非4的倍数(如: 127 × 127)最后一行 / 列会出现不完整的4 × 4块(比如 1×127、127×1), 压缩算法会先把纹

理填充到最近的4的倍数尺寸(128×128), 再分割块压缩; 解压后还要把填充的像素裁剪掉 ------ 多了填充 + 裁剪两步, 既浪

费存储空间, 又增加处理开销
相关推荐
郝学胜-神的一滴4 小时前
[简化版 GAMES 101] 计算机图形学 16:纹理走样、Mipmap、三线性插值、各向异性过滤原理全解
unity·游戏引擎·godot·图形渲染·three.js·opengl·unreal
吴梓穆1 天前
untiy TextMeshPro (TMP) text 操作 中文字符集 字体材质操作(添加纹理 添加描边 添加阴影)
unity
想你依然心痛1 天前
嵌入式单元测试:Unity/CMock框架与硬件在环测试——测试驱动、桩函数
unity·单元测试·游戏引擎
xcLeigh1 天前
Unity基础:Game视图详解——游戏预览、分辨率模拟与性能显示
游戏·unity·游戏引擎·音频·视频·game·play模式
xcLeigh2 天前
Unity基础:Scene视图操作完全指南——视角控制、物体选择与场景导航
unity·游戏引擎·scene·试图·场景导航
mxwin2 天前
Unity Shader exp 函数的算法与渲染应用
算法·unity·游戏引擎·shader
mxwin2 天前
Unity URP Exposure曝光原理与实战应用
unity·游戏引擎
WarPigs2 天前
AB包自定义打包工具
unity
叶帆19 天前
【YFIOs】用C#开发硬件之设备上云
开发语言·unity·c#
久数君19 天前
AI三维建模工具“造形家”:地理场景三维化的高效解决方案
unity·glb·ai算法·ai三维建模工具·地图框选·造形家·城市建筑模型