textureLevel
textureLevel
创建一个纹理采样节点,并显式指定要采样的 Mipmap 层级(LOD)。其效果等同于在 GLSL 中使用 `textureLod`:保留原有采样器与插值设置,仅固定 LOD。
核心优势
可控 LOD。避免自动导数选择导致的层级跳变与闪烁,便于获得可预测的清晰度或模糊度,并与自定义过滤或特殊流程精确对齐。
常见用途
固定在 mip 0 以保持最清晰细节(UI 图集、贴花)。
强制较高 mip 级以做廉价模糊或远景降噪。
按 roughness 或距离手动选取 mip,匹配非标准 BRDF/IBL 管线。
在缺少导数的阶段或特殊路径中避免自动 LOD 失败。
如何调整
通过改变 `level`(从 0 开始的整数)控制采样的 Mipmap 层级。值越大,结果越模糊。将 `level` 绑定为 uniform 可实现平滑动画过渡;根据距离或 roughness 计算 `level` 可获得艺术可控的 LOD。若需逐 texel、无插值读取,请改用 `textureLoad()`。
代码示例
1// 1) 固定 mip0,保持锐利细节
2const sharp = textureLevel( myTexture, uv(), int( 0 ) );
3material.colorNode = sharp;
4
5// 2) 固定 mip2,获得更模糊的结果
6material.emissiveNode = textureLevel( myTexture, uv(), int( 2 ) );