ImagePlugin::default_nearest() vs default_linear()
Bevy 0.18.1 中 ImagePlugin 提供两种便捷构造方法,区别仅在纹理采样过滤模式。
源码实现
// Bevy 默认 = default_linear()
impl Default for ImagePlugin {
fn default() -> Self { ImagePlugin::default_linear() }
}
impl ImagePlugin {
pub fn default_linear() -> ImagePlugin {
ImagePlugin { default_sampler: ImageSamplerDescriptor::linear() }
}
pub fn default_nearest() -> ImagePlugin {
ImagePlugin { default_sampler: ImageSamplerDescriptor::nearest() }
}
}
impl ImageSamplerDescriptor {
pub fn linear() -> Self {
Self {
mag_filter: ImageFilterMode::Linear,
min_filter: ImageFilterMode::Linear,
mipmap_filter: ImageFilterMode::Linear,
..Default::default()
}
}
pub fn nearest() -> Self {
Self {
mag_filter: ImageFilterMode::Nearest,
min_filter: ImageFilterMode::Nearest,
mipmap_filter: ImageFilterMode::Nearest,
..Default::default()
}
}
}关键差异
| 维度 | default_linear() | default_nearest() |
|---|---|---|
mag_filter | ImageFilterMode::Linear | ImageFilterMode::Nearest |
min_filter | ImageFilterMode::Linear | ImageFilterMode::Nearest |
mipmap_filter | ImageFilterMode::Linear | ImageFilterMode::Nearest |
| 采样纹素数 | 单 mip 层通常 4 tap;trilinear 时约 8 tap | 单 mip 层通常 1 tap |
| 是否创造新颜色 | 在颜色边界处通常会产生中间色 | 否(始终返回参与采样的原始纹素值) |
| 放大效果 | 平滑但模糊 | 锐利、像素化 |
| 性能影响 | 略多计算;具体取决于 mipmap / AF / GPU 实现 | 略少计算;具体取决于 mipmap / GPU 实现 |
| Bevy 默认 | ✅ 是 | 需显式设置 |
影响范围
default_sampler 是全局默认,影响所有标记为 ImageSampler::Default 的图片。单张图片可通过 ImageSampler::Descriptor(...) 覆盖。
使用场景
default_linear()(默认):照片、写实纹理、渐变、3D 游戏default_nearest():像素画、精灵图动画、复古风格、UI 元素
wgpu 映射
ImageFilterMode 直接映射到 wgpu FilterMode:
Nearest→FilterMode::Nearest(D3D11:D3D11_FILTER_MIN_MAG_MIP_POINT)Linear→FilterMode::Linear(D3D11:D3D11_FILTER_MIN_MAG_MIP_LINEAR)
通过 as_wgpu() 方法转换为 wgpu SamplerDescriptor。
各引擎对比
| 引擎 | 设置方式 |
|---|---|
| Bevy | ImagePlugin::default_nearest() |
| Unity | Texture Import → Filter Mode → “Point (no filter)“ |
| Godot | Import Settings → Filter → “Nearest” |
| LÖVE | love.graphics.setDefaultFilter("nearest") |
相关页面
- pixel-art-texture-filtering — 为什么像素游戏必须用 Nearest 的深度技术分析
- bevy-pixel-perfect-rendering — Bevy 像素完美渲染方案(双相机管线 + 整数倍缩放)
- bevy — Bevy 引擎实体页