庄懂的技术美术入门课(美术向)——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

<think>嗯,用户需要了解UE5材质的基础知识或教程。用户引用的几个来源中,[1]讨论了在UE4中集成边缘检测算法的材质教程,[2]是BenCloward材质教程的学习笔记,[3]则涉及UE4.26水系统的新特性。不过用户明确要求UE5材质基础知识,可能需要聚焦在UE5特有的Nanite、Lumen等技术材质系统的改变。用户可能是个刚接触UE5的开发者或技术美术,需要系统性的入门指导。ta特意强调“basicstutorial”,说明需要从最基础的节点使用、材质属性讲起,而不是高级特效实现。虽然引用内容偏重特效(边缘检测、水系统),但用户当前需求更基础,应优先推荐核心概念教程。注意到上次我回复了UE5材质系统的四个核心路径(物理材质、主材质材质实例、材质函数),这次需要更聚焦“教程”这个关键词。官方文档永远是最新最权威的,但epic官方教程往往不够直观,所以必须补充BenCloward等知名作者的视频教程——他的教学以“用ShaderGraph拆解效果原理”著称,特别适合初学者建立直观认知。用户引用[2]里提到的GitHub仓库(Dafenyuyu/Shader_BenCloward)其实是个宝藏资源,但用户似乎没意识到它的价值。这个仓库用ShaderGraph复现了Ben的案例工程,比纯视频更便于实操参考,应该在回复中突出强调。技术要点上必须提三件事:1)UE5新引入的材质层系统(分层材质制作地形时比旧版Blend更高效)2)Lumen对材质反射属性的新要求3)双端兼容问题(移动平台对复杂材质函数的限制)。不过用户当前只需掌握基础,这些进阶点放在“相关扩展”里更合适。</think> 了解UE5材质系统的基础知识,以下是精选的学习路径和核心概念指南: --- ### 一、UE5材质系统核心知识 1. **节点式材质系统** UE5延续UE4的**材质编辑器**(Material Editor),通过连接数学节点(如`Multiply`、`Lerp`)、纹理采样节点和参数节点构建材质逻辑。 **基础结构示例**: ``` [Texture Sample] → [Base Color] [Constant] → [Metallic] [Time Node] → [Rotator] → [Emissive] ``` 2. **物理材质(Physical Materials)** 定义物体表面属性(摩擦力、弹力),用于物理模拟交互,需与材质实例关联。 3. **材质实例(Material Instances)** 基于主材质(Parent Material)创建的可动态调整参数的轻量化实例,避免重新编译。 --- ### 二、官方学习路径 1. **Epic官方教程** - [UE5材质文档](https://docs.unrealengine.com/5.0/en-US/materials-in-unreal-engine/) - **视频教程**:[UE5初学者材质教程](https://www.youtube.com/watch?v=Z9L9l4NcuHg)(官方频道) 2. **必学核心模块** | 功能 | 用途 | 常用节点 | |------------------|------------------------------|-------------------------| | **基础属性** | 颜色、金属度、粗糙度 | `TextureSample`, `Constant` | | **法线贴图** | 表面凹凸细节 | `Normalize`, `FlattenNormal`| | **UV动画** | 流动纹理、旋转效果 | `Panner`, `Rotator` | | **蒙版混合** | 材质混合(如草地+泥土) | `Layer Blend`, `HeightLerp` | --- ### 三、推荐第三方教程(附实践案例) 1. **Ben Cloward高级材质教程** - [官网资源](https://www.bencloward.com/tutorials) - **案例实践**:从水材质到动态冰雪覆盖效果 ```glsl // 冰雪覆盖伪代码 SnowMask = WorldNormal.Z > 0.7 ? 1:0; FinalColor = Lerp(RockTexture, SnowTexture, SnowMask); ``` 2. **GitHub实操项目参考** - [Dafenyuyu/Shader_BenCloward](https://github.com/Dafenyuyu/Shader_BenCloward):复刻Ben的ShaderGraph工程 --- ### 四、UE5新技术整合 1. **Nanite与材质** - 无需LOD材质优化,但需注意**虚拟纹理(Virtual Textures)** 的使用[^3]。 2. **Lumen全局光照** - 材质**反射率**和**粗糙度**的物理准确性显著影响光照效果。 --- ### 五、调试技巧 - **材质统计面板**:检查Shader复杂度(避免指令数超标) - **Preview视窗**:切换UV/光照等预览模式(快捷键:`E`+鼠标拖动旋转) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值