04_着色模型构建

着色阶段

添加平行光

调整一下角度,我这里是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

当前预览

乘上基础颜色


Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • URP - RendererFeature :ScreenSpaceOutline
  • 平滑法线处理 - 八面体映射
  • Lv.3 Unity主线:一个简单的PBRShader
  • 理论支线:直接光漫反射与GGX高光的混合问题
  • 理论支线:PBR - 基于图像的照明( image based lighting-IBL)
  • # #