type
status
date
slug
summary
tags
category
icon
password

什么是纹理(Texture)

在计算机图形学中,纹理本质上是存储图像数据的二维数组(也可以是三维或立方体贴图)。对于 Shader 而言,纹理就像是一张张“贴在”模型表面的图片,它可以为模型的表面提供颜色、细节、光照信息、特殊效果等。

常见的 Texture 及作用

  • Albedo/Diffuse Map (颜色纹理):存储表面的颜色信息。在特效中,可以用于定义火焰的颜色、烟雾的颜色、魔法阵的图案等。
  • Normal Map (法线纹理):存储表面的法线偏移信息,用于模拟细节。在特效中,可以为粒子增加表面的凹凸感,例如岩石碎片的表面细节。
  • Metallic/Specular Map (金属/高光纹理):控制表面的金属度和高光反射强度。在特效中,可以用于制作闪亮的金属效果,例如盔甲的反光、武器的光泽。
  • Roughness/Glossiness Map (粗糙度/光泽度纹理):控制表面的粗糙程度。粗糙的表面会散射光线,产生漫反射;光滑的表面会镜面反射光线。在特效中,可以用于表现不同材质的质感,例如粗糙的岩石和光滑的水面。
  • Emission Map (自发光纹理):定义物体哪些部分会发出光芒。在特效中,常用于制作发光的粒子、魔法能量、UI 元素等。
  • Opacity/Alpha Mask (不透明度/Alpha 遮罩纹理):控制物体哪些部分是透明的。在特效中,用于制作镂空效果、羽毛、树叶等。
  • Mask Texture (遮罩纹理):通常是灰度图,用于控制其他效果的强度或范围。例如,溶解效果中控制哪些像素被溶解,或者控制特定颜色效果的应用范围。
  • Gradient Texture (渐变纹理):存储颜色渐变信息。在特效中,常用于制作颜色随时间或距离变化的特效,例如能量场、光束等。
  • Noise Texture (噪声纹理):存储随机的像素值。在特效中,广泛用于模拟自然界的随机运动和变化,例如烟雾的飘动、火焰的跳动、水面的波纹、扭曲效果等。
  • Sprite Sheet/Texture Atlas (精灵表/纹理集):将多个小图像打包到一张大纹理中。在特效中,常用于制作序列帧动画,例如爆炸的火焰序列、闪电的动画等。

属性与采样

  • Texture 声明
  • UV 坐标:纹理的采样是基于 UV 坐标的。UV 坐标是模型表面每个顶点存储的二维坐标,范围通常在 0 到 1 之间,用于映射纹理上的像素。
  • 纹理采样函数:Unity Shader 中常用的纹理采样函数是 tex2D。它接收一个纹理采样器和一个 UV 坐标作为输入,返回该 UV 坐标处的纹理颜色值。
  • Tiling 和 Offset:材质通常会提供 Tiling(平铺)和 Offset(偏移)的设置,用于调整纹理在模型表面上的显示方式。在 Shader 中,这些信息通常通过一个名为 _TextureName_ST 的变量传递进来(例如,对于 _MainTex,对应的变量是 _MainTex_ST)。你可以使用这个变量来调整 UV 坐标
  • 纹理过滤模式:当纹理被放大或缩小时,需要使用过滤算法来计算像素之间的颜色值,以避免出现锯齿或模糊。常见的过滤模式包括:
    • Point (Point Filtering):最近邻采样,速度快,但放大时会出现明显的像素块。
    • Bilinear (Bilinear Filtering):双线性插值,使用周围 4 个像素的加权平均值,效果比 Point 平滑。
    • Trilinear (Trilinear Filtering):三线性插值,在 Bilinear 的基础上,还考虑了不同 Mipmap 层级之间的插值,可以减少远处物体上的闪烁。
    • Anisotropic (Anisotropic Filtering):各向异性过滤,在倾斜的表面上也能保持较高的清晰度,但性能开销较大。
可以在 Unity 的材质设置中调整纹理的过滤模式。

纹理压缩与格式

为了优化游戏性能和减少内存占用,纹理通常需要进行压缩。不同的平台和使用场景可能需要不同的纹理压缩格式。常见的纹理格式包括:
  • PNG 和 JPG:常见的图像格式,但通常不适合直接在 GPU 上使用,需要在导入 Unity 时进行压缩。
  • DDS (DirectDraw Surface):一种常见的用于存储压缩纹理的格式,尤其在 PC 平台上。
  • ASTC (Adaptive Scalable Texture Compression):一种高质量、灵活的纹理压缩格式,广泛应用于移动平台。
  • ETC/ETC2 (Ericsson Texture Compression):另一种常用的移动平台纹理压缩格式。

常见用例

  • 噪声纹理:用于制作随机的扰动效果,例如烟雾的形状、火焰的扭曲、水面的涟漪。可以使用 Perlin Noise、Simplex Noise 等算法生成。
  • 渐变纹理:用于定义颜色随某个参数变化的映射关系。例如,可以创建一个从白色到红色的渐变纹理,然后根据粒子的生命周期来采样这个纹理,实现粒子颜色随时间变化的效果。
  • 精灵表:用于制作动画效果。例如,一个包含爆炸不同帧画面的精灵表,可以在 Shader 中按顺序采样不同的区域,实现爆炸的动画效果。
  • Ramp 纹理 (光照纹理):用于实现卡通渲染或其他非真实感渲染风格。通过一个一维的渐变纹理来控制物体在不同光照强度下的颜色。
 
Shader的学习YGN教你如何辨别家宽
Loading...
YGN
YGN
写点东西
Latest posts
Obsidian的同步方案Obsidian Sync
2025-12-4
AI参数介绍
2025-11-27
Shader的学习
2025-11-27
Texture的学习
2025-11-27
YGN教你如何辨别家宽
2025-11-27
常见的代理检测及绕过手段
2025-11-27
Announcement
记录一些个人折腾的过程
顺便写一点教程和小tips
文中如有错误也可联系我修改
bmluYTI3QGxpbnV4LmRv