レンダラ情報の提供

 
 
 

各シェーダ定義には、1 つまたは複数のレンダラ定義を関連付けることができ、次のような重要な情報を格納します。

レンダラ定義を指定する

ShaderDef.AddRendererDef または ShaderDef::AddRendererDef メソッドを使用して、レンダラ定義をシェーダ定義に追加します。このメソッドにレンダラの名前を指定すると、新しい定義が MetaShaderRendererDef または MetaShaderRendererDef オブジェクトとして返されます。MetaShaderRendererDef オブジェクトでは、次の項目を指定できます。

MetaShaderRendererDef アクセス

対応する SPDL 宣言(Renderer セクション)

詳細

MetaShaderRendererDef.SymbolName または MetaShaderRendererDef::PutSymbolName

名前

使用するシェーダ コードのシンボル名を示します。 たとえば mental ray シェーダの場合、この名前はシェーダ用コードが格納されている DLL/DSO 内のシンボル(コールバック)名のプリフィックスを示します。

MetaShaderRendererDef.CodePath または MetaShaderRendererDef::PutCodePath

FileName

シェーダ コードを含む DLL/DSO の名前。 たとえば、{LIBS}/sibase.{EXT} のようになります。

MetaShaderRendererDef.CodeText または MetaShaderRendererDef::PutCodeText

BeginText...EndText

任意のテキストのためのプレースホルダを提供します。これは、レンダリング エンジンによって解釈されたり、シェーダ内部にコンパイルされます(シェーダの実装を含む)。 たとえば以下のようになります。

{
   float4 retcolor;

   retcolor.x = factor.x * (input.x + input.y + input.z) / 3.0;
   retcolor.y = retcolor.x;
   retcolor.z = retcolor.x;
   retcolor.w = retcolor.x;

   return retcolor;
}

MetaShaderRendererDef.RendererOptions または MetaShaderRendererDef::GetRendererOptions

オプション

レンダラ オプションを設定する」を参照してください。

Python の例: 単一のレンダラ定義を設定する

# You need to set up at least one renderer definition for each shader definition.
# Renderer definitions are available via the ShaderDef.RendererDefs property and
# allow you to tell Softimage which renderer to use, which procedure to call, how
# to set any renderer options, etc.
oRendererDef = oShaderDef.AddRendererDef("mental ray")
oRendererDef.SymbolName = "XSIModelMap"
oRendererDef.CodePath = "{LIBS}/xsibase.{EXT}"

# Set the version option
oRendererOpts = oRendererDef.RendererOptions
oRendererOpts.Set("version", 1)

レンダラ オプションを設定する

レンダラ オプションは、レンダラに渡される文字列/値の組み合わせのリストからなります。 オプション名には、任意の文字列を指定できます。 値は boolean、integer、float、または string です。 オプション リストの使い方は、次のようにレンダラに応じて異なります。

  • mental ray の場合、オプション リストには、この特定のシェーダ用レンダリングの制限(たとえば、シャドウのオン/オフ)が保存されます。 詳細については、「mental ray オプション」を参照してください。

  • リアルタイム レンダラの場合、Options セクションを使用してパラメータの組み合わせを保存できます。

  • Options セクションでは、その他のレンダラ用に、シェーダのソース コードの場所を示すパスを指定できる場合もあります。 これは、たとえば大規模なシェーダ ライブラリ用のすべてのコードを 1 つの巨大な SL ファイルとして提供できる、RenderMan シェーダ ライブラリに役立ちます。 mental ray 用に、後でレンダ時にコンパイルされるソース コードを指定することもできます。

Python の例: 2 種類のレンダラを設定する(1 つは実行に Cg コードを使用。どちらも Options を使用)

	# Add a mental ray renderer definition with the location of the library where it is defined
	oRendererDef = oShaderDef.AddRendererDef("mental ray")
	oRendererDef.SymbolName = "material-phong"
	oRendererDef.CodePath = "{LIBS}/sibase.{EXT}"
	oRendOpts = oRendererDef.RendererOptions
	oRendOpts.Set("version", 1)
	oRendOpts.Set("pass channel", "Ambient,Diffuse,Specular,Irradiance,Reflection,Refraction")
	
	# Add a Cg version with the code embedded in the definition
	oRendererDef = oShaderDef.AddRendererDef("Cg")
	oRendererDef.SymbolName = "mib_color_average_cg"
	oRendererDef.CodeText = "\tBeginText\n\t{\n\t\t float4 retcolor;\n\n\t\t retcolor.x = factor.x * (input.x + input.y + input.z) / 3.0;\n\t\t retcolor.y = retcolor.x;\n\t\t retcolor.z = retcolor.x;\n\t\t retcolor.w = retcolor.x;\n\n\t\t return retcolor;\n\t}\n\tEndText"
	oRendOpts = oRendererDef.RendererOptions
	oRendOpts.Set("param0", "ambient")
	oRendOpts.Set("param1", "diffuse")
	oRendOpts.Set("param2", "specular")
	oRendOpts.Set("param3", "ambience")
	oRendOpts.Set("param4", "shiny")
	oRendOpts.Set("const0", "diffuse_inuse")
	oRendOpts.Set("const1", "specular_inuse")
	oRendOpts.Set("param7", "radiance")

mental ray オプション

オプションの値

詳細

scanline オプション

スキャンライン レンダリングは、カメラから見えるオブジェクトのレンダリング速度を速くします。

無効の場合、mental ray ではすべてのレンダリングでレイトレーシングが使用されます。 カメラからのレイの方向を変更するレンズ シェーダでは、スキャンライン レンダリングを無効にする必要があります。

on(オン)

スキャンラインは常にオンにする必要があります(デフォルト、opengl、または rapid)。

"scanline"、"on"

off

スキャンラインは常にオフにする必要があります。

"scanline"、"off"

"opengl"

スキャンラインで OpenGL アクセラレーションを使用する必要があります。

"scanline"、"opengl"

"rapid"

常に高速モーション ブラーを使用してレンダリングします。

"scanline"、"rapid"

environment trace オプション

レイトレーシングが 2 次レイで有効かどうか(スキャンラインが無効の場合は、すべてのレイで)を制御します。

レイトレーシングがオフの場合は、シャドウ マップを使用したライトによるシャドウの投影以外では、シャドウはレンダリングされません。

on(オン)

レイトレーシングを有効にする必要があります。

"environment trace"、"on"

off(オフ)

レイトレーシングを無効にする必要があります。 2 次レイは許可されません。 mi_trace_reflection および mi_trace_refraction は、常に miFALSE を戻します。

"environment trace"、"off"

shadow オプション

on(オン)

シーンでシャドウがオンになります。 シャドウ モードのどのタイプも使用できます。

"shadow"、"on"

off

シーンでシャドウが無効になります。

"shadow"、"off"

"sort"

シャドウ計算は、ソート順またはセグメント化されたモードのいずれかにする必要があります。

"shadow"、"sort"

"segment"

シャドウはセグメント化されたものにだけすることができます。

"shadow"、"segment"

face オプション

三角形は、法線がレイの方向に向いているときに前向きとみなされます。

"both"

裏向きと表向きの両方の三角形がレンダリングされます。 これは、シェーダがオブジェクト上でボリューム エフェクトを実行する場合に推奨されます。これは、正しく作業できるようにするにはボリュームにイン ポイントおよびアウト ポイントの両方が必要なためです。

"face"、"both"

"front"

表向きの三角形のみがレンダリングされます。

"face"、"front"

"back"

裏向きの三角形のみがレンダリングされます。

"face"、"back"

autovolume オプション

自動ボリュームは、mental ray が複数のボリューム オブジェクトがオーバーラップする場所をアシストするボリューム レンダリングへの拡張子です。 これらは計算に少し手間がかかりますが、シェーダが自動ボリュームの連携をサポートしている場合は、ボリューム エフェクトのオーバーラッピングが可能です。

on(オン)

mental ray は、必要に応じて、シェーダが呼び出されるボリュームのリストを戻します。 関数mi_volume_num_shaders、mi_volume_cur_shader、mi_volume_tags、およびmi_volume_instancesを使用して、オートボリューム アルゴリズムを操作します。

"autovolume"、"on"

off(オフ)

mental ray は、各ボリューム エフェクトが順番に呼び出される古いボリューム処理方法を使用します。 この場合、ボリューム オブジェクトがオーバーラップすると、アーティファクトのレンダリングが行われる可能性があります。

"autovolume"、"off"

""framebuffers"オプション

フレームバッファ要求の仕様。 このオプションは、どのタイプのフレームバッファがエフェクトの計算に必要かを定義するために、出力シェーダで使用されます。 詳細については、『mental ray ユーザ ガイド』のセクション 1.28 を参照してください。

"framebuffers"、"rgba_fp,-tag"

"pass channel"オプション

カンマ区切りのパス チャンネルのリスト。 各パス チャンネルは、オプションで括弧内のイメージのタイプを指定できます。 たとえば、"Normal Buffer(normal)" は、mental ray の miIMG_TYPE_N イメージ タイプにマップする、"Normal Buffer" という名前のパス チャンネルを標準イメージ タイプで追加します。

"pass channel"、"Ambient,Diffuse,Specular,Irradiance,Reflection,Refraction"

"version" オプション

このオプションは、シェーダのバージョンを整数として示します。 値は、_version シェーダ コールバックの戻り値と対応する必要があります。

注:

このオプションが省略された場合は、シェーダ バージョンがデフォルトで 1 であるとみなされます。

"version"、"1"

"derivative1" オプション

mental ray に、各積(集合)ポイント(グラディエント)のサーフェイスの第 1 デリバティブを計算させるかどうかを指定します。 miState::deriv 配列を指定すると、オフセット 0 および 1 のデリバティブ値が保持されます。

on(オン)

第 1 デリバティブが計算されます。

"derivative1"、"on"

off(オフ)

第 1 デリバティブが計算されません。

"derivative1"、 "off"

"derivative2" オプション

mental ray に、各積(集合)ポイント(曲率)のサーフェイスの第 2 デリバティブを計算させるかどうかを指定します。 miState::deriv 配列を指定すると、オフセット 2 から 3 のデリバティブ値が保持されます。

on(オン)

第 2 デリバティブが計算されます。

"derivative2"、"on"

off(オフ)

第 2 デリバティブが計算されません。

"derivative2"、"off"