Difference between revisions of "User:Caron/CTTutorial Japanese/Shader"

From Custom Mario Kart
Jump to navigation Jump to search
m
Line 1: Line 1:
mdl0/Shaders/Stageに関する情報です。テクスチャをどのようにゲーム上に出力させるかの設定を行います。シェーダに関してはどのゲームにおいても複雑なため、他の事よりもシステムの理解に時間を要します(画像処理の分野を学んでいると理解が早くなります)。
+
mdl0/Shaders/Stageに関する情報です。テクスチャをゲーム上にどのようにフィルタリングして出力させるかの設定を行います。シェーダに関してはどのゲームにおいても複雑なため、他の事よりもシステムの理解に時間を要します。
<br>尚、説明が間違っているところもあるかもしれません。
 
  
== TEV Fragment Sources==
+
==TEV Fragment Sources==
 
ColorSelection(A,B,C,D)におけるAの設定です。
 
ColorSelection(A,B,C,D)におけるAの設定です。
 
{| class="wikitable"
 
{| class="wikitable"
Line 18: Line 17:
 
|-
 
|-
 
| Texture Swap Selection
 
| Texture Swap Selection
| テクスチャのRGB値をSwap先の順序に置き換えます。普通はSwap0(RGB->RGB)で問題ありません
+
| テクスチャカラー、およびアルファの値をSwap先の順序に変更します。例えばRGBA→BRGAにしたりすることが可能です。普通はSwap0(RGBA->RGBA)で問題ありません
 
|-
 
|-
 
| Raster Color
 
| Raster Color
Line 29: Line 28:
 
|-
 
|-
 
| Raster Swap Selection
 
| Raster Swap Selection
| ラスタのRGB値をSwap先の順序に置き換えます。普通はSwap0(RGB->RGB)で問題ありません
+
| ラスタのカラー、およびアルファの値をSwap先の順序に置き換えます。普通はSwap0(RGBA->RGBA)で問題ありません
 
|}
 
|}
  
 
==TEV Color Output==
 
==TEV Color Output==
ColorSelection(A,B,C,D)におけるBの設定です。テクスチャのRGB成分をどのようにブレンドして出力させるかを決めます。アルファチャンネルはCで設定します。
+
ColorSelection(A,B,C,D)におけるBの設定です。テクスチャのRGB成分をどのようにフィルタするかを設定します。
 
{| class="wikitable"
 
{| class="wikitable"
 
! 表記
 
! 表記
Line 39: Line 38:
 
|-
 
|-
 
| Output Function
 
| Output Function
| テクスチャの単位ピクセル毎にこの方程式を適用してゲーム上に出力を行います。基本的にOperationがAdd、ClampがTrueとして、<br>'''''Output=clamp[d+{(1-c)*a+c*b+バイアス}*倍数]''''' (0≦Output≦1)<br>が用いられます。SelectionA~Dはこの方程式に基づいて説明していきます。
+
| テクスチャの単位ピクセル毎にこの方程式を適用してゲーム上に出力を行います。区間は[0,1]になりますが、ゲーム上では255倍された値が表示されます。ほとんどのシェーダにおいてはOperationがAdd、ClampがTrueとして、<br>'''''Output=clamp[d+{(1-c)*a+c*b+バイアス}*倍数]''''' (0≦Output≦1)<br>が用いられます。
 
|-
 
|-
 
| Constant Selection
 
| Constant Selection
Line 48: Line 47:
 
| Selection A
 
| Selection A
 
| Outputの方程式のaに相当する部分です。
 
| Outputの方程式のaに相当する部分です。
* OutputColor…直前に出力したOutputColorの値(=上階層のステージの色)を使用します。シェーダに複数ステージが存在する場合、Stage2以降のbかd、またはef_seaなどの両方で使用されます。Stage1においてDestinationがOutputColorでないか、またはStage1で使用した場合、値はZeroと同じに扱いになります。
+
* OutputColor…直前に出力したOutputColorの値(=上階層のステージの出力値)を使用します。Stage2以降で使用可能で、Stage1においてDestinationがOutputColorでないか、またはStage1で使用した場合、値はZeroと同じに扱いになります。
* OutputAlpha…直前に出力したOutputAlphaの値(=上階層のステージにアルファ)を使用します。シェーダに複数ステージが存在する場合、Stage2以降で使用されます。Stage1においてDestinationがOutputAlphaでないか、またはStage1で使用した場合、値はZeroと同じに扱いになります。
+
* OutputAlpha…直前に出力したOutputAlphaの値(=上階層のステージの出力値)を使用します。Stage2以降で使用可能で、Stage1においてDestinationがOutputAlphaでないか、またはStage1で使用した場合、値はZeroと同じに扱いになります。
 
* Color0~Color2…OutputColorと基本的に同じですが、こちらは初期値をMaterialのShade Color Blockで指定できるため、Stage1で使用ができます。
 
* Color0~Color2…OutputColorと基本的に同じですが、こちらは初期値をMaterialのShade Color Blockで指定できるため、Stage1で使用ができます。
 
* Alpha0~Alpha2…OutputAlphaと基本的に同じですが、こちらは初期値をMaterialのShade Color Blockで指定できるため、Stage1で使用ができます。
 
* Alpha0~Alpha2…OutputAlphaと基本的に同じですが、こちらは初期値をMaterialのShade Color Blockで指定できるため、Stage1で使用ができます。
Line 55: Line 54:
 
* TextureAalpha…テクスチャの透明部分をそのまま利用します。
 
* TextureAalpha…テクスチャの透明部分をそのまま利用します。
 
* RasterColor…ラスタカラーを使用します(TEV Fragment Sources参照)。これと使用すると頂点カラーが有効になります。
 
* RasterColor…ラスタカラーを使用します(TEV Fragment Sources参照)。これと使用すると頂点カラーが有効になります。
* RasterAlpha…ラスタカラーのアルファ値を使用します(TEV Fragment Sources参照)。これを使用すると頂点アルファが有効になります。
+
* RasterAlpha…ラスタアルファを使用します(TEV Fragment Sources参照)。これを使用すると頂点アルファが有効になります。
 
* One…白色(=1)を使用します。
 
* One…白色(=1)を使用します。
 
* Half…灰色+半透明(=0.5)を使用します。
 
* Half…灰色+半透明(=0.5)を使用します。
Line 99: Line 98:
 
ColorSelection(A,B,C,D)におけるCの設定です。アルファに関して設定を行いますが、基本的にTEV Color Outputと情報は同じです。
 
ColorSelection(A,B,C,D)におけるCの設定です。アルファに関して設定を行いますが、基本的にTEV Color Outputと情報は同じです。
 
==TEV indirect Texturing==
 
==TEV indirect Texturing==
ColorSelection(A,B,C,D)におけるDの設定です。Indirect Textureを使用している場合、この部分の設定が必要になります。各部分についての詳細は不明ですが、IndirectTextureを適用する場合はBias→STU、Matrix→Matrix0として設定しておけば大丈夫です(?)
+
ColorSelection(A,B,C,D)におけるDの設定です。Indirect Textureを使用している場合、この部分の設定が必要になります。各部分についての詳細は不明ですが、IndirectTextureを適用する場合はBias→STU、Matrix→Matrix0が設定されます。
 +
 
 +
==設定例==
 +
<!--
 +
===ef_dushBoard===
 +
ダッシュボードで使用されている構成です。ef_hpipeBoardも同様な構成を持っています。
 +
===ef_seawater===
 +
ノコノコ岬などで使用されている構成です。a_water、a0_waterも同様な構成を持っています。
 +
===Shadow===
 +
影で用いられている構成です。Indirect Textureは使用されていません。
 +
-->

Revision as of 08:58, 3 December 2019

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 テクスチャカラー、およびアルファの値をSwap先の順序に変更します。例えばRGBA→BRGAにしたりすることが可能です。普通はSwap0(RGBA->RGBA)で問題ありません
Raster Color どのラスタカラーを使用するか選択します。。
  • LightChannel0…頂点カラーを利用する場合、デフォルトのステージではこれを使用します。マテリアルの同名の設定で詳細の編集が可能です。
  • LightChannel1…ステージ毎に異なるライトチャネルを使う場合はこちらを選択します。マテリアルの同名の設定で詳細の編集が可能です。
  • BumpAlpha…不明
  • NormalizedBumpAlpha…不明(Wiiは法線マップ非対応)。
  • Zero…ラスタカラーを使用しません。この状態でSelectionA~DにおいてRasterColorを使用すると、Zeroと同じ扱いになります。
Raster Swap Selection ラスタのカラー、およびアルファの値をSwap先の順序に置き換えます。普通はSwap0(RGBA->RGBA)で問題ありません

TEV Color Output

ColorSelection(A,B,C,D)におけるBの設定です。テクスチャのRGB成分をどのようにフィルタするかを設定します。

表記 説明
Output Function テクスチャの単位ピクセル毎にこの方程式を適用してゲーム上に出力を行います。区間は[0,1]になりますが、ゲーム上では255倍された値が表示されます。ほとんどのシェーダにおいてはOperationがAdd、ClampがTrueとして、
Output=clamp[d+{(1-c)*a+c*b+バイアス}*倍数] (0≦Output≦1)
が用いられます。
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以降で使用可能で、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の設定です。Indirect Textureを使用している場合、この部分の設定が必要になります。各部分についての詳細は不明ですが、IndirectTextureを適用する場合はBias→STU、Matrix→Matrix0が設定されます。

設定例