第2章 使用纹理贴图制作特效

沿第一版正式目录掌握UV滚动、精灵表单、通道打包、法线贴图、色阶。

先预测,再观察

先预测顶点、片元、颜色、深度、Draw次数或帧时间会如何变化,再只调整一个变量观察变化。把纹理视为数据而非图片:用UV偏移产生滚动,用帧索引寻址精灵表,用RGBA通道承载多个遮罩,再加入法线解码、编辑器程序纹理和Photoshop式色阶。每一步都保存原始采样与处理后采样。 本章用、、、、建立输入、计算、状态与证据之间的关系。

第一版权威目录定位

本页一一对应Kenny Lammers《Unity Shaders and Effects Cookbook》第一版中译本《Unity着色器和屏幕特效开发秘笈》第2章 使用纹理贴图制作特效。书目确认机械工业出版社2014年出版、晏伟译、ISBN 9787111480563;正式目录确认全书11章。原书基于早期Unity内置渲染管线,现代Unity项目应复用原理并单独映射API。

原章核心配方

  1. 修改UV实现滚动
  2. 精灵表单动画
  3. 压缩与混合纹理
  4. 法线贴图
  5. 编辑器程序纹理
  6. Photoshop色阶

五个核心对象

  1. UV滚动:随时间偏移纹理坐标形成运动的技术。
  2. 精灵表单:在一张图集中按帧索引选择子区域的动画资源。
  3. 通道打包:把多个标量遮罩存入RGBA不同通道以减少纹理数量。
  4. 法线贴图:以切线空间方向扰动光照而不增加几何的纹理。
  5. 色阶:按输入黑场、白场和伽马重映射颜色范围的操作。

数据流与公式

把纹理视为数据而非图片:用UV偏移产生滚动,用帧索引寻址精灵表,用RGBA通道承载多个遮罩,再加入法线解码、编辑器程序纹理和Photoshop式色阶。每一步都保存原始采样与处理后采样。 先画出材质属性、纹理、Surface或顶点函数、生成Pass、脚本回调、RenderTexture和固定状态的生产者到消费者链,再把本章对象放到对应阶段。

uv2=uv+speedtimeuv2=uv+speed*time frameUV=(cell+localUV)/gridframeUV=(cell+localUV)/grid packed=(mask0,mask1,mask2,mask3)packed=(mask0,mask1,mask2,mask3) levels=pow(saturate((xblack)/(whiteblack)),gamma)levels=pow(saturate((x-black)/(white-black)),gamma)

公式中的方向、颜色、UV、时间与深度必须标注空间、范围和单位。Surface输出或全屏片元输出只是候选结果,最终仍受Pass选择、深度、混合、目标格式和颜色空间影响。

最小实现

float2 uv = IN.uv_MainTex + _Scroll.xy * _Time.y;

实现顺序固定为常量输出、输入可视化、核心公式、材质或脚本绑定和固定状态。先确认Shader支持、实际Pass与源目标正确,再解释画面变化。

Unity脚本与材质契约

material.SetFloat("_DebugMode", debugMode);
material.SetTexture("_MainTex", sourceTexture);
Debug.Assert(material.shader.isSupported);

保存Unity版本、相机、灯光、网格、材质关键字、纹理导入设置、RenderTexture格式与调用次序。对于屏幕效果还要保存源图和每个中间目标;对于Surface Shader还要检查生成代码与实际渲染路径。

边界、精度与性能

测试零向量、退化UV、镜像UV、负缩放、透明交叉、纯黑纯白、HDR颜色、不同宽高比、多效果串联和高过度绘制。性能实验固定目标设备、分辨率、VSync与场景,先判断CPU还是GPU受限,再定位具体Draw、采样与Shader阶段。

unity: exact editor and player version
pipeline: Built-in and named rendering path
resources: mesh, texture import, material and target format
state: queue, depth, cull, blend and pass order
evidence: image diff, frame debugger, GPU capture, CPU/GPU ms
failure: smallest replayable counterexample
  1. 用常量颜色或原样Blit确认材质、脚本、Pass和目标可执行。
  2. 可视化UV、法线、深度、遮罩、单个光照项或中间纹理。
  3. 打开本章效果,保存基线、候选和参数。
  4. 构造边界与失败输入,用帧调试和GPU捕获解释差异。

验收证书

证书包含源码版本、Unity与图形API、脚本绑定、资源哈希、Pass状态、源图和中间图、GPU事件、CPU/GPU帧时间与失败反例。纹理滚动使用逐帧累加坐标,帧率变化后速度和精度都不稳定。 修复后必须用同一输入重放,并指出变化发生在哪个阶段。

常见误区

本章回顾

本页覆盖UV滚动、精灵表单、通道打包、法线贴图、色阶。掌握标准是能画出数据流,写出最小实现,说明材质与脚本契约,再用正确性、边界、精度和性能证据复现结论。

术语表

讨论

评论区加载中…