庄懂的技术美术入门课(美术向)——03~04学习笔记

目录

Lecture 03

1) 回顾渲染流程

2) 关联IDE

3) Shader Code

a) 简单认识Shader Code

b) Hello World

c) Shader Code实现Lambert

4) 节点组

5) 作业

Lecture 04

1) 作业点评

2) 作业

a) HalfLambert

b) SSSLut

c) 批改

3) 预积分皮肤

4) TA专业向


Lecture 03

1) 回顾渲染流程

首先是对第一节渲染流程从美术素描的角度回顾

2) 关联IDE

通过下面步骤将IDE关联为VS Code

3) Shader Code

我们先在Shader Forge中将Shader模板调成最简单的形式,便于我们学习Shader代码

a) 简单认识Shader Code

打开Shader Code,老师已经帮我们分类好了,我们需要编写修改的地方只有绿色框内的部分,绿色框部分也进行了分类,具体解释如下:

  1. Shader路径名
  2. 供美术调节的材质面板参数
  3. 输入结构,其中有一个float4类型的成员变量
  4. 输出结构,同样有一个float4类型的成员变量
  5. 作为顶点Shader的方法,返回值为VertexOutPut类型,这里的操作是将输入顶点变换到裁剪空间中再输出
  6. 作为像素Shader的方法,返回值为float4类型的COLOR,这里的操作是将一个float3类型的变量输出为片段的颜色

b) Hello World

c) Shader Code实现Lambert

  • 输入结构中增加一个float4 / float3类型的成员变量normal获取模型法线信息
  • 输出结构中增加一个float4 / float3类型的成员变量nDirWS放在TEXCOORD0的位置用于储存世界空间法线信息
  • 顶点Shader中将法线变换到世界空间里
  • 片段Shader中获取法线信息和光照信息(光照位置的齐次分量为0时表示光照为平行光,此时其他分量表示平行光的方向;齐次分量为1时表示点光源或聚光灯,其他分量表示光源的位置),二者做点积后,取大于零的部分作为颜色输出

与Shader Forge转换的代码对比,自己编写的代码更加优质可读

4) 节点组

老师这里用一个例子展示了常用的参数节点,还构造了fake light(伪造光),即在场景中不存在光照的情况下,用一个三维向量,一个颜色,一个强度值伪造出一个光照效果

5) 作业


Lecture 04

1) 作业点评

一组主要是右下角的小怪物突出,使用菲涅尔做出了边缘光的效果,可以通过取世界坐标法线的绿通道,即法线的Y方向,与菲涅尔效果相乘,得到只有朝上的部分有菲涅尔效果,这样会更加真实

三组左上粉红色的是进行了风格化,左下倒数第二个用了Matcap,右上角皮卡丘使用了双层材质,内层为SSS,外层为油漆,是比较常用的里外两层的Shader,右下角是作业的唯一正解SSS效果

2) 作业

a) HalfLambert

b) SSSLut

百度:SSS材质是 Sub-Surface-Scattering的简写,指的是光线在物体内部的色散而呈现的半透明效果,最常见的就是我们的皮肤、还有蜡烛。

SSS的色散效果一般是先出现在明暗部分的分界线处,再向外扩散开,这次作业的实现方法是:

  • 修改RampTex,使其明暗分界线左侧偏红,右侧偏蓝,并且两者由下至上渐变,实现散射的效果(WrapMode同样为Clamp)
  • 将HalfLambert作为U坐标,SSS强度作为V坐标去采样,完成作业

c) 批改

首先是第一部分,将一个强度可调节的颜色的三个通道分别取出和Lambert结果进行step计算,相当于对加给Lambert的颜色的三个通道分别进行遮罩,然后再合并输出

三个通道分别和Lambert进行step计算,若全为0,则输出黑色,若全为1,则输出白色,当只有某个通道为1 时,单独输出该颜色,这一步的实质是0和1的排列组合,这也是出现分层效果的原因

下面将刚刚得到的输出由0->1Remap到1->0(这一节点可以由1减去输入代替,消耗更少),这一步是进行了一个取反的操作,取反后我们就可以单独对暗部进行处理了

将取反结果与一个颜色相乘,相当于将该颜色作为暗部颜色

下面再对亮部颜色进行一个处理,并利用屏幕UV结合深度给亮部加上纹理,最后亮部和暗部颜色组合即可

下面一个作业:

首先从光照入手,一个突出点是使用Normal Direction与Light Direction和Half Direction进行点乘,后者是用于做高光,后面上课应该会说

下面这部分先取得UV坐标,将它与不同的数相乘进行缩放,再对同一个Texture进行采样,就可以得到两张不同的纹理,将这两个纹理相乘就得到了一个双层叠加的纹理,再将纹理与一个颜色进行插值

将上面得到的结果与Lambert进行Blend(Overlay),再四舍五入,并分别与一个亮部颜色和一个暗部颜色进行插值,这一部分主要是为亮部和暗部更换颜色

这一部分将上面提到的高光与纹理进行Blend,四舍五入后将上一部分的结果与一个颜色进行插值,这一部分的作用是更改高光的颜色

最后总览:

3) 预积分皮肤

4) TA专业向


课程传送门03:庄懂的技术美术入门课(美术向)-直播录屏-第3课_哔哩哔哩_bilibili

课程传送门04:庄懂的技术美术入门课(美术向)-直播录屏-第4课_哔哩哔哩_bilibili

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值