您的位置:首页 > 其它

Texture+PBR两种工作流程

2022-01-11 12:47 183 查看

一、导入Texture

1.Inpspector

TextureSize

2的n次幂,底层图形学需要,计算更快;不使用2的倍数,系统也会添加像素补全2n;

有最大尺寸限制8k,cubemap最高4k;

Mipmap

图像逐渐减小版本的列表;纹理远离摄像机时,Unity 会自动使用较小版本的纹理;LOD

内存增加33%;

WarpMode

循环模式:平铺,拉伸,镜像,一次镜像回退到拉伸,Per-Axis(uv轴不同循环模式);

FilterMode

滤波模式;采样方式:

Point:点插值,拉伸块状化(锯齿);

Bilinear:双线性插值,拉伸模糊;

Trilinear:三线性插值,除了Bilinear,在不同mipmap等级进行模糊;

AnisoLevel

各项异性过滤,掠射角观察提高纹理质量,非常消耗显卡资源,一般禁止;

2.导入器规范资源格式

Unity导入资源有默认格式,Texture导入默认type是Deafult;如果是2D游戏要求都是Sprite;每次导入都需要修改类型非常麻烦;

Unity提供了导入资源设置资源属性的接口;

这段代码可以实现导入图片资源默认格式为Sprite;

using UnityEditor;

public class PreTexture : AssetPostprocessor
{
void OnPreprocessTexture()
{
TextureImporter tImporter = (TextureImporter)assetImporter;
tImporter.textureType = TextureImporterType.Sprite;
}
}

包含UnityEditor继承AssetPostprocessor,实现以下方法:

  • OnPreprocessTexture

  • OnPreprocessModel

  • OnPreprocessAnimation

  • OnPreprocessAudio

导入资源可以修改格式,压缩大小,禁用mipmaps,wrapmode等;

具体看官方文档,自定义需求;

3.Format

带不带透明通道内存占用相差1/3左右;

PC

DirectX 11:

RGB 纹理 - DXT1 4 位/像素;

RGBA 纹理 - BC7(质量更高,压缩速度较慢)或 DXT5(压缩速度较快);

HDR 纹理 - BC6H;

DirectX 10: DXT5(GPU不支持BC7);

IOS

A8 芯片以上:RGB 和 RGBA 纹理 - ATSC (纹理质量粒度可选);

A7或更低:PVRTC;

Android

OpenGL ES 3.0/Vulkan - ETC2 / ATSC

OpenGL ES 2 - ETC

HDR 纹理 - ASTC HDR(需要Vulkan 或GL-hdr支持)

画质:RGB(A)32 > ASTC4X4 > ASTC6X6 > ETC2 ≈ PVRTC > ETC1

国内TOP600机型情况分布:OpenGL ES 3.1以下覆盖用户占0.2%,设备数量占比6.3%;

所以其实其实移动平台统一用ASTC完事;

二、两种PBR workflow

F0:入射角为0 ° 0\degree0°时的反射光线radiance占入射光线radiance的比例;

漫反射高光都收到F0影响;

1.金属粗糙度(M/R)

  • BaseColor:RGB贴图,表示金属的F0;

  • Metallic:灰度图,金属占比遮罩;100%金属为1白色;0%金属为0黑色;

  • Roughness:灰度图,数值越大越粗糙;

优缺点:非金属的F0固定为0.04,无法调整;主要workflow;

2,。镜面反射光泽度(S/G)

  • Diffuse/Albedo:RGB贴图,表示非金属颜色,金属0纯黑;
  • Specular:RGB贴图,定义金属非金属的F0;
  • Glossiness:灰度图,数值越大越光滑;

优缺点:F0自由调整(可能做出反能量守恒定律的材质);两张RGB图,性能要求高;

贴图分辨率和纹素密度太低会出现白边和黑边,由于贴图之间误差;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: