2015年9月7日 星期一

幾個未來Unity即將放棄的圖形功能

作者: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月)

沒有留言:

張貼留言

著作人