Unity2018新功能抢鲜

2023-11-09

本文首发于“洪流学堂”微信公众号。
洪流学堂,让你学Unity快人几步

洪流学堂公众号回复节点,获取ShaderGraph节点详解PDF文件(带目录)。

Shader一直是Unity开发者的一个难关,涉及到数学、图形学、shader语法等多个难题。不过,ShaderGraph来拯救你了!Unity2018的一个重磅功能是ShaderGraph,通过可视化界面拖拽就可以实现着色器的创建和编辑。

shadergraph可视化界面

配置使用ShaderGraph

目前最新版本Unity(2019.3)中的Shader Graph正式版支持URP(原LWRP)和HDRP,自定义的pipeline需要自行实现一些节点。

在Unity 2018后,Unity采用了PackageManager来管理Unity的众多新功能,包括Shader shader包和Lightweight Render Pipeline包。

1、下载最新的Unity(建议2019.1及以上版本),建议通过UnityHub安装,下载地址是:
MAC:https://public-cdn.cloud.unity3d.com/hub/prod/UnityHubSetup.dmg
Windows:https://public-cdn.cloud.unity3d.com/hub/prod/UnityHubSetup.exe

2、安装Lightweight Render Pipeline和ShaderGraph包。

在新工程中使用ShaderGraph

如果是新建工程,在新建工程时选择Universal Project Template或者Hight-Definition RP模板,工程中会自动包含ShaderGraph及其依赖的功能包。

URP和Hight-Definition RP是Unity新加入的两种可编程渲染管线,目前我们不用过多了解,知道如何使用即可。主要区别是:

  • URP适用于所有平台
  • Hight-Definition RP适用于PC或游戏主机等计算性能好的平台,对画质要求很高的画选这个,目前基本不支持移动平台

在已有工程中使用ShaderGraph

1、在已有工程中使用ShaderGraph需要手动安装安装Render Pipeline和ShaderGraph相关的包。

有两种方式:
1)在菜单栏Window > Package Manager打开Packages窗口。需要安装Shadergraph包和Universal RP包(2019.3之前叫Lightweight RP)。

2)通过手动设置Unity工程下Packages/manifest.json文件

manifest.json

目前通过Package Manager只能下载最新版本的包,而通过manifest文件可以设置使用任意版本的包。如果有时候新版本的包和Unity版本不兼容的话,可以通过manifest文件回退到之前的旧版本。

【常见问题1】Package Manager界面左下角一直在Loading怎么办?

这是由于国内的网络原因,通常切换网络即可解决。比如使用宽带无法加载出来时,可以尝试切换到4G/5G手机热点,如果再不行可以尝试翻墙。

大智这边切换到联通4G热点是可以刷新出来的。

【常见问题2】已有工程切换到URP/HDRP后材质都变成洋红色怎么办?

在菜单栏Edit > Render Pipeline > Universal Render Pipeline > Upgrade ...可自动更新工程中的材质。但是只能更新Unity自带的Shader,自定义Shader需要自己修改哦。

2、创建设置SRP(可编程渲染管线)

1)菜单栏Assets > Create > Rendering>Universal Pipeline Asset,会创建出来一个文件,这是渲染管线的配置文件。

2)在菜单栏 Edit > Project Settings > Graphics中设置刚才的SRP文件

经过这些设置,现在就可以开始使用ShaderGraph了!

创建ShaderGraph文件

通过菜单栏 Create > Shader > *** Graph 可以创建ShaderGraph文件,会在Project创建一个graph文件。

PBR Graph PBR图
Sub Graph 子图,用于创建一些可复用的节点
Unlit Graph 不受光照的图

ShaderGraph窗口

我们先创建一个PBRGraph来看一看。双击graph文件即可打开ShaderGraph窗口。

ShaderGraph的图是以节点和连线组成的,默认创建出来会有一个Master Node(主节点)。你可以通过把其他节点连接到Master Node来创造你想要的效果。

编辑节点的属性

如下图所示,你可以通过编辑默认的数值快速改变物体的表面属性。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0Swsk3eE-1581416141550)(https://upload-images.jianshu.io/upload_images/78733-86eb5a0497e63c9a.gif?imageMogr2/auto-orient/strip)]

添加节点

添加纹理和其他复杂的交互操作,只要右键点击并选择“Create Node”。

创建节点

连接节点

通过拖拽对应的值即可创建连线。

创建输入变量

一个shader当然必不可少要有输入的变量了,这在ShaderGraph中也很简单。

创建输入变量

使用输入变量

你可以给输入变量设置一个默认值,方便调试。

给输入变量设置默认值

在Graph中使用这个变量也很简单,只需要将变量拖入图中,和其他节点创建连线即可。

使用输入变量

自定义预览模型

ShaderGraph右下角有一个预览窗口,可以选择内置的5种和自定义的模型来更好的预览Shader的效果。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yxJwC8v9-1581416141558)(https://upload-images.jianshu.io/upload_images/78733-694f13f7d8777903.gif?imageMogr2/auto-orient/strip)]

材质球使用Shader

Shader调好以后,当然最最终要应用到材质球上。材质球的Shader选择菜单中会多出一个graphs的类别,下面就是你创建的ShaderGraph对应的shader。

总结

本文讲了如何配置、创建、编辑、使用ShaderGraph。后面几天我将通过实例的方式讲解ShaderGraph如何实战应用。

洪流学堂公众号回复节点,获取ShaderGraph节点详解PDF文件(带目录)。

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

Unity2018新功能抢鲜 的相关文章

  • Unity3D C#数学系列之点积

    文章目录 1 定义 2 几何意义 3 向量a 向量b xaxb yayb zazb 4 应用案例 4 1 求两向量的夹角 4 2 判断两向量是否垂直 4 3 判断NPC是否在攻击范围内 4 4 已知入射光线和表面法线求反射光线 5 项目 1
  • Unity3D 地形(Terrain)设置

    这篇说的是Unity地形 关于Unity3D是什么 我就不多做解释了 由于工作原因 该系列原创教程不定期更新 每月必然有更新 谢谢各位 Unity地形 新建地形 如图在菜单中新建一个地形 就会在 中看到Terrain对象 如果要修改地形参数
  • 树实现客户端红点系统

    树实现客户端红点系统 红点系统总览 demo 设计 代码设 引用 https zhuanlan zhihu com p 85978429 红点系统总览 如上图所示 规划红点系统的时候 我们将整个系统分为独立的三个部分 结构层 驱动层和表现层
  • Unity的C#编程教程_52_类 Class 详解及应用练习(一)

    文章目录 C Classes for Behaviours Custom Classes 1 Custom Classes 2 Serialized Custom Class RPG Item Database Example 3 When
  • Unity 实现选框选中物体

    最近在看RTS游戏视频注意到了选框功能 就尝试做了一下 功能实现 脚本挂载到Camera上 要不然OnPostRender 函数无法调用 rectMat新建一个材质球 设置成默认的Sprites就可以了 using System Colle
  • Unity3D中通过代码修改子物体层级的顺序

    今天有个同事问我如何在程序中修改子物体的层级关系来改变遮挡关系 我给他敲出来一句代码 UI的层级关系是通过渲染表现出来的 在canvas下的物体 排序越靠前的越先被渲染 这样一来就会 被后来渲染的遮挡 总结一下有三句代码是修改子物体的层级的
  • Unity Cinemachine插件学习笔记,实现单目标和多目标之间切换

    Cinemachine在2017版中正式加入 结合Timeline可以轻松的制作出一下相机动画 相比Unity自带的标准相机 这个Cinemachine插件可操作的变量更多 不同虚拟相机 用来控制相机的 可以平滑转换等 具体可以参考上篇 U
  • 离散仿真引擎基础作业与练习

    作业内容 一 简答题 1 解释 GameObjects 和 Assets 的区别与联系 2 下载几个游戏案例 分别总结资源 对象组织的结构 3 使用 debug 验证 MonoBehaviour 基本行为或事件触发条件 4 了解 GameO
  • 我的和unity3d的小故事1——恶魔射手之鼠标控制移动之input.getaxis("Horizontal")与input.getaxis("Vertical")

    跟着恶魔射手视频学习的过程中遇到的第一个问题是怎么也移动不了 那么问题来了 打印出来是获得的下面两个值都是0 怎么办呢 改edit下面的projectsetting里面的input属性下面两个值的type都改成mouse movement
  • Unity+Pico 手柄按键控制

    一 定义手柄按键API 1 InputDevices GetDeviceAtXRNode 通过XRNode获取对应的设备 2 XRNode是一个枚举类型 包含LeftEye RightEye CenterEye Head LeftHand
  • Unity3D 碰撞器和触发器

    对于碰撞器和触发器经常忘记用法 这次主要记录下以便于能够复习用 1 碰撞器 发生条件 1 碰撞的双方中一定至少要有一个Rigidbody存在 并且碰撞双方必须都要有碰撞体组件 2 碰撞双方若只有一个有刚体 那么那个刚体一定要处于运动的状态下
  • HLSL 偏导数 ddx / ddy

    HLSL ddx ddy 在光栅化的时刻 GPUs会在同一时刻并行运行很多Fragment Shader 但是并不是一个pixel一个pixel去执行的 而是将其组织在2x2的一组pixels分块中 去并行执行 偏导数就正好是计算的这一块像
  • JPush极光推送Unity插件iOS设备无法获取DeviceToken

    前言 最近在使用JPush进行极光推送 Unity插件GitHub地址https github com jpush jpush unity3d plugin 问题描述 但是发现了一个问题 按照官方文档操作 最终仍然无法获取DeviceTok
  • Unity使用Newtonsoft报错的解决方案

    文章目录 Unity 使用 Newtonsoft 报错的解决方案 问题描述 解决方法 方法一 使用 Unity 的 Package Manager 自动导入 方法二 访问 GitHub 下载 unitypackage 文件手动导入 Unit
  • Unity里清除Console控制台Log的函数

    Log输出部分转发来自 http blog sina com cn s blog 13c4bf4b40102wz0r html 在控制台输出中 是开发者常用到的一种函数 通过Debug类来实现 打印字符串 Debug Log log 如果有
  • Unity3D Engine Architecture

    原文 http www umingo de doku php id paper mechs and tanks section03 Architecture To better understand the game s software
  • Input.GetAxis _ Unity3d

    Input GetAxis 获取轴 static function GetAxis axisName string float Description描述 Returns the value of the virtual axis iden
  • [3dsMax]2018版下拉菜单项的子菜单无法选中

    软件自身问题 安装更新补丁即可解决 不想更新补丁也可以使用键盘的方向键进行选中 补丁百度云链接 https pan baidu com s 1LDxRFwQnR0GSONuz7wcEfA 提取码 6gpk
  • Unity3D:按键生成物件,Instantia…

    在按下按键之后 可以在画面中生成之前定义好了的物体 这里使用了Instantiate函数来生成 1 先在游戏中定一个空物件GameObject 创建空物件快捷键 ctrl shift n 2 在视图中放置 3 编写脚本 脚本 SpaceCh
  • Unity打包WebGL的优化常用操作?

    1 贴图部分优化 如果贴图格式时2048 在不影响画面效果的情况下 改成1024或者5 12 还可以缩小包体 2 压缩和解压缩问题 WebGL打包的时候分三种压缩情况 gzip 比Brotli文件打 但打包快 http和https都支持 B

随机推荐

  • mui.ajax php,求助!!!关于mui ajax获取不到后台数据

    js代码如下 mui ajax ajax php dataType json 服务器返回json格式数据 type post HTTP请求类型 headers Content Type application json success fu
  • 几种炫酷的加载动画

    动画一 An highlighted block
  • Typora常用快捷键

    Typora常用快捷键 Ctrl 1 一级标题 Ctrl 2 二级标题 Ctrl 3 三级标题 Ctrl 4 四级标题 Ctrl 5 五级标题 Ctrl 6 六级标题 Ctrl 0 段落 Ctrl 提升标题等级 Ctrl 降低标题等级 Ct
  • 什么是微服务?

    什么是微服务 微服务架构风格这种开发方法 是以开发一组小型服务的方式来开发一个独立的应用系统的 其中每个小型服务都运行在自己的进程中 并经常采用HTTP资源API这样轻量的机制来相互通信 这些服务围绕业务功能进行构建 并能通过全自动的部署机
  • 【点云处理技术之PCL】滤波器——直通滤波器(pcl::PassThrough)

    直通滤波器 是直接根据滤波器设定的条件 选择自己所需点云 可以选择保留设定范围内的点云 也可以选择滤除设定范围内的点云 保留或者滤出是由setFilterLimitsNegative进行模式开关的 代码中 设定z轴的条件 保留z方向范围 0
  • python pool.map 多线程 多参数

    python pool map 多线程 多参数 pool map默认只能传入一个参数 包上一个lambda分发参数 即可解决多参数传入问题 from multiprocessing import Pool from multiprocess
  • 数据挖掘中的数据清洗方法大全

    作者 章华燕 编辑 黄俊嘉 在数据挖掘领域 经常会遇到的情况是挖掘出来的特征数据存在各种异常情况 如数据缺失 数据值异常 等 对于这些情况 如果不加以处理 那么会直接影响到最终挖掘模型建立后的使用效果 甚至是使得最终的模型失效 任务失败 所
  • 将matlab变量导入excel并生成行列标题

    1 将matlab里生成的变量导入到excel中 xlswrite 具体路径 data xlsx AG set 1 B1 k1 xlswrite 表格路径 变量名称 sheet1 数据显示的范围 2 为生成的表格指定行列标题 xlswrit
  • React的事件处理

    目录 一 React的事件处理 1 与DOM事件处理的不同之处 1 React事件的命名方式 小驼峰方式 DOM的命名方式是小写 2 事件处理函数是以对象的方式赋值 而不是以字符串的方式赋值 3 阻止默认事件的方式不同 2 React中事件
  • /PROC/MEMINFO之谜

    proc meminfo是了解Linux系统内存使用状况的主要接口 我们最常用的 free vmstat 等命令就是通过它获取数据的 proc meminfo所包含的信息比 free 等命令要丰富得多 然而真正理解它并不容易 比如我们知道
  • Rust- 结构体

    In Rust a struct short for structure is a custom data type that lets you name and package together multiple related valu
  • 2.5 SPPNet

    目录 2 5 SPPNet 2 5 1 SPP 的目的 2 5 2 SPP 架构 2 5 3 SPP 用于目标检测 2 5 4 候选区域映射 参考资料 2 5 SPPNet SPP Spatial Pyramid Pooling 空间金字塔
  • cpu调优

    1 大内存页 2 数据刷写频率 忍受多长时间丢失 越长越好 脏数据有可能把内存耗尽的危险 3 尽可能不把内存数据放到swap中 当物理内存使用到了6成有可能就开始使用swap了 跑tomcat hadoop python java 内程序尽
  • 《与韩荆州书》--李白经典求职信

    白闻天下谈士相聚而言曰 生不用封万户侯 但愿一识韩荆州 何令人之景慕 一至于此耶 岂不以有周公之风 躬吐握之事 使海内豪俊奔走而归之 一登龙门 则声誉十倍 所以龙盘凤逸之士 皆欲收名定价于君侯 愿君侯不以富贵而骄之 寒贱而忽之 则三千宾中有
  • 图解Windows10下如何更换Jupyter Notebook 内核Python版本(切换原始的python环境)

    问题描述 启动Jupyter Notebook之后它会自动加载原始的python环境 如下图所示 但是自己又在Anaconda中下载了新的虚拟环境 很多库都在这个虚拟环境中 那么如何让Jupyter Notebook加载自己的这个虚拟环境呢
  • python练习.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

    high tour hei 100 for i in range 0 10 if i 0 tour append hei else tour append 2 hei hei 2 high append hei print 总高度 tour
  • redis单机,集群搭建教程

    环境准备 Linux 版本 Centos 7 0 2009 Redis版本 redis 5 0 3 tar gz 文章目录 一 redis是什么 二 单机搭建步骤 三 集群搭建步骤 在一台机子搭建一个伪集群 总结 一 redis是什么 通常
  • LaTex 加粗(加黑)的方式

    1 基本 LaTeX技巧458 关于LaTeX数学字体加粗 mathbf 会变为粗体 但也导致数学字母斜体形式的丢失 使用 amsmath package 的 boldmath 命令 boldmath f x y 3 x y y 2xy 7
  • Failed to initialize NVML: Driver/library version mismatch

    nvidia驱动安装之后 nvidia smi 报错 Driver library version mismatch 不重启系统的解决方法 查看系统日志 确定具体报错信息 dmesg tail 8598493 408944 NVRM API
  • Unity2018新功能抢鲜

    本文首发于 洪流学堂 微信公众号 洪流学堂 让你学Unity快人几步 洪流学堂公众号回复节点 获取ShaderGraph节点详解PDF文件 带目录 Shader一直是Unity开发者的一个难关 涉及到数学 图形学 shader语法等多个难题