はじめに
没入型の物語やストーリーの分岐を作成することに情熱を注ぐゲームデザイナーとして、私は常に最新のゲーム開発ツールや技術の進歩を探求することに興奮しています。この記事では、Built-in Render PipelineからのカスタムアンライトシェーダーをUniversal Render Pipeline (URP)に変換する過程について掘り下げていきます。
ビルトインシェーダーをURPに変換する
ビルトインプロジェクトをURPに変換した場合、Render Pipeline Converterに遭遇したことでしょう。これは、Unityの標準シェーダーは変換できますが、カスタムシェーダーは変換できません。このビデオでは、より複雑なライトシェーダーについてはCyanの優れたシェーダーコードのチュートリアルで詳しく説明されているので、シンプルなアンライトシェーダーを変換することに焦点を当てます。付属のUnityプロジェクトには、コードに沿って進めるためのサンプルプロジェクトと完成した成果物が含まれています。
アンライトシェーダーをURPに対応させる
現在のアンライトシェーダーは、『SRP Batcherと互換性がありません』というメッセージと、C-bufferに関する警告が示すように、Scriptable Render Pipeline (SRP) Batcherと互換性がありません。SRP Batcherに対応させるには、レガシーのCGプログラムとインクルードを削除し、新しいHLSLプログラムとcore.hlslライブラリを使う必要があります。また、’appdata’ではなく’attributes’、’v2f’ではなく’varyings’など、URPの慣例に合わせてvertex関数とfragment関数の構造も更新する必要があります。
テクスチャーのタイリングとオフセットを実装する
テクスチャーのタイリングとオフセットをサポートするには、core.hlslライブラリが提供する’sample_texture2D_with_st’などの特定のマクロを使用する必要があります。また、URPの命名規則に従ってテクスチャーとサンプラーの変数を正しく宣言する必要があります。最後に、’transform_text’マクロを使って、タイリングとオフセットの値を考慮しながらフラグメント関数にUV値を適切に渡します。
まとめ
このチュートリアルで説明した手順に従えば、ビルトインレンダーパイプラインのカスタムアンライトシェーダーをUniversal Render Pipelineに変換できるようになります。これにより、シェーダーがScriptable Render Pipeline Batcherと互換性のある状態になり、URPの利点であるパフォーマンスの向上や最新のレンダリング機能との互換性を活かしつつ、ゲームの視覚的な魅力も保つことができます。
ポイント:
- Render Pipeline Converterを使ってビルトインシェーダーをURPに変換する
- レガシーのCGコードを削除し、HLSLとcore.hlslを使ってアンライトシェーダーを準備する
- URPの慣例に合わせてvertex関数とfragment関数の構造を更新する
- URP固有のマクロを使ってテクスチャーのタイリングとオフセットを実装する
- カスタムシェーダーがScriptable Render Pipeline Batcherと互換性があることを確認する