シェーダ定義ウィザード

 
 
 

シェーダ定義ウィザードの主な目的は、ハードウェアシェーダ(C++ リアルタイムシェーダ)を Softimage に定義および実装するのに必要なコードを生成することです。シェーダ定義ウィザードでは基本的なコード構造が使用されており、即座にシェーダを統合できます。

シェーダ定義ウィザードでは、mental ray シェーダの基本定義コードを生成することもできます。ただし、mental ray コールバックコードは生成されません。コールバックの生成には mental ray シェーダウィザードが適しています。

シェーダ定義ウィザードの表示

  1. [ファイル](File) [プラグイン マネージャ](Plug-in Manager)を選択します。

  2. [新規作成](New)をクリックします。

  3. [Shaders] [Shader Definition]を選択してウィザードを開きます。

プラグイン

名前(Name)

生成するプラグインファイルの名前。プラグインにはシェーダ定義の生成に必要なコードが含まれます。この名前はプラグインオブジェクト名を設定するときや、デフォルトのハードウェアシェーダ.vcprojファイルを指定するときにも使用されます。

作成者(Author)

シェーダプラグインを作成するユーザの名前。

言語(Language)

シェーダ定義プラグインの作成に使用する言語。サポートされている言語は、Python、C++、JScript、VBScript です。

この言語はシェーダの実装コードには影響しません。実装コードは常に C++ で生成されます。

出力ディレクトリ(Output Directory)

すべてのファイルが生成されるディレクトリの名前。デフォルトは現在のユーザディレクトリです。

定義

ここではシェーダ定義とレンダラ情報を指定します。便利なプリセットボタンを使用して、ハードウェアシェーダコードと mental ray シェーダコードを生成するウィザードを簡単に設定できます。

ハードウェアシェーダプリセット

[ハードウェアシェーダプリセット](Hardware Shader Preset)をクリックすると、レンダラ登録とハードウェアシェーダコールバックの生成に必要な情報を使用してウィザードを設定できます。ハードウェアシェーダに必須の設定は次のとおりです。

  • [Renderer name]: OpenGlまたはDirectX

  • [Renderer code path]: プラグイン名

  • [Shader Definition Family]: siShaderFamilyRTShader

  • [Shader output port type]: siHWShaderPortType

  • [Shader Definition Option Name]: siHWShaderVersionAttribute

  • [siHWShaderVersionAttribute Option Value]: siHWShaderV1

重要:上記の情報が指定されていない場合や正しく設定されていない場合は、生成されるハードウェアシェーダは正しく動作しません。
注:コードパスとしてのプラグイン名はオプションであり、任意の名前に置き換えることができます。

mental rayシェーダプリセット

[mental ray プリセット](Mental Ray Preset)をクリックすると、mental ray シェーダのレンダラ登録の生成に必要な情報を使用してウィザードを設定できます。これらの設定は次のとおりです。

  • [Renderer name]: Mental Ray

  • [レンダラのコード パス]:{LIBS}/xsibase.{EXT}

注:xsibase は必須ではなく、他の任意の mental ray シェーダに置き換えることができます。

シェーダ

名前(Name)

Softimage でシェーダを個別に識別するためのシェーダ名。

メジャー バージョン(Major Version)

シェーダのメジャーバージョン番号。

マイナー バージョン(Minor Version)

シェーダのマイナーバージョン番号。

ファミリ(Family)

シェーダファミリのタイプ。

カテゴリ

シェーダカテゴリの名前。このカテゴリはPreset Managerでシェーダがリストされる場所で識別のために使用されます。

ディスプレイ名(Display Name)

Render Tree でシェーダを識別するために使用される UI 名。

属性名(Attribute Name)

この名前はユーザ定義の属性を識別するために使用されます。

属性値(Attribute Value)

ユーザ定義のシェーダ属性の属性値。

レンダラ

名前(Name)

シェーダに関連付けられているレンダラの名前。使用できるレンダラは、OpenGL、DirectX、Mental Ray です。ハードウェアシェーダは通常 OpenGL または DirectX で設定されます。

シンボル(Symbol)

シェーダとレンダラをマップするために使用されるユーザ定義の名前。

コード パス(Code Path)

このレンダラのシェーダライブラリの名前。ハードウェアシェーダの場合、この名前は生成するシェーダライブラリファイル名に使用されます。mental ray シェーダの場合、この名前は既存の mental ray ライブラリを参照します。

オプション

名前(Name)

レンダラのユーザ定義のオプション名。

値(Value)

指定されたレンダラオプションの値。

追加(Add)

新しいレンダラオプションをレンダラオプショングリッドに追加します。

選択を削除(Remove Selected)

選択したオプションをレンダラオプショングリッドから削除します。

パラメータ

このタブでは新しいシェーダ定義の入力パラメータと出力パラメータを設定します。

Input Parameters(入力パラメータ)

名前(Name)

パラメータの名前。

タイプ(Type)

パラメータのデータタイプ。

説明(Description)

パラメータの説明。Render Tree でツールチップとして使用されます。

アニメーション可能(Animatable)

パラメータをアニメーション可能として設定します。

インスペクト可能(Inspectable)

パラメータをインスペクト可能として設定します。

テクスチャ設定可能(Texturable)

パラメータをテクスチャ設定可能として設定します。

デフォルト値(Default Value)

パラメータのデフォルト値。デフォルト値は以下のパラメータタイプでのみ使用可能です。

  • siShaderDataTypeBoolean

  • siShaderDataTypeInteger

  • siShaderDataTypeScalar

ハードリミット値(Hard Limit Values)

パラメータの最小値と最大値。

ソフトリミット値(Soft Limit Values)

パラメータの UI スライダでの最小値と最大値。

属性名(Attribute Name)

このパラメータのユーザ定義の属性。この新しい属性は組み込み属性名リストから選択することもできます。

属性値(Attribute Value)

指定されたパラメータ属性に関連付けられる値。

追加(Add)

新しいパラメータを上記の値でパラメータグリッドに追加します。

選択を削除(Remove Selected)

選択したパラメータをパラメータグリッドから削除します。

Output Parameters(出力パラメータ)

名前(Name)

パラメータの名前。

タイプ(Type)

パラメータのデータタイプ。

説明(Description)

パラメータの説明。ツールチップとして使用されます。

メイン(Main)

パラメータをメイン出力パラメータとして識別します。

属性値(Attribute Value)

指定されたパラメータ属性に関連付けられる値。

追加(Add)

新しいパラメータを上記の値でパラメータグリッドに追加します。

選択を削除(Remove Selected)

選択したパラメータをパラメータグリッドから削除します。

コードの生成

[コードの生成](Generate Code)をクリックすると、ウィザードの設定に基づいてコードが生成されます。新しいシェーダは自動的に Render Tree に表示されます。ハードウェア シェーダを Render Tree で使用可能にするには、まずコンパイルする必要があります。

ウィザードではシェーダ定義とレンダラのプラグイン登録コードが生成されます。以下のファイルが生成されます。

  • シェーダ定義プラグインファイル

  • プラグイン .vcproj ファイル(C++ のみ)

  • ハードウェアシェーダC++ファイル(ハードウェアシェーダの場合のみ)

  • ハードウェア シェーダ .vcproj(または Linux の場合は GNUMakefile)

ハードウェアシェーダの場合は、シェーダ定義プラグインコードにスクリプト言語を選択すると、ハードウェアシェーダ C++ ファイル用に別個の .vcproj ファイルが生成されます。しかし、プラグイン言語として C++ を選択すると、ハードウェアシェーダC++ファイルはプラグイン .vcproj ファイルに追加され、ハードウェアシェーダ用の別個の .vcproj は生成されません。

.vcprojの出力設定は以下の標準プラグインの場所に設定されます。

<user folder>¥Application¥Plugins¥bin¥<platform folder>

たとえば、次のように記述します。

C:¥Users¥fred¥Autodesk¥Softimage_2011¥Application¥Plugins¥bin¥nt-x86-64

シェーダ定義用に生成されるコールバックは次のとおりです。

  • <プラグイン名>_<シェーダ名>_<メジャーバージョン>_<マイナーバージョン>_Define

  • <プラグイン名>_<シェーダ名>_<メジャーバージョン>_<マイナーバージョン>_DefineInfo

ハードウェアシェーダ用に生成されるコールバックは次のとおりです。

  • <シンボル名>_<メジャーバージョン>_<マイナーバージョン>_<レンダラ名>_Init

  • <シンボル名>_<メジャーバージョン>_<マイナーバージョン>_<レンダラ名>_Execute

  • <シンボル名>_<メジャーバージョン>_<マイナーバージョン>_<レンダラ名>_Term

  • <シンボル名>_<メジャーバージョン>_<マイナーバージョン>_<レンダラ名>_GetAttributeList

いくつかの例を挙げます。

  • HWS_Shadow_1_0_Define

  • Shadow_1_0_opengl_Init

  • Shadow_1_0_directx_Execute

注:mental rayシェーダの場合はシェーダコールバックコードは生成されません。