第6回 レンダリングの効率改善【視線追跡レベル】
第6回 レンダリングの効率改善【視線追跡レベル】
Shade 12では、レンダリング時の視線追跡レベルに関する仕様が改善され、レイトレーシング・パストレーシング時に、「反射・屈折しない透明体は視線追跡レベルに影響されない」ようになりました。これにより、部分的にドラフトレイトレーシングと同等の手法で効率良くレンダリングされるようになります。
この変更の目的は大きく2つあり、透明度マッピングを使用したビルボードなどのレンダリングの効率化と、Shade 12の新機能でもあるボリュームレンダリングの扱いを容易にする事です。
透明体やボリュームレンダリングを使う場合、必要ない場合には、なるべく反射・屈折を使わないことでレンダリング速度が今まで以上に向上することがあります。
この変更では、状況によっては以前のパージョンとレンダリング結果が大きく変わる場合がありますので、それについても説明します。
視線追跡レベル
レンダリング時の視線追跡レベルは、レンダリング設定パネルの「その他」タブ、「視線追跡レベル」で設定します。デフォルトでは5です。※1
※1 レイトレーシングでは、カメラ(視点)から仮想的な光線を発射し、形状表面の反射や屈折を何回もシ ミュレートします。コンピュータで計算する場合、この反射・屈折を常に最後まで計算するのはとても大変なので、ある回数以上は計算を行わないようにしま す。(たとえば、合わせ鏡を作ってしまうと、無限に計算が必要です。) この制限回数が「視線追跡レベル」です。この設定値を上げると、より正確に計算す ることが出来ますが、計算時間が多くかかるようになります。
視線追跡計算の際に、この「視線追跡レベル」の数以上に反射・屈折する形状があると、それ以上は視線の追跡を行わず、「背景の色」が映り込む仕様になっています。(下記の画像では、目立つように、背景を赤にしています。)
Shade 12では、「反射・屈折しない透明物体では視線追跡レベルに影響されない」ように変更されました。ここでいう「追跡レベルに影響されない」というのは、「その場所において、新たな視線追跡計算を発生させない」という事を意味します。これはレイトレーシングの際にも、部分的にドラフトレイトレーシング※2 として計算するという事ですので、従来よりも計算効率が良くなります。
※2 ドラフトレイトレーシングでは、反射・屈折は常に計算しません。ただし、透明な形状の場合は、追跡レベルに関わらず光の透過のみ計算します。この場合でも、新たな視線追跡計算を発生させないので、レンダリング速度は速いのです。
以下の画像では、視線追跡レベルは5のままですが、従来では背景の色が映り込んでした部分に背景が映り込まなくなっています。状況によっては、以前のレンダリング結果とはかなり結果が変わってしまっていますのでお気を付け下さい。 また、レンダリング速度も改善されています。
大域照明を使っている場合は従来のように背景が映り込んでしまいます。これは、大域照明の計算では、反射・屈折が無くても拡散反射が設定されていると、その場所において、新たな視線追跡計算が必要なためです。ただし、この場合でも、次で述べるような透明度マッピングの例など、完全に大域照明の寄与がほぼゼロとみなせる部分があれば、その部分では視線追跡を効率化することが出来ます。
透明度マッピング
透明度マッピングを用いて複雑なシルエットを再現する場合、従来では、それに合わせて、視線追跡レベルを大きく上げる必要がありました。必然的 に、シーン全体のレンダリング時間がかかってしまう事がありましたが、今回の変更で、レイトレーシング時にはレベルを上げる必要はなくなりました。(大域 照明の場合は、レベルを上げる必要があります)
「ジプシーIKEDAのShade制作日記 『山の作り方』」でも紹介されている、いわゆる「ビルボード」のような形状は、トリムマッピングか透明度マッピングを 使います。トリムマッピングを使用した場合、マッピング画像として使う画像は、白黒2値として扱われるため、輪郭が汚くなる事があります。透明度マッピン グであれば、画像にアンチエイリアスをかけたりすることで、輪郭をスムースにする事が出来ますが、透明物体として扱われるため、従来は視線追跡レベルを上 げなければなりませんでした。
以下のシーンは特に違いが出やすい例で、透明度マップを用いて自由曲面に編み目模様をマッピングし多重に重ねたものです。レンダリング速度も向上しています。
Shade 12 / 47秒 (左)とShade 11 / 27秒 (右) どちらも追跡レベル5。さらに、従来は右画像のように背景が映り込んでしまうため、視線の追跡レベルを増やさなければならなかった。(900 x 1050 pixel パストレーシング、大域照明無し)
ボリュームレンダリング
特に、ボリュームレンダリングでは、透明な物体を数多く重ねますので、視線追跡レベルが5では足りないことが多くなります。ボリュームを設定した 形状に反射・屈折が無ければ、大域照明無しのレイトレーシング計算では、ボリューム形状が何個重なっていても、背景が映り込んでしまう事はありません。
ただし、ボリュームを設定した形状に、反射や屈折が少しでも設定されていると、いままでどおり背景が映り込んでしまい、かつ、今回の効率化は適用されませんので、レンダリング時間もかかってしまいます。
通常のボリュームレンダリングでは、あまり屈折率や反射率を設定することは少ないと思いますが、少しでもこれらの設定が混ざっているとレンダリング速度が遅くなる原因になります。
フィードバックをお寄せください
以下のフォームから、この記事やShade製品に関してお気づきの点やご意見、ご要望をお送りいただくことが可能です。みなさまの声をお待ちしております。