レイ タイプ切り替えシェーダ
レイ タイプ切り替えシェーダ
汎用的な切り替え
mip_rayswitch および mip_rayswitch_advanced のユーティリティ シェーダを使用して、各種のレイでさまざまな結果を返すことができます。これを有効に利用できるケースは次のように多数ありますが、これらに限定されるものではありません。
プライマリ レイとセカンダリ レイを分けて、別のシェーダを呼び出す場合。
異なる環境を視点からのレイ(スクリーン バックグラウンドのフォトグラフィック バックグラウンド プレート)、反射レイ(反射で表示される球面の高解像度環境)、およびファイナル ギャザー レイ(シーンのライティングに適したフィルタ環境)に戻す場合。
ほとんど表示されない場合は時間のかかるシェーダを制限する(すりガラスを通して表示される屈折では、複雑なセカンダリ照明やアンビエント オクルージョン シェーダを回避する)。
mip_rayswitch シェーダは、他のカラー セット(通常は他のサブシェーダのセット)を受け入れて、特定のクラスのレイを求める単純なシェーダです。
declare shader "mip_rayswitch" (
color "eye",
color "transparent",
color "reflection",
color "refraction",
color "finalgather",
color "environment",
color "shadow",
color "photon",
color "default"
)
version 1
apply material, texture, environment
end declare
プライマリ レイの場合、eye は視点からのレイの結果を設定します。
セカンダリ レイの場合、transparent 、reflection 、environment は、それぞれ透明度レイ、反射レイ、環境レイの結果です。
finalgather は、ファイナル ギャザー レイの結果であり、ファイナル ギャザー レイに対する子レイの結果でもあります。
同様に、shadow はシャドウ レイの結果であり、photon はすべてのフォトン レイを受け取ります。
最後に、default はその他のレイ タイプの結果です。これは失敗した場合の既定ではなく、シェーダに接続したかどうかにかかわらず、上記レイ タイプはそれぞれその結果を返します(つまり、通常は 0 0 0 0 黒)。
失敗した場合の既定が必要なときは、拡張バージョンのシェーダを使用する必要があります。
declare shader "mip_rayswitch_advanced" (
shader "eye",
shader "transparent",
shader "reflection",
shader "refraction",
shader "finalgather",
shader "environment",
shader "any_secondary",
shader "shadow",
shader "photon",
shader "default"
)
version 1
apply material, texture, environment
end declare
このシェーダは、mip_rayswitch と非常に似た処理を行いますが、タイプ "color" の入力を受け入れるかわりに、タイプ "shader" の入力を受け入れます。
これにより、固定カラーを直接割り当てできなくなりますが、代わりに失敗した場合の既定 が得られます。
同様に各パラメータが機能します。eye 、transparent 、reflection 、refraction などがあり、それぞれ視点からのレイ、透明度レイ、反射レイ、屈折レイのシェーダです。
これらのシェーダのいずれも指定されない 場合、失敗したケースのうちの 1 つに引き継がれる点が異なります。特定のセカンダリ レイ タイプのシェーダがいずれも指定されない場合は、そのタイプのレイが到達すると、any_secondary は、明示的に設定されていないすべてのセカンダリ レイ タイプに対応するように機能します。
同様に、default パラメータも、このパラメータよりも上に指定されていないどのシェーダにも対応するように機能します。
環境の切り替え
mental ray を使用していて発生する従来の問題は、実際の使用で、環境 の概念に対するバックグラウンド の概念を区別する必要が多いのに対して、"環境" という 1 つの概念だけしかないことです。
このシェーダは、まさにこれを実現します。
declare shader "mip_rayswitch_environment" (
color "background" default 0 0 0 0,
color "environment" default 0 0 0 0,
)
apply texture, environment
version 1
end declare
シェーダは、任意の視点からのレイ、視点からのレイの子である透明度レイ、または前の透明度レイと同じ方向に移動する任意の屈折レイ(つまり、タイプ miRAY_REFRACT のレイで、1.0 の IOR で屈折していて、視点からのレイの直接の子)の background を返します。
その他のタイプのレイの場合(反射、屈折、ファイナル ギャザーなど)シェーダは、environment カラーを返します。
シェーダは、カメラ環境としての使用を想定していますが、"プライマリ" レイおよび "セカンダリ" レイの区別が必要な多くのケースで、シェーディング グラフのどこでもレイ切り替えノードとして機能します。
たとえば、「ベスト オブ ボース ワールド 」のページで説明されている mip_matteshadow の "best of both worlds" の使用をサポートするために、プライマリ レイとセカンダリ レイ間を切り替えるには、これが理想的なシェーダです。
レンダー ステージの切り替え
mental ray がレンダリング パイプラインのどこにあるかによって、さまざまなカラーやサブシェーダの使用が必要になる場合があります。たとえば、ファイナル ギャザー レイに対して特定のマテリアルを完全に不透明にしたり、フォトンの放出中はライトを別のカラーにしたりする場合などがあります。
declare shader "mip_rayswitch_stage" (
color "unknown",
color "main_render",
color "finalgather_precomp",
color "ao_precomp",
color "caustic_photons",
color "globillum_photons",
color "importon_emit",
color "lightmapping"
)
version 1
apply material, texture, environment
end declare
パラメータはすべて、他のすべての切り替えシェーダと同様に作用します。
unknown は "不明な" ステージ用です。これは、通常は呼び出されませんが、現時点では明らかでない、今後の mental ray バージョンで導入される新しいレンダリング ステージを回避するための安全上の配慮として存在します。
通常のタイルのレンダリング パス時、シェーダは main_render 入力の値を返します。
ファイナル ギャザー再計算フェーズでは、シェーダは finalgather_precomp の値を返します。
アンビエント オクルージョン再計算フェーズでは、シェーダは ao_precomp の値を返します。mental ray 3.7 では、このフェーズ中にシェーダを呼び出すことがまったくないため、これが呼び出されることはありませんが、今後のバージョンの mental ray では動作が異なる場合があります。
コースティクス フォトン トレーシング時はcaustic_photons 入力の値、グローバル イルミネーション フォトン トレーシング時は globillum_photons 入力の値が使用されます。
インポートンの放出フェーズでは、importon_emit からの値が使用されます。
最後に、ライト マッピング前処理フェーズでは(たとえば、サブサーフェス分散シェーダで使用される)、lightmapping の値が使用されます。