Texture+PBR两种工做流程

2022年01月14日 阅读数:1
这篇文章主要向大家介绍Texture+PBR两种工做流程,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

1、导入Texture

1.Inpspector

TextureSizehtml

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

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

Mipmap3d

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

内存增长33%;orm

WarpModehtm

循环模式:平铺,拉伸,镜像,一次镜像回退到拉伸,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完事;

2、两种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图,性能要求高;

01112022-110509-AM

贴图分辨率和纹素密度过低会出现白边和黑边,因为贴图之间偏差;