作者:ARAS PRANCKEVIČIUS
原文:http://blogs.unity3d.com/2015/08/27/plans-for-graphics-features-deprecation/
很多时候我们为了让Unity更好,我们发现有些太旧的设备或技术限制总是绑手绑脚。好比说为了确保不同Unity版本之间的兼容性,但是,有时候移除掉一些老旧的功能可以带来的好处更多,希望这些移除可以带来最少的影响。
以下就是我们计划未来要从Unity移除的部分图形功能,但是请注意,这只是计划但尚未执行,所以我们希望能听到您的建议,帮助我们做的更好! 不再支持预编译(precompiled)着色器资源
「预编译」着色器在没有源始码的时候是很有效的,在这里替代了可读的HLSL代码。这些着色器包含了已装配的编译着色器或者微程序码、或是在多平台上翻译着色器程序码。
预 编译着色器有一个问题,有时候它会在特定平台上无法执行。也就是说如果你的着色器是预编译给DX9、OpenGL或者OpenGL ES 2.0上用的,那么,这个着色器就有可能无法在Consoles、Metal、DX11等平台上无法工作。这是其一我们要移除这一功能的理由。
另 外一个原因是我们希望可以保持着色器在硬盘中载入和执行的存储器序列化格式更有效率。目前我们的着色器格式,老实说,是一个相当低效的文字格式,需要很长 的载入时间和占据较多存储器。在我们目前的测试中,我们发现使用更有效的着色器格式可以大幅减少载入时间和存储器耗用(由于着色器的不同,可以带来几Mb 到几十Mb的减少)。因此,我们认为移除旧版本Unity的预编译著色器是不错的方式。
移除后的优点:
. 着色器在游戏包中将占据较少的空间(可能是数倍的空间的减少)
. 着色器载入会变快,特别是不同步载入造成的「主线程卡顿」时间会减少。
. 在执行时,着色器会占据更少的存储器。
. 在DX11上的已编辑的程序码就会显示在着色器属性选单上,以替代那些庞大复杂的程序码。
移除后的缺点:
. 预编译的着色器程序码(着色器的属性配置」Show compiled code」)未来若直接使用将不会有效果。
影响范围:需要使用预编编译着色器的开发者。
预计移除时间:Unity 5.3(2015年12月)
不再支援DirectX 9着色器的2.0 GPUs模块
DX9 SM2.0 GPUs 确实已经非常老了,我们将不再支援它。在您的Unity游戏中以下的GPU我们将不再支援:2004年前的NVIDIA(pre-GeForce 6000),2005年前的AMD(pre-Radeon X1000)和2006年前的Intel(pre-GMA X3000/965),总之,超多10年以上的GPU我们都不再支援了。
请注意我们不会放弃支援DirectX 9,因为它在Windows XP上是唯一的选择。因此,对于DirectX 9的渲染支援将会继续(基于Shader Model 3.0 或更新的 GPUs)。
移除后的优点:
减少编写着色器的麻烦。目前,有很多新的着色器已经被预设为最低规格并放入 Unity(着色器model 2.0),如果你想要更多高阶的功能(比如:vertex textures, dynamic branching, derivatives, explicit LOD sampling 等等),你需要增加比如"#pragma target 3.0",若我们放弃了支援SM2.0,最低的规则会相应地提高,这点毋需操心。 对于Unity自己来说减去很多的麻烦。您无法想象,我们花费了大量的时间精力在试图将Unity 5基于着色器的物理呈现在DX9 SM2.0。现在,我们可以将精力放在更有价值的地方了。
移除后的缺点:
Unity的游戏将不能在Intel GMA 950 / 82945 GPU上运行了。
影响范围:Windows单机玩家的开发者
预计移除时间:Unity 5.4版本(预计2016年3月)
不再支持 Windows Store Apps DX11 feature level 9.1 GPUs几乎所有的Windows Store Apps设备都至少是DX11 兼容 level 9.3(包括全部Windows Phone设备),但是或多或少有一些必须支持9.1的级别,如果我们仍然支援,那么就会降低整体的规范。
移除后的优点: 所有的WSA/WP8着色器将会被编辑到9.3级别的水平,以前无法实现的一些功能就可以实现了(比如:multiple render targets, derivative instructions in pixel shaders等等)。 我们可以去掉一些只支援9.1之前版本的程序码。
移除后的缺点:
您的Windows Store Apps将不再支持9.1的设备(就意味着「Surface RT tablet「不再被支持)。请注意Windows Phone不会被影响,所有的手机现在至少都支持9.3了。
影响族群:Windows Store Apps的开发者
预计移除时间:Unity 5.4版本(预计2016年3月)
不再支持在Android OpenGL ES 2.0上的native shadow maps
阴影贴图可以透过GPU支援(从阴影贴图直接取样可以获得阴影数值,也可以使用PCF过滤器),或者用「手动」(从阴影贴图取样深度,可从外观深度比较去决定是否在阴影内)
以上的第一种方式是推荐的,特别是现在很多的GPU已经可免费提供 2×2PCF过滤器了。在绝大部分的平台上,我们可以提前知晓被支援的阴影模式,但是Android OpenGL ES 2.0 很奇怪,一些设备支援透过 EXT_shadow_samplers延伸「阴影贴图」,但是有些设备不支援。这代表在Android ES 2.0上,我们不得不使用两种不同的着色器去解决这个问题。
数据显示,安卓设备上很少支援EXT_shadow_samplers(大约只有1-2%的设备)。所以我们认为不再支援这功能是很值得的。我们把Android ES 2.0 作为一个「手动比较深度阴影」的平台。
移除后的优点:
减少在Android ES 2.0上变异型着色器的编译、运行时间。
移除后的缺点:
将会有大约1%的Android ES 2.0设备不再支援PCF取样的阴影,在着色器里做深度的材质比较会更慢。值得注意的是所有可以使用OpenGL ES 3.0 的设备是被支援的(他们都是被建立了PCF)。
影响范围:在OpenGL ES 2.0上的Android开发者
预计移除时间:Unity 5.4版本(预计2016年3月)
|