Unity - 搬砖日志 - Texture.mipmapBias 无效的解决方法


环境

Unity : 2020.3.37f1
Pipeline : BRP


原因

因为美术发现有些贴图太糊,但是经过研究发现,mipmap0就是完全够精度的
但是不可能还要提升贴图的尺寸,因为经过多方咨询(咨询TA大佬)
发现是 unity 纹理一个 mipmapBias 的 import 属性,但结果设置了一样木有效果
最后TA大佬说,试试 shader 修改 tex2D => tex2Dbias,结果就OK了

Texture.mipmapBias 无效的原因在 unity 官方上有写:

  • 使用了 MaterialPropertyBlocks 也不行
  • 如果 Graphics API 是 metal, OpenGL ES 都不行,除非自己调整 shader

而我们项目 Graphics API 刚刚好是 OpenGL ES 所以没有效果
在这里插入图片描述


解決方案

float4 sample_val = tex2D(xxxMap, uv); 修改为 float4 sample_val = tex2Dbias(xxxMap, float4(uv, 0.0, -0.5); // mipmapBias : -0.5

因此对纹理的 mipmapBias import 属性设置是没有用的
只能在材质面板中添加一个 _xxx_mipmapBias 的参数
比如:_MainTex 的 mipmapBias 为:_MainTex_mipmapBias 默认 0 值即可

但是不能将这个设置 负数的偏移过大,否则导致纹理 cache miss (降低 cache hit 率)
那么就需要多次cache,导致渲染性能问题


Referenes

猜你喜欢

转载自blog.csdn.net/linjf520/article/details/129440131