Script_Material - OPTPiX/IndexColorShaderForUnity GitHub Wiki
クラス名: Library_IndexColorShader.Data.ControlMaterialPalette
IndexColorShader for Unity(以降「ICS」)のマテリアル管理クラスのスクリプトリファレンスです。
void BootUp()
本クラス(の実体)の使用を開始します。
原則として、本クラスの実体を所有する側の初期化処理などで、本クラスの実体を確保した直後に本関数を呼び出すようにしてください。
void ShutDown()
本クラス(の実体)の使用を終了します。
本クラスの実体を所有する側の終了処理などで、本クラスの実体を廃棄する寸前に本関数を呼び出すようにしてください。
現状、本関数を明示的に呼び出す必要はありませんが、予約関数として確保されています。
void Update(
Renderer renderer,
Vector4[] tableColor,
Color colorDiffuse,
KindInterpolation interpolationTexture,
Texture texture,
Vector4? textureTilingOffset
)
- renderer
描画に使用するレンダラ
※nullを与えた場合、描画が行われませんので注意してください。 - tableColor
設定する色の配列(パレットデータ)
※tableColorの実体は、Vector4[256]である必要があります。 - colorDiffuse
描画プリミティブの頂点色 - interpolationTexture
描画時のテクスチャー補間の方法- KindInterpolation.NONE : 補間なし(最近傍補間)
- KindInterpolation.LINEAR : 直線補間
- texture
描画に使用するICSでインポートしたテクスチャー
※nullを与えた場合、renderer.sharedMaterial.mainTextureを使用します。 - textureTilingOffset
テクスチャーのUVに適用するタイリングオフセット
※nullを与えた場合、テクスチャー全域が描画対象になります。
描画で使用するマテリアルに必要なパラメータ(シェーダ定数など)を設定します。
本クラスの実体を所有する側のUpdate・LateUpdateなどで、毎処理ループに1回呼び出す必要があります。
tableColorは、通常はICSのインポーターが作成したデータ(Script_IndexColorShader_Paletteクラス)のColorを与えれば良いです。
ただし、各種パレット操作を行う場合、独自に設置したVector4の256色の一次配列を与えることになると思われます(Script_IndexColorShader_Palette.Colorを直接書き換えると、ScriptableObjectの持っているデータを書き換えてしまうため、値を操作するためのバッファを設置する形になります)。
このVector4内の色のパラメータの順列としては、下記になっています。
- .x : 赤(0.0f~1.0f)
- .y : 緑(0.0f~1.0f)
- .z : 青(0.0f~1.0f)
- .w : アルファ(0.0f~1.0f)
colorDiffuseは、描画に使用するプリミティブ自体に色をつけたい場合に使用してください(主にSpriteRendererなどで使用する際の挙動互換性のために設けられています)。
本値はシェーダ上で「パレット上の色 × colorDiffuse」の式で合成され、実際に画面に描画される色になります。
interpolationTextureは、描画する対象が等倍(ドット=バイ=ドット)でない場合に、描画に適用する補間方法を指定します。
一般的に、LINEAR(直線補間)の方が拡縮小時の描画結果がなめらかになります。
ただし、ドットのエッジを壊したくない場合などにはNONE(補間なし)を指定することで、ドットのエッジを保つことができます。
textureには、描画に使用する「ICSでインポートした」テクスチャーを指定してください。
textureTilingOffsetは、テクスチャーの一部をレンダリングに使用する(例えばtextureがテクスチャーアトラス画像である場合など)際の、テクスチャーのデコード範囲を与えます。
この値は、通常時でのUnityのunlitなどのマテリアルに与える値と同じで、原則として下記の内容になっています。
- .x : デコード範囲の横ピクセル数 ÷ テクスチャーの横ピクセル数
- .y : デコード範囲の縦ピクセル数 ÷ テクスチャーの縦ピクセル数
- .z : デコード範囲の左上テクセル位置横(UV座標位置横)
- .w : 1.0f - デコード範囲の左上テクセル位置縦(UV座標位置縦)
※Unityはテクスチャーの原点位置が左下のため、.wの設定値はそれを考慮してやる必要があります。