Skip to content

Latest commit

 

History

History
1497 lines (1359 loc) · 55.8 KB

README_JA.md

File metadata and controls

1497 lines (1359 loc) · 55.8 KB

NOVA Shader NOVA Shader

NOVA Shader: Particle System用多機能シェーダ

license license license

ドキュメント (English, 日本語) | サンプル (English, 日本語) | デモ (English, 日本語)

NOVA ShaderはUnityのUniversal Render Pipeline (URP)に対応した、Particle Systemのための多機能シェーダです。
ビジュアルエフェクト制作でよく使われる汎用的な機能をまとめているので、効率的に高品質なエフェクトを作成できます。

Sample1

Sample2
Author: @Ugokashiya

特徴的な機能としてはフローマップ、Flip-Book(連番テクスチャアニメーション)、ディゾルブ、フェード、回転、アニメーション可能なTintマップ、エミッション、ディストーションなどがあります。

Features
特徴的な機能

詳細については以下のドキュメントやサンプルデモを参照してください。

目次

詳細

セットアップ

要件

本ライブラリは以下の環境に対応しています。

  • Unity 2021.3 以上
  • Universal Render Pipeline
  • Shader Model 3.5

なお、Mesh GPU Instancingを使う場合にはShader Model 4.5が要件となります。
また、Mirror Samplingプロパティを有効にする場合には、ハードウェアがInline Sampler Statesに対応している必要があります。
3Dテクスチャや2Dテクスチャ配列を使用する場合には、圧縮形式がそれらに対応している必要があります。

また本ドキュメントでは、Universal Render Pipeline のセットアップが完了していることを前提としています。
Universal Render Pipelineに関する詳細はUnityのマニュアルを参照してください。

インストール

インストールは以下の手順で行います。

  1. Window > Package Manager を選択
  2. 「+」ボタン > Add package from git URL を選択
  3. 以下を入力してインストール

Package Manager

あるいはPackages/manifest.jsonを開き、dependenciesブロックに以下を追記します。

{
    "dependencies": {
        "jp.co.cyberagent.nova": "https://github.com/CyberAgentGameEntertainment/NovaShader.git?path=/Assets/Nova"
    }
}

バージョンを指定したい場合には以下のように記述します。

なおNo 'git' executable was found. Please install Git on your system and restart Unityのようなメッセージが出た場合、マシンにGitをセットアップする必要がある点にご注意ください。

バージョンを更新するには上述の手順でバージョンを書き換えてください。
バージョンを指定しない場合には、package-lock.jsonファイルを開いて本ライブラリの箇所のハッシュを書き換えることで更新できます。

{
  "dependencies": {
      "jp.co.cyberagent.nova": {
      "version": "https://github.com/CyberAgentGameEntertainment/NovaShader.git?path=/Assets/Nova",
      "depth": 0,
      "source": "git",
      "dependencies": {},
      "hash": "..."
    }
  }
}

使い方

Renderer Feature を登録

まず、Distortion を掛けるための Renderer Feature を設定します。
URP の ForwardRendererData アセットのインスペクタ最下部から、Add Renderer Feature > Screen Space Distortion を選択します。

Add Screen Space Distortion
Add Screen Space Distortion

下図のように Screen Space Distortion が追加されていることを確認します。

Screen Space Distortion
Screen Space Distortion

Note
なお Distortion シェーダを使用しない場合には Renderer Feature を設定する必要はありません。

Depth Textureを有効化

次に Soft ParticlesDepth Fade といった機能に使用するため Depth Texture を有効化します。
UniversalRenderPipelineAsset のインスペクタから Depth Texture にチェックを入れます。

Depth Texture
Depth Texture

Depth Texture の設定は各 Camera にもあるので、こちらも必要に応じて設定します。

Note
なお Soft ParticlesDepth Fade を使わない場合にはこの設定は必要ありません。

マテリアル作成、アサイン

ここまでの設定が完了したら、NOVAシェーダが設定されたマテリアルを作成します。
任意のマテリアルを作成し、シェーダに Nova/Particles/UberUnlit を設定します。
Base Map には適当なテクスチャをアサインしておきます。

Material
Material

Particle System を作成してこのマテリアルをアサインすると、指定したテクスチャのパーティクルが表示されることを確認できます。

Particle
Particle

その他各シェーダ、各機能の詳細については以下にまとめます。

Uber Unlitシェーダ

Uber Unlitシェーダはライティングが反映されない多機能シェーダです。 発光するエフェクトなど、ライティングが不要なパーティクルにはこのシェーダを使用します。

Uber Unlitシェーダを使用するには、マテリアルに Nova/Particles/UberUnlit シェーダをアサインします。
Inspectorから設定可能な各プロパティの説明は以下の通りです。

Render Settings

Render Settingsではマテリアルの描画方法を制御できます。

Render Settings
Render Settings

プロパティ名説明
Render Type

描画方法を以下の選択肢から指定できます。

  • Opaque: 不透明描画
  • Cutout: 不透明描画で、透明部分のピクセルを破棄する
  • Transparent: 半透明描画(デフォルト)

Cutoutを選択した場合には、CutOffプロパティが表示されます。
Transparentを選択した場合には、Blend Modeプロパティが表示されます。

CutOff

Render TypeをCutoutに設定した時のみ表示されます。

半透明部分を切り取る際の閾値を制御します。
この値が大きいほど、よりアルファ値が大きい部分まで切り取ります。

Blend Mode

Render TypeをTransparentに設定した時のみ表示されます。

色の合成方法を以下の選択肢から指定できます。

  • Alpha: アルファブレンディング(デフォルト)
  • Additive: 加算
  • Multiply: 乗算

Render Face

描画する面を以下の選択肢から指定できます。

  • Front: 前面のみ描画(デフォルト)
  • Back: 背面のみ描画
  • Both: 両面を描画

Render Priority

描画の優先度を指定できます。
Render Typeが同じ場合、Render Priorityが小さいものから先に描画されます。

Vertex Alpha Mode

頂点カラーのアルファ値の用途を以下の選択肢から指定できます。

  • Alpha: アルファ値として扱う(デフォルト)
  • Transition Progress: Alpha Transition機能(後述)のProgressとして使う

ZWrite

ZWriteを設定できます。

  • Auto: Render TypeがTransparentの時にはZWriteを無効に、それ以外の時にはZWriteを有効に設定する(デフォルト)
  • Off: ZWriteを常に無効化する
  • On: ZWriteを常に有効化する

ZTest

ZTestを設定できます。

  • Disabled
  • Never
  • Less
  • Equal
  • Less Equal(デフォルト)
  • Greater
  • Not Equal
  • Greater Equal
  • Always

Vertex Deformation

Vertex Deformationでは頂点の変形を制御できます。

Vertex Deformation
Vertex Deformation

プロパティ名説明
Texture

頂点変形マップを設定します。頂点変形マップの仕様は以下の通りです。

  • 指定された1個のテクスチャのチャンネルの値に基づいて、頂点をオブジェクト空間の法線方向に押し出します
  • チャンネルの指定はChannelsプロパティで行えます
  • テクスチャの値がゼロの部分は押し出されず、値が大きくなるほど外側に押し出されます
色ではなく値としてテクスチャを使うので、テクスチャ設定のsRGB Colorのチェックを外す必要がある点に注意してください。

Intensity

頂点変形を適用する際の強度を設定します。

Base Map

Base Mapでは色のベースとなるテクスチャを制御できます。

Base Map
Base Map

プロパティ名説明
Mode

ベースマップのモードを以下の選択肢から指定できます。

  • Single Texture: 通常の2Dテクスチャ(デフォルト)
  • Flip Book: Flip-Bookアニメーション
  • Flip Book Blending: ブレンドありのFlip-Bookアニメーション

選択したモードによってテクスチャの型が変わります。

Texture

ベースマップを設定します。

ModeにFlip Bookを指定した場合には、Texture2DArrayを設定する必要があります。
ModeにFlip Book Blendingを指定した場合には、Texture3Dを設定する必要があります。

Rotation

ベースマップの回転度合いを設定します。

Offset

ベースマップを回転する際の中心座標のオフセットです。

Mirror Sampling

チェックをつけるとテクスチャがミラーサンプリングされます。

Flip-Book Progress

ModeをFlip BookあるいはFlip Book Blendingに設定した時のみ表示されます。

Flip-BookあるいはFlip-Book Blendingの進行度を設定します。

Tint Color

Tint Colorでは乗算色を指定できます。

Tint Color
Tint Color

プロパティ名説明
Mode

乗算色の適用範囲を以下の選択肢から指定できます。

  • None: なし(デフォルト)
  • All: 全面に適用
  • Rim: リムに適用

Progress

ModeをRimに設定した時のみ表示されます。

リムの範囲を設定します。
この値が大きくすると、よりエッジに近い部分だけが着色されます。

Sharpness

ModeをRimに設定した時のみ表示されます。

この値が大きいほどリムのエッジが鋭くなります。

Inverse

ModeをRimに設定した時のみ表示されます。

リムの範囲を逆転させます。

Color Mode

乗算色の指定方法を以下の選択肢から指定できます。

  • Single Color: 単色(デフォルト)
  • Texture 2D: テクスチャで指定
  • Texture 3D: 3Dテクスチャで指定(アニメーション可能)

Color

Color ModeをSingle Colorに設定した時のみ表示されます。

乗算色を指定します。

Texture

Color ModeをTexture 2DあるいはTexture 3Dに設定した時のみ表示されます。

乗算色を表すテクスチャを設定します。

Progress

Color ModeをTexture 3Dに設定した時のみ表示されます。

3Dテクスチャで指定した乗算色の進行度合いです。

Blend Rate

乗算色の適用率です。

Flow Map

Flow Mapを使うとベースマップを指定した方向に歪ませることができます。

Flow Map
Flow Map

プロパティ名説明
Texture

フローマップを設定します。フローマップの仕様は以下の通りです。

  • 指定された2個のチャンネルのカラーの値に基づいて、サンプリングするUV値をずらします
  • チャンネルの指定はChannelsプロパティのXとYで行えます
  • 値は0.5を基準として、小さいほどUV値がマイナス方向に、大きいほどプラス方向にずれます
色ではなく値としてテクスチャを使うので、テクスチャ設定のsRGB Colorのチェックを外す必要がある点に注意してください。

Intensity

フローマップを適用する際の強度を設定します。

Targets

フローマップを適用する対象を設定します(複数選択可能)。

  • Base Map
  • Tint Map
  • Alpha Transition Map
  • Emission Map

Parallax Map

Parallax Mapを使うと視差効果が出せます

Parallax Map
Parallax Map

プロパティ名説明
Mode

視差マップのモードを以下の選択肢から指定できます。

  • Single Texture: 通常の2Dテクスチャ(デフォルト)
  • Flip Book: Flip-Bookアニメーション
  • Flip Book Blending: ブレンドありのFlip-Bookアニメーション

選択したモードによってテクスチャの型が変わります。

Texture

視差マップを設定します。

ModeにFlip Bookを指定した場合には、Texture2DArrayを設定する必要があります。
ModeにFlip Book Blendingを指定した場合には、Texture3Dを設定する必要があります。

視差マップの仕様は以下の通りです。

  • 指定されたチャンネルのカラーの値に基づいて、サーフェスの凹み具合を変えます
  • 値は0が元の状態で、1に近いほど凹み具合が上がります
色ではなく値としてテクスチャを使うので、テクスチャ設定のsRGB Colorのチェックを外す必要がある点に注意してください。

Strength

視差マップを適用する際の強度を設定します。

Targets

視差マップを適用する対象を設定します(複数選択可能)。

  • Base Map
  • Tint Map
  • Emission Map

Color Correction

Color Correctionはここまでの色を補正します。

Color Correction
Color Correction

プロパティ名説明
Mode

色調補正のモードを以下の選択肢から指定できます。

  • None: 色調補正なし(デフォルト)
  • Greyscale: グレースケール化
  • Gradient Map: グラデーションマップを使って補正

Texture

ModeをGradient Mapに設定した時のみ表示されます。

グラデーションマップを設定します。グラデーションマップの仕様は以下の通りです。

  • ここまでの色の輝度をグラデーションマップの色に置き換えます
  • 輝度に応じてグラデーションマップをサンプリングする際のU値を変えます
  • 従って横方向にグラデーションがかかったテクスチャを使う必要があります

Alpha Transition

Alpha Transitionは徐々に消えていく表現に使用します。

Alpha Transition
Alpha Transition

プロパティ名説明
Mode

アルファトランジションのモードを以下の選択肢から指定できます。

  • None: なし(デフォルト)
  • Fade: 薄くなって消えていくモード
  • Dissolve: 削れて消えていくモード

Map Mode

アルファトランジションマップのモードを以下の選択肢から指定できます。

  • Single Texture: 通常の2Dテクスチャ(デフォルト)
  • Flip Book: Flip-Bookアニメーション
  • Flip Book Blending: ブレンドありのFlip-Bookアニメーション

選択したモードによってテクスチャの型が変わります。

Texture

アルファトランジションマップを設定します。アルファトランジションマップの仕様は以下の通りです。

  • 指定された1個のカラーチャンネルの値に基づいてアルファ値を変更します
  • チャンネルの指定はChannlesプロパティで行えます
  • 値が小さい部分ほど消えやすく、大きい部分ほど最後まで残ります

ModeにFlip Bookを指定した場合には、Texture2DArrayを設定する必要があります。
ModeにFlip Book Blendingを指定した場合には、Texture3Dを設定する必要があります。

また色ではなく値としてテクスチャを使うので、テクスチャ設定のsRGB Colorのチェックを外す必要がある点に注意してください。

Flip-Book Progress

Map ModeをFlip BookあるいはFlip Book Blendingに設定した時のみ表示されます。

Flip-BookあるいはFlip-Book Blendingの進行度を設定します。

Transition Progress

トランジションの進行度を設定します。

Edge Sharpness

ModeをTransitionに設定した時のみ表示されます。

エッジの鋭さを設定します。

Emission

Emissionは発光する表現のために使用します。

Emission
Emission

プロパティ名説明
Mode

エミッションのモードを以下の選択肢から指定できます。

  • None: なし(デフォルト)
  • All: 全面をエミッションさせます
  • By Texture: エミッションさせる範囲をテクスチャにより指定します
  • Edge: エッジ(アルファ値が0より大きく1より小さい部分)をエミッションさせます

Map Mode

ModeをBy Textureに設定した時のみ表示されます。

エミッションマップのモードを以下の選択肢から指定できます。

  • Single Texture: 通常の2Dテクスチャ(デフォルト)
  • Flip Book: Flip-Bookアニメーション
  • Flip Book Blending: ブレンドありのFlip-Bookアニメーション

選択したモードによってテクスチャの型が変わります。

Texture

ModeをBy Textureに設定した時のみ表示されます。

エミッションマップを設定します。エミッションマップの仕様は以下の通りです。

  • 指定された1個のチャンネルのカラーの値に基づいてエミッションのしやすさ変更します
  • チャンネルの指定はChannelsプロパティで行えます。
  • 値が大きいほどエミッションしやすくなります

ModeにFlip Bookを指定した場合には、Texture2DArrayを設定する必要があります。
ModeにFlip Book Blendingを指定した場合には、Texture3Dを設定する必要があります。

また色ではなく値としてテクスチャを使うので、テクスチャ設定のsRGB Colorのチェックを外す必要がある点に注意してください。

Flip-Book Progress

ModeをBy Textureに設定し、Map ModeをFlip BookあるいはFlip Book Blendingに設定した時のみ表示されます。

Flip-BookあるいはFlip-Book Blendingの進行度を設定します。

Color Type

エミッションの色を以下の選択肢から指定できます。

  • Color: 指定した単色をエミッション色として使用します
  • Base Color: ここまでのRGB値をエミッション色として使用します
  • Gradient Map: グラデーションマップを使ってエミッション色を指定します
Gradient MapはModeをBy TextureかEdgeに設定した時のみ選択可能です。

Color

Color TypeをColorに設定した時のみ表示されます。

エミッションの色をHDRカラーで指定します。

Keep Edge Transparency

ModeをEdgeに設定した時のみ表示されます。

チェックをつけると、エッジが透過しなくなります。

Gradient Map

Color TypeをGradient Mapに設定した時のみ表示されます。

グラデーションマップを設定します。グラデーションマップの仕様は以下の通りです。

  • ModeがBy Textureの場合: エミッションマップのR値をグラデーションマップのU値としてサンプリングします
  • ModeがEdgeの場合: アルファ値をグラデーションマップのU値としてサンプリングします
  • 横方向にグラデーションがかかったテクスチャを使う必要があります

Intensity

エミッションの強さを設定します。

Transparency

Transparencyは透明度を調整できます。

Transparency
Transparency

プロパティ名説明
Rim

チェックをつけるとリムを透過できます。

Progress

透過の進行度合いを設定します。

Sharpness

この値が大きいほど透過領域のエッジが鋭くなります。

Inverse

透過範囲を逆転させます。

Luminance

チェックをつけると輝度が小さい部分を透過させます。

Progress

透過の進行度合いを設定します。

Sharpness

この値が大きいほど透過領域のエッジが鋭くなります。

Inverse

透過範囲を逆転させます。

Sort Particles

チェックをつけるとソフトパーティクルを有効にします。
この機能を使用するには、URPのDepth Texture設定が有効になっている必要があります。

Intensity

この値が大きいほど、透過する範囲が大きくなります。

Depth Fade

カメラに近い部分と遠い部分を透過させます。
この機能を使用するには、URPのDepth Texture設定が有効になっている必要があります。

Distance

透過する範囲を設定します。
カメラから見てNearより近い部分、Farより遠い部分が透過されます。

Width

透過し始めてから完全に透過するまでの距離です。

Uber Litシェーダー

Uber LitシェーダーはUnityのPBRライティングの仕様に準拠したライティングが反映される多機能シェーダーです。メッシュエフェクトなどのライティングの影響を受けたいパーティクルにはこのシェーダーを使用します。

Uber Litシェーダーを使用するには、マテリアルにNova/Particles/UberLitシェーダーをアサインします。

Uber LitシェーダーはUber Unlitシェーダーにライティングのための処理とプロパティを追加したシェーダーです。
追加されたプロパティの説明は以下の通りです。

Render Settings

Render Settingsには以下の赤枠で囲まれたプロパティが追加されています。

Render Settings
Render Settings

プロパティ名説明
Work Flow Mode

PBRライティングのワークフローを指定できます。

  • Specular
  • Metallic

なお、ワークフローに関する詳細は下記のURLを参照してください。 https://docs.unity3d.com/ja/2018.4/Manual/StandardShaderMetallicVsSpecular.html https://docs.unity3d.com/ja/2018.4/Manual/StandardShaderMaterialParameterSpecular.html https://docs.unity3d.com/ja/2018.4/Manual/StandardShaderMaterialParameterMetallic.html
Receive Shadows

チェックをつけるとディレクショナルライトによる影を落とすことができます。

Specular Highlights

チェックをつけるとスペキュラハイライトが有効になります。

Environment Reflections

チェックをつけるとReflection ProbeやSkyboxによる環境光の影響を受けるようになります。
環境光の影響に関する詳細は下記URLの「Environment Reflection」を参照してください。
https://docs.unity3d.com/ja/2018.4/Manual/GlobalIllumination.html

Surface Maps

ライティングのために必要なサーフェイスに関する各種情報の設定が追加されています。

Surface Maps
Surface Maps

プロパティ名説明
Normal Map

法線マップを設定します。法線マップの仕様は以下の通りです。

  • 設定できる法線マップはタンジェントスペース法線マップ
  • マップが指定されていない場合は頂点法線が使用される
  • 法線のスケール値を指定できる。1.0で等倍となる
法線マップの詳細については下記のURLを参照してください。
https://docs.unity3d.com/ja/2021.3/Manual/StandardShaderMaterialParameterNormalMap.html

Metallic Map Work Flow ModeにMetallicを設定すると表示されます。

メタリックマップを設定します。メタリックマップの仕様は以下の通りです。

  • メタリックマップが設定されていない場合は、metallicプロパティの値が一律の金属度として使用される
  • メタリックマップが設定されている場合は、metallicプロパティが金属度の乗算値として使用される
  • Channelsで金属度が格納されているチャンネルを指定できる。デフォルトはRチャンネル
メタリックマップの詳細については下記のURLを参照してください。
https://docs.unity3d.com/ja/2018.4/Manual/StandardShaderMaterialParameterMetallic.html
Specular Map Work Flow ModeにSpecularを設定すると表示されます。

スペキュラマップを設定します。スペキュラマップの仕様は以下の通りです。

  • スペキュラマップが設定されていない場合は、Specularプロパティのカラーの値が一律のスペキュラカラーとして使用される
  • スペキュラマップが設定されている場合は、Specularプロパティのカラーの値が乗算カラーとして使用される
スペキュラマップの詳細については下記のURLを参照してください。
https://docs.unity3d.com/ja/2018.4/Manual/StandardShaderMaterialParameterSpecular.html
Smoothness Map スムースネスマップを設定します。スムースネスマップの仕様は以下の通りです。

  • スムースネスマップが設定されていない場合は、Smoothnessプロパティの値が一律の滑らかさとして使用される
  • スムースネスマップが設定されている場合は、Smoothnessプロパティの値が乗算値として使用される
  • Channelsで滑らかさが格納されているチャンネルを指定できる。デフォルトはαチャンネル

Distortionシェーダ

Distortionは画面に対して歪み効果をかけるためのシェーダです。
熱波など、歪み効果が必要なエフェクトにはこのシェーダを使用します。

Distortionシェーダを使用するには、マテリアルに Nova/Particles/Distortion シェーダをアサインします。
Inspectorから設定可能な各プロパティの説明は以下の通りです。

Render Settings

Render Settingsではマテリアルの描画方法を制御できます。

Render Settings
Render Settings

プロパティ名説明
Render Face

描画する面を以下の選択肢から指定できます。

  • Front: 前面のみ描画(デフォルト)
  • Back: 背面のみ描画
  • Both: 両面を描画

ZTest

ZTestを設定できます。

  • Disabled
  • Never
  • Less
  • Equal
  • Less Equal(デフォルト)
  • Greater
  • Not Equal
  • Greater Equal
  • Always

Distortion

Distortionでは歪ませ方を設定できます。

Distortion
Distortion

プロパティ名説明
Texture

ディストーションマップを設定します。ディストーションマップの仕様は以下の通りです。

  • 指定された2個のチャンネルのカラーの値に基づいて画面を歪ませます
  • チャンネルの指定はChannelsプロパティのXとYで行います
  • 値は0.5を基準値として、基準値から離れるほど強く歪みます
色ではなく値としてテクスチャを使うので、テクスチャ設定のsRGB Colorのチェックを外す必要がある点に注意してください。

Intensity

歪みの強さを設定します。

Rotation

ディストーションマップの回転度合いを設定します。

Offset

ディストーションマップを回転する際の中心座標のオフセットです。

Mirror Sampling

チェックをつけるとテクスチャがミラーサンプリングされます。

Flow Map

Flow Mapを使うとディストーションマップを指定した方向に歪ませることができます。

Flow Map
Flow Map

プロパティ名説明
Texture

フローマップを設定します。フローマップの仕様は以下の通りです。

  • 指定された2個のチャンネルのカラーの値に基づいて、サンプリングするUV値をずらします
  • チャンネルの指定は、ChannlesプロパティのXとYで行えます
  • 値は0.5を基準として、小さいほどUV値がマイナス方向に、大きいほどプラス方向にずれます
色ではなく値としてテクスチャを使うので、テクスチャ設定のsRGB Colorのチェックを外す必要がある点に注意してください。

Intensity

フローマップを適用する際の強度を設定します。

Alpha Transition

Alpha Transitionは徐々に消えていく表現に使用します。

Alpha Transition
Alpha Transition

プロパティ名説明
Mode

アルファトランジションのモードを以下の選択肢から指定できます。

  • None: なし(デフォルト)
  • Fade: 薄くなって消えていくモード
  • Dissolve: 削れて消えていくモード

Texture

アルファトランジションマップを設定します。アルファトランジションマップの仕様は以下の通りです。

  • 指定された1個のチャンネルのカラーの値に基づいてアルファ値を変更します
  • チャンネルの指定は、ChannlesプロパティのXで行えます
  • R値が小さい部分ほど消えやすく、大きい部分ほど最後まで残ります

色ではなく値としてテクスチャを使うので、テクスチャ設定のsRGB Colorのチェックを外す必要がある点に注意してください。

Progress

トランジションの進行度を設定します。

Edge Sharpness

ModeをTransitionに設定した時のみ表示されます。

エッジの鋭さを設定します。

Transparency

Transparencyは透明度を調整できます。

Transparency
Transparency

プロパティ名説明
Rim

チェックをつけるとリムを透過できます。

Progress

透過の進行度合いを設定します。

Sharpness

この値が大きいほど透過領域のエッジが鋭くなります。

Inverse

透過範囲を逆転させます。

Luminance

チェックをつけると輝度が小さい部分を透過させます。

Progress

透過の進行度合いを設定します。

Sharpness

この値が大きいほど透過領域のエッジが鋭くなります。

Inverse

透過範囲を逆転させます。

Sort Particles

チェックをつけるとソフトパーティクルを有効にします。
この機能を使用するには、URPのDepth Texture設定が有効になっている必要があります。

Intensity

この値が大きいほど、透過する範囲が大きくなります。

Depth Fade

カメラに近い部分と遠い部分を透過させます。
この機能を使用するには、URPのDepth Texture設定が有効になっている必要があります。

Distance

透過する範囲を設定します。
カメラから見てNearより近い部分、Farより遠い部分が透過されます。

Width

透過し始めてから完全に透過するまでの距離です。

影を落とす機能について

Shadow Caster機能を有効にするとNovaShaderから影を落とすことができるようになります

Shadow Caster
Shadow Caster

プロパティ名説明
Enable

チェックをつけるとShadowCasterPassが有効になります

Apply Vertex Deformation

チェックをつけると影投射の計算にVertex Deformationが反映されます。

Alpha Test Enable

チェックをつけると影投射の計算にAlpha Testが有効になり、通らないところは影を落とさなくなります

Cutoff

Alpha値がCutoff値以下の部分は影を落とさなくなります(描画処理のCutoffと別の値になります)

Alpha Affected By

影投射計算中Alpha値に反映する項目

Tint Color

チェックをつけると、Tint ColorがAlpha値に反映されます

FlowMap

チェックをつけると、Flow MapがAlpha値に反映されます

Alpha Transition Map

チェックをつけると、Alpha Transition MapがAlpha値に反映されます

Transparency Luminance

チェックをつけると、Transparency LuminanceがAlpha値に反映されます

Shadow Caster Demo
Shadow Caster Demo

Custom Vertex Streamsとの連携

Particle SystemのCustom Vertex Streamsを使うと、マテリアルのプロパティを自由にアニメーションさせることができます。
以下では例として、Custom Vertex Streamsを使ってテクスチャを回転させる手順を説明します。

Custom Dataを設定

まずParticle SystemのCustom Dataを設定します。
今回は以下のように、Custom1のXに0から始まり時間経過とともに1に移り変わる値を設定しました。

Custom Data
Custom Data

Custom Vertex Streamsを設定する

次にCustom Vertex Streamsを下図のように設定し、Custom1.xTEXCOORD1.xに渡します。

Custom Vertex Streams
Custom Vertex Streams

マテリアルプロパティを設定する

次にマテリアルプロパティを設定します。
今回はTEXCOORD1.xに渡された値をRotationとして設定したいため、下図のようにCOORD 1Xを選択します。

Coord
Coord

これでテクスチャが回転するようになりました。

Rotation
Rotation

Mesh GPU Instancingを使う

Particle System Mesh GPU Instancingを使うと、パーティクルを効率的に描画できます。
以下では本シェーダを使ったマテリアルに対してMesh GPU Instancingを有効化する手順について説明します。

Note
PreviewRenderUtilityを利用したプレビュー画面上でパーティクルを表示する場合、Enable Mesh GPU Instancingが有効に設定されていると正常に描画されないUnity側の不具合を確認しています。

Mesh GPU Instancingを有効化する

Mesh GPU Instancingを使うにはRendererモジュールのRender ModeをMeshにする必要があります。
またその上でEnable Mesh GPU Instancingにチェックを入れます。

Enable Mesh GPU Instancing
Enable Mesh GPU Instancing

Custom Vertex Streamsを設定する

次にCustom Vertex Streamsを下図のように設定します。

Custom Vertex Streams
Custom Vertex Streams

Custom Dataの部分はNoiseなど他のモジュールの値を入れても問題ありませんが、
必ずINSTANCED1.xyzwINSTANCED2.xyzwの全てが過不足なく埋まるように設定してください。

以上でMesh GPU Instancingの設定は完了です。

Custom Vertex Streamsを自動的に設定する

ここまでCustom Vertex Streamsを手動で設定するいくつかのケースを見てきました。
これ以外にもGPUが求めている頂点ストリームは各種設定によって変わっていきます。

この頂点ストリームを自動的に設定する機能Fix Nowがあります。

Fix Now

GPUが求めている頂点ストリームとの差異が生じている時に、
マテリアルインスペクターの下部にエラーメッセージとエラーを修正するためのボタンが表示されています。

この時、このボタンを押すことで、必要とされている典型的な頂点ストリームが自動的に設定されます。

Fix Now
Fix Now

カスタム頂点アトリビュートの設定に詳しくない場合は、
不要なエラーを避けるためにFix Nowを利用してエラーを修正することを推奨します。

Editor APIs リファレンス

ライセンス

本ソフトウェアはMITライセンスで公開しています。
ライセンスの範囲内で自由に使っていただけますが、使用の際は以下の著作権表示とライセンス表示が必須となります。

また、本ドキュメントの目次は以下のソフトウェアを使用して作成されています。

toc-generatorのライセンスの詳細は Third Party Notices.md を参照してください。