VRCSmokeGlassのドキュメントです
ここでは曇りガラスシェーダを使い1からセットアップする方法を紹介します。
1枚だけワールドに配置する場合は、セットアップ済みのprefabをHierarchyにドロップすることで簡単につかえますが、
2枚目以降を作成する場合はRender Textureなど自分で新たに作成する必要があります(もちろん2枚つかうことは重くなりますので非推奨ではあります)
この解説はその方向けのため、最初に配置する方は 曇りガラスをprefabから導入する を参照してください。
また、無料配布のunitypackageにはprefabが一つ含まれています。 それをHierarchyにドロップすることで初めから使える状態になります。
細かいガラスの調整に関しては以下の逆引きリファレンスを読んでください。
まず、深度情報(ガラスからどれだけ近いのか)を取得するために Render Texture を作成します。
Projectウィンドウで右クリックし、メニューを開き、Create -> Render Texture の順番で選択して Render Texure を作成してください。

そして、作成された Render Texture を選択し、Inspectorから Color Format を Depth に変更します。
このとき、Size の項目もデフォルトの 256x256 では小さすぎるため、1024x1024 や 2048x2048 あたりに設定すると良いでしょう。
(もちろんサイズを増やすと負荷が増えます。一応推奨値は 1024x1024 です)

次に深度情報を写すためのカメラを作成します。
Hierarchy の空いているスペースで右クリックし、Camera を選択してカメラを作成します。

次に作成されたカメラを選択し、Hierarchy に表示された設定を行っていくのですが、ここは項目が多いです。
Clear Flags を Solid Color にして Background を真っ黒の状態にします
Projection を Orthographic にします
Sizeについてはガラスの大きさに直結するため、平行投影カメラとTolerance、表示面の調整で解説しています。Clipping Planes の Far を 5 に設定します。
5 はこちらで設定しているデフォルトの値です。Target Texture に先ほど作成した Render Texture をドロップして設定します。Allow HDR のチェックボックスを外します。Allow MSAA のチェックボックスを外します。
この画像のようになっていれば大丈夫なはずです。
お次は作成した平行投影カメラから得た深度情報をガラスの曇り情報へと変換するための CustomRenderTexture を作成するのですが、
この Custom Render Texture には曇り情報へと変換するためのシェーダを割り当てたマテリアルを作成する必要があります。
Projectエリア の空いている部分を右クリックし、 Create -> Material を選択し、 Material を作成します。

次に作成した Material を選択し、 Inspector から設定を行います。
まずはシェーダを選択します。VRCSmokeGlass -> Writer -> SGHitBufferWriter の順で選択してください。
これは Smoke Glass Hit Buffer Writer の略で、曇りガラス当たり判定バッファ書き込み機 の意です。

次にこのシェーダの設定を行っていきます。
Render Texture に先ほど作成した Render Txture を指定します。Tolerance は基本的に規定の値です(specified value)。変更しないでください。
5 mを基準に、カメラ範囲のどれぐらいの割合を当たり判定から除外(マスク)するか、のパーセンテージです。0.99。 即ち99%の範囲は除外されるため、 カメラから 0.05 メートル範囲内しか認識されません。Using blur は曇っている表現をリアルにしたい場合はonにしてください。ガラスにお絵かきしたい場合はoffがお勧めです。Reset は曇り状態リセット用です。 Enable Restoration をオフにしているときはこれを即座にon/offするボタンを作ってあげると喜ばれます。Enable Restoration は基本的にonにしておきましょう。これを有効にすることで拭った場所が徐々に曇った状態へ戻ります。
補間方法など詳しいパラメータの説明は SGHitBufferWriterシェーダのパラメータ解説 を参照してください。
Render Texture の時と同じように、 Projectウィンドウ の空いている部分を右クリックし、 Create -> Custom Render Texture の順に選択し、Custom Render Texture を作成します。

そして、作成された Custom Render Texture を選択し、Inspector にて設定を行います。
Size は Render Textureと同じサイズが良いでしょう。(下の画像では 1024x1024 に変更しています)Aniso Level は 0 に設定しますMaterial には 3.CustomRenderTexture用マテリアルを作成する で作成したマテリアルを割り当てます
Shader Pass は UPDATE にしますInitialization Mode は OnLoad に
Source は Texture and Colorに、そしてここの Texture には先ほど作成した Render Texture を指定しましょうUpdate Mode は Realtime に
Double Buffered にチェックを入れますUpdate Dozne の + ボタンを押して一つ追加しておきます
これでカメラから深度情報を受け取り、それを曇り情報に変換し、シェーダによってガラスの質感へと変換させる準備ができました!
最後にガラス面に適用するためのシェーダを設定すべくマテリアルを作成します。
同じように Projectウィンドウで右クリックし、メニューを開き、Create -> Material の順番で選択して Material を作成してください。

そして、作成された Material を Inspector からシェーダの変更とパラメータの設定を行います。
Standard から VRCSmokeGlass -> SmokeGlassStandard に変更
表示のための Quad を作成し、前項で作成したマテリアルを割り当てます。
Quadを作成するとき、カメラの縦横サイズと同じサイズすることを忘れないでください。
そして、カメラの縦横位置と Quad の位置を完全に合わせた上で Quad をカメラ範囲の直前に配置します。
当たり判定は先ほど設定した 0.05m 範囲内しかおこなわれないため、この範囲内に上手いこと設置します。
(何度か試してうまい書き心地になるまでトライしてみてください。CubeやSphereで当たり判定を試して上手く拭えても実際にVR上で確認すると触れていないのに反応してしまったり、微妙だなぁとなることが多いです)
これで曇りガラスの設置は完了となります。 まずは動作確認として、何か適当なCubeやSphereを作成し、ガラス面に当ててみてください。その場所が拭えていれば成功です。 あとはVRChatにログインしつつ納得がいくまで調整を重ねてください。