User:Caron/CTTutorial Japanese/Shader

From Custom Mario Kart
Jump to navigation Jump to search

mdl0/Shaders/Stageに関する情報です。テクスチャをどのようにゲーム上に出力させるかの設定を行います。シェーダに関してはどのゲームにおいても複雑なため、他の事よりもシステムの理解に時間を要します(画像処理の分野を学んでいると理解が早くなります)。
尚、説明が間違っているところもあるかもしれません。

TEV Fragment Sources

ColorSelection(A,B,C,D)におけるAの設定です。

表記 説明
Texture Enabled テクスチャを使用するか否かを選択します。TrueでMapID先のテクスチャを使用し、Falseではテクスチャを使用しません
Texture Map ID 使用するテクスチャIDを選択します。
Texture Coordinates ID コーディネートするテクスチャのID(UVマップID)を選択します。基本的にマップIDと同じものをを使用します
Texture Swap Selection テクスチャのRGB値をSwap先の順序に置き換えます。普通はSwap0(RGB->RGB)で問題ありません
Raster Color どのラスタカラーを使用するか選択します。。
  • LightChannel0…頂点カラーを利用する場合、デフォルトのステージではこれを使用します。マテリアルの同名の設定で詳細の編集が可能です。
  • LightChannel1…ステージ毎に異なるライトチャネルを使う場合はこちらを選択します。マテリアルの同名の設定で詳細の編集が可能です。
  • BumpAlpha…不明
  • NormalizedBumpAlpha…不明(Wiiは法線マップ非対応)。
  • Zero…ラスタカラーを使用しません。この状態でSelectionA~DにおいてRasterColorを使用すると、Zeroと同じ扱いになります。
Raster Swap Selection ラスタのRGB値をSwap先の順序に置き換えます。普通はSwap0(RGB->RGB)で問題ありません

TEV Color Output

ColorSelection(A,B,C,D)におけるBの設定です。テクスチャのRGB成分をどのようにブレンドして出力させるかを決めます。アルファチャンネルはCで設定します。

表記 説明
Output Function テクスチャの単位ピクセル毎にこの方程式を適用してゲーム上に出力を行います。基本的にOperationがAdd、ClampがTrueとして、
Output=clamp[d+{(1-c)*a+c*b+バイアス}*倍数] (0≦Output≦1)
が用いられます。SelectionA~Dはこの方程式に基づいて説明していきます。
Constant Selection SelectionA~Dの中で"ConstantColorSelection"を使用している場合、どのような定数を用いるかを選びます。なければ何も触らなくて大丈夫です。
  • Constantx_y(x,y:数値。ただしx≦y)…x/y倍の定数を使用します。例えばConstant3_4は3/4=0.750を定数として使用します。値が小さいほど暗くなりますが、(1-c)においては逆に明るくなっていきます。
  • Constantz_UUU(z:MaterialのConstant ColorのID、UUU:RGB,RRR,GGG,BBBなど)…ConstantColorブロックのRGB値に255で割った値を定数として用います。上よりも細かい値を指定でき、また色に応じて値を分けることが可能です。RRRやGGG、BBBはそのカラーブロックの一つの値のみ利用します。
Selection A Outputの方程式のaに相当する部分です。
  • OutputColor…直前に出力したOutputColorの値(=上階層のステージの色)を使用します。シェーダに複数ステージが存在する場合、Stage2以降のbかd、またはef_seaなどの両方で使用されます。Stage1においてDestinationがOutputColorでないか、またはStage1で使用した場合、値はZeroと同じに扱いになります。
  • OutputAlpha…直前に出力したOutputAlphaの値(=上階層のステージにアルファ)を使用します。シェーダに複数ステージが存在する場合、Stage2以降で使用されます。Stage1においてDestinationがOutputAlphaでないか、またはStage1で使用した場合、値はZeroと同じに扱いになります。
  • Color0~Color2…OutputColorと基本的に同じですが、こちらは初期値をMaterialのShade Color Blockで指定できるため、Stage1で使用ができます。
  • Alpha0~Alpha2…OutputAlphaと基本的に同じですが、こちらは初期値をMaterialのShade Color Blockで指定できるため、Stage1で使用ができます。
  • TextureColor…テクスチャの色をそのまま利用します。テクスチャを利用している限り、Shaderのステージにおけるいずれかのa~dの中には必ず1つ入れる必要があります。
  • TextureAalpha…テクスチャの透明部分をそのまま利用します。
  • RasterColor…ラスタカラーを使用します(TEV Fragment Sources参照)。これと使用すると頂点カラーが有効になります。
  • RasterAlpha…ラスタカラーのアルファ値を使用します(TEV Fragment Sources参照)。これを使用すると頂点アルファが有効になります。
  • One…白色(=1)を使用します。
  • Half…灰色+半透明(=0.5)を使用します。
  • ConstantColorSelection…Constant Selectionの値を使用します。
  • Zero…黒色+透明(=0)を使用します。
Selection B Outputの方程式のbに相当する部分です。第三項でcとともに使用します。内容はSelectionAを参照してください。
Selection C Outputの方程式のcに相当する部分です。第二項ではaと、第三項ではbとともに使用しますが、前者は反転値となります。内容はSelectionAを参照してください。
Selection D Outputの方程式のdに相当する部分です。第一項で独立して使用します。内容はSelectionAを参照してください。
Bias 第2項以降に値の補正をします。
Operation Outputの出力方式を変更します。AddとSubtract以外はほとんど使われていません。
  • Add…dに対し第二項以降は加算を行います。
  • Subtract…dに対し第二項以降は減産を行います。dがzeroの場合、テクスチャが消えます。
  • CompR8Greater…aのR値とbのR値を比較し、a(R)>b(R)ならcを、そうでなければ0をdに加算します
  • CompR8Equal…aのR値とbのR値を比較し、a(R)=b(R)ならcを、そうでなければ0をdに加算します
  • CompGR16Greater…aのRとG、とbのRとG値を比較し、a(GR)>b(GR)ならcを、そうでなければ0をdに加算します
  • CompGR16Equal…aのRとG、とbのRとG値を比較し、a(GR)=b(GR)ならcを、そうでなければ0をdに加算します
  • CompGBR24Greater…aのRGBとbのRGB値を比較し、a(BGR)>b(BGR)ならcを、そうでなければ0をdに加算します
  • CompGBR24Equal…aのRGBとbのRGB値を比較し、a(BGR)=b(BGR)ならcを、そうでなければ0をdに加算します
  • CompRBR8Greater…CompGBR24Greaterと同じ?
  • CompRGB8Equal…CompGBR24Equalと同じ?
Clamp Outputの方程式に制限をかけます。万が一出力が0を下回ったり1以上になることを防ぐためにあるので、基本Trueをおすすめします。
Scale Outputの方程式に倍率をかけます。MultipleByXのXが大きいほどテクスチャが乗算されていきます(=明るくなる)。逆にDivideBy2は除算を行います。
Destination 出力結果の保存先を参照します。OutputColorの場合、直前のOutputColorに上書きを行います。それ例外は各Color部分に保存します。単一ステージ、または複数ステージにおける最下層では必ずOutputColorにしてください。

TEV Alpha Output

ColorSelection(A,B,C,D)におけるCの設定です。アルファに関して設定を行いますが、基本的にTEV Color Outputと情報は同じです。

TEV indirect Texturing

ColorSelection(A,B,C,D)におけるDの設定です。詳細は不明ですが、BiasかMatrixの設定が変わっているのがだいたいです。