热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Unity计划放弃支持部分图形特性

Unity放弃支持部分图形特性。这样做能够使渲染系统在未来变得更加简洁、高效。有时候,当我们尝试做出一些优化(更好看、更快速、更灵活,等等

Unity放弃支持部分图形特性。这样做能够使渲染系统在未来变得更加简洁、高效。


有时候,当我们尝试做出一些优化(更好看、更快速、更灵活,等等)时,发现有一些古老的特例或过时的硬件支持阻碍前进。一般来说,我们试着尽可能的在多个版本间保持兼容,但是有的时候放弃一些旧功能所带来的潜在效益真是太大了,而这些功能可能只有很少人在用(如果确实有人在用的话)。


总而言之,这里有一个初步拟定的和图形相关的“即将停止工作”的列表。注意,这些只是在“计划中”,并没有实际执行,所以,如果你真的,真的需要它们来工作一直保留下去,请告诉我们!


着色器(Shader):去掉对“precompiled(预编译)” shader assets的支持



“预编译“shader 是一个“没有源代码”的高效着色器。 这种着色器,不是具有可读性的高级着色器语言(HLSL)代码,而是包含了面向几个固定平台的已经编译好的shader文件或微程序(microcode)或经过翻译的shader代码。


一个“预编译”着色器的问题是(假如你从一些地方得到预编译着色器)可能无法在未来出现的某些平台上正常工作。假如说你现在有一个着色器,是针对DX9,OpenGL 和OpenEL ES2.0 进行的预编译。这个着色器将不能在 游戏机,苹果的Metal API,DX11等等下面环境下工作。因此,单就这一条来看使用预编译shader就不是什么好做法。


我们想这样做的另一个原因是为了改变shader的序列化格式,以大幅提高其在磁盘存储、加载期和运行期的内存使用等方面的效率。不得不说我们目前为止用到的着色基于文本的shader格式是相当低效的,这导致了低加载速度和高内存占用。在我们目前的实验中,我们通过着色使用更高效的shader数据格式,我们在这些两个方面都看有了很大改善(依据shader的variant复杂度不同节省了数兆到数十兆不等的空间)。然而,这使得旧版本中的预编译不能在工作了。我们认为这是个公平正确的权衡。


优势:


  • 着色器在你的游戏数据文件中占用更少的空间;

  • 着色器加载速度更快,尤其是在主线程中异步加载时“打嗝”少得多;

  • 运行时着色器占用更少的内存;


检视面板中的“showcompiled code”功能会显示实际的由DX11编译生成的shader代码,而非一堆无用处的奇怪符号。


劣势:


  • 预编译着色器(在检视面板中的“show compiled code”),且在随后直接使用这些代码将不再被支持。


影响:使用预编译着色器的用户和从别人那儿获得预编译着色器的人们。


时间:Unity5.3(2015年12月)


硬件:停止支持DirctX 9 Model 2.0的GPUs



DX9 SM2.0的GPU们已经相当陈旧,我们想放弃对它们的支持。这意味着你的游戏无法和这些GPU兼容:2004年之前的NVIDIAGeForce 6000之前),2005年之前的AMD (Radeon X1000之前)和2006年之前的Intel(GMA X3000/965之前),简而言之,10年以上前生产的GPUs将不再被支持。查看数据,现在看来只有Intel GMA950 又名82945 GPU 被发现在某些时候还在使用,因此这个型号的GPU将不再被支持。


注意我们并未对DirectX 9完全停止支持。这在Windows XP(怎么还不消失……)上,仍然是唯一实际的选择。Unity将会继续支持DirectX 9渲染很长一段时间。


做这些的好处:


减少人们写着色器脚本的麻烦。现在,所有在Unity中新创建的着色器被默认编译成“最低通用标准(lowest common denominator)”:shader model 2.0。如果你需要更高级的特征(顶点纹理,动态分支(dynamicbranching ),派生(derivatives),清晰的纹理采样(explicitLOD sampling)等等,你需要添加想像“#pragma target 3.0”等这样的东西。如果我们放弃对SM2.0的支持,最小支持标准提高,而且你不需要担心太多。


减少了Unity开发人员很多麻烦。例如,你不会想知道,我们会花费多少时间实现在Unity5 上支持DX9 SM2.0。实际上,我们可以用这些时间做更有用的事情。!


坏处:Unity 游戏将不能在Intel GMA950/82945 GPU上运行。


影响:Windows Standalone平台的开发者。


时间:Unity 5.4(2016年3月)


硬件:停止支持Windows Store APP DX11 featurelevel 9.1 GPUs



几乎所有的WindowsStore Apps 设备至少都支持DX11 feature level 9.3(所有的Windows手机设备都是)。但是过去有一两个较早的设备只支持feature level 9.1。


这样做的好处:


所有的WSA/WP8着色器将会被编译成feature level 9.3而不是9.1,增加更多的以前不能用的功能(多重渲染目标(multiplerender targets),像素着色器中的派生指令(derivative instructions)等等)


我们可以移除不少过去用来处理9.1限制的代码。


坏处:你的Windows StoreApps将不再支持9.1设备(大致上指的就是”SurfaceRT平板电脑”)。注意Windows Phone不会受到影响,因为所有的手机都是最少支持9.3。


影响: WindowsStore Apps 开发者。


时间:Unity5.4(2016年3月)


着色器:停止在Android OpenGL ES 2.0上支持“native shadow maps”



阴影映射可以通过以下两种方式实现:一种是使用”本地GPU支持“从阴影贴图(shadowmap)中采样后直接返回”阴影值“,也可能使用硬件的PCF过滤,)另一种是”手动“进行(从阴影贴图中获取深度信息,与像素深度做比较来决定是否在阴影范围内)。


第一种形式通常被喜欢更好一些,尤其因为很多GPUs提供“免费的”2*2 PCF filtering过滤. 在大多数平台式上,我们预先知道哪些阴影模式(shadow modes)受到支持,但是Android OpenGLES 2.0是奇怪的,因为一些设备支持“本地阴影贴图(native shadow maps)”,但是一些别的设备不支持。这就意味着所有shadow阴影相关的着色器,如在Android ES 2.0上,我们都要编译成两种着色器,以涵盖这两种情况。


然而,我们看见发现数据显示在Android上支持EXT_shadow_sampler的特别少(所有设备中有1-2%)。因此我们认为直接移除对它的支持是可以的。我们会一直认为把Android ES 2.0看成“在阴影上执行手动深度比较(manualdepth comparison for shadows)” 的平台。


这样做的好处:


减少在AndroidES平台上运行时编译、发送、加载的shader variants数量。


坏处:


大约1%的Android ES 2.0设备将不再有执行硬件阴影PCF采样.而是在shader里做一个稍微慢一点的深度比较。然而需要注意的是,所有这些设备都能够使用具备内置PCF的Open GL ES 3.0,所以最好加入对它的支持!


影响:面向OpenGL ES2.0的Android开发人员。


时间:Unity 5.4(2016年3月)

原文作者:ARAS PRANCKEVIČIUS

本文由蛮牛社区(manew.com)amazonove,王顺英翻译发布,除合作社区及合作媒体外,禁止转载。

蛮牛社区(manew.com)分享最新的游戏研发和虚拟现实相关技术内容。

蛮牛译馆现公开招募"蛮牛译员",欢迎想要报名的网友在下方留言联系小编呦~


推荐阅读
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • Learning to Paint with Model-based Deep Reinforcement Learning
    本文介绍了一种基于模型的深度强化学习方法,通过结合神经渲染器,教机器像人类画家一样进行绘画。该方法能够生成笔画的坐标点、半径、透明度、颜色值等,以生成类似于给定目标图像的绘画。文章还讨论了该方法面临的挑战,包括绘制纹理丰富的图像等。通过对比实验的结果,作者证明了基于模型的深度强化学习方法相对于基于模型的DDPG和模型无关的DDPG方法的优势。该研究对于深度强化学习在绘画领域的应用具有重要意义。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • Go语言实现堆排序的详细教程
    本文主要介绍了Go语言实现堆排序的详细教程,包括大根堆的定义和完全二叉树的概念。通过图解和算法描述,详细介绍了堆排序的实现过程。堆排序是一种效率很高的排序算法,时间复杂度为O(nlgn)。阅读本文大约需要15分钟。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • Java编程实现邻接矩阵表示稠密图的方法及实现类介绍
    本文介绍了Java编程如何实现邻接矩阵表示稠密图的方法,通过一个名为AMWGraph.java的类来构造邻接矩阵表示的图,并提供了插入结点、插入边、获取邻接结点等功能。通过使用二维数组来表示结点之间的关系,并通过元素的值来表示权值的大小,实现了稠密图的表示和操作。对于对稠密图的表示和操作感兴趣的读者可以参考本文。 ... [详细]
  • 本文介绍了在go语言中利用(*interface{})(nil)传递参数类型的原理及应用。通过分析Martini框架中的injector类型的声明,解释了values映射表的作用以及parent Injector的含义。同时,讨论了该技术在实际开发中的应用场景。 ... [详细]
author-avatar
手机用户2602921555
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有