メガネレンズ専用シェーダー【無料版あり】
상품 설명
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://github.com/Koczalski/RealisticLensReflectionShader
[拡張エディタについて]
・多機能版のUnity拡張エディタの大幅な仕様変更予定です
모든 리뷰
더보기리뷰 등록
리뷰를 작성하려면 로그인이 필요합니다.
로그인하고 리뷰 쓰기