Unity 2018中的图形渲染

https://mp.weixin.qq.com/s?__biz=MzU5MjQ1NTEwOA==&mid=2247490249&idx=1&sn=d86083e33d9884bc1df20827a966b195&chksm=fe1e2e62c969a77417502a559c38afc2094d09aa9ed881eea225222df8e4d4b52dd9f3b56950&scene=21#wechat_redirect

在上周,我们发布了基于Unity 2018.1创作的《死者之书》,展示了Unity 2018所带来高端视觉效果的能力,让图形渲染达到了新的高度。是的,在Untiy 2018的发行周期中,图形渲染将是一个瞩目的焦点!

在2018年,我们将会发布许多可以大幅增强Unity渲染能力的功能。不同的用户都有望获得一些新功能。例如: 为美术人员提供的可视化工具,或是为底层工程师提供的更强大的渲染控制。我们将在本文中详细介绍Unity 2018中正在开发中的系统。

特别说明

原官方提供的SRP的示例,由于某些原因,导致无法正常运行,现在问题已经解决,请中国地区开发者重新下载SRP示例:

https://oc.unity3d.com/index.php/s/jEnGJI8r8gllaPk

Scriptable Render Pipeline可编脚本渲染管线

Scriptable Render Pipeline可编脚本渲染管线是一种由C#脚本控制的,在Unity中配置和实行渲染的方式。与Unity传统的渲染方式相比,这是一个巨大的进步,完成了渲染控制从硬编码到完全项目驱动式的转变。

目前Unity提供了大量的渲染配置,例如:正向渲染和延迟渲染。这些管线是固定无法更改的,存在许多的缺点:

  • 无法修复或绕过渲染问题。
  • 因为要可能需要应对所有用例,管线太过庞大复杂。
  • 由于过时性与复杂性,很难添加最先进的效果。

为了解决这些问题,我们在Unity 2017中在试验性地开发SRP API。现在该功能已经进入Unity 2018.1 beta版本中。我们相信SRP不仅可以解决这些问题,对于开发者来说,非常简单易用。通过SRP,我们不再需要提供一种单一的渲染管线,试图为所有人完成所有事情。SRP API开放了Unity的渲染接口,允许使用C#脚本进行灵活控制。开发者可以根据项目的具体情况编写自定义渲染器。

想象一下,通过组合模块的方式设计一个自定义渲染管线。每个模块都是一个定义良好,易于测试、改进和维护的函数。这就是Scriptable Render Pipeline的工作原理。这不仅使开发者更易使用Unity,也使我们可以向引擎的工具盒中添加新模块,从而使用户能够快速获得对最新渲染功能的访问。

在Unity 2018.1中,我们已为用户提供了二个渲染管线。它们不仅可以直接使用,也可以作为开发者构建自定义渲染管线的参考。

  • Lightweight Rendering Pipeline轻量级渲染管线: 专为无需计算着色器的移动设备和平台设计的渲染管线。
  • High Definition Rendering Pipeline高清渲染管线:现代的高逼真度渲染器,用于支持Shader Model 5.0(DX11及以上)平台的游戏开发。

Lightweight Rendering Pipeline轻量级渲染管线

设计LT RP是为了速度和更好地扩展到低端硬件。它是一个基于正向的渲染器,能很好地从移动扩展到VR和PC。

Lightweight Pipeline轻量级渲染管线是一种在Unity 2018.1中可用的Scriptable Render Pipeline。它采取的是一种按每个对象进行光照剔除的单pass正向渲染,其优势是会在单次pass中完成所有光照的着色。与之相比,Unity的默认的正向渲染会为每个像素光照进行一次额外的pass,使用LT管线会产生更少的绘制调用,而代价是轻微的着色器复杂度增加。

轻量级渲染管线管线最多支持每对象8个光源,并仅支持Unity内置渲染特性的一个子集。

HD Rendering Pipeline高清渲染管线

HD Rendering Pipeline高清晰渲染管线是一种在Unity 2018.1中可用的Scriptable Render Pipeline。HDRP是一种现代渲染管线,设计时同时考虑了PBR、线性光照、HDR光照。它使用一种可配置混合平铺(Tile) / 集群延迟(Cluster deferred)/正向光照(Forward lighting)架构构建。

HDRP在Unity内置功能上增加了一些特性,改进了光照、反射探头和标准材质的选项。它提供了诸如Anisotropy、Subsurface scattering、Clear Coating这样的高级材质,以及对高级光照的支持,例如Area lights区域光。

Post-processing Stack v2后期处理特效包

Post-processing Stack后期处理特效包已做改进,以提供更好的效果质量,以及自动化体积混合功能。它强大的重写栈和弹性框架,使开发者可以编写和分发自定义效果。它与轻量级渲染管线、高清晰渲染管线以及内置渲染管线兼容。

Unity Shader Graph着色器视图

以往能在Unity中创作着色器的都是具有编程能力的人。在Unity 2018中,我们正在改变这一现状!

开发者可以使用Shader Graph着色器视图可视化地构建着色器。无需手工编写代码,而是在图形网络中创建和连接节点。图形框架会对这些更改做出实时反馈,它足够简单,新用户也能即刻上手着色器制作。

Shader Graph着色器视图系统可以和LT和HD渲染管线一起使用,也可以扩展与任何其它自定义的渲染管线一起使用,它拥有一个开放架构,可编写自定义节点。

小结

获取最新的Unity 2018.1 beta版本,了解更多功能和特性。在接下来的几周内,我们将更详细地介绍这些系统,以便开发者能充分地利用它们。你也可以把你有关使用Unity 2018的反馈在Unity官方中文社区(Unitychina.cn)反馈给我们!

原文地址:https://www.cnblogs.com/nafio/p/9267696.html

时间: 2024-08-01 20:26:17

Unity 2018中的图形渲染的相关文章

Hands-On Unity 2018 x 移动游戏开发教程

Hands-On Unity 2018 x Game Development for Mobile 使用Unity 2018.2创建具有出色游戏功能的精彩游戏 想学习在Unity制作游戏,但不知道从哪里开始?现在,游戏开发比以往任何时候都更受欢迎,而且从未有过更好的时机. 本课程将教您从Unity到概念开发专业游戏所需的一切知识.您将学习最佳实践和技巧,无论您是想要独立开发还是被聘为Unity游戏开发人员.在本课程结束时,您将磨练必要的技能,开始您的游戏开发事业,所以现在就跳进去开始吧! 你会学

[译]如何在Unity编辑器中添加你自己的工具

在这篇教程中你会学习如何扩展你的Unity3D编辑器,以便在你的项目中更好的使用它.你将会学习如何绘制你自己的gizmo,用代码来实现创建和删除物体,创建编辑器窗口,使用组件,并且允许用户撤销他们所作出的任何动作,这些全部都是用编辑器脚本来实现的. 这篇教程假设你已经熟悉Unity的基本工作流程.如果你知道如何在编辑器中创建物体.预设.场景并且知道如何移动它们,知道如何添加组件,那么你可以开始本教程的学习了. 最终结果预览 让我们看一下我们做出的最终结果是什么样子: 如你所见,我们会创建一个编辑

在Unity 3D中加入Image图片

在Unity 3D中加入Image图片,我刚开是加不进去,为什么呢?因为没有图片,图如下: 原因就是我们没有把图片设置为Script,图片的格式还是默认的那个,这只能作为贴图使用.我们将图片进行如下设置就Ok了.

Unity 3D中的阴影设置

在Unity 3D中,经常需要用到光照阴影,即Directional Light的Shadow,Shadow分为Hard Shadow和Soft Shadow.区别是Soft Shadow的阴影边缘比较平滑,接近真实,但是性能消耗大于Hard Shadow. Lightmapping有3种选择:实时光照阴影(RealTimeOnly).场景烘焙阴影(BakedOnly).以及上面两者结合的阴影(Auto). RealTimeOnly:所有场景物体的光照都实时计算,实时光照对性能消耗比较大: Ba

Unity 3D中的Transform.Rotate 与Transform.RotateAround 的区别

Transform.Rotate 旋转 应用一个欧拉角的旋转角度,eulerAngles.z度围绕z轴,eulerAngles.x度围绕x轴,eulerAngles.y度围绕y轴(这样的顺序). 如果相对于留空或者设置为Space.Self 旋转角度被应用围绕变换的自身轴.(当在场景视图选择物体时,x.y和z轴显示)如果相对于 Space.World 旋转角度被应用围绕世界的x.y.z轴. 1 gameObject.transform.Rotate(new Vector3(0,1,0),Inpu

Unity 3D中不得不说的yield协程与消息传递

1. 协程 在Unity 3D中,我们刚开始写脚本的时候肯定会遇到类似下面这样的需求:每隔3秒发射一个烟花.怪物死亡后20秒再复活之类的.刚开始的时候喜欢把这些东西都塞到Update里面去,就像下面这样写. 1 float nowTime = 3.0f; 2 bool isDead = true; 3 float deadTime = 20.0f; 4 5 void startFireworks() 6 { 7 // 放烟花 8 } 9 10 void revival() 11 { 12 //

如何在Unity 3D中掷骰子

1.介绍 2.滚一个骰子 3.导入模型 4.添加脚本 5.方法 6.识别骰子上的随机面值 客观的 这篇文章的主要目的是给你一个关于如何在Unity 3D中掷骰子的想法. 第一步介绍 1.构建一个棋盘游戏,但对骰子有问题;这里是一个示例代码,演示如何像真正的骰子一样掷骰子,以及如何在游戏控2.制台上识别骰子的表面值. 3.这个问题分为两个主要部分: 4.如何掷骰子? 5.确定在1和6之间的随机整数(6个标准骰子)的面值. 第二步掷骰子 2.1导入模型 将一个标准骰子模型导入到unity3D中.调整

【Unity优化】如何实现Unity编辑器中的协程

Unity编辑器中何时需要协程 当我们定制Unity编辑器的时候,往往需要启动额外的协程或者线程进行处理.比如当执行一些界面更新的时候,需要大量计算,如果用户在不断修正一个参数,比如从1变化到2,这种变化过程要经历无数中间步骤,调用N多次Update,如果直接在Update中不断刷新,界面很容易直接卡死.所以在一个协程中进行一些优化,只保留用户最后一次参数修正,省去中间步骤,就会好很多.这属于Unity编辑器的内容,也属于优化的内容,还是放在优化中吧. 解决问题思路 Unity官网的questi

(转)Unity 3D中的无限大地形的生成和调度

随着硬件性能的不断提高,游戏的地形变得越来越大也更加细节化了(增加了更有特点的地形,大片的草地,还添加了树木,水等物体.在过去几年时间里,地形已经逐渐增加到长达数百平方英里,特别是在RPG游戏中. 在本教程中,我将向您展示如何生成需要超级长的时间才能浏览完的3D地形.我们将使用Unity3D引擎和C#语言编写代码.需要一些基本的编程知识--尽管完整的源代码可以免费下载(见下文),但在本文中,我只会解释最重要的部分并说明示例的代码. 教程开始 最流行的观看3D地形的方式就是应用某种形式的高度图.高