07_增加MatCap

添加MatCap

贴图

这里贴图的B通道是MatCap的Mask 这里有3张MatCap,分别对应是高光,金属,丝袜

获取MatCap的Mask

采样matCap的固定公式,将法线转换到观察空间,取XY作为UV进行采样,这里UE和Unity不一样Y轴是反的所以需要翻转,因为原本法线是-1~1,需要重映射到0~1

变量准备

折射相关

折射开关和折射的深度系数,这里开关是直接用float去控制,也可以直接用开关 直接用开关就是这样 开启折射的MatCapUV偏移,这里是合并成4维在输出

混合系数相关

Matcap颜色的染色,颜色混合强度和Alpha混合强度

计算采样UV

这里并非是真的计算折射,其实只是对MatCap采样进行缩放和平移调整。 获取各个区域不同的UV和Depth参数进行混合,调整matCapUV MatCapRefractUVOffset.xy * input.uv是表示物体UV方向的偏移(为了保证效果贴合物体本身UV),但为了整体控制偏移也使用了+ MatCapRefractUVOffset.zw MatCapRefract使用Step进行调整保证只有0或1的输出,没有折射就输出基本的MatcapUV,反之输出偏移的UV 采样获得MatCap颜色

混和模式

混合模式参数,0:乘法混合,1:加法混合,2:叠加混合 乘法混合(Multiply Alpha Blend) 这里先计算Alpha的值,blendColor就是MatCap采样颜色乘上基础混合颜色和Matcap颜色总强度,最后是使用alpha进行插值 从效果来说,乘法会使颜色变暗,而使用alpha混合,输出部分就全部是Matcap颜色或全是基础颜色,两者是不会有重叠的 加法混合(Additive Blend) 同样先计算Alpha,几个混合模式中Alpha是一样的。这里是先是使用乘法混合matcap颜色和相关系数,最后是加法混合,使用原本颜色加上matcap颜色 效果来说就,在最后一步加法混合时,原颜色并没有剔除掉Alpha中部分,所以在alpha区域两个颜色相加就会变亮 叠加混合(Overlay Blend) 公式一:对比度调整 公式二:叠加混合 先对matcap的blendColor进行处理,-0.5就是原本颜色范围变成-0.5~0.5以0.5为中心环绕,这时这个值作为一个基数在乘上颜色强度就得到了一个降低暗部增强亮部的系数,最后加上原本的matcapColor,相当于以matcapColor增强对比度 为了防止前面的颜色对比度过高失真所以使用一个中性灰色0.5进行平滑 以0.5为边界用来区分高亮区域和阴影区域,高于0.5就增强,低于0.5就削弱,效果来可以理解为增加对比度

面板matcap参数调整

饰品手臂部分

MatCapTintColor5:E0C8BF 第5个槽位是丝袜的材质,所以进行染色和开启反射,这里取消他的偏移,使它不按照物体UV进行偏移反射

衣服身体部分

第5个槽的Matcap不生效是正常的,原本是对应的裙摆,但mask里没有。 颜色MatCapTintColor2:DBE4F8,MatCapTintColor5:D9E6EC

当前效果


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)
  • # #