着色阶段

添加平行光

调整一下角度,我这里是45度

几何节点中将光数据传给Shader

平行光向量LightDirWS

平行光颜色

创建合并颜色节点

平行光的颜色需要使用驱动器进行读取

调整类型

指定场景的灯光,获取颜色

其他几个通道同理,这里还需要乘上光照强度

驱动器设置

输出平行光颜色

构建基础光照模型

读取灯光数据进行打组

打组,修改变量名称

读取法线和漫反射偏移

加入贴图,这里贴图RG是法线,B是漫反射偏移

创建LightTex组

添加贴图,调整颜色格式

打组

为基础Shader组添加参数
解析LightTex

这里直接进行打组创建

先进行重映射,采样后映射到-1~1

进行法线强度控制

因为法线的各个向量平方之和是1,由此可以计算出Z分量,这里因为浮点数计算误差和贴图误差等,为了保证X和Y的平方和不超过1使用了Min节点

进行合并给到法线贴图节点,这里需要注意,这里不能使用Normalize归一化,因为Blender的NormalMap节点会进行Normal的重映射进行(x2-1),而之前计算的时候已经映射过了(-1~1),所以需要重新映射回来,就是(x0.5+0.5)重新回到0-1范围

只有身体部分有法线贴图和漫反射偏移,所以进行判断非身体部分直接输出普通法线,上方是漫反射偏移,乘上了系数2,下方是法线输出

计算BaseAttenuation衰减(Lambert)

解析了法线和漫反射偏移,就可以计算兰伯特光照了

BaseAttenuation内部节点 用PiexlNorma点乘光线向量然后加上漫反射偏移DiffuseBais

输出测试

给各个材质进行分别设置Light贴图

光照效果

光照分层着色

ForWardShader新增输入

添加软硬控制,光滑系数

创建新组

对AlbedoSmoothness处理

先乘上1.5倍进行重映射,1-重映射的值获取锐利系数,锐利系数 = 1 - 光滑系数

添加BaseAttenuation并进行重映射

新增组输入

分层

分层公式

对应代码,S1为锐利系数,S0为光滑系数

这里是分为7层: ShadowFade最深阴影 Shadow较浅阴影 ShallowFade中间过渡较深阴影 Shallow中间过渡较浅阴影 SSS次表面部分 Front 明亮区域,接近没有衰减 Forward 最强反射部分,没有衰减

ShadowFade最深阴影

除以锐利系数

Shadow较浅阴影

除以光滑系数

ShallowFade中间过渡较深阴影
Shallow中间过渡较浅阴影
SSS次表面部分
Front 明亮区域,接近没有衰减
Forward 最强反射部分,没有衰减
分别输出

Albedo传入参数

Forward组追加颜色参数输入

Forward组追加DataTex输入

将Albedo组再进行打组处理并添加输入参数

对各分层进行颜色混合

阴影颜色根基深度进行提亮

打组

在进行打组创建NormalizeByAverageColor组,对颜色进行归一化,效果上,因为平均颜色的值小于1,这里会对颜色进行提亮

打组,对深度和颜色进行混合,这里乘上0.43725,表示在0.43725m内时颜色会增亮,而相机远离时,变成原本的亮度

添加参数,对shadowColor和ShallowColor进行划分成两个亮度,对应就是ShadowFade和Shadow,ShallowFade和Shallow,然后进行输出

对ShallowFadeTint、ShallowTint设置默认值 PostShadowTint: CDCDCDFF PostShadowFadeTint: CDCDCDFF PostShallowTint: E6E6E6 PostShallowFadeTint: E6E6E6 对于非阴影部分,不需要进行颜色亮度调整,直接输入输出即可,新增输入输出

默认值调整 PostSssTint: FFF1E6 PostFrontTint:FFFFFF PostForwardTint:FFFFFF 返回上层,当前节点为

混合各层颜色

乘法进行混合颜色后,将阴影部分进行相加,这里需要乘上灯光的颜色,所以现在对灯光进行处理

追加灯光颜色输入

阴影部分混合的灯光颜色需要压暗,这里是对灯光颜色处理,处理过后直接进行乘法混合

阴影部分混合处理后的灯光颜色

非阴影部分直接进行混合即可

传入参数

返回上层对ShadowColor和ShallowColor以及灯光颜色进行传入

最上层节点调整,AlbedoSmoothness默认为0.1,设置传入DataTex

暴露阴影颜色值给外部,方便调整

暂时保持默认值就行

颜色参数设置

面部 ShadowColor1 :DDBFBF ShallowColor1 :EEDDDD 头发,饰品 ShallowColor1 :EEDDDD ShallowColor2 :A7A3B9 ShallowColor3 :DAE3E8 ShallowColor4 :E6BEBD ShallowColor5 :E6D4DF

ShadowColor1 : DDBFBF ShadowColor2 : 66637B ShadowColor3 : ABB4CE ShadowColor4 : B48B8C ShadowColor5 : CCACBA 服装 ShallowColor1 :B9BFD1 ShallowColor2 :DFE8ED ShallowColor3 :E6CEBF ShallowColor4 :9C94BC ShallowColor5 :93A0B2

ShadowColor1 : 8685AB ShadowColor2 : BAC3E0 ShadowColor3 : CCA586 ShadowColor4 : 8780AG ShadowColor5 : 637082 面部参数调整 ShadowColor1 :DDBFBF ShallowColor1 :EEDDDD

当前预览

乘上基础颜色