【Unity】URPでShader使用せずステンシルを利用してマスクを適用させる

はじめに

今回はURPでShader使用せずステンシルを利用してマスクを適用させてみます

環境は Unity 2020.3.25f1

Universal Render Pipeline(テンプレートのプロジェクトです)

ステンシルについては下記記事が参考になります

nn-hokuson.hatenablog.com

やり方

オブジェクトの用意

マスクをかける側とかけられる側のオブジェクトを用意し、それぞれに専用のレイヤーを設定します

ステンシルの設定

ForwardRenderer.assetを選択して通常の描画では先ほど作成したオブジェクトは描画しないように設定します

ForwardRenderer.assetを選択してAdd Render Feature→Render Objectsで下記2つを追加、パラメータを設定します

valueでステンシルの値を設定、Compare Functionで描画条件を指定してPassFailでステンシルを操作ができます

Mask用オブジェクトの後にMaskかけられる側のオブジェクトを追加する必要があるので注意

Mask側ではCompare FunctionNeverにすることでピクセルレンダリングしないようにしてPassReplaceにすることでステンシルにvalueである1を書き込みます  

Maskかけられる側ではCompare FunctionををNot Equalにすることでvalueである1以外の時のみレンダリングするようになります。これによってマスクすることでできようになります

参考

docs.unity3d.com

docs.unity3d.com

完成

Shader使用せずマスクをかけることが出来ました

参考

https://theslidefactory.com/see-through-objects-with-stencil-buffers-using-unity-urp/

【Unity】ShaderGraphでテクスチャシートを使用する

はじめに

今回はShaderGraphでテクスチャシートを使用できるようにします

環境は Unity 2020.3.25f1

Universal Render Pipeline(テンプレートのプロジェクトです)

Unlit Shader Graph を使用しています。

ノード作成

下記テクスチャを使用します

f:id:Brave345:20220222172532p:plain

テクスチャシート作成方法はこちら

bravememo.hatenablog.com

Flipbookを使用することでテクスチャシートの使用する部分を指定出来ます

WidthとHeghtで分割数を指定して、Timeでどこのテクスチャを使用するかを決めることが出来ます

f:id:Brave345:20220222172614p:plain

完成

Timeを調整することで使用するテクスチャシートの指定した部分を使用できるようになりました

f:id:Brave345:20220222172629g:plain

【Unity】VFXToolboxを使用してテクスチャの黒部分を透過させる

はじめに

今回はVFXToolboxを使用してテクスチャの黒部分と透過させていきます。

環境は Unity 2020.3.25f1

Universal Render Pipeline(テンプレートのプロジェクトです)

VFXToolboxの使い方はこちら

bravememo.hatenablog.com

やり方

透過させる

Processorsタブを開いてAlpha From RGBを追加することで黒部分が透過します。

f:id:Brave345:20220221163313g:plain

このままだと元テクスチャより暗くなってしまうのでRemap Colorを使用して元の色に戻します

f:id:Brave345:20220221163339g:plain

書き出し

Export Alphaにチェックを入れてExportします

f:id:Brave345:20220221163433p:plain

完成

黒部分と透過させたテクスチャを作成することが出来ました

f:id:Brave345:20220221163448p:plain

【Unity】VFXToolboxを使用して複数のテクスチャを1枚にまとめる

はじめに

今回はVFXToolboxを使用して複数のテクスチャを一枚のテクスチャにまとめようと思います

環境は Unity 2020.3.25f1

Universal Render Pipeline(テンプレートのプロジェクトです)

インストール

ここからzipをダウンロードして解凍します

github.com

WindowからPackageManagerから左上の+からAdd package frof disk...を選択します

f:id:Brave345:20220217171218j:plain

その後package.jsonを選択するとVFXToolboxをプロジェクトに入れることができます

f:id:Brave345:20220217171950p:plain

Windowは下記場所にあります

f:id:Brave345:20220217172104j:plain

テクスチャをまとめる

Image Sequence Windowを開いたらCreate Image Sequenceでassetファイルを作成します

f:id:Brave345:20220217172124p:plain

作成したassetファイルを選択すると下記画面になるのでInput Framesタブを開いてまとめたいテクスチャを下記のように入れていきます

f:id:Brave345:20220217172449g:plain

Processorsタブを開いてFrame ProcessorsAssemble Filpbookを追加し、パラメータをFind Best Ratiosから好きなのを選択するとテクスチャをまとめることができます

f:id:Brave345:20220217172547g:plain

解像度変更

Processorsタブを開いてResizeを追加し、パラメータを編集すると解像度を変更できます

f:id:Brave345:20220217172633g:plain

書き出し

Exportタブを開いてExport as New...を押せばテクスチャを書き出せます

f:id:Brave345:20220217172742p:plain

完成

複数のテクスチャを1枚にまとめることが出来ました

f:id:Brave345:20220217172802p:plain

【Unity】子のパーティクルの色をまとめて変えれるアセット「Particle System Color Changer」を使ってみた

はじめに

子のパーティクルのStartColorをまとめて変えれるアセット「Particle System Color Changer」を使ってみました。

環境はUnity 2020.3.25f1です

使い方

パーティクルの親オブジェクトにPS_ColorChangerをアタッチします。

そしてCurrentColorに白を指定、NewColorに変化後の色を指定します

f:id:Brave345:20220209171607p:plain

Change ColorをおすとStart ColorNew Colorの色相に変化します。

注意点として変化するのは色相のみです(明るさは変化しない)

f:id:Brave345:20220209171621g:plain

New Colorの色相に変化した状態でChange Colorをもう一度押すと元の色に戻ります

f:id:Brave345:20220209171718g:plain

その他

グラデーションにも対応してますが

f:id:Brave345:20220209171845g:plain

複雑なグラデーションを使用してるとおかしな色になるので注意が必要です

f:id:Brave345:20220209171906g:plain