Unity3D Shader之路 写Shader前必须要知道的事情3 ShaderForge的简单使用

2023-11-02

版本:unity 5.4.1  语言:Unity Shader

Shader Forge版本:1.32

 

总起:

在具体介绍Shader之前准备再写一篇有关于ShaderForge的,虽然我们可能使用代码来直接编写Shader,但拥有ShaderForge这样的可视化编辑工具,简直如虎添翼,方便至极。

 

想要有什么Shader的想法,直接用ShaderForge来编写,得到shader文件之后,有不满意的地方再改动改动,我们的shader就成型了。也可以参考参考它里面的代码,能让自己对Shader的理解更进一层。

 

界面说明:

Shader Forge添加进Unity工程中后,在Unity的Window菜单下就有了Shader Forge的菜单,点击便能打开Shader Forge的编写界面了。



在这边建议一下,Unity在使用时最好使用5.x的版本,因为只有在5以上的版本Unity才支持PBR,也就是Physically Based Rendering,基于物理的渲染。3A级大作大多都会使用这种光照模型的渲染方式提供照片级的画面,Unreal的画面大家有目共睹,正是使用的这样的方式。(不过最近玩的黑魂3,貌似并没有使用,只是打了很多的灯光,如果有这方面的文章,希望大家分享给我一下)

 

两个按钮:New Shader、Load Shader。不用说了吧,一个创建Shader、一个读取Shader。大家最好不要用自己写的Shader读取到Shader Forge中,Shader Forge会做很多处理,可能会改变Shader效果。

 

创建界面(4.x版本可能就没有下面的PBR选项了):



我们来创建一个Lit(Basic)的Shader,创建之后的效果是这样的:



♦ 首先来讲一下Shader Forge标签下,最上面的三个按钮:

 

Return to menu:返回回创建Shader的界面;

 

Setting:对Shader Forge的创建界面进行设置,最好勾选Show node browser panel,显示创建节点的窗口;

 

Compile shader:编译Shader,在改变Shader的一些节点之后,需要点击该按钮进行编译,然后在下面的预览窗口中才会显示效果,当然可以勾选Auto,让它在改变Shader后自动进行编译。

 

♦ 接下来是预览窗口的菜单:

 

sf_sphere:预览窗口中使用的模型,可以在自己的工程中随意选取想要的模型;

 

Skybox:预览窗口模型的背景是否使用天空盒(只有在当前项目场景中有天空盒才能使用)。不行的话,可以使用前面的颜色改变背景的颜色;

 

Rotate:是否自动旋转,勾选的话模型会自动旋转,嗯,没毛病。

 

♦ 最后是属性窗口:

 

Shader Setting:Shader的一个总体设置,Path Shader的名称路径,Fallback失败时的回调啊,LOD值,Draw call batching 是否启用批处理(批处理会导致顶点无法操作,在使用顶点动画时一定要关闭),Inspector preview mode 针对的模式2D还是3D的呢,Target renderers渲染的平台;

 

Properties:用户在使用该Shader时能看到的属性;

 

Lighting:使用的光照模型,不详细说,感觉说这个展开来说可以写一本书了。需要知道的是Forward是前向渲染适用于手机等移动平台,Deferred延时渲染适用于电脑平台,特别是点光源多的情况下,延时渲染能提升处理性能。光照模型中,Blinn-Phong是最经典的半兰伯特高光光照模型,逻辑其实比较简单,到时候我们也会实现,PBL就是PBR的光照模型,目标3A级请往这边看;

 

Geometry:几何,大多数选项我也不大清楚,哈哈。不过想要模型双面显示,请将Face Culling设置为Double Sided;

 

Blend:混合模式,可以设置该物体是透明(Transparent)的,还是实体(Opaque),想要透明效果的话选择Alpha Blended,然后你会发现调整编辑窗口的Color的Alpha值没有效果。嗯,看到Color节点最右边的A了吗,把它连到Main节点下的Opacity就可以了,再试试看吧。

 

操作说明:

    我们来看看我们的编辑窗口。



在编辑窗口中创建各式各样的节点,然后连接到Main上面,就能输出自己想要的效果,接下来我来说说主要的一些操作。

 

连接,刚刚说透明效果的时候应该已经试过了吧,点中Color节点上的A,不要松开鼠标左键,将线拖到Main上的Opacity标签上;

 

断开连接,那我这条连接不想要了怎么办?键盘上按住Alt,按住鼠标右键,可以拖出一条虚线,在松开右键时,虚线碰到的连接会被删除;

 

创建节点,直接点击右键会出现创建节点的菜单,或者使用我们一开始说的创建窗口,也可以按下属性的开头字母,比如想要创建一个Color,按下键盘上的C,不要松开,用鼠标左键去选区Color就可以了,如下图:



拖动编辑界面,按住鼠标左键即可拖动;

 

选中多数的节点,按住Alt并按住鼠标左键托出的方框即可选中;

 

删除节点,选中节点后,按下delete。

 

好了,上面的基本操作就能满足使用的需求了,顺便值得一提的是,Project标签中的资源(比如图片),可以直接拖动到节点中初始化。

 

总结:

ShaderForge使用方便,便于调试,大家试试就能掌握它的使用方法,但是如果没有Shader的基础知识,想要实现理想的效果还是困难重重,比如实现透明效果一定要在Blend中调整Shader的设置。所以在学习Shader的时候各种理论基础一定要打结实,这样在来看看ShaderForge的各种操作,心中就游刃有余。

 

最后把自己使用的Shader Forge 1.32提供给大家:http://download.csdn.net/detail/u012632851/9829036

 

Unity 2017版都已经有测试版了,引擎越研究越感觉到自己知识的不足,其实有时候也会有疑问,自己学的这些东西到底有没有有用,现在的工作只要会Unity的一些简单操作就可以了,但是记起以前老师说过的一句话:我不知道努力能不能成功,但不努力一定不会成功。以此激励自己,望自己过几年后能成为团队的技术核心!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity3D Shader之路 写Shader前必须要知道的事情3 ShaderForge的简单使用 的相关文章

  • Multisim14安装教程(下载链接在文末)

    目录 安装流程 1 选择下载的安装包 解压 2 双击运行EXE安装程序 3 点击确定 4 点击Unzip 5 点击确定 6 点击Install Ni Circuit Design Suite 14 0 7 填写任意信息 点击Next 8 点
  • 小程序的 css 中使用线性渐变色的 border 有坑

    坑 IOS 系统模拟查看 后 不显示甚至混乱 IOS 不支持线性渐变色的border 而且设置渐变边框后无法加圆角 解决 div 使用背景色渐变 可用一个有宽高的 空 div 模拟一个边框线条 去替代 border 实现渐变 并且可以加圆角
  • go get更换国内镜像源

    在VSCode配置golang开发环境时 我们一般使用golang提供的go插件 而这个插件会使用go get命令去从golang org下载对应的包 因为众所周知的原因 这个过程经常会失败 因此必须要为go get更换国内镜像源 由于历史
  • 前端数字显示汉字(字典)

    第一种IF
  • qt delete使用

    在C 中学习过程中 我们都知道 delete 和 new 必须 配对使用 一 一对应 delete少了 则内存泄露 多了麻烦更大 Qt作为C 的库 显然是不会违背C 的前述原则的 可是 在Qt中 我们很多时候都疯狂地用new 却很少用del

随机推荐

  • C语言杨辉三角

    前言 杨辉三角 是二项式系数在三角形中的一种几何排列 在欧洲 这个表叫做帕斯卡三角形 帕斯卡 1623 1662 是在1654年发现这一规律的 比杨辉要迟393年 比贾宪迟600年 杨辉三角是中国古代数学的杰出研究成果之一 它把二项式系数图
  • 05 python 简单猜拳;循环while

    随机数 random 导入randonm库 randint产生一个范围的随机数 import random player int input 输出0 拳 1 剪 2 布 com player random randint 0 2 if pl
  • 使用jspdf生成pdf时,html2canvas循环浏览器卡顿或卡死解决方案:关于这个问题,我的解决方案是不要用html2canvas

    循环卡死当然是有原因的 首先jspdf对canvas也是有最大长度限制的 太长了就转不了 最后还是用wkhtmltopdf这个组件 先将页面上的canvas都转成图片 然后再循环将html字符串传到后台使用wkhtmltopdf这个组件生成
  • linux文件系统命令(6)---touch和mkdir

    一 目的 本文将介绍linux下新建文件或文件夹 删除文件或文件夹命令 touch能够新建文件 mkdir用来新建文件夹 rm用来删除文件或文件夹 本文将选取ubuntu14 04发行版做为描写叙述基础 二 touch命令 linux下新建
  • 关于Python爬虫接单的方法经验分享,实现经济独立

    在现如今这个数据发展的时代中 我想很多人工基本工资只能说是维持自己基本的生活开销的 要是说想要自己家里人生活过得好一些的话 我想很多人是很难这样做到的 我想把我的一些接单经验分享给大家 毕竟来说现在大家的生活都不容易 大家能帮些是一些 能赚
  • vue页面内监听路由变化

    beforeRouteEnter to from next 在渲染该组件的对应路由被 confirm 前调用 不 能 获取组件实例 this 因为当钩子执行前 组件实例还没被创建 beforeRouteUpdate to from next
  • 【ARM】简单移植adb与adbd过程记录

    1 问题 遇到一个比较苛刻的客户 测试程序adb push到开发板时间格式不一样 这都要算软件bug 没办法 只能想办法解决 后续在其他平台验证不会出现时间格式不一致的问题 所以把目标锁定在adbd版本的问题 于是打算重新移植个最新版本的a
  • 【OLED驱动函数详解】

    OLED驱动函数详解 前提 通讯方式 地址排列 寻址方式 正文 初始化 一些使用命令的函数 显示一个字符 在指定位置显示一个字符串 字符串居左显示 字符串居右显示 字符串居中显示 在指定位置显示一个中文字符 在指定区域显示图片 在指定位置显
  • 什么是无线路由器网络协议?

    上一篇我们介绍了什么是网络协议转换器 相信看过的朋友对此都有了一定的认知 可能有些朋友在使用协议转换器的时候用的是无线路由器网络 那么 什么是无线路由器网络协议呢 接下来飞畅科技的小编就来为大家详细介绍下无线路由器网络协议是什么 感兴趣的朋
  • ajax下载文件无响应,xml格式解析不正确

    今天朋友在做文件下载时遇到了一个问题 整个请求后台没有报一点错 而且请求也进入了响应Controller 但是页面就是没有任何响应 让我帮看下文件下载代码是否有问题 所有下载文件代码看了一遍确实没发现任何问题 我百思不得其解 突然想到会不会
  • CentOS7.x 安装RabbitMQ后-自定义配置文件

    承接CentOS7 x 安装RabbitMQ 3 7 x 背景 启动rabbitmq 然后登陆后 可以看到刚刚安装完成的rabbitmq使用的是默认的配置 还没有自定义的配置文件 1 配置文件位置 利用下面的命令查询rabbitmq配置文件
  • SaltStack常用模块

    SaltStack常用模块 SaltStack模块介绍 Module是日常使用SaltStack接触最多的一个组件 其用于管理对象操作 这也是SaltStack通过Push的方式进行管理的入口 比如我们日常简单的执行命令 查看包安装情况 查
  • vue vue-router实现路由拦截功能

    vue vue router实现路由拦截功能 1 目录结构 2 设置路由拦截 路由配置如下 在这里自定义了一个对象的参数meta authRequired true 来标记哪些路由是需要登录验证的 导航被触发的时候只要判断是否目标路由中是否
  • 【AI】Diffusion Models

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 两种思路解决线程服务死循环

    背景 系统突然error飚高 不停Full GC 最后发现是因为调用的外部jar包中方法触发bug导致死循环 不断产生新对象 导致内存大量占用无法释放 最终JVM内存回收机制崩溃 解决思路 服务一旦进入死循环 对应线程一直处于running
  • (已解决)STM32L151使用串口发送数据第一字节为FE问题!

    已解决 STM32L151使用串口发送数据第一字节为FE问题 参考文章 1 已解决 STM32L151使用串口发送数据第一字节为FE问题 2 https www cnblogs com Irvingcode p 11603583 html
  • 【机器学习】KS值

    KS检验 风控角度 分类模型评判指标 KS曲线与KS值 从统计角度 我们知道KS是分析两组数据分布是否相同的检验指标 在金融领域中 我们的y值和预测得到的违约概率刚好是两个分布未知的两个分布 好的信用风控模型一般从准确性 稳定性和可解释性来
  • Spring创建Bean的全过程(一)

    Spring测试环境搭建 Spring模块概览 Spring中八大模块 黑色表示该模块的jar包 也就是组件 例如我们想要使用IOC容器 也就是绿色的CoreContainer 我们需要导入Beans Core Context SpEL s
  • Python+微信小程序开发实战课

    本套课程Python结合微信小程序开发实战 由前汽车之家架构师武沛齐老师主讲 共分为18天的课程 文件大小共计9G 课程除了讲解微信小程序开发的基础知识点外 更多的是示例演示 让大家知道如何灵活运用这些知识点 真正学到能够运用到具体开发工作
  • Unity3D Shader之路 写Shader前必须要知道的事情3 ShaderForge的简单使用

    版本 unity 5 4 1 语言 Unity Shader Shader Forge版本 1 32 总起 在具体介绍Shader之前准备再写一篇有关于ShaderForge的 虽然我们可能使用代码来直接编写Shader 但拥有Shader