5.1 材质编辑器与节点图


文档摘要

5.1 材质编辑器与节点图 本节摘要:材质是引擎回答"这个表面在光照下长什么样"的配方,节点图是写配方的方式。本节拆解基于物理渲染的核心输入,讲清混合模式与材质域两个总开关,再用材质实例把一份配方变成一百个品种。 一面墙的两种死法 同一个走廊场景,两种材质做法两种结局:一种给每面墙单独建材质,图里连满贴图采样与数学节点,走廊三十面墙三十份材质,光照通道叫苦不迭;另一种做一份"墙面母材质",把颜色贴图、粗糙度强度、平铺倍率做成参数,派生三十个材质实例各填各的参数。画面效果相同,开销天差地别——母材质只编译一份着色程序,实例只是换参数,而三十份独立材质就是三十份着色程序。材质工作的核心手艺不是"会连节点",是"会设计参数边界",让品种差异落在参数上而不是落在图上。

5.1 材质编辑器与节点图

本节摘要:材质是引擎回答"这个表面在光照下长什么样"的配方,节点图是写配方的方式。本节拆解基于物理渲染的核心输入,讲清混合模式与材质域两个总开关,再用材质实例把一份配方变成一百个品种。

一面墙的两种死法

同一个走廊场景,两种材质做法两种结局:一种给每面墙单独建材质,图里连满贴图采样与数学节点,走廊三十面墙三十份材质,光照通道叫苦不迭;另一种做一份"墙面母材质",把颜色贴图、粗糙度强度、平铺倍率做成参数,派生三十个材质实例各填各的参数。画面效果相同,开销天差地别——母材质只编译一份着色程序,实例只是换参数,而三十份独立材质就是三十份着色程序。材质工作的核心手艺不是"会连节点",是"会设计参数边界",让品种差异落在参数上而不是落在图上。

本节在知识体系中的位置:它是渲染预算里"每个像素怎么着色"的答案,承接 4.1 的贴图规范(颜色贴图与法线贴图的格式区分在材质里兑现),向下支撑第六章的特效材质与 UI 材质。全书案例从本节起大量出现材质操作,这里打的地基直接复用。

基于物理的输入清单

材质编辑器右侧的参数面板就是着色的申报单,六项核心输入各管一件事。基础色是表面的固有色,不含光照信息的纯颜色;金属度是二值倾向的开关——金属与非金属的着色模型不同,混合中间值在物理上很少见,要么零要么一,除非做氧化过渡;粗糙度决定表面微观起伏,值越小高光越锐利,它是材质表现力的第一参数,一张粗糙度变化贴图能让同一表面从崭新到陈旧;高亮度项控制镜面反射强度,非金属通常保持默认不动;自发光让表面自己发光并参与泛光,配上遮罩贴图可做灯带与屏幕;法线贴图在不增加面数的前提下伪造凹凸细节,依赖 4.1 强调的法线压缩格式。

材质总开关有两个,动它们之前先想清楚。混合模式决定表面与画面的合成方式:不透明最快;遮蔽式允许按遮罩镂空(栅栏、植被叶片),渲染路径仍便宜但会开早期裁剪;半透明最贵——它退出延迟管线的光照通道走前向路径,且默认不写深度,排序错误与过度绘制都从这里来,能用遮蔽解决就别上半透明。材质域决定材质服务于谁:表面域是常规物体;延迟贴花把材质投到已有表面上方(弹孔、血迹);用户界面域画 UI;光照函数域让材质影响灯光形状。域选错,后面全部白连。

节点图的组织法:从右往左读

材质图与蓝图同为节点语言,但读法相反:从最终输出节点往左逆推。输出节点旁的一排输入引脚就是上面的申报单,往左是贴图采样、坐标运算、数学节点。组织法的三条经验:一是按"贴图层—加工层—汇合层"分块摆图并加注释框,半年后自己还能看懂;二是公共参数抽成参数节点命名清晰,这是派生实例的前提;三是警惕"什么都想连进最终结果"的冲动——每条进输出的连线都进最终的着色程序,删一条就是省一分像素账。

一份 PBR 母材质的节点设计

一份 PBR 母材质的节点设计

案例:一面会讲故事的砖墙

背景:走廊需要一面老砖墙,要求有磨损、有污渍分布、有细节凹凸,且后续十几面墙只做参数微调。这是母材质加实例工作流的完整示范。

操作:搭母材质。三张贴图采样:砖纹颜色、法线、粗糙度遮罩。颜色链:颜色采样先乘一个线性插值节点,插值两端是"干净色"与"陈旧色"两个常量参数,插值系数取自一张大型污渍遮罩的采样——于是污渍重的区域自动偏陈旧色。粗糙度链:遮罩采样乘上粗糙度强度参数,再叠加一层大尺度噪声采样做斑驳。法线链:法线采样乘法线强度参数。纹理坐标统一经过平铺倍率参数节点,所有贴图共享同一平铺逻辑。编译保存为母材质。

派生实例:右键母材质创建材质实例,走廊里北墙实例把污渍强度调高、色调偏冷;门前实例把平铺倍率缩小、粗糙度强度提高模拟踩踏磨损。全程不开母材质。

结果:同一份配方,两面气质完全不同的墙;性能面板确认着色开销与一面墙无异。

解读:这道案例的账目本质是把"品种差异"从着色程序维度搬到参数维度:程序只编译一份,实例差异只是常量缓冲里的几个数字,GPU 侧几乎免费。反过来的三十份独立材质方案,每份都是独立的着色程序,状态切换与缓存压力全部翻倍。变式一:需要砖缝积水的雨天版本——把积水做成独立图层并在母材质里加一个"是否启用积水"的静态开关参数,静态开关在编译期剪枝,不启用的实例不为积水付任何像素成本;若用普通标量参数当开关,所有实例都要为未启用的功能买单,这一静一动是实例优化的关键细节。变式二:墙面需要被弹孔贴花覆盖,把母材质做好表面响应,贴花用延迟贴花域另做一份小材质叠上去,不改母材质。

常见坑:在母材质里连大量"以备不时之需"的节点再用参数压到零。普通参数压到零不等于免费——节点仍在着色程序里执行。用静态开关剪枝,或者干脆删掉。

本节要点回顾

  • 六项核心输入:基础色、金属度、粗糙度、高亮度、自发光、法线,粗糙度是表现力第一参数。
  • 混合模式是价格标签:遮蔽式替代半透明,能不开半透明就不开。
  • 材质域定用途:表面、贴花、界面、光照函数,选错域全图作废。
  • 母材质加实例是品种管理标准解:差异进参数,程序只编一份。
  • 静态开关编译期剪枝,普通参数压零不省账,备用节点该删就删。

高频问答

问:材质实例太多会不会变慢?
实例数量本身几乎不计成本——每个实例只是一份常量参数。慢的是实例背后的母材质着色程序复杂度。所以优化方向是"合并母材质、精简图结构",而不是"少建实例":十个实例共享一份简单母材质,比两个实例共享一份臃肿母材质便宜得多。

问:法线贴图强度调到多少合适?
没有标准答案,但有失控信号:强度拉满后表面在斜视角下出现明显"皱纹感"与轮廓错位——法线只影响着色不影响轮廓,轮廓跟着扭说明强度远超物理可信范围。经验上让细节在近景可见、中景收敛,强度值让位给贴图本身的细节密度。

问:材质预览球是黑的多半是什么问题?
按命中率排查:金属度误设为一且无环境反射(黑中带剪影)、法线贴图压缩格式错误(表面发脏或反直觉亮暗)、基础色贴图未接或断链。预览球黑不一定是错,可能只是缺少反射环境,放进场景再看一次再下结论。

表现力与预算的一次权衡示例

同一面老墙,两条路出效果:加一层细节法线加一层污渍遮罩,着色成本涨一档;或把细节烘进一张更大分辨率的颜色贴图,着色不变、显存涨一档。两条路账目不同但观感接近——材质工作的一半其实是选择"在哪里付款"。预算紧张的移动项目倾向后者(填充率比显存更紧张),显存宽裕的高配项目倾向前者。养成"同效不同价"的比较习惯,比背参数表有用。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U