ランタイム
Scene

ライティング

Mix では ディレクショナルライト、半球ライトなどのシーン全体に対してライティングを行うライトのことをグローバルライト
ポイントライト、スポットライトなどの部分的にライティングを行うライトのことをローカルライトと総称しています。

  • ローカルライトについて
    ローカルライトは部分的なライティングを行うため、シーンに配置されているオブジェクトに対して効果範囲にはいっているかどうかを判定します。
    またローカルライトによるライティングはコストが高く、オブジェクトに対して4本までしか適用することができないため、
    必要がない場合は Mix::Scene::IEntity::SetLocalLighting メソッドで False を設定することお勧めします。

屈折効果

ウォータータイプのマテリアルでウェーブアニメーションを屈折効果にしている場合に機能します。
また、屈折効果は視点が水中にあるかどうかを判定してから行われるため、シーンに ウォータープール ( Mix::Scene::IWaterPool ) を追加し、
Mix::Scene::IWaterPool::SetRefraction メソッドで True を設定する必要があります。

  • 水面のメッシュについて 屈折は特殊な処理であるため、水面のメッシュ( プレーンであることが望ましい )は XZ平面 に水平になるようにしてください。
    XZ平面に対して、垂直なものは屈折処理が正しく動作しませんので注意してください。
  • オブジェクトを配置する際の注意点
    静的なオブジェクトの場合は Mix::Scene::IEntity::SetDefaultWaterContainsResult で屈折面との位置関係をあらかじめ設定しておいてください。
    そうすることによって毎フレーム、屈折面との交差判定を行うことがなくなるため、パフォーマンンスがよくなります。
    また、半透明指定のマテリルが設定されているモデル、ウィジェットはなるべく配置しないようにしてください。
    半透明ポリゴンは内部処理の関係で屈折面の後ろと前に2回に分けて描画する必要があるため事前処理が発生し、パフォーマンスが低下します。
    また、屈折面と重なっている場合、屈折面より下、屈折面より上の半透明ポリゴンの後ろも屈折効果は行われますが、
    屈折面と重なっている部分が輪切りのようになりビジュアル的によくありませんので、なるべくそのような配置は避けてください。

ウィジェットの最適化

ウィジェットにはプランターパーティクルと複数ありますが、レンダラー内部では同じものとして扱って処理しています。
また毎フレーム プリミティブを生成するため、ポイントライト スポットライトによるライティング、マテリアルの設定、パーティクルの発生量にともないパーフォーマンスに大きく影響を及ぼします。

  • プランターについて
    マテリアルは深度の書き込みをしない ( Mix::Scene::IDefaultMaterial::IsZWrite() == False ) ようにし、
    一括描画 ( Mix::Scene::IMaterial::GetTransparencyMethod() == Mix::Scene::IMaterial::TM_LUMP )にします。
    また、深度の書き込み、一括描画の設定は モデルエディター で設定することができます。

  • パーティクルについて
    マテリアルのブレンド加算の場合は、深度の書き込みをしないようにし、一括描画にします。
    それ以外の場合は通常 ポリゴン単位で描画 にします。
    またパーティクルのスプライトは発生順に並んでいるため、見た目にそれほど影響しないようでしたら、一括描画を推奨します。

  • スポットライト、ポイントライトによるライティングについて
    基本的には行わないようにすることがもっとも最適です。
    パーティクルのスプライトはブレンドの関係から奥から手前に向かって描画されるため、
    ライティングの異なるものどうしが入れ子になり切り替えが多く発生した場合、大幅なパフォーマンスの低下につながる可能性があります。
    またレンダラーにはこの状態を緩和するためのライティングモードという機能が備わっています。

    • Default
      ディレクショナルライト、半球ライトによるグローバルライティングのみで、
      スポットライト、ポイントライトによるローカルライティングは行われません。
    • Everyone
      視界に入っている全てのウィジェットをひとまとめにし、ローカルライティングを行います。
      また、ローカルライティングに使用される、スポットライト、ポイントライトの合計は4つに限定されます。
    • Detailed
      ウィジェット単位でローカルライティングを行います。
      ローカルライトによるライティングは可能な限り正しく行われますが、パフォーマンスは最悪です。

ポストエフェクト

  • アンビエントオクルージョン
    物体により光が遮断されている場所に影を落とします。
    また、半透明オブジェクト ( ウィジェットも含む ) に対して実行することはできません。
  • シャドウマッピング
    物体の影を描写します。
    また、パーティクルの影は描画することができません。
  • ルミノシティ
    シーンの輝度による階調補正を行います。
    また、明暗順応により、階調補正が変化します。
  • ブルーム
    シーンの明るいと思われる部分に対し、輝き、発光しているかのような効果をだします。
  • ライトシャフト
    物体の隙間からさす、木漏れ日のような効果をだします。
    また、ゴッドレイ、光芒とも呼ばれています。
  • レンズフレア
    明るい光源( 太陽など )がレンズに向けて当てられている際に反射を繰り返してできた光の写りこみを表現します。
  • フィルミック
    主に、輝度( ルミノシティ )により階調補正されたシーン( RGBの要素が 1.0 を超えている )の色合いを調整するためのものです。
    また、必要に応じてガンマ補正を行う必要がります。
  • ガンマ補正
    シーンの明るさを調整します。
  • モーションブラー
    カメラの動きによってブラーをかけます。
    また、カメラが大きく動いた際につむじのような模様が出てしまう場合は、
    動きを小さくするか Mix::Scene::ICamera::MOTION_BLUR_SETTINGS 構造体の スケール( scale )、減衰値( damping )を調整してください。
  • 色収差
    光がレンズを通過した際の分散により発生した色ずれを表現します。
    また、この効果は画面の周囲に現れます。
  • 被写界深度
    焦点範囲により、シーンの手前と奥に向かって徐々にぼける効果をだします。
  • 歪曲収差
    レンズの影響により画面が歪む効果をだします。
  • ヴィネット
    トイカメラで撮った様な画面の周囲が黒ずむレトロな効果をだします。
  • アンチエイリアシング
    ジャギーを軽減します。