VRCGraphics
Udonでは、Unityの様々なグラフィックス機能にアクセスできます。
型
VRCShader
グローバルシェーダーセッターを管理する包括的なクラスです。詳細については、以下のドキュメントにある関数を参照してください。
VRCGraphics
Unityの組み込みクラス Graphics\ のサブセットを公開します。詳細については、各関数のドキュメントを参照してください。
VRCCameraSettings と VRCQualitySettings
ユーザーのスクリーンカメラ、ハンドヘルドカメラ、および Unity のグローバル品質設定に関する情報の取得や、限定的な制御を行うことができます。詳細については VRCCameraSettings を参照してください。
公開関数
VRCGraphics.Blit()
シェーダーを使用して、ソーステクスチャをターゲットの RenderTexture にコピーします。宛先に null を指定することはできませんのでご注意ください。
Graphics.Blit を参照してください。
VRCGraphics.Blit() の使用方法について詳しくは、Minimap Example をご確認ください。

Meta Quest に関する注意点
Meta Quest の GPU 上で VRCGraphics.Blit を機能させるには、以下のいずれかを行う必要があります。
シェーダーに ZTest Always を追加する
または
ターゲットの RenderTexture で深度(depth)をオフにする
これを行わない場合、操作は失敗します。
VRCGraphics.DrawMeshInstanced()
GPU インスタンシングを使用して、同じメッシュを複数回描画します。
Graphics.DrawMeshInstanced を参照してください。
VRCShader.PropertyToID()
シェーダーのプロパティ名から ID を取得するには PropertyToID を使用します。この関数は初期化時に一度だけ呼び出してください。取得した ID は再利用可能であり、異なるマテリアルやシェーダー間であっても変化することはありません。
VRCShader.SetGlobal で使用するには、プロパティ名に「_Udon」というプレフィックスを付けるか、文字列「_AudioTexture」である必要がある点に注意してください。ただし、この条件を満たさない場合でも、ID 自体は返されます。
Shader.PropertyToID を参照してください。
VRCShader.SetGlobal()
PropertyToID で取得した ID をキーとして使用し、正しい型の値を指定します。指定した値は、ワールド内のすべてのシェーダー(アバター上のものを含む!)で、PropertyToID に渡した名前を通じて利用可能になります。
利用可能なバリアントは以下の通りです。
- VRCShader.SetGlobalColor()
- VRCShader.SetGlobalFloat()
- VRCShader.SetGlobalFloatArray()
- VRCShader.SetGlobalInteger() (Unity のバグにより、現状では値を
floatとして設定します) - VRCShader.SetGlobalMatrix()
- VRCShader.SetGlobalMatrixArray()
- VRCShader.SetGlobalTexture()
- VRCShader.SetGlobalVector()
- VRCShader.SetGlobalVectorArray()
追加のシェーダーグローバル
VRChatでは、カスタムアバターやワールドのシェーダーで使用できる特別なグローバルシェーダー変数がいくつか用意されています。これらの一覧はこちらで確認できます。
最終更新: