一、匯入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圖,效能要求高;
貼圖解析度和紋素密度太低會出現白邊和黑邊,由於貼圖之間誤差;