Skip to content

ライティング・明るさ設定

概要

主に明るさに関する設定です。基本的に初期値(プリセットを適用通常ボタンを押した状態)での利用がオススメですが、各種パラメーターを変更して撮影や映像制作に用いることもできます。

パラメーター

名前説明
明るさの下限ライティングで暗くなる限度です。真っ暗になるのを防ぎます。VRChatで利用する際は0.0~0.2あたりに調整することをオススメします。
明るさの上限ライティングで明るくなる限度です。白飛びを防ぎます。
ライトのモノクロ化ライトの彩度です。VRChatで色味がきついワールドでのライティングを補正できますが、周囲との色味の違いを発生させるため注意が必要です。
影色への環境光影響度周囲の光が影の色に影響する強さです。
Unlit化ライティングを無効化しUnlitに近づけます。明るさを底上げする効果がありVRChatの暗いワールドでの補正にも利用できますが、自分が明るくなった分相対的に周囲のアバターを暗くしていることにもなるため注意して利用してください。
頂点ライトの強度頂点ライト(頂点単位で計算されるポイント・スポットライト)の強度です。複数メッシュがある場合は0にすることでメッシュごとの明るさの違いを緩和できます。
ライト方向のオーバーライドライトの方向に加えるベクトルです。大きな値を設定することでライティング条件を無視して任意の方向から照らすことができます。この設定はフォールバックとしても使われるため、xyz全てを0に設定するとライトが全くないなどの条件下で真っ暗になる場合があります。
オブジェクトの向きに追従オブジェクトの向きが変わったときに設定したライト方向のオーバーライドの向きも合わせて動くようになります。
[Built-in RP] ライトの合成ポイントライトやスポットライトなどの追加のリアルタイムライトの合成方法です。
加算: 光学的に正しいが白飛びしやすい
比較(明): 光学的に正しくないが白飛びしにくい
[HDRP] Before exposure limitExposure前に適用する明るさ制限です。
[HDRP] Directional Lightの強さマテリアルに適用するDirectional Lightの強さです。

ライトの計算式(開発者向け)

ライティング部分についてはCC0ライセンスでOpenLitというライブラリとして公開しています。自作シェーダー作成時に明るさを合わせたい場合は適宜ご利用ください。ここではパラメーターの挙動だけ理解できるように簡略化して記述しています。

hlsl
// 色の計算
RGB = clamp(RGB, _LightMinLimit, _LightMaxLimit);   // "明るさの下限" から "明るさの上限" の範囲内に抑える
Mono = (RGB.r + RGB.g + RGB.b) / 3.0;               // RGBの平均値をとって単色化
RGB = lerp(RGB, Mono, _MonochromeLighting);         // "ライトのモノクロ化" の分だけ単色に近づける
RGB = lerp(RGB, 1.0, _AsUnlit);                     // "Unlit化" の分だけ1.0(白)に近づける

// 方向の計算
if(_FollowObject) // "オブジェクトの向きに追従" する場合だけ行列計算を行う
{
    _LightDirectionOverride = length(_LightDirectionOverride) * normalize(mul((float3x3)UNITY_MATRIX_M, _LightDirectionOverride));
}
Direction = normalize(Direction + _LightDirectionOverride); // 元のライト方向と "ライト方向のオーバーライド" を合成

Released under the MIT License.