UnityのUniversal Render Pipelineサポート

March 9th, 2020

Universal Render 2Dデモアニメーション

Spine-unityランタイムがUnity2019.3のUniversal Render Pipelineとその2D Rendererに対応したことを発表させていただきます。

Universal Render Pipeline (URP)は高いグラフィックスパフォーマンスを提供するために最適化された、構築済みScriptable Render Pipeline(SRP)であり、Lightweight Render Pipeline(LWRP)の後継パイプラインです。モバイルプラットフォームからハイエンドPC、コンソールまでシームレスに拡張できます。これは新しい 2D Renderer ワークフローを追加しており、2Dゲーム専用に設計された柔軟な2Dライティングシステムを提供しています。

現在、Spine-Unityランタイムを拡張できる追加のUnity Package Manager(UPM)パッケージ com.esotericsoftware.spine.urp-shadersを公開しており、 ダウンロード してURPサポートを追加することで利用できるようになります。

別のパッケージが必要な理由

Unityは、多くのオプションモジュールを新しいUnity Package Manager(UPM)エコシステムに移行しました。 URPベースシェーダーファイルもまた、 Universal RP という名前でUPMパッケージとしても提供されており、ただちにすべての新しいUnityプロジェクトに含まれてはいません。

よってURP Spineシェーダーをspine-unityランタイムに含めてしまうと、Unityの Universal RP パッケージがプロジェクトにインストールされていない場合に、混乱を招くエラーメッセージと追加の設定手順が発生してしまいます。 URP SpineシェーダーをUPMパッケージとして提供することで、このような依存関係は自動的に解決され、この追加機能が使いやすくなります。

今後、私たちはUnityのオプションパッケージに依存する他のSpine-unityの機能用に別途UPMパッケージを提供する予定です。

インストール

UPMパッケージはこちらのダウンロードページかまたはGitリポジトリのspine-unity/Modulesサブディレクトリからダウンロードできます。パッケージのインストール方法については、Spine-unityのドキュメントページに載っている拡張UPMパッケージのインストールのガイドラインに従ってください。

URPの参考例

URPシェーダー選択

パッケージには、com.esotericsoftware.spine.urp-shaders-3.8/Examples/2D/URP 2D Shaders.unitycom.esotericsoftware.spine.urp-shaders-3.8/Examples/3D/URP 3D Shaders.unityに確認用に上のアニメーションGIFに似た2つのサンプルシーンが含まれています。これらはURPシェーダーをそれぞれ2Dおよび3Dレンダラーセットアップで使用する方法を実演しています。 このシーンは、Project Settings - Graphicsで設定されている現在のUniversalRenderPipelineAssetの設定の変更に反応することに注意してください。

使用方法

Spine-unityランタイムのSpine/Skeleton LitSpine/Sprite/Vertex LitPixel LitのスタンダードSpineシェーダーはこのUniversal Render Pipelineには互換性がありません。代わりに、 Spine Universal RP Shaders パッケージはUniversal Render Pipeline専用に作られたシェーダーを提供しており、以下の 2D Renderer サポートを含みます:

  1. Universal Render Pipeline/2D/Spine/Skeleton Lit

    Spine/Skeleton Lit シェーダーのUniversal 2D Renderer版です。

  2. Universal Render Pipeline/2D/Spine/Sprite

    Spine/Sprite/Vertex Lit および Pixel Lit シェーダーのUniversal 2D Renderer版です。

  3. Universal Render Pipeline/Spine/Skeleton

    Spine/Skeleton シェーダーのUniversal版です。

  4. Universal Render Pipeline/Spine/Skeleton Lit

    Spine/Skeleton Lit シェーダーのUniversal版です。

  5. Universal Render Pipeline/Spine/Sprite

    Spine/Sprite/Vertex Lit および Pixel Lit シェーダーのUniversal版です。

これらのシェーダーは、マテリアルプロパティの Shader メニューから通常どおりマテリアルに割り当てることができます。

URPシェーダー選択

Universal Render PipelineシェーダーはProject Settings - Graphicsで割り当てられた UniversalRenderPipelineAsset の設定を反映します。次のGIFは、これらの設定を変更することでシーン内のキャラクターがどのように影響を受けるかを示しています:

Project settings - URPアセット

URPアセット設定のリアルタイム更新

制限事項

他のすべてのSpineシェーダーと同様に、LWRPシェーダーは Linear 色空間を使用する際にPremultiply alpha (PMA)アトラステクスチャをサポートしていません。もしあなたが Linear 色空間を使用している場合は、アトラステクスチャのPremultiply alpha設定を無効にして straight alpha テクスチャとしてエクスポートしてください。詳しくはこちらのstraight alphaのエクスポートおよびインポート設定の手順 をご覧ください。

もしあなたが現在アクティブにしている色空間を確認したい場合はEdit > Project Settings > Player > Other Settings > Color Spaceからご確認いただけます。

Player設定 - Gamma

これらのSpine-Unityランタイムへの追加により、ハイエンドデバイスとローエンドデバイスの両方でさらに印象的なゲームやアプリを作成できることを願っています。フォーラムであなたの考えを共有してください。