Search Unity

Vulkan レンダラーのプレビューがリリースされました

, 9月 29, 2016

Google I/O でお知らせした通り、本日、Unity で実用間近の Vulkan レンダラーの最初の開発者プレビューをリリースします。

Vulkan は新世代のグラフィックスと計算処理 API で、最近のPC やモバイルプラットフォームに使用されている多くの GPU に対し、効率が高いクロスプラットフォームのアクセスを提供します。最近 Google がリリースした Android の Nougat 版は、Vulkan API を公式にサポートしています。Unity も、ユーザーがグラフィックスパフォーマンスを次のレベルに押し上げることができるよう尽力し続けています。

cslexlkxgaujvs7

Vulkan レンダラーを使って Linux 上で実行した Unity Labs のシーン

利点

OpenGL ES 3.x などの従来のモバイルレンダリング API と比較すると、Vulkan の主な利点はスピードです。Vulkan は、複数の CPU コアを利用し、アプリケーションが並列のマルチスレッドに複数のコマンドリストを作成できるように設計されています。これにより、アプリケーションがデバイス上のすべての CPU コアを利用し、パフォーマンスを向上させることが可能になります。Vulkan プレビューリリースでは、 Player settings の “Enable Graphics Jobs” チェックボックスをチェックすることによってこれを有効にします。ただし、レンダラーがシングルスレッドで実行されているときでさえ、かなり大きなパフォーマンスの向上が見られます。Unity 社内用のベンチマークの 1 つでは、シングルスレッドで実行されているときでさえ、OpenGL ES 3.1 レンダラーに比べ、Android 上のフレームタイムで最大 35% の向上が見られました。

まず初めに

ベータ版のページから実験版ビルドを取得してください。ビルドは、Unity 5.5 beta 4 リリースです。ベータ版を試す前に、忘れずにプロジェクトのバックアップを取っておいてください。

Vulkan サポートを有効にするには “Player Settings…” を開き、“Other Settings” ペインの “Auto Graphics API” チェックボックスを無効にします。すると、グラフィックス API のリストが選択肢として表示されます。Vulkan がリストにない場合は、下の方の + をクリックして追加します。次に、Vulkan をリストの一番上位になるようにドラッグします。こうしておけば、Vulkan が可能な場合はいつでも使用されます。設定はこれで終わりです。存在するすべてのシェーダーは Vulkan SPIR-V に変換され (#pragma only_renderers などを通じて、特別に無効にされない限り)、「何もしなくても 勝手に動く」はずです。

Player settings

また、”Graphics Jobs” チェックボックスも試すことができます。これを使うと、特にマルチコア CPU で、パフォーマンスを向上させることができます。

注意 ― Android をターゲットにするとき、“Multithreaded Rendering” と “Graphics Jobs (Experimental)” 設定を絶対に同時には有効にしないように気を付けてください。その 2 つは互いに排他的なので、最終リリース版では、Graphics Jobs を有効にすると、警告なしに Multithreaded Rendering は無視されるようになります。

あとは、ビルドして実行するだけです。すべてがうまくいったら、以下のようなものがプレイヤーログの startup に表示されます。

235c803738138c489e67185497ccbd64

サポートするデバイス

Vulkan をサポートするこのプレビュービルドは、以下のターゲットで使用できます。

* Windows スタンドアロン (エディターでは Vulkan はまだ、サポートされていません)
* Android
* Linux スタンドアロン

Windows では、主に Nvidia と AMD の GPU をテストしました。GPU ドライバーをアップデートするのを忘れないようにしてください。Vulkan は新しい技術で、ドライバーは常に更新されています。クラッシュする不具合の報告をする前に、まず、ドライバーをアップデートして問題解決できないかを確認してください。

Android では、以下のデバイスでテストしました。

* Samsung Galaxy S7 (ARM Mali GPU 搭載の欧州バージョン)。ビルドが 2016 年 8 月以降の最新のファームウェアであることを確認してください。それより前のファームウェアは古いドライバーを使っており、作動しません。
* Nvidia Shield Tablet (両バージョン)、Shield Console
* Google Nexus 6P、5X (これらのデバイスでは、他に比べて問題が多く発生する可能性があります)

以下のデバイスは、現在使用できるファームウェアでは作動しないことが確認されています。

* Samsung Galaxy S7 (Qualcomm GPU 搭載の US バージョン)。ドライバーがアップデートされる次のファームウェアでは、問題が修正されると予想されます。更新 ― Samsung は 2016 年 10 月の次回のシステムアップデートで Qualcomm ベースの Galaxy S7 用に、修正した Vulkan ドライバーをリリースすると発表しました。

Linux では、Nvidia GPU だけをテストしました。libvulkan1 のインストール (Distro から、または、LunarG Vulkan SDK 経由かいずれかで ) と、最近のドライバー (367.x 以降のもの) が必要です。ただし、スプラッシュ画面からゲームに遷移するときに、ランダムにハングが見られました。ですから、この実験版リリースを使用するときに、可能な場合は Unity のスプラッシュ画面を無効にすることをお勧めします。

既知の問題

このリリースは実験的な開発者用プレビューなので、まだ解決していない問題があります。皆様からのフィードバックをお待ちしています。また、不具合や問題が見つかった場合はお知らせください。

* 現時点では、Vulkan の Graphics Jobs は特に、まだ実験的です。クラッシュが発生した場合は、Graphics Jobs を無効にし、それが原因になっていないかを確かめてください
* GrabPass は Graphics Jobs には対応していません
* Nvidia GPU では、MSAA を有効にした複数カメラをレンダリングすると、画面が崩れることがあります
* 現在 Android では、Graphics Jobs の設定は、2 つの同時実行スレッドで作動するようにしか設定できません。そのため、代わりにマルチスレッドレンダラー (既存のクライアント/ワーカースレッドレンダラー) を使用する方が、多くの場合は良いパフォーマンスを得られます。
* コンピュートシェーダーはまだ、テストを十分に行っていません。効果は状況によって異なります。

どうぞ、新しいレンダラーをお試しいただき、その効果をお楽しみください。良い点、悪い点、好きな点、足りない (不満な) 点など、フォーラムに感想をお寄せください。不具合を見つけた場合は、バグレポートシステムを通して報告をお願いします (報告の際には、実験的な Vulkan ビルドに関しての報告であることを記載してください)。特に、Vulkan レンダラーが Android で GL ES 3.x より遅くなるケース、Windows で DX11 か DX9 よりも顕著に遅くなるケースに注目しています。

45 replies on “Vulkan レンダラーのプレビューがリリースされました”

Can Unity finally fix that uttery terrible Stuttering on Nvidia cards?

We suffer terribly because of the stutter our users get while playing our game if you guys don’t fix this we will move to Unreal and never come back. I’m so getting tired of Unity and I was loving it so much. Very dissapointing engine. This bug is present from 2012 till now…………….

I’m surprised you haven’t submitted a bugreport for this in 4 years. In Fact, nobody has – maybe because it isn’t an issue with Unity, but some users have enforced expensive features like ambient occlusion (SSAO) or DSR in the driver? If you provide some information (preferably a bug report with repro project), I’m sure someone will look into this.

None of these links provide anything to reproduce or understand the issue. Also, the majority of these links says stuttering is caused by another tool or incorrect vsync or refresh rate setup in the driver, or incorrect FixedUpdate/PhysX usage. I have never had any stuttering or hickups like this, and I’m using Unity since 2010, with various nvidia cards on all Windows versions.
Do you also have a stuttering effect if you play for example INSIDE on Steam? I played it from start to end in one sitting, there was no lag or stutter at all and all content is loaded/streamed dynamically. You get 60fps constantly – so what needs to be different to break this? Do you have these hickups also with an almost empty scene where just one cube is spinning?

I’m afraid I get about 58FPS with OpenGL ES 3 and merely 26 with Vulkan on an Android 6P. Nothing fancy, just meshes with standard materials, no special effects. Still, keep the good work, Vulkan is the way to go :)

I’m trying to build to GearVR but the screen doesn’t split. This preview works with VR, or Am I missing something in the building settings?

Was able to get our source to run with Vulkan, there were a slew of Shader Errors, will there be a forum for us to post questions?

Overall THANK YOU, this is very promising

Great work.
Please, before you releasing the new update make a video about all new features.
Thank you.

It’s great to be able to get this kind of updates early on as a preview. The only rant i have is that everything is now delivered as a preview build !

This means i must install at any given point in time, something like 7 different versions of Unity on my machine. (2d preview, scripting update preview, 5.5 beta, vulkan preview, along with the other 2-3 versions of the engine i have installed).

Is this something you’re considering to improve somehow? for example – using the “module” system where each component could have a preview ? (not sure this is currently possible though)

Awesome news! Congrats gfx coders @ Unity :)
I’ll have to add Vulcan support to AVPro Video soon – I’m curious to see if there are any improvements in texture upload speed. I hope that Android MediaPlayer API has Vulcan integration…I’m sure it must have….

“NOTE! When targeting Android, make sure you never have both “Multithreaded Rendering” and “Graphics Jobs (Experimental)” settings enabled at the same time. They are mutually exclusive, and in the final version we’ll silently ignore the Multithreaded Renderer setting if Graphics Jobs are enabled.”

I can’t believe how someone thinks that silently ignoring something is a good idea ever. Unity, listen to this man, change it into enum or at least don’t silently ignore it, but disallow selecting both with an explanation message.

> GrabPass is not supported with Graphics Jobs.

Wow… That’s quite a deal breaker. Is there a way to do refraction without GrabPass?

CommandBuffer based approach should work – copy active render target into another texture, from a command buffer that executes after opaque geometry for example.

Isn’t that an amazing way to kill your framerate?

Already that CommandBuffer has poor performance, I would assume copying the render target from them sure won’t help.

But that is exactly what a GrabPass does.

GrabPass does this: “copy current render target into another texture”.

I’m suggesting a command buffer that does this: “copy current render target into another texture”.

Which part is more expensive, and do you have more details on what is the “command buffers are slow” problem?

Really slow guys… being using Vulkan SDK with UE4 since February… and I still have the GI bugs in deferred rendering, simply falling back to forward path… I’m seriously disappointed guys.

Are the GI+deferred bugs related to Vulkan, or just in general? In the latter case, do you have more detail on what these bugs are, e.g. case numbers?

Don’t know about bug, but reflection probe in Deferred Shading still don’t blend. It’s pretty annoying to have edge showing up when two probes meets. On top, most of our pipeline requires Deferred Shading. So we are stuck with something butt ugly.

I would have this issue too, i had to switch to standard shader. i have noticed they arent blending as well as they used to, im not sure if this was caused by an update to 5.4 from 5.3 ill have to check.

I’m referring to the shadows not working in mixed mode lighting, moved to experimental build againn… it was expected with 5.4, then some 5.4.x (see release notes) now not even in 5.5 :(

Simply because projects already in advanced state on Unity would cost too much money to be moved to UE4… I'[m kinda stuck on a few projects and I feel the pain every time I cannot progress on those.

Read your comment. This isn’t constructive criticism. Please add some details as to why you’re disappointed! It makes you look more creditable and maybe your issues will get solved eventually. Win-win.

Is very constructive, it reads as follows in plain English: “Unity, stop divesting from the Engine to put money in useless services I didn’t buy in the first place. I expect Vulkan and fixed mixed light rendering ASAP, not more services that I never bought”.

Simple and easy to understand I guess… having put a few ten of thousand dollars in this engin I’ve fill right to complain quite loud when I feel robbed.

Did you pay for Vulkan renderer?
Vulkan is a bit new and only supported by a few devices. By the time it is mature, I’m sure Unity will fix that before they release the build. Don’t complain about a feature in a beta build.

Comments are closed.