【セール中】メガネレンズ専用シェーダー【無料版あり】
- 無料版(色収差のみ)Digital0 JPY
- 標準機能版(シェーダーとマテリアル)Digital500 JPY
- 多機能版(高度なシェーダーとプリセット)Digital750 JPY

VRC向け メガネレンズ専用シェーダー です。 マテリアルも同梱しています。 ⚠️:多機能版のUnity拡張エディタの不具合があります。近日中に修正予定です。
概要(高機能版)
リアルなメガネのレンズ表現に特化した、Unity向けのシェーダーです。 物理的な光学現象に基づいた屈折や色収差をシミュレートし、キャラクターのメガネやガラスオブジェクトに深みとリアリティを与えます。 2パスレンダリングとステンシルマスクを利用することで、レンズの輪郭を正確に描画し、背景だけを歪ませることが可能です。度数(凹レンズ・凸レンズ)や屈折率、アッベ数といった光学パラメータを細かく調整でき、理想のレンズ表現を追求できます。
主な機能(高機能版)
・物理ベースの光学パラメータ: ・度数 (Diopters): プラス(凸レンズ)とマイナス(凹レンズ)の度数を設定でき、像の拡大・縮小をリアルに表現します。 ・屈折率 (IOR): 光がレンズを通過する際の曲がり具合を調整します。 ・アッベ数 (Abbe Vd): レンズの材質による色の分散(色収差)の度合いをシミュレートします。 ・高度な色収差コントロール: ・物理的な計算に基づいた色収差と、見た目を調整するためのアーティスティックな色収差を両立。 ・RGB各色の分離スケールやIORの微調整により、多彩な表現が可能です。 ・高品質な描画: ・ステンシルバッファを利用した2パス描画により、レンズの形状の内側だけを正確に処理します。 ・GrabPassで取得した背景に対してエフェクトを適用するため、自然な透明感と歪みが得られます。 ・柔軟なカスタマイズ: ・レンズの半径や厚み、光学中心の設定。 ・法線マップによる表面のディテール表現に対応。 ・距離に応じたフェードアウト機能。 ・屈折のぼかし効果。
導入方法
1. お使いのUnityプロジェクトに、Unitypackage ファイルをインポートします。 2. プロジェクト内で右クリックし、Create > Material から新しいマテリアルを作成します。 3. 設定したマテリアルを、メガネのレンズなど、適用したいオブジェクトにドラッグ&ドロップします。 4. インスペクターに表示される各種パラメータを調整してお好みの見た目に設定してください。
パラメータ解説
ティントカラー (RGB) と 不透明度 (A) / _TintColor レンズに薄く乗せる色(RGB)と、レンズ自体の不透明度(A)を設定します。 滑らかさ / _Smoothness ・マテリアルの滑らかさを設定します。 ・反射のシャープさに影響します。(※このシェーダーは主に屈折を扱うため、効果は限定的です) ・全体的な透明度 / _Transparency ・シェーダー全体の透明度を調整します。 ・_TintColor のアルファ値と掛け合わされます。
光学パラメータ(現実準拠)
・屈折率 nd (d線 589.3nm) / _IOR ・光の屈折の強さを設定します。値が高いほど、背景の歪みが大きくなります。(例: ガラス ≈ 1.52) ・アッベ数 Vd / _AbbeV ・色収差の度合いを決定する値です。値が小さいほど色収差(色のズレ)が強くなります。 ・度数 D [1/m] (+凸,-凹) / _Diopters ・レンズの度数を設定します。 ・プラスの値で凸レンズ(拡大)、マイナスの値で凹レンズ(縮小)の効果が得られます。 ・アッベ分割バランス / _AbbeSplit ・色収差の計算における、赤色側と青色側の分離バランスを調整します。
色収差の制御
・色収差ベース強度 / _ChromaticAberration ・色収差の全体的な強さを調整します。0 にすると物理ベースの計算のみになり、値を大きくするとアーティスティックな誇張が加わります。 ・赤/緑/青 IOR 微調整 / _ChromaticR, G, B ・RGB各色の屈折率を個別に微調整し、色収差の色合いを変化させます。 ・色収差 微調整倍率 / _CA_FINE ・色収差ベース強度によって追加される効果の強さをさらに細かく調整します。 ・赤/緑/青 分離スケール / _CA_RScale, GScale, BScale ・物理計算によって分離されたRGB各色のオフセット量を個別にスケール調整します。 ・Grab背景 色収差オフセット(水平) / _GrabCAOffset ・背景をサンプリングする際に、RGBを水平方向にずらすことで、古いレンズや特定のエフェクトのような表現を追加します。
レンズ形状/スケール
・レンズ半径(正規化) / _LensRadius ・オブジェクトの中心からレンズのエッジまでの半径を正規化(0~1)で指定します。ここで指定した半径の外側は滑らかに透明になります。 ・レンズ厚み(オブジェクト単位) / _LensThickness ・物理計算に影響するレンズの厚みです。 ・1ユニット=メートル換算 / _UnitToMeter ・Unityの1ユニットが現実世界の何メートルに相当するかを設定します。度数(D)の計算精度に影響します。 ・光学中心(オブジェクト空間XY) / _OpticalCenter ・レンズの中心(歪みが最も少なくなる点)をオブジェクトのローカル座標で設定します。 ・近軸高さスケール / _ApertureScale ・レンズの中心から入射する光の高さをスケールします。歪みの度合いに影響します。
ブラー/距離フェード
・屈折のぼかし / _RefractionBlur ・屈折する背景にブラー(ぼかし)をかけます。 ・最大有効距離 / _MaxViewDistance ・カメラからこの距離より遠くなると、シェーダーのエフェクトがフェードアウトし始めます。 ・距離フェード範囲 / _DistanceFadeRange ¥最大有効距離から、完全にエフェクトが消えるまでの距離を設定します
法線マップ
・法線マップを有効にする / _UseNormalMap ・チェックを入れると法線マップが有効になります。レンズ表面の傷や模様などを表現できます。 ・法線マップ / _NormalMap ・使用する法線マップテクスチャを指定します。 ・法線マップの強さ / _NormalStrength ・法線マップの凹凸の強さを調整します。
注意事項
このシェーダーはUnityのBuilt-in Render Pipeline向けに作られています。URP (Universal Render Pipeline) や HDRP (High Definition Render Pipeline) では正しく動作しません。 背景をテクスチャとして取得する GrabPass を使用しているため、描画負荷が比較的高くなる可能性があります。特に複数の透明オブジェクトが重なる場面ではご注意ください。 本シェーダーを使用して発生したいかなる損害・トラブルについても、製作者は一切の責任を負いません。 改変は自由ですが、再配布・販売はご遠慮ください。
更新履歴
・2025年8月17日:無料版・多機能版リリース ・2025年6月25日:初版公開
クレジット
・撮影に使用させていただいたアバター: https://booth.pm/ja/items/6860955 ・ショップ様: https://la-chaton.booth.pm
無料版
# 仕様 無料版は色収差のみの"軽量"でシンプルなものになります。 ※ご要望いただければ機能の追加も検討いたします。
更新・修正予定
[多機能版シェーダーについて] ・以下のシェーダーと統合する予定です: https://github.com/Koczalski/RealisticLensReflectionShader [拡張エディタについて] ・多機能版のUnity拡張エディタの大幅な仕様変更予定です