コンテンツにスキップ

描画品質

大気 (Atmosphere) と水面 (WaterPolygonEntityVisualizer) は、それぞれ描画品質を持ちます。品質は、負荷の大きい処理を描くかどうかだけを決めます。setter で設定した値は書き換えません。品質を下げても、上げ直せば置いた値のとおりに戻ります。プリセットとの順序にも依りません。

品質 大気 viewer.atmosphere.setQuality() 水面 visualizer.setQuality()
値 "minimal" / "low" / "medium" / "high" 同じ 4 つ
列挙型 mapray.Atmosphere.Quality mapray.WaterPolygonEntityVisualizer.Quality

品質を置くまでの状態と既定値は API リファレンスを参照してください。水面は setQuality を呼ぶまで quality が undefined ですが、描き方は medium と同じです。

大気の品質は、大気・Render Effects・太陽・月・星・雲・夜景・地表・建物・点群・水面のすべてに影響します。水面の品質は水面だけに影響します。

大気の品質

見え方

minimal low medium high
minimal low medium high
minimal low medium high
minimal low medium high
minimal low medium high

上から、昼の富士山、太陽の低い富士山 (仰角 6°)、夕日の方向、宇宙から見た昼夜の境界です。

  • minimal / low では空気遠近と地表の物理ライティングが無いので、遠景が霞まず、太陽が低くても地表に陰影が付きません
  • minimal / low では、宇宙から見たときに昼夜の境界が描かれず、全球が昼に見えます。宇宙からの表現には medium 以上を使ってください
  • 夕日の図では、medium / high だけ太陽のまわりにブルームが掛かります

機能

機能 minimal low medium high
HDR パイプライン (トーンマップ) なし。キャンバスへ直接描く あり あり あり
ブルーム・光芒 なし なし あり あり
アンチエイリアス ブラウザ標準 なし マルチサンプル マルチサンプル (サンプル数が多い)
建物・点群の大気ライティング なし (固定のライティング) あり あり あり
地表の大気ライティング (太陽・環境光) なし なし あり あり
空気遠近 なし なし あり あり
地表の物理ライティング なし なし あり あり
宇宙視点の細かい空気遠近 (空気遠近なし) なし あり あり
空・空気遠近の計算の細かさ 粗い 粗い 細かい 最も細かい
大気の再計算の頻度 最も少ない 少ない 毎フレーム 毎フレーム
再計算するカメラの移動・太陽の移動の大きさ 大きく動いたときだけ 大きく動いたときだけ 小さな動きでも わずかな動きでも
再計算するカメラの回転 (空気遠近なし) (空気遠近なし) 小さな回転でも わずかな回転でも
  • 「大気の再計算」は、カメラと太陽に追従する事前計算の結果を作り直す処理です。カメラか太陽が品質ごとの量より大きく動いたときに、品質ごとの最短間隔より短くならない範囲で作り直します (大気の設定を変えたときは間隔を待ちません)。カメラの回転は空気遠近だけを作り直す理由なので、空気遠近の無い minimal / low では効きません。月の照度が 0 より大きいときは、月が太陽と同じ量より大きく動いても作り直します
  • minimal と HDR モード "off" はキャンバスへ直接描くので、ブラウザが持つキャンバスのアンチエイリアスが効きます (サンプル数はブラウザが決めます)。low にはアンチエイリアスがありません
  • マルチサンプルのサンプル数は実行環境の上限を超えません。浮動小数点カラーのマルチサンプルに対応しない環境では、後処理のアンチエイリアス (FXAA) に切り替わります
  • 表に無い品質の文字列を置くと、low と同じ動作になります (quality は置いた文字列をそのまま返します)

品質ごとに反映される Atmosphere の設定

setter minimal low medium / high
setGroundRayleigh / setGroundMie / setMieG / setAtmosphereHeight / setRayleighDistribution / setMieDistribution / setMultiScattering 空と太陽の減光、水面に反映される。地表・建物・点群には反映されない 空・建物・点群・水面の照明に反映される。地表と遠景の霞 (空気遠近) には反映されない すべてに反映される
setExposureScale / setGroundExposure 空・太陽・月・雲・水面に反映される 加えて、ライティングモード PHYSICAL の建物・点群に反映される 加えて、地表に反映される
setAmbient 水面に反映される。地表・建物・点群には反映されない 建物・点群・水面に反映される。地表には反映されない すべてに反映される
setAerialPerspectiveBlend / setAerialPerspectiveDistance 反映されない 反映されない 反映される
setGroundPhysicalLighting / setGroundLightingExposure 反映されない 反映されない 反映される
setBuildingReflectanceLimit 反映されない 反映される 反映される
setDefaultLightingMode と各エンティティのライティングモード 反映されない (固定のライティング) 反映される 反映される
setSkyVisibility / setGroundVisibility / setEnvironmentEnabled / setStarMask 反映される 反映される 反映される

ほかの機能への影響

機能 minimal low medium high
Render Effects のトーンマップ・露出・ガンマ 空・太陽・月・雲・水面のシェーダーの中で反映される 反映される 反映される 反映される
Render Effects のブルーム・光芒 反映されない 反映されない 反映される 反映される
Render Effects の自動露出 反映されない 反映される 反映される 反映される
太陽の照度 (Sun.setIlluminance) 空・太陽の円盤・水面に反映される。地表・建物・点群には反映されない 地表以外に反映される すべてに反映される すべてに反映される
太陽・月の円光 (setGlowIntensity) 反映される 反映される 反映される (ブルームも掛かる) 反映される (ブルームも掛かる)
月の照度 (Moon.setIlluminance) 空の月光・月の円盤・水面に反映される。地表・建物・点群には反映されない 地表以外に反映される すべてに反映される すべてに反映される
星・天の川 描く 描く 描く 描く
雲 描く 描く 描く 描く
夜景レイヤー 描く (空気遠近なし) 描く (空気遠近なし) 描く (空気遠近あり) 描く (空気遠近あり)
水面の大気の照明 (太陽の減光・月光・環境光) 反映される 反映される 反映される 反映される
水面の空気遠近 なし なし あり あり

太陽の照度と月の照度は、どの品質でも、ライティングモード SIMPLE の建物・点群には反映されません。

水面は品質に依らず大気の LUT で照らします。そのため minimal でも、地表・建物・点群と違って大気の照明が効きます。

minimal low medium high
minimal low medium high

(水は品質 high、大気の品質だけを変えています)

品質と組み合わせて変わるもの

品質のほかに、次の設定でも描き方が変わります。

状況 動作
render_effects.setHDRMode( "off" ) どの品質でも HDR パイプラインを使いません。minimal と同じく、地表・建物・点群は固定のライティングになり、ブルーム・自動露出・光芒は効きません。空・太陽・月・雲・水面のトーンマップと露出は効きます
render_effects.setHDRMode( "on" ) minimal でも HDR パイプラインを使います。ただしブルーム・光芒・アンチエイリアスは無く (low と同じ)、地表・建物・点群は固定のライティングのままです
大気を無効にしたとき (setEnvironmentEnabled( false )、または空と地表を両方非表示) 品質に依らず、空を描かず、"auto" なら HDR パイプラインも使いません。地表・建物・点群は固定のライティング、太陽・月は減光しません
setGroundVisibility( false ) 品質に依らず、地表・B3D・点群・水面の空気遠近が消えます
大気が無い Viewer 大気の品質はありません。HDR モード "on" にすると、medium と同じ内容 (ブルーム・光芒・マルチサンプル) で HDR パイプラインを使います
浮動小数点のカラーバッファに描けない環境 品質に依らず大気を無効にし、HDR パイプラインも使いません。大気を持つ Viewer かモードが "on" のときは、コンソールに警告を 1 回出します

水面の品質

水面の品質は水面だけに影響します。全機能を描くのは high です。

機能 minimal low medium high
画面空間反射 なし 少ないステップ数まで 少ないステップ数まで 置いたステップ数 (上限あり)
透け (屈折) なし なし あり あり
コースティクス なし なし なし あり
白波 なし あり (その場の判定だけ) あり あり
泡の履歴 なし なし あり あり
打ち寄せる波・汀線の泡 なし なし あり あり
泡の解像度 低 低 低 高
波の本数 少 少 中 多
波の自己変位 なし なし なし あり
minimal low medium high
minimal low medium high
minimal low medium high

(大気の品質は high)

品質ごとに反映される WaterPolygonEntityVisualizer の設定

setter minimal low medium high
物理量 (setWindSpeed / setWindFetch / setCurrentSpeed / setWaveSteepness / setWaterTurbidity / setSeabed など) 反映される 反映される 反映される 反映される
setWaveHeightScale / setReflectionScale / setSpecularScale 反映される 反映される 反映される 反映される
setReflectionSteps 反映されない 上限で頭打ち 上限で頭打ち 反映される (上限あり)
setReflectionRefine 反映されない 反映される 反映される 反映される
setRefractionScale 反映されない 反映されない 反映される 反映される
setCausticsScale 反映されない 反映されない 反映されない 反映される
setWhitecapScale 反映されない 反映される 反映される 反映される
setFoamLifeScale 反映されない 反映されない 反映される 反映される
setShoreBreakScale 反映されない 反映されない 反映される 反映される
  • どの品質でも、透けの倍率 (setRefractionScale) を 0 にするとコースティクスも消えます
  • 沖合の水域 (Usage.OFFSHORE) は、品質に関係なく画面空間反射・コースティクス・汀線の計算 (打ち寄せる波・汀線の泡) を止めます (Water)

負荷の目安

水面を描く品質ごとの 1 フレームの時間を、水面 medium を 1 としたときの比で示します。

条件 1 フレームの時間 (medium = 1)
水面なし 約 0.7
水面 low 約 0.9
水面 medium 1

水面 minimal と high は測っていません。負荷は GPU と場面によって大きく変わります。実際の環境で測ってから品質を選んでください。

品質の選び方

使う場面 大気 水面
低スペックの GPU、スマートフォン minimal または low minimal または low
一般的な PC medium medium
宇宙からの表現 medium 以上 —
見た目を優先 (静止画・映像の書き出し) high high (HQ Rendering)