一、基础材质
1-1 基础贴图与色彩校正
对于角色的各个部位,使用的都是一个最基础的材质预设:albedo贴图连接到漫射和自发光节点;同时为了应付部分半透明材质,还需要定义一个opacity节点连接到不透明度和不透明蒙版节点上。
但是贴图的颜色不一定符合引擎中的色彩空间,所以需要进行曲线校色。UE中进行曲线校色的方法是 创建一个CurveLinearColor得到一张Ramp图,再创建一个曲线图谱来归纳所有的曲线Ramp图,最后在材质蓝图中创建CurveAtlasRowParameter节点:
接下来就可以自定义曲线了,我们选择的曲线形状类似于smoothstep:
1-2 消除ToneMap
此外,UE中对于pbr场景会自动开启色调映射ToneMapping,但是对于我们的半pbr渲染需要关闭ToneMapping功能,这一步需要插入一段Custom节点(hlsl代码)来实现。(Custom节点中需要写的是函数体内的代码,也就是说节点内的内容 默认前面会有一个函数头+{,末尾有一个})
首先我们创建一个Dummy节点,这个节点只是返回了一个1,但它有个额外的作用是 把后续可能会涉及到的shader头文件给包含进来(例如"/Engine/Private/TonemapCommon.ush"就是后续做逆ToneMap所需要的头文件)
return 1;
}
//#include "Random.ush"
//#include "Common.ush"
//#include "PostProcessCommon.ush"
//#include "TonemapCommon.ush"
#include "/Engine/Private/TonemapCommon.ush"
void aaaaa(){
接下来要连接一个逆向ToneMap的节点(用来抵消引擎自动做了的ToneMap操作):
return FilmToneMapInverse(col);
1-3 Lambert阴影校正
最后通过lambert光照模型来完成光照模拟,不过因为我们这里是半pbr半npr风格,所以需要额外一个ramp曲线来将光影二分化(将大部分的柔化过渡压缩掉):
Comments | NOTHING