个人学习笔记——庄懂的技术美术入门课(美术向)12


该课是在13课之后上的,所以可以先去回顾第13课

1 作业示范

没有标准答案,按照过程做完shader就过关了
在这里插入图片描述

  • 第一个,环境光影响比较充裕,直接光比较弱,整体通透一些
    第二个,体积效果扎实一些,直接光比较强,环境光比较弱
    第三个,轮廓光比较强,可能轮廓光没有乘以法线的绿通道

在这里插入图片描述

  • 右下角菲涅尔过强,没有做法线绿通道顶底关系的相乘
  • 金属感欠佳

在这里插入图片描述
在这里插入图片描述

2 答疑

在这里插入图片描述

  • 第一条补充:带透贴的物体要计算投影,需要ShadowCastPass

3 作业示范思路

首先进入作业网站,从大纲入手,告诉我们有哪些贴图,mask,遮罩
在这里插入图片描述
在这里插入图片描述

  • cubemap,wrap(ramptex)这些是可以共用的
    右边从依次介绍
    color是基础颜色;
    MetalnessMask是金属度遮罩,哪里是金属,哪里不是金属;
    Normal是法线
    看起来像AO又和AO不太一样的RimMask;
    自发光贴图纯黑,不发光;
    高光次幂;
    高光mask,理解为高光强度;
    TintByBaseMask,高光颜色混合basecolor的强度遮罩,越偏白越不混合,越偏黑越混合;
    最后一张透贴,黑透白不透;

在这里插入图片描述

  • 资源优化

在这里插入图片描述

4 作业实现·准备

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5 作业实现·光照模型

以上完成了
面板上贴图的槽,输入参数
输入输出结构,顶点shader,该要拿的信息都拿到了
像素shader里向量准备好了,三个中间量拿到,纹理都进行了采样和提取

接下来就是光照模型,这个是带点物理又不是纯物理
在这里插入图片描述

  • 这一步把漫反射和镜面反射颜色拿到
    同学可能会考虑,BaseColor不就是漫反射颜色吗?不就是diffuse吗?
    BaseColor ≠ diffuse
    两者在非金属的部分没有区别
    但是金属的部分,diffuse的金属部分是很黑的,BaseColor金属部分还是亮的
    所以我们要做的,就是把BaseColor通过金属度压暗,得到diffuse
  • 镜面反射的部分也是换算出来,不过没有这么彻底的物理
    材料里是用高光染色的遮罩去插值,更加人为控制,金属去染色,非金属不去染色
    可以看到,装备上虽然是黑白灰,但是皮肤给了个蓝色
    如果是较真的PBR,对于白光来说,非金属的反光肯定是黑白灰,金属是有颜色

在这里插入图片描述

  • 菲涅尔信息的提取
    我们一开始做资源优化的时候,把这三张ramptex合成一张,分别存到RGB通道里了,现在一次采出来
  • 回顾一下菲涅尔,非金属有菲涅尔,金属度越高越没有菲涅尔的现象
    所以拿到菲涅尔,第一件事是用金属度去插值,金属度越高越0(虽然还是很不理论,经验性的物理)
  • 看到图里武器的菲涅尔效果就比身上弱

在这里插入图片描述

  • 食人魔身上的diffuseRampTex不是必须的,这里只有身上的肉有
    实际做项目的话,会做一个开关,但是这里还没学怎么写,就先过

在这里插入图片描述

  • specPow是美术画的那个高光图,黑白图不足以来控制高光,所以又乘以_SpecPow

在这里插入图片描述

  • 直接用单色漫反射了

在这里插入图片描述

  • 结合菲涅尔和金属度两者做镜面

在这里插入图片描述

  • 轮廓光颜色 × 菲涅尔轮廓光部分 × 轮廓光强度的mask × 法线绿通道部分 × 面板定义的强度

在这里插入图片描述
在这里插入图片描述

6 作业实现·细节

在这里插入图片描述
在这里插入图片描述

  • 这个fallback,需要_Color参数,一定要声明,不声明不起作用
    参数如果是给另外的pass用的话,就不需要和输入一一对应

在这里插入图片描述

  • 因为只有披风暂时会被看出来背面剔除,所以按道理这个参数要放到面板上,手动指定要不要剔除背面

在这里插入图片描述

7 开源Shader

在这里插入图片描述
在这里插入图片描述
(由衷感谢庄懂老师,对一个角色的示范讲的好详细Orz)

猜你喜欢

转载自blog.csdn.net/weixin_43803133/article/details/112467939