升级到Unity 5.5

升级到Unity 5.5

着色器:基于物理的着色代码更改

基于物理的阴影相关的代码已被重构在Unity 5.5(文件UnityStandardBRDF.cginc等)。在大多数情况下,这不直接影响你的着色器代码,除非你直接手动调用一些函数。显着的变化如下所示。

现在有功能,光滑度,粗糙度和感性粗糙度之间的转换: PerceptualRoughnessToRoughness,RoughnessToPerceptualRoughness,SmoothnessToRoughness, RoughnessToSmoothness。

在能见度长期UnityStandardBRDF.cginc需要roughness,而不是perceptualRoughness。

在Unity的旧版本中,可以使用Marmoset粗糙度进行重映射。随着向GGX它不再匹配,以及UNITY_GLOSS_MATCHES_MARMOSET_TOOLBAG2定义和相关的代码已被删除。

所有的读取和写入到Gbuffer应该通过新的功能UnityStandardDataToGbuffer/ UnityStandardDataFromGbuffer。

你的shader代码应该调用UnityGlossyEnvironmentSetup()初始化一个Unity_GlossyEnvironmentData结构,而不是做手工的。

该roughness变量Unity_GlossyEnvironmentData实际上是“感性粗糙”,但它并没有被改名为避免与现有的着色器代码中的错误。注意:UnityGlossyEnvironmentSetup需要smoothness作为一个参数,并计算听觉粗糙度。

的ndotl变量的值UnityLight,现在计算的飞行并写入变量的任何值将被忽略。

该UNITY_GI宏被弃用,不应再使用。

着色器:DirectX 9半像素偏移问题

Unity 5.5现在在后台处理DX9半像素偏移光栅化,这意味着您不再需要在着色器或代码中修复DX9半像素问题。参见更多细节这个博客帖子。如果您在代码中使用这些检查,现在可以将其删除:

在着色器中检查UNITY_HALF_TEXEL_OFFSET,并基于此移位顶点/ UV。

通过SystemInfo.graphicsDeviceType或SystemInfo.graphicsDeviceVersion检查D3D9,并基于此移动顶点/ UV。

Unity现在解决的方式是通过将半像素调整代码插入到正在编译的所有顶点着色器中。因此,顶点着色器常数寄存器c255由Unity保留,以及两个指令被添加到所有着色器,并且使用一个更多的临时寄存器。这不应该产生问题,除非你的顶点着色器占用所有可用资源(常量/临时寄存器和指令槽)到绝对最大值。

着色器:Z-缓冲器反转

Z缓冲器(深度缓冲器)方向已经反转,这意味着Z缓冲器现在将在近平面处包含1.0,在远平面处包含0.0。这与浮点深度缓冲区结合显着增加深度缓冲器精度,导致较少的Z战斗和更好的阴影,特别是当使用小的近平面和大的远平面时。

图形API更改:

剪辑片段空间范围为[near,0],而不是[0,far]

_CameraDepthTexture纹理范围是[1,0]而不是[0,1]

施加Z偏置之前取消

24位深度缓冲器切换为32位浮点格式

以下宏/函数将处理反转的Z情境,而无需任何其他步骤。如果您的着色器已经在使用它们,则不需要从您身边进行任何更改:

Linear01Depth(float z)

LinearEyeDepth(float z)

UNITY_CALC_FOG_FACTOR(coord)

但是,如果您手动提取Z缓冲区值,则需要编写类似于以下内容的代码:

float z = tex2D(_CameraDepthTexture, uv); #if defined(UNITY_REVERSED_Z)    z = 1.0f - z; #endif

对于剪辑空间深度,您可以使用以下宏。请注意,这个宏将不会改变基于OpenGL / ES plaforms夹的空间,但仍将[-near, far]:

float clipSpaceRange01 = UNITY_Z_0_FAR_FROM_CLIPSPACE(rawClipSpace);

Z-bias由Unity自动处理,但如果您使用本地代码渲染插件,您将需要在匹配平台上的C / C ++代码中否定它。

特殊文件夹:名为“资源”的Unity Editor子文件夹

命名的文件夹的所有子文件夹“编辑”将从构建中排除,并在播放模式在Unity编辑器将不会加载。此前名为子文件夹“资源”将有包含在构建其资产。这些资产仍然可以通过在编辑器脚本中调用Resources.Load()来加载。

例如,这些文件被排除在构建和会不会在编辑器中播放模式时加载,但如果从脚本调用加载:

编辑/美孚/资源/ Bar.png (这从加载代码编辑器的“Bar.png”)

编辑/资源/ Foo.png

编辑/资源/编辑/资源/ Foo.png (这从加载编辑代码“Foo.png”,但不作为“编辑/资源/ Foo.png”)

这些资产将在所有情况下加载:

资源/编辑/ Foo.png

资源/美孚/编辑/ Bar.png (这个负载如“foo /编辑/ Bar.png”)

资源/编辑/资源/ Foo.png (这荷载为“Foo.png”而不是“编辑/资源/ Foo.png”)

背面公差和最终聚集

此前在“背向面容忍‘参数光照贴图参数使用最终聚集烘焙GI在不施加。它现在应用正确。该参数现在影响实时GI和烤GI阶段(包括最终聚集)。

受影响的场景主要是具有单面几何形状(如广告牌)的场景,其中重要的是能够调整“背面容差”以避免使看到单面几何形状的背面的纹素无效。在使用广告牌和最终聚集的场景中,现在可以通过调整“背面容差”来改进光照贴图,但是如果应用非默认“背面容差”,则其他场景也可能会受到影响,因为现在正确地考虑了最终聚集阶段。

标准着色器BRDF2现在使用GGX近似

BRDF2是默认情况下在移动平台上设置的标准着色器类型,现在使用GGX近似而不是Blinn-Phong。这使它看起来更接近BRDF1(在桌面上默认使用),并提高了视觉质量。

如果您需要保留旧的近似值,您应该修改UnityStandardBRDF.cginc中的BRDF2代码,该代码在#if UNITY_BRDF_GGX语句中有新的实现(这也被BRDF1用来选择GGX)。更改UnityStandardConfig.cginc中的定义或在BRDF2_Unity_PBS函数中将#if UNITY_BRDF_GGX更改为#if 0。

Android的Gradle

您现在可以使用摇篮来构建Android。

Gradle对于现有的Unity Android构建系统没有那么严格的错误,这意味着一些现有的项目可能很难转换为Gradle。查看文档摇篮故障识别和解决这些构建失败。

实例化对象重载已更改

默认情况下,Instantiate函数的特定重载包含原始GameObject的参数和父Transform的参数已更改为工作方式不同。它不再将原始GameObject的位置和旋转解释为世界空间位置和旋转,因此忽略了指定的父Transform的位置和旋转。

现在,默认情况下,将位置和旋转解释为指定的父变换的空间内的局部位置和旋转。这与编辑器中的行为一致。您的脚本不会自动更新。这意味着当您运行包含对此实例化重载的调用的脚本尚未更新以考虑此更改时,您可能会遇到意外的行为。

使用自动API更新程序

原文地址:https://www.cnblogs.com/kubll/p/10798768.html

时间: 2024-07-31 13:27:36

升级到Unity 5.5的相关文章

升级到Unity 3.5

升级到Unity 3.5 如果您有一个将根节点标记为骨架的FBX文件,则将在3.5中与额外的根节点一起导入该文件,相比之下, Unity 3.5做到这一点是因为当导入动画字符时,最常见的设置是具有一个具有所有骨骼的根节点和在层次结构中它旁边的骨架. 当创建额外的动画时,通常从fbx文件中删除带皮肤的网格.在这种情况下,新的导入方法确保附加的根节点总是存在,因此动画和带皮的网格实际匹配. 如果实例和FBX文件的预制之间的连接已经在3.4中破坏,动画将在3.5中不匹配,因此您的动画可能无法播放. 在

升级到Unity 5.3

升级到Unity 5.3 全球照明 光照贴图快照已重命名为照明数据资产.在升级到Enlighten 3后,照明数据的内部格式已更改.来自以前版本的Unity的快照不再受支持,应重新进行重新编译. 这也影响具有实时GI的流化场景AssetBundles.将不会加载光照贴图数据,因此也应重建此类绑定. 光探测器和环境照明现在在伽马和线性色彩空间中是一致的.与Unity 5.2相比,环境照明的一些差异是可以预期的.输出匹配Unity 4.x强度现在,但从4.x和我们的光投影代码生成L2系数和Enlig

升级到Unity 5.4

升级到Unity 5.4 当将项目从Unity 5.3升级到Unity 5.4时,有一些更改,您应该注意哪些可能会影响您现有的项目. 网络:多人服务API更改 许多更改联网API. 网络:WebRequest不再实验 该WebRequest接口已经从推广UnityEngine.Experimental.Networking到UnityEngine.Networking.使用统一5.2和5.3的项目UnityWebRequest将必须被更新. 场景视图:音频映射不会自动应用 与图像效果ImageE

【Unity】4.1 创建组件

分类:Unity.C#.VS2015 创建日期:2016-04-05 一.简介 组件(Component)在Unity游戏开发工作中非常重要,可以说是实现一切功能所必需的. 1.游戏对象(Game Object) 游戏对象(Game Object)包括空物体.基本几何体.外部导入的模型.摄像机.GUI.粒子.灯光.树木等各类元素. 凡是出现在层次视图中的元素都是游戏对象. 2.组件(Component) 组件是在游戏对象(Game Object)中的实现某些功能的集合.无论是模型.GUI.灯光还

Unity: Invalid serialized file version xxx Expected version: 5.3.4f1. Actual version: 5.3.5f1.

Unity发布安卓项目,如果直接使用Unity打包APK一切Ok,导出Google项目 使用Idea打包 一进去直接Crash. 报错: 1978-2010/? E/Unity﹕ Invalid serialized file version. File: "/data/app/eran.project.b-1/base.apk/assets/bin/Data/globalgamemanagers". Expected version: 5.3.4f1. Actual version:

较为激进的基础框架

1. 使用 Roslyn 的动态编译修改语法树的方式支持高级语法. 让Unity5/Unity2017等能够支持到C# 7.3语法. 原理 : https://www.cnblogs.com/liuxiaoji/p/9875826.html 下载的网站不见了, 可能随着Unity支持的.Net库升级, 未来Unity也会支持到7的语法, 作者把这个项目关了吧 这个项目非常实用, 并且基本没有BUG, 用的飞起. 2. 使用await代码特性代替协程的方式 : http://www.steveve

unity内部:内存 和 性能(以及Unity5的升级优化)

      我们的脚本代码里经常会需要访问gameObject引用或者某个组件的引用,最好的方式当然是在脚本Awake的时候就把这些可能访问的东西都缓存下来:如果需要访问临时gameObject实例的某属性或者临时某组件的gameObject实例,在能够确保组件一定存在(可以使用[RequireComponent( typeof(AudioSource ))] 如果没有自动添加移除不了!)的情况下,可以用属性访问,毕竟属性访问比GetComponent要快上一倍,但是如果不能确定组件是否存在,甚

升级xcode6和ios8后,unity遇到的一些小问题

升级最新的Xocde6后,如果不是最新版本的unity,虽然也可以也可以正常的build,但如果想通过unity连真机进行profile的话,就会在xocde中报错,这个的主要原因是unity的配置里并没有最新Xcode版本的识别,unity4.5.4升级可以解决这个问题,但如果因为项目需要而无法升级的情况下,就需要自己手动设置来解决了. 操作也很简单,就是UUID在plist之间拷贝的工作.首先,进入Application目录,显示Xcode的包内容,打开/Applications/Xcode

升级MAC OS到10.13, 10.14系统后UNITY工程无法加载资源的解决办法

升级MAC OS到10.13, 10.14系统后,出现UNITY工程无法加载资源的情况: Unity项目中Asset目录显示为空! 解决办法一: 打开Launchpad中的磁盘工具 (也就是实用工具下的"磁盘工具") 新建一分区,名称大小任意,格式为MAC OS 扩展(日志式) 将unity工程移至新分区 OK,工程已经可以正常加载了 解决办法二: 1. 升级Unity版本 (如Unity5.6.6, Unity 2018.1 均可以)   2. 安装相应的补丁版Unity3D 参考链