VRChat で使用できるシェーダーは次のページにまとめています。
環境を構成するシェーダー/アセットについては次のページにまとめています。
ライティング及びポストプロセスについては次のページにまとめています。
仕様
- 色空間 (Color Space):
リニア
(Linear
) - レンダリングパス (Rendering Path):
フォワード
(Forward
)
参考:
VRChat SDK インポート時 | VRChat 技術メモ帳
Deferred Rendering Path and HDR – VRChat Feedback
透明/透過シェーダー (Transparent / Alpha / Cutout)
カスタムレンダーキュー
- 一般のオブジェクト/不透明 (Opaque):
2000
- カットアウト (Cutout / Alpha Test):
2450
- 透明/透過/半透明 (Transparent):
2500
~3499
の範囲で適切な描画順となるように調整する。
参考:
VRChat ワールドにおける半透明の取り扱いについて/描画順の仕組みを理解しよう | wata23
ユニティちゃんトゥーンシェーダー Clipping 使用時の描画順を直す | わたあめ子
Search Results for ‘Transparent’ – VRChat Ask Forum
Search Results for ‘Transparent’ – VRCat
シェーダーキーワード
公式サイト:
Keywords – Avatar Optimization Tips | VRChat [Official]
リンク:
Recommended Keywords | Pastebin.com
レンダリング方式
- シングルパスステレオレンダリング
シェーダーがシングルパスステレオレンダリングで実行しているかどうかは、UNITY_SINGLE_PASS_STEREO
が定義されているかどうかで判定できる。
#if UNITY_SINGLE_PASS_STEREO
// single pass stereo
#else
// otherwise
#endif
Code language: Arduino (arduino)
スクリーン空間
スクリーン空間でテクスチャサンプルを行う場合、マクロを使用する。
// Declare
UNITY_DECLARE_SCREENSPACE_TEXTURE(_TextureName);
// Sample
value = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_TextureName, i.uv);
Code language: Arduino (arduino)
参考:
そのシェーダー、本当に VR 対応できてますか? Pimax、広視野角ヘッドセットへの対応 – Qiita
ポストプロセスを使って、2D でも 3D でも VR でも使えるフェードとシーンの遷移 | kan のメモ帳
Projection of skymap to objects in VR (Single Pass Stereo) – Unity Forum
レンダーキュー (Render Queue)
過去にマテリアルに設定したカスタムレンダーキューが反映されないというバグ (仕様?) があり、シェーダーのレンダーキューを直接変更しなければならなかったが、現在は修正されている。
参考: