ガラス球向けガラスシェーダー Ver2.1
- ダウンロード商品無料ダウンロード¥ 0
- ダウンロード商品Boost用¥ 100
- ダウンロード商品旧バージョン(V2.0A)¥ 0
- ダウンロード商品旧バージョン(V2.0)¥ 0
球体などに適用することでガラス球のような見た目にできるシェーダーです。 ●ゆがみや反射の度合いを調節可能 ●球面へのテクスチャやノーマルマップを適用可能 ●ワールドのライティングにある程度追従するMatcapを使用可能 VRChatでの使用を想定し、2019.4.31f1で動作確認しています。 【V2.1での変更】 VRChatのアップデート(リリース時点ではOpen Beta)に対応し、シングルパスインスタンシングレンダリングをサポートするようになりました。 Unity 2020.3.30f1でも動作確認を行いました。 このバージョンより、Shader Forgeでの再編集は非対応となります。 【V2.0Aでの変更】 VRChatで使用する際、Safety設定によるシェーダフォールバックを受けた際に非表示となるよう変更しました。 従来のバージョンが必要な場合は旧バージョンも引き続きダウンロードできます。
インストール
<インストール> Unityプロジェクトを開き、Oyasumisan_GlassSphere.unitypackageをインポートしてください。
使い方
まず任意のマテリアルにて、「Shader Forge/oy_GlassSphere」で始まるいずれかのシェーダを選択してください。 シェーダごとの違いは以下の通りです。 「oy_GlassSphere_2.0」:標準となるガラス球シェーダです。別途販売しているハーバリウムなカメラに同梱しているものと同じ内容のものになります。 「oy_GlassSphere_Forward_2.0」:表面描画としたバージョンです。「Forward」の有無による違いは後述する<おまけ1>を参照ください。 「oy_GlassSphere_2.0(ZWrite)」 「oy_GlassSphere_Forward_2.0(ZWrite)」:ZWriteをオン(デプスマップ書き込み有り)にしたバージョンです。ZWriteの有無による違いは後述する<おまけ3>を参照ください。 「oy_GlassSphere」 「oy_GlassSphere_Forward」:2021年2月9日まで配布していた旧バージョンです。従来通りの見た目にしたい場合に使用ください。 次にMatcapのテクスチャ欄に、Texturesフォルダ内に同梱している「matcap_horizon_gradation.png」をセットします。 他のパラメータはデフォルトの設定でまずは試してみてください。 また、Oyasumisan/GlassSphereShader/内にサンプルプレハブを、 Oyasumisan/GlassSphereShader/Materials内にサンプルマテリアルを同梱しています。 ◆ShaderForgeで作成していましたが、Ver 2.1にてシングルパスインスタンシングレンダリングに対応する都合でShader Forgeでの再編集には非対応となりました。 なお、VRChatにてこのシェーダを使用した際、他プレイヤーのセーフティ設定によりシェーダを無効化された場合には、表示しないもの(Hidden)としてふるまいます。
設定項目
以下のパラメータを調整して、好みのガラス感を出してみてください。 Use Distortion: Distortion(縁のゆがみ)の使用をオンオフできます。 Distortion: ガラスを通して見えるもののゆがみ度合いを調整できます。 小さな値にするとゆがみ効果が大きくなり、大きな値にするとゆがみ効果はなくなります。 実際のガラスとは違う効果ですが、適度な値にすることでガラスらしさを表現できるかもしれません。 設定したら、モデルを斜めや横から見てみてください。 Specular: 表面での反射度合いを調整できます。 リアルタイムライト及びReflection Probeによる反射度合いになります。 Gloss: こちらも表面での反射度合いですが、Specularと効果のかかり方が違います。 大きな値にすると、映り込みが鏡面のようにくっきりします。 こちらもリアルタイムライト及びReflection Probeによる反射度合いになります。 【NEW】Exposure: 明るさ補正機能です。 Exposureスライダを調整することで、ガラスを通した景色の明るさを調整できます。ガラスに集光する様子をイメージした明るさの調整などに使用ください。1が補正無しです。 Albedo_Base_Color: ガラスのベースの色味を変更します。 Glass_Color: ガラスのベースの色味を変更します。(Albedo_Base_Colorでも変更できますが、こちらを変えると少し暗くもできます) Incident_Color: ガラス自体とは別に、入射光に対しての色味付けや明るさの強弱を調整できます。 Reflection_Color: 反射光全体(Specular,Matcap)に対しての色味付けや明るさの強弱を調整できます。 Emission_Base_Color: 暗いワールドなどで、周囲の明るさや傾きによらず常に一定の色で光らせたい場合に設定します。 通常は黒のままで良いです。 Matcap: Matcapとして使用する画像をセットします。 Matcapにより、ワールドのライトやReflection Probeによらず、光を反射しているように見せることができます。 Matcap Style: Matcap効果の現れ方を切り替えます。 オフの場合:Matcapテクスチャの反映がワールド基準になり、疑似的なReflection Probeのような感じになります。 添付している「matcap_horizon_gradation.png」ではオフ推奨です。 オンの場合:Matcapテクスチャの反映がビュー基準になり、一般的なMatcapっぽい挙動になります。 Matcap_Scale: Matcapによる反射光のサイズを変更します。小さくすると広範囲にわたって反射しているように見えます。 大きなオブジェクトに適用する場合にこの値を小さくするなど試してみてください。 Matcap_Strength: Matcapによる反射の強さを設定します。 反射光全体の明るさはReflection_Colorで変更できますが、こちらはそれに加えてMatcapのみを調整するものです。 (Matcapによる反射はEmissionで実現しているため、好みに応じて強弱をつけられるようにしました。) Matcap_Hue_Range: Matcapによる反射に対する、色相変化効果の強弱を調整できます。 Matcapにはメガネレンズのコーティングをイメージして、視点からの位置関係で色相が変化する効果を追加してあります。0にすると色相は変化しません。 Matcap_Emission_Bottom: Matcapによる反射では、ワールドの明るさに応じたMatcapの明るさ調整を行っています。 この明るさ調整の下限値を調整できます。 Normal Map: 必要であればノーマルマップを指定できます。例えば型ガラス風にしたり、表面に水滴がついているかのような効果を付加したりができるかもしれません。 【NEW】Normal Intensity: ノーマルマップ影響強さの調整です。 ノーマルマップを指定した場合にのみ有効です。指定したノーマルマップの影響を弱めることでガラスの風合いをお好みで調整できます。 Texture: ガラスに適用するテクスチャを指定します。 アルファ値に対応しています。 また、テクスチャの描画はDistortionの影響を受けます。 Texture Opacity: テクスチャ全体の透過率を指定します。 0で不透明、1で完全に透明となります。 ※ダミーパラメータ Color このパラメータはVRChatにてセーフティ設定によりシェーダを無効化された際、半透明のシェーダとしてふるまうために必要なパラメータであり、変更不要です。 このパラメータを変更することによる見た目の変化はないようです。
おまけ1
このシェーダー「oy_GlassSphere」はFrontface Culling(メッシュの裏面に描画し、表面は非表示)ですが、 逆のBackface Culling(メッシュの表面に描画し、裏面は非表示)に設定しただけのシェーダー「oy_GlassSphere_Forward」も同梱してあります。 特徴は以下のような感じです。 「oy_GlassSphere」 ・内側に入った物に球の反射光が被らない ・内側に入った物がゆがまない(ゆがむ場合は、その物の背面側に描画される) ・Distortion値をある程度大きくしてもガラス玉っぽさがある ※私見 ・(多分)大きなものを入れるには向かない ※私見 ・アバターなど歪ませたくないものを入れる場合向き 「oy_GlassSphere_Forward」 ・内側に入った物に球の反射光が被る ・内側に入った物がゆがむ ・Distortionを小さくするととてもガラス玉っぽい ※私見 ・無機物などゆがませても問題ないものを入れる場合向き 好みや用途に応じて好きなほうをお使いください。
おまけ2
「oy_GlassSphere」を使用する際には球の表面にあたる部分の反射は再現できないため、 同じ形のメッシュ(オブジェクト)を同じ位置、サイズでもう一つ重ねて使用することを想定した透明のMatcapシェーダーを2種類同梱しています。 いずれも背景を透過し、Matcapのテクスチャだけを重ねるシェーダーです。 各パラメータは「oy_GlassSphere」に準じます。 「oy_Matcap.shader」 こちらはワールドの明るさに応じたMatcapの明るさ調整が可能になっています。 「oy_MatcapSimple.shader」 こちらはMatcapの明るさは周囲によらず固定で、Matcap_Strengthのみ調整可能です。 明るさ調整が不要であればこちらのほうが軽量です。 設定例は「Matcapシェーダー設定例.PNG」にあります。 また、Matcapテクスチャの例としてTexturesフォルダ内に「Matcap_01.png」を同梱しています。
おまけ3
バージョン2.0のシェーダについて、ZWriteをオン(デプスマップ書き込み有り)にしたバージョンを同梱しています。 このバージョンは通常の見た目にはZWrite無しと変わりありませんが、このシェーダを適用したメッシュの距離情報がデプスマップに書き込まれます。 これにより、例えばカメラの被写界深度効果を適用した際、このシェーダを適用したメッシュにピントを合わせられるようになります。 ただし、ガラス球シェーダを透過した向こう側の景色にもピントが合うことになるため、このバージョンはテクスチャ等で向こう側が透けない使い方をする場合や、歪みを強く効かせる場合での使用をお勧めします。 ※ZWriteを有効とするには、マテリアル設定のRender Queueを2500以下に変更する必要があります。
更新履歴
Ver 2.1 2022.03.11 VRChatのアップデート(リリース時点ではOpen Beta)に対応し、シングルパスインスタンシングレンダリング(Single Pass Instancing)をサポートするようシェーダのコードを変更 また、Unity 2020.3.30f1にて動作確認 この対応により、Shader Forgeでの再編集は非対応となります Ver 2.0A 2022.02.23 VRChatの現時点のシェーダフォールバックの仕組みに対応し、フォールバック先を非表示(Hidden)に変更 これに伴い各シェーダの名称を変更 Ver 2.0 2021.02.09 unitypackageを同梱 シェーダの歪み計算値を最適化 明るさ補正機能の追加 ノーマルマップ影響強さの調整機能の追加 ZWrite版(デプスマップ書き込み有り版)の追加 Ver 1.1 2019.06.15 oy_GlassSphere_Forward.shaderについて、シェーダの名称がoy_GlassSphere.shaderと同じになっていたため、Unity上で共存できなかったのを修正 (シェーダ名を"Shader Forge/oy_GlassSphere_Forward(VRCSafety:Particle)"に変更) Ver 1.0 2018.12.01 公開