Unity游戏基础-7(简单的水面Shader Graph,案例1)
本教程开始分享教学内容:Unity游戏基础,部分内容会包括Blender建模基础,Shader基础,动画基础等等,教程面向:建模、技术美术、游戏前端、游戏后端基础,适合美术与设计(数媒、环设、动画、产设、视传、绘画)专业、计算机(计算机科学与技术、软件工程、数媒)的同学学习。
本章面向Universal Render Pipeline(通用渲染管线)项目,内置渲染管线请转移URP项目,如果使用高清渲染管线基本原理都差不多,可以参照这个教程做。
何为Shader?
Shader是运行在GPU上的小程序,负责控制计算机图形渲染的各个环节。它就像一位美术老师,指导显卡如何绘制屏幕上的每个像素。主要分为顶点着色器(处理3D模型顶点位置)和片元着色器(计算像素颜色),以及几何着色器等高级功能。通过GLSL等专用语言编写,Shader可实现从简单上色到复杂动态特效(如彩虹渐变、水波动画、光影效果)的各类视觉渲染。现代游戏引擎通过Shader让虚拟世界呈现出逼真材质和炫酷特效,开发者可在Unity等平台用ShaderLab语言快速实现自定义渲染效果。学习Shader需从基础着色器入手,逐步掌握光照模型、纹理映射等核心技术。
——摘自何为Shader:让画面活起来的魔法代码-CSDN博客
大家也可以去看一下这个文章入门一下Shader的形象版
何为Shader Graph
Shader Graph 是一个工具,能够让您直观地构建着色器。您可以在图形框架中创建并连接节点,而不必手写代码。Shader Graph 提供了能反映所作更改的即时反馈,对于不熟悉着色器创建的用户来说非常简单。
——来自Unity手册使用 Shader Graph - Unity 手册
简单来说就像blender的着色器节点一样,blender的节点搞明白了,入手Shader Graph应该不会太难……
如图是blender的节点
如图是Unity的ShaderGraph节点
新建Shader
找一个文件夹专门放Shader Graph,新建,Shader Graph,URP,Lit Shader Graph
初始会给这么一个东西,简单翻译过来就是
Base Color(基础色,也可以接受混合颜色,一个常用的节点是Lerp)、
Normal(法线,即面朝向,本章节的水波纹就是靠法线贴图转换成法线数据来输出给Normal的)、
Metallic就是金属度、
Smoothness就是平滑度很好理解、
Emission就是自发光、
Ambient Occlusion环境遮挡,在后期处理特效会有用处,简单来说就是对阴影部分的影响……
本次需要用到4个输出,还有一个就是Alpha输出,点击Fragment,在Graph Inspector窗口选择graph settings 选项卡
右键Fragment添加Alpha节点
开始编写Shader Graph
和编程相似,Shader Graph也需要输入变量来桥接游戏对象,Unity内置的类型如下
简单认识一下界面
Balckboard是桥接游戏资源的变量,Main Preview是材质预览,最终shader需要托给Material材质才可以适用给游戏对象,因此再次推荐一个写法,把Shader或者Shader Graph新建在Material文件夹里面,把shader托给材质,然后在写完了Shader之后在把Shader换到别的文件夹里面,同时注意文件的命名,在大型项目方便管理
添加节点
右键空白部分,选择Create Node可以搜索节点
制作Shader Graph(水面案例,该Shader Graph制作流程抄自B站BV1wg4y1B7YE)Unity Shader Graph制作水面(海面)_哔哩哔哩_bilibili
BlackBoard内容如下:
Base Color如下
法线部分如下,我对原版的节点进行了优化:
Fragment其他参数如下:
Ctrl+S保存,没有托给材质的可以托给材质,然后把材质的托给物体
接下来开始设置参数,根据场景需要修改,法线贴图部分可以去网上下载(水面法线贴图),注意下Timing是调整水面波纹的间距的。Strength负数的原因是让水面反光更加柔和,如果是正数那么就会有波光粼粼的感觉,参数可以调试!