简单来说贴图是包含颜色数据的“仓库”而采样是GPU从仓库里取出数据并为像素“上色”的过程。首先我们来理解一下这个基本过程。在Shader中程序会根据模型顶点上的UV坐标快速计算出你当前看到这个像素在贴图上的对应位置这个过程称为“纹理映射”然后去调取该位置的颜色。如果完全一对一地调取画面就会像“马赛克”。为了更好地平衡视觉与性能GPU实际在执行一个更智能的“模糊算法”。下面我们会详细介绍并通过一张速查表来帮你针对不同场景快速决策。 采样“马赛克”的艺术四大滤镜的平衡与取舍要解决“马赛克”问题关键在于理解GPU的内置滤镜它们的工作原理、视觉效果和性能开销都有所不同。点采样 (Point/Nearest)极速马赛克。原理简单粗暴GPU会直接选取离采样点最近的一个像素的颜色。特点计算量最小速度最快但马赛克感极强特别是纹理放大时。双线性过滤 (Bilinear)模糊但平滑。原理GPU会取采样点周围最近的4个像素的颜色然后进行加权平均计算出最终颜色。特点消除了马赛克但纹理缩小时因平均计算会变模糊支持Mipmap效果会更好。三线性过滤 (Trilinear)消除远处的“阶跃感”。原理先在两个相邻的Mipmap层级里分别做双线性采样然后再把这两个结果混合起来。特点消除了从远处走向近处时纹理出现的“突变感”视觉过渡很自然但性能开销更高更适合地面、墙面等持续变化的场景。各向异性过滤 (Anisotropic Filtering)倾斜视角下的清晰度救星。原理针对纹理在屏幕上倾斜的情况GPU会沿倾斜的方向进行“非均匀”采样增加采样点。特点能极大提升地面等倾斜视角下纹理的清晰度但性能开销最高。在Unity中需同时在Texture和Quality Settings中启用。 保证纹理清晰的关键点除了在Shader中选择合适的采样方式滤镜下面这些“硬指标”是保证纹理清晰的基础你可以在导入贴图时选中Texture进行调整纹理尺寸——2的幂次方强烈建议使用2的幂次方如 256x256、512x512 等的纹理。这不只是性能优化因为Unity的Mipmap生成等一系列功能都依赖此规则。纹理压缩——格式与质量通用高质量设置在大部分情况下在纹理导入器的“压缩”选项里选择“高质量”或“最佳”并在格式中选择“自动”即可。平台优选格式根据目标平台选择合适格式是优化关键。可参考下表目标平台推荐格式特点PC / Mac / LinuxDXT5(带Alpha通道) /DXT1(无Alpha)经典的S3TC压缩格式在桌面平台上提供了性能和画质的优秀平衡。iOS / Apple SiliconASTC (如ASTC 6x6)现代iOS设备上标准化、效率极高的压缩格式比PVRTC有更佳的质量和灵活性。AndroidASTC(支持) /ETC2(不支持的备用)ASTC是首选对于老旧设备ETC2是OpenGL ES 3.0的必备替代格式。纹理最大尺寸Max Size这会限制纹理导入后的最大分辨率。建议设为不低于原始图尺寸并匹配2的幂次方。盲目调高并无意义因为显示分辨率有上限反而会增加显存占用。Mipmap多级渐远纹理其工作原理是GPU会自动为原始纹理生成一系列逐级缩小的版本。根据物体远近GPU会自动选择合适大小的版本进行采样。开启Mipmap能消除远处纹理的“闪烁”噪点这被称为“摩尔纹”且因为其缓存友好的特性甚至能优化性能。但Mipmap会额外占用约33%的显存。⚠️ 注意事项UI元素对于始终以1:1比例显示的UI图片建议关闭Mipmap以节省内存并保证清晰度。尺寸要求只有纹理尺寸是2的幂时Unity才能自动生成Mipmap。 总结用一张表做决策总的来说你可以根据下面这个表格快速为不同场景选择最合适的纹理清晰度设置场景分类采样模式 (Filter Mode)Mipmap纹理压缩建议权衡要点像素风 / UI图标Point (无过滤)关闭无压缩/低压缩极致清晰呈现像素边缘3D游戏主场景Bilinear (双线性)开启自动/平台优化性能与画质的最佳平衡点游戏地面 / 地板Aniso Level 2-9x开启自动/平台优化在倾斜视角下保持清晰但性能开销最高通过理解并善用这些采样技术和纹理设置你就能在Unity中打造出既清晰又高效的游戏视觉体验了
Unity Shader 贴图和采样的关系 如何保证贴图清晰
简单来说贴图是包含颜色数据的“仓库”而采样是GPU从仓库里取出数据并为像素“上色”的过程。首先我们来理解一下这个基本过程。在Shader中程序会根据模型顶点上的UV坐标快速计算出你当前看到这个像素在贴图上的对应位置这个过程称为“纹理映射”然后去调取该位置的颜色。如果完全一对一地调取画面就会像“马赛克”。为了更好地平衡视觉与性能GPU实际在执行一个更智能的“模糊算法”。下面我们会详细介绍并通过一张速查表来帮你针对不同场景快速决策。 采样“马赛克”的艺术四大滤镜的平衡与取舍要解决“马赛克”问题关键在于理解GPU的内置滤镜它们的工作原理、视觉效果和性能开销都有所不同。点采样 (Point/Nearest)极速马赛克。原理简单粗暴GPU会直接选取离采样点最近的一个像素的颜色。特点计算量最小速度最快但马赛克感极强特别是纹理放大时。双线性过滤 (Bilinear)模糊但平滑。原理GPU会取采样点周围最近的4个像素的颜色然后进行加权平均计算出最终颜色。特点消除了马赛克但纹理缩小时因平均计算会变模糊支持Mipmap效果会更好。三线性过滤 (Trilinear)消除远处的“阶跃感”。原理先在两个相邻的Mipmap层级里分别做双线性采样然后再把这两个结果混合起来。特点消除了从远处走向近处时纹理出现的“突变感”视觉过渡很自然但性能开销更高更适合地面、墙面等持续变化的场景。各向异性过滤 (Anisotropic Filtering)倾斜视角下的清晰度救星。原理针对纹理在屏幕上倾斜的情况GPU会沿倾斜的方向进行“非均匀”采样增加采样点。特点能极大提升地面等倾斜视角下纹理的清晰度但性能开销最高。在Unity中需同时在Texture和Quality Settings中启用。 保证纹理清晰的关键点除了在Shader中选择合适的采样方式滤镜下面这些“硬指标”是保证纹理清晰的基础你可以在导入贴图时选中Texture进行调整纹理尺寸——2的幂次方强烈建议使用2的幂次方如 256x256、512x512 等的纹理。这不只是性能优化因为Unity的Mipmap生成等一系列功能都依赖此规则。纹理压缩——格式与质量通用高质量设置在大部分情况下在纹理导入器的“压缩”选项里选择“高质量”或“最佳”并在格式中选择“自动”即可。平台优选格式根据目标平台选择合适格式是优化关键。可参考下表目标平台推荐格式特点PC / Mac / LinuxDXT5(带Alpha通道) /DXT1(无Alpha)经典的S3TC压缩格式在桌面平台上提供了性能和画质的优秀平衡。iOS / Apple SiliconASTC (如ASTC 6x6)现代iOS设备上标准化、效率极高的压缩格式比PVRTC有更佳的质量和灵活性。AndroidASTC(支持) /ETC2(不支持的备用)ASTC是首选对于老旧设备ETC2是OpenGL ES 3.0的必备替代格式。纹理最大尺寸Max Size这会限制纹理导入后的最大分辨率。建议设为不低于原始图尺寸并匹配2的幂次方。盲目调高并无意义因为显示分辨率有上限反而会增加显存占用。Mipmap多级渐远纹理其工作原理是GPU会自动为原始纹理生成一系列逐级缩小的版本。根据物体远近GPU会自动选择合适大小的版本进行采样。开启Mipmap能消除远处纹理的“闪烁”噪点这被称为“摩尔纹”且因为其缓存友好的特性甚至能优化性能。但Mipmap会额外占用约33%的显存。⚠️ 注意事项UI元素对于始终以1:1比例显示的UI图片建议关闭Mipmap以节省内存并保证清晰度。尺寸要求只有纹理尺寸是2的幂时Unity才能自动生成Mipmap。 总结用一张表做决策总的来说你可以根据下面这个表格快速为不同场景选择最合适的纹理清晰度设置场景分类采样模式 (Filter Mode)Mipmap纹理压缩建议权衡要点像素风 / UI图标Point (无过滤)关闭无压缩/低压缩极致清晰呈现像素边缘3D游戏主场景Bilinear (双线性)开启自动/平台优化性能与画质的最佳平衡点游戏地面 / 地板Aniso Level 2-9x开启自动/平台优化在倾斜视角下保持清晰但性能开销最高通过理解并善用这些采样技术和纹理设置你就能在Unity中打造出既清晰又高效的游戏视觉体验了