😻

【マチェイヨラ】Unity用シェーダー マチェイヨラのパラメータについて (ver 2.1.0)

2022/09/04に公開

はじめに

マチェイヨラを使っていただきありがとうございます。
マチェイヨラのパラメータについて解説します。
記事作成時点のバージョンは 2.1.0 になります。

BOOTH(配布サイト)

マテリアル設定のヒントへ

前提知識

マチェイヨラを調整する前に Unityのシェーダー について知っておきましょう。

シェーダーの選択

マチェイヨラシェーダーに限らず、シェーダーには下記のような名前がついていることがあります。
・Opaque
・Cutout / Transparent Cutout / Alpha Test / Alpha Clip
・Fade / Alpha Fade
・Transparent / Alpha
image_RenderMode
特に気にせず使ってしまっているかもしれませんが、
負荷や描画結果に影響することもあるため、適切に使い分けましょう。

  • Opaque
    不透明なオブジェクトに使用します。
    透過する目的がなければこれを使用してください。
    image_Opaque
    全体で光を遮るため、メッシュの形に影ができます。
    image_OpaqueShadow

  • Cutout / Transparent Cutout / Alpha Test / Alpha Clip
    テクスチャで一部だけ完全に透明にするときに使用します。
    半透明部分が存在しないため、複雑な形でもきれいに透過することができます。
    image_Cutout
    不透明部分だけ影ができます。
    image_CutoutShadow

  • Fade / Alpha Fade
    テクスチャで一部またはパラメータで全部を(半)透明にするときに使用します。
    反射光や金属部分も(半)透明になるため、ガラス等の表現には向きません。
    描画の不具合を防止するため一番手前にある面しか描画しません。
    アルファチャンネルに応じた影ができます。
    また、ブレンドモードを指定することにより、加算合成等の表現ができます。

  • Transparent / Alpha
    テクスチャで一部またはパラメータで全部を(半)透明にするときに使用します。
    「色」が透明になるだけなので反射は描画されます。
    ガラス等の(半)透明な材質を表現します。
    描画の不具合を防止するため一番手前にある面しか描画しません。
    また、金属は不透明な物質のため、メタリックを上げると透過しなくなります。
    image_Transparent
    透過部分は半透明の影ができます。
    image_TransparentShadow

テクスチャのインポート設定

テクスチャを選択すると Inspector からインポート設定を変更できます。
主に使う項目について説明します。

  • Texture Type
    image_TextureType
    テクスチャのタイプを指定します。
    ノーマルマップの場合はここを Normal map にすると覚えておきましょう。

  • sRGB (Color Texture)
    image_sRGB
    テクスチャの色を数値としてシェーダーに入力する場合はここのチェックをはずします。
    詳しくはガンマ補正とかで検索してください。要するにガンマ色空間でなくリニア色空間で値を取得する設定です。

  • Wrap Mode
    image_WrapMode
    テクスチャ座標が 0~1 の外の場合のテクスチャの状態を指定します。
    タイリングするときには Repeat、しないときは Clamp を選択してください。

  • Format
    image_Format
    圧縮フォーマットを設定します。基本的に Automatic で問題ないですが、
    シェーダー側で R チャンネルしか使用しない場合は R8 にするとメモリの節約になります。

  • Compression
    image_Compression
    圧縮クオリティを設定します。ノーマルマップは圧縮すると影がブロックノイズのように描画される事があるため、
    その場合は None にすることで解決できるかもしれません。

シェーダーの解説

シェーダーのパラメータを解説します。


  • メインテクスチャ
    メインテクスチャを設定します。
  • カラーパレット
    指定した色をテクスチャに乗算します。
    ※ Transparent の場合は 「A」の値がテクスチャのアルファチャンネルに乗算され、透過されます。
  • MatCap
    テクスチャをMatCapとして使用します。
  • Tiling
    連続するテクスチャを使用する場合はこの値を大きくしてください。
  • Offset
    テクスチャを X, Y 軸方向にずらすことができます。
  • Sync X - Y
    チェックすることで X, Y 軸を同時に変更することができます。

-Cutout のみ-

  • カットオフ閾値
    この値よりテクスチャのアルファチャンネルが小さい部分は描画されません。
  • ラメのカットオフ閾値
    この値よりテクスチャのアルファチャンネルが小さい部分はラメが描画されません。

-Fade のみ-

  • ブレンディング
    半透明部分のブレンドモードを指定します。
設定 機能
Normal 通常の半透明
Additive 加算
SoftAdditive ソフトな加算
Screen スクリーン
Manual Blend係数を個別に指定できます。

  • グラデーション
    グラデーションテクスチャを設定します。
    自作のテクスチャを使用する場合は Wrap Mode を正しく設定することに注意してください。
  • 反転
    グラデーションテクスチャを左右反転します。
  • ブレンドモード
    グラデーション部分のブレンドモードを指定します。
  • ブレンド率
    グラデーション部分のブレンド率を指定します。
  • パワー
    グラデーションのかかる強さを調整できます。
  • シフト
    グラデーションをずらすことができます。
  • フレネルレベル
    リムライトのようなフレネル表現ができます。
  • 反転
    フレネルの反転ができます。
  • フレネルパワー
    フレネルがかかる強さを指定します。

  • エミッションブースト
    Albedo の色を明るくすることができます。
    発光表現のために 1 を超える値を設定できるようにしています。
  • 光源の影響率
    光源の反射ベクトルによって更に色に変化が出ます。

マスク

  • マスク
    グラデーションやラメを適用しない部分を指定できます。
  • グラデーションマスク
    グラデーションをマスクするカラーチャンネルを指定します。
  • ラメマスク
    ラメをマスクするカラーチャンネルを指定します。
  • ザラザラマスク
    ザラザラをマスクするカラーチャンネルを指定します。
  • エミッションマスク
    エミッションブーストをマスクするカラーチャンネルを指定します。
  • カーボンマスク
    カーボンをマスクするカラーチャンネルを指定します。
  • 反転
    マスク部分を反転できます。

ディテール

  • ディテールのテクスチャ
    光沢・メタリックをテクスチャから設定できます。
  • 光沢-チャンネル
    Standard シェーダーでいう Smoothness にあたります。
    ディテールテクスチャの指定したチャンネルから値を取得できます。
    スライダーで調整する場合は「Manual」にしてください。
  • メタリック-チャンネル
    Standard シェーダーでいう Metallic にあたります。
    ディテールテクスチャの指定したチャンネルから値を取得できます。
    スライダーで調整する場合は「Manual」にしてください。
  • 反転
    ディテールテクスチャから取得した値を反転できます。
  • 調整
    ディテールテクスチャから取得した値を調整できます。

  • ノーマルマップ
    Normal map を指定します。
    クリアコートには反映されません。
  • ノーマルマップ2
    2つ目の Normal map を指定します。
    クリアコートには反映されません。
  • DirectX
    DirectX 用のノーマルマップを使用するときにチェックします。
  • レベル
    ノーマルマップの強度を設定します。

  • ザラザラのテクスチャ
    塗装部分に微細な凹凸があるような表現ができます。
    Glitter テクスチャをアサインすることで有効化します。
  • レベル
    ザラザラの強さを指定できます。

クリアコート

  • クリアコート
    クリアコートを オン / オフ できます。
  • ノーマルマップ
    クリアコートにノーマルマップを適用できます。
  • カラー
    クリアコートの色を指定します。
    クリアコートの厚さが2以上のときに色が変わります。
  • 厚さ
    クリアコートの厚さを指定します。

ラメ

  • ラメの量
    Low, Highに設定するとラメ表現ができます。
    Low ではラメの間隙が狭いとリアリティがなくなるため
    High でラメを重ねることでリアリティを出すことができます。
  • 彩度
    ラメの彩度を設定します。
  • 色相
    ラメの色相を調整します。
    ラメの色は見る方向からも変化します。
  • 縦横比
    ラメの縦横比を調整できます。
  • ボリューム
    ラメの量を設定します。
  • 間隙
    ラメ同士の間隙を設定します。
  • まばら
    ラメを間引く量を設定します。
  • メタリック
    ラメのメタリックを指定します。
  • 光沢
    ラメの光沢を指定します。

カーボンファイバー

  • カーボンファイバー
    カーボンファイバーを オン / オフ できます。
  • カーボン色
    チェックボックスをオンにするとカーボンの色を指定できるようになります。
  • カーボンアングル
    カーボンのストライプを90度回転することができます。
  • カーボンディテール
    カーボンのAOを調整します。
  • レベル
    カーボンの立体感を調整します。

Advanced

  • カリングモード
    Off にすると裏面も描画することができます
  • Render Queue
    シーン内の描画順を整理します。
    シーン全体に影響し、他プレイヤーの迷惑になるおそれがあるため、
    この設定項目について十分に理解し、且つ変更する必要がある場合のみ変更してください。

マテリアル設定のヒント

参考にできそうな設定を紹介します。

CG テクスチャサイトのアセットを使いたい

CG テクスチャサイトのアセットを使用することができます。
( おすすめサイト - ambientCG )

使用可能なテクスチャ

  • Color
  • Roughness
  • Metalness
  • Normal Map

1. テクスチャを用意する
使用可能なテクスチャを用意してください。

2. Roughnessマップ・Metalnessマップをまとめる
Photoshop等でカラーチャンネル別にマップを格納します。


Roughness マップをインポートする

背景からレイヤーに変更する

RGB モードに変更する

G・B チャンネルを黒に塗りつぶす

Metalness マップをインポートする

Roughness マップの G チャンネルに Metalness マップをペーストする

画像データとして保存する

3. テクスチャを Unity にインポートする

Roughness マップ・Metalness マップは sRGB のチェックを外す

Normal Map は Texture Type を Normal map に設定する

4. マテリアルを設定する

  • Color
    テクスチャ
  • Roughness・Metalness
    ディテールディテールテクスチャ
    光沢-チャンネルR 反転
    メタリック-チャンネルG
  • Normal Map
    ディテールノーマルマップ
シンプルな Skybox でもキレイに反射させたい

シンプルな Skybox でも MatCap を使うことでキレイに反射できます。

1. 反射に使いたい MatCap テクスチャを用意する。
2. マテリアルを設定する
テクスチャMatCap をセット MatCap
ブレンドモードMultiply
ブレンド率1

リアルなカーボン素材を表現したい

カーボンファイバーはクリアコートに使用痕をもたせるとリアルに見えます。

1. ダメージ表現用のテクスチャを用意する
2. マテリアルを設定する 
ディテール光沢-チャンネルManual
ディテール光沢0.7
ディテールメタリック-チャンネルManual
ディテールメタリック0.95
クリアコートOn
クリアコート光沢-チャンネル任意のチャンネル
カーボンファイバーOn
カーボンファイバーカーボン色1On#333333
カーボンファイバーカーボン色2On#484848

3. 必要に応じてノーマルマップもつけると良いかもしれません

クリアコートノーマルマップ
クリアコートレベル0.5

GitHubで編集を提案

Discussion