vrchat-time-shaders

vrchat-time-shadersはVRChatのワールドに時間に関係するオブジェクトを追加するためのシェーダパッケージです。

動作原理

現在のVRChatでは現在時刻などの情報をVRCSDK等で直接取得することができないため、

  1. VRC_WebPanelで上記APIページをテクスチャとして表示
  2. ページ上のJSで時刻情報+αをRGB 3 bitでエンコード
  3. カメラでページをRender Textureにコピー
  4. シェーダでRGBから時刻情報をデコード、時計などを表示

という手順で実現しています。
VRC_WebPanelにはガンマ値がおかしくなるバグがある (あった?) ため、念のためにデジタル値でエンコードを行っています。

できること

  • アナログ・デジタル時計 (プレハブ同梱)
  • 満ち欠けする月 (プレハブ同梱)
  • 時間変化する空模様 (プレハブ同梱)
  • 昼と夜で変化するオブジェクト
  • 特定の時間帯で表示・非表示が切り替わるオブジェクト

できないこと

  • 特定の時間帯のみPickupできるオブジェクト
    • 現状シェーダからVRCSDKのTriggerを引けないため
  • 特定の時間帯に音楽を変える
    • index.htmlに音楽再生機能をつけてWebサーバを自分で立てれば可能

ギリギリできそうなこと

    • 鳩時計 (鳩のオブジェクトを大量に作成して「X時0分0秒」,「X時0分1秒」,「X時0分2秒」…にのみ表示するマテリアルを割り当ててアニメーションっぽくする)
    • 人間時計: