3. マテリアルとシェーダー
UnityにもUnreal Engineにもマテリアルとシェーダーがあります。
物体の見え方を変えるマテリアル
マテリアルを作成する
シェーダーとパラメータの種類
3. Unityのマテリアルとシェーダー
3.1 物体の見え方を変えるマテリアル
Windowsのペイントなどで作成した画像を作成します。作成した画像ファイルをエディタのProjectウィンドウにドラッグ&ドロップします。
どこかをクリックすると画像は閉じます
Projectウィンドウ上で右クリック > Create > Materialを選択します。Materialに適当な名前をつけます。
どこかをクリックすると画像は閉じます
マテリアルのインスペクタのShaderにUnlit/Textureを選択します。
どこかをクリックすると画像は閉じます
Select欄でドラッグ&ドロップした画像ファイルを選択します。
どこかをクリックすると画像は閉じます
Cubeに作成したマテリアルをドラッグ&ドロップすると、画像をCubeに貼り付けることができます。
どこかをクリックすると画像は閉じます
3.2 マテリアルの作成
マテリアルは、物体の見え方を決めます。
シェーダーとは物体の見た目を計算して決定しているプログラムです。シェーダーにパラメータを与えることでマテリアルが作成されます。
Litシェーダーを使ったマテリアルを作成します。Lit シェーダーを使用すると、石、木、ガラス、プラスチック、金属など、現実世界に存在する物の表面をフォトリアリスティックな品質でレンダリングできます。 光量や反射は実物のように見え、明るい日差しや暗い洞窟など、さまざまなライティング条件に対して適切に反応します。
🔗 参考リンク
Unityドキュメンテーション
Lit シェーダー
https://docs.unity3d.com/ja/Packages/com.unity.render-pipelines.universal@14.0/manual/lit-shader.html
Projectウィンドウで右クリック > Create > Materialを選択します。Materialのファイル名はLitにします。
どこかをクリックすると画像は閉じます
マテリアルファイルlitを選択して、Universal Render Pipelineでプロジェクトを作成した場合は、デフォルトのシェーダーは「Universal Render Pipeline/Lit」が選択されています。
どこかをクリックすると画像は閉じます
InspectorのSurface Inputs項目にBase Mapがありますので、白色の四角をクリックして、赤色(R:255,G:0,B:0,A:255)を選択します。
どこかをクリックすると画像は閉じます
HierarchyウィンドウからSphereモデルを追加します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
先ほど作成したマテリアルファイルLitをProjectウィンドウから選択、ドラッグして、Sceneビューに表示されているSphereモデルにドロップします。
どこかをクリックすると画像は閉じます
3.3 シェーダーとパラメータの種類
他にもシェーダーには種類があります。代表的な種類について以下紹介します。
種類の紹介と詳しい説明は以下の「Make a Game」で紹介されています。UEとの手順を比較するとなると種類によっては、Unity側ではシェーダーのコードが必要になり、説明の趣旨から離れてしまいますので、ここでは種類の紹介程度に留めます。
🔗 参考リンク
Make A Game
Unityのマテリアルとシェーダー【初心者向け】
https://dkrevel.com/makegame-beginner/material-beginner/
Unlitシェーダー
光を考慮しない 光の計算をしないので軽い
Unlit/Color 単に色を表示
Unlit/Texture 単に絵を表示
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
Diffuseシェーダー
URPのDiffuseはLitのSmoothnessの値を調整して表現します。
どこかをクリックすると画像は閉じます
Smoothnessを0にしたとき
どこかをクリックすると画像は閉じます
Smoothnessを0.5にしたとき
どこかをクリックすると画像は閉じます
Smoothnessを1にしたとき
どこかをクリックすると画像は閉じます
🔗 参考リンク
拡散反射 少しザラザラした見た目
https://qiita.com/flankids/items/a92b14834792a10798e5
Specularシェーダー
URPのSpecularはLitのWorkflow ModeをSpecularに変更して表現します。
どこかをクリックすると画像は閉じます
Smoothnessの値を0にしたとき
どこかをクリックすると画像は閉じます
Smoothnessの値を0.5にしたとき
どこかをクリックすると画像は閉じます
Smoothnessの値を1にしたとき
どこかをクリックすると画像は閉じます
鏡面反射 反射光を調整できることが多い
Transparentシェーダー
URPのTransparentはLitのWorkflow ModeをSpecularに、Surface TypeにTransparentに変更して表現します。
どこかをクリックすると画像は閉じます
Smoothnessの値を0.3にしたとき
どこかをクリックすると画像は閉じます
Smoothnessの値を0.8にしたとき
どこかをクリックすると画像は閉じます
透明 透明な部分を持つテクスチャを使うことで透明にできるが重い
Cutoutシェーダー
URPのCutoutはTransparent Cutoutで表現します。
どこかをクリックすると画像は閉じます
次に画像を作成します。背景が透明にできるペイントソフトを使用します(ここではFireAlpacaを使用してます)。
128x128ピクセル、72dpiの解像度で、四角形の隅を斜めに切ります。
どこかをクリックすると画像は閉じます
画像をProjectウィンドウにドラッグ&ドロップしてインポートしてから、マテリアルのInspectorの画像選択で、作成した画像を選択します。
どこかをクリックすると画像は閉じます
Alpha cutoffが1~0.1のとき
どこかをクリックすると画像は閉じます
Alpha cutoffが0のときは黒くなります。
どこかをクリックすると画像は閉じます
切り取る しきい千り透明な部分を切り取るシェーダー 重い
Emissionシェーダー
URPのEmissionは、VolumeのGameObjectを準備する必要があります。HierarchyでEmpty GameObjectを作成してから、Add ComponentでVolumeを追加します。
どこかをクリックすると画像は閉じます
InspectorのNewボタンを押します。
どこかをクリックすると画像は閉じます
Add Overrideボタンを押します。
どこかをクリックすると画像は閉じます
Post-processing > Bloomを選択します。例えばThresholdを1.02、Intensityを2.35にします。
どこかをクリックすると画像は閉じます
次にマテリアルを作成します。
URPのEmissionはUniversal Render Pipeline/Litで表現します。
どこかをクリックすると画像は閉じます
Emissionをチェックして、Emission Mapをクリックして、Intensityを2.6くらいにします。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
マテリアルが発光します。
どこかをクリックすると画像は閉じます
Bumpedシェーダー
URPのBumpedはUniversal Render Pipeline/Litで表現します。
どこかをクリックすると画像は閉じます
Surface InputsのNormal MapとHeight Mapに「マテリアルの作成」で作成したtextureを選択します。
どこかをクリックすると画像は閉じます
Height Mapが1のとき
どこかをクリックすると画像は閉じます
Height Mapが0.005(最小値)のとき
どこかをクリックすると画像は閉じます
Toonシェーダー
URPのToonは、Unity Toon Shaderを使います。その設定から説明します。
Window > Package Managerをクリックして、+ボタンをクリック、Install package from git URL..をクリックします。
どこかをクリックすると画像は閉じます
「com.unity.toonshader」と入力します。
どこかをクリックすると画像は閉じます
Unity Toon Shaderをインストールします。
どこかをクリックすると画像は閉じます
Unity Toon Shaderをインストールしたあと、マテリアルの作成をして、ShaderにToolを選択します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
Toonのカラーを選択します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
3. UEのマテリアルとシェーダー
機能別サンプルで確認する
マテリアルエディタ
どこかをクリックすると画像は閉じます
🔗 参考リンク
Unreal Engineデベロッパードキュメント
Material 入力
https://dev.epicgames.com/documentation/en-us/unreal-engine/material-inputs-in-unreal-engine
3.1 物体の見え方を変えるマテリアル
Windowsのペイントなどで作成した画像を作成します。作成した画像ファイルをエディタのコンテンツフォルダにドラッグ&ドロップします。
どこかをクリックすると画像は閉じます
コンテンツブラウザ上で右クリック > Materialを選択します。
Materialに適当な名前をつけてダブルクリックしてマテリアルエディタを開きます。
右クリックして「TextureSample」ノードを選択します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
TextureSampleノードの詳細パネルからMaterial Expression Texture BaseのTextureに、先ほど持ってきた画像を選択します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
画像を選択するとTextureSampleノードが変わったことが確認できます。
どこかをクリックすると画像は閉じます
MaterialのBase Colorピンに接続します。
どこかをクリックすると画像は閉じます
Unityのような画像をCubeに貼り付けることができます。
どこかをクリックすると画像は閉じます
3.2 マテリアルの作成
Unityで作成したLitをUEで作成します。
コンテンツブラウザで右クリック > Material
Materialに適当な名前をつけて、Materialをダブルクリックします。
マテリアルエディタを開いて、右クリック >「Constant3Vector」ノードを選択します。
どこかをクリックすると画像は閉じます
MaterialのBase Colorピンに接続します。
どこかをクリックすると画像は閉じます
Constant3VectorノードをダブルクリックするとRGB色を選ぶことができます。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
コンテンツブラウザでMaterialが作成されていることが確認できます。
3.3 シェーダーとパラメータの種類
Unlitシェーダー
詳細パネルのMaterial > Shading ModelでUnlitを選択します。
どこかをクリックすると画像は閉じます
Constant3VectorノードをMaterialのEmissive Colorピンに接続します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
Diffuseシェーダー
UEはUnityのようにDiffuse、つまり拡散反射のシェーダーを使うのではなく、Material DomainがSurfaceにある、RoughnessやMetalicの値を調整して表現します。
🔗 参考リンク
Unreal Engineデベロッパードキュメント
Material 入力
https://dev.epicgames.com/documentation/en-us/unreal-engine/material-inputs-in-unreal-engine
によると「Roughnessが1の場合、ディフューズになります」とあるので、RoughnessのピンにValueが1のConstantValueノードを繋げることでDiffuseの効果になります。
どこかをクリックすると画像は閉じます
Roughnessを1にしたときの状態です。
どこかをクリックすると画像は閉じます
Roughnessを0.5にしたときの状態です。
どこかをクリックすると画像は閉じます
Roughnessを0にしたときの状態です。
どこかをクリックすると画像は閉じます
Specularシェーダー
詳細パネルのMaterial > Shading ModelでDefault Litを選択します。
どこかをクリックすると画像は閉じます
右クリックを押して「Constant」ノードを作成します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
MaterialのSpecularピンに接続します。
どこかをクリックすると画像は閉じます
Constantノードの詳細パネルのValueを0にした状態です。
どこかをクリックすると画像は閉じます
Constantノードの詳細パネルのValueを1にした状態です。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
Transparentシェーダー
詳細パネルのMaterial > Blend ModelでTranslucentを選択します。
どこかをクリックすると画像は閉じます
詳細パネルのMaterial > Shading ModelでDefault Litを選択します。
どこかをクリックすると画像は閉じます
右クリックを押して「Constant」ノードを作成します。MaterialのOpacityピンに接続します。Constantノードの詳細パネルのValueを0.3にした状態です。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
Constantノードの詳細パネルのValueを0.8にした状態です。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
🔗 参考リンク
Unreal Engineデベロッパードキュメント
透過性を使用する
https://docs.unrealengine.com/4.27/ja/RenderingAndGraphics/Materials/HowTo/Transparency/
Cutoutシェーダー
※OpacityMask
🔗 参考リンク
Unreal Engineデベロッパードキュメント
Material Blend モード
https://docs.unrealengine.com/4.27/ja/RenderingAndGraphics/Materials/MaterialProperties/BlendModes/
UnityのCutoutにあたるシェーダーはUnreal Engineでは自分で作成することで実現できます。以下の参考リンクにあるyoutubeのチュートリアルを参考に作成します。ノードがたくさん出てくるので一つ一つの理屈はyoutubeの動画を観て学習してください。ここではUnityで実現していることをUnreal Engineで再現できるかを確認します。
🔗 参考リンク
Unreal Engine Portal Cutoff Effect | Unreal Engine Tutorial
https://www.youtube.com/watch?v=DnD2_6nx-z0
Material Cutoff Effect Tutorial - (UE4)
https://www.youtube.com/watch?v=MAzkNgzWK9w
UE4 Tutorial: Occlusion Masking
https://www.youtube.com/watch?v=O6W7pLF2GwU
コンテンツブラウザから、右クリック > Materialでマテリアルを作成します。
詳細パネルのMaterialのBlend ModeをMaskedに変更します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
次に画像を作成します。背景が透明にできるペイントソフトを使用します(ここではFireAlpacaを使用してます)。
128x128ピクセル、72dpiの解像度で、四角形の隅を斜めに切ります。
どこかをクリックすると画像は閉じます
UEにインポートしたら、以下のように作成した画像ファイルの詳細パネル > Textureパラメータを設定してください。
X-axis Tiling Method : Clamp
Y-axis Tiling Method : Clamp
Filter : Nearest
どこかをクリックすると画像は閉じます
次に以下のようにマテリアルノードを作成します。
どこかをクリックすると画像は閉じます
マテリアルの詳細パネルのOpacity Mask Clip Valueで調整します。
Opacity Mask Clip Valueが1.0のときの状態です。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
Opacity Mask Clip Valueが0.5のときの状態です。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
Opacity Mask Clip Valueが0のときの状態です。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
キャラクターの振る舞いに応じてカットするような表現をしたい場合は、この章以降になるブループリントノードの基礎を学習してから、振り返って動画を参考にしながら学習するのがよいかと思います。
ここでは手っ取り早くCutout表現ができる方法を紹介します。
🔗 参考リンク
Modeling Tools Editor Modeプラグイン
Unreal Engine 5 Mesh Cutting - Tips and Tricks
https://www.youtube.com/watch?v=xye9UkTeJ1A
Emissionシェーダー
詳細パネルのMaterial > Shading ModelでDefault Litを選択します。
右クリックして「Constant3Vector」ノードを作成します。
Constant3Vectorノードで赤色にします。
どこかをクリックすると画像は閉じます
右クリックして「Constant」ノードを作成します。続いて右クリックして「Multiply」ノードを作成します。以下のようにしてそれぞれのノードを接続します。
どこかをクリックすると画像は閉じます
Multiplyの出力ピンをMaterialのEmissive Colorピンに接続します。
右クリックして「Constant3Vector」ノードを作成して、白色にします。
どこかをクリックすると画像は閉じます
Constant3VectorノードをMaterialのBase Colorピンに接続します。
最終的には以下のようなノードを作成します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
Constantの詳細パネルのValueを100にします。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
マテリアルが発光します。
どこかをクリックすると画像は閉じます
🔗 参考リンク
How To Make Emissive Materials In Unreal Engine
https://www.youtube.com/watch?v=CEqQeQ65pTE
Bumpedシェーダー
右クリックして「NormalFromHeightmap」ノードを作成します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
TextureSampleノードを右クリックして、Convert To Texture Objectを選択します。
どこかをクリックすると画像は閉じます
TextureObjectノードの出力ピンをNormalFromHeightmapのHeightMapピンに接続します。
どこかをクリックすると画像は閉じます
右クリックして「Constant」ノードを作成します。NormalFromHeightmapのNormal Map Intensityピンに接続します。
どこかをクリックすると画像は閉じます
Texture SampleノードをMaterialのBase Colorピンに接続します。
どこかをクリックすると画像は閉じます
Constantノードの詳細パネルのValueを100にします。絵を描いた線が凹んでいるようにみえます。
ConstantノードのValueが100のときの状態です。
どこかをクリックすると画像は閉じます
ConstantノードのValueが0のときの状態です。
どこかをクリックすると画像は閉じます
🔗 参考リンク
Oded Maoz Erell's CG Log
UE4 – Bump Map
https://odederell3d.blog/2018/12/07/ue4-bump-map/
Toonシェーダー
トゥーンシェーダーにする方法はたくさんあるので、ここではその一例として紹介します。
紹介といってもネットにある方法を参考にして、実際に動かしてみようというものです。
まず、レベル上に、PostProcessVolumeを配置します。
PostProcessVolumeは、左側のPlace Actorsから検索します。
どこかをクリックすると画像は閉じます
PostProcessVolumeを選択して、レベル上にドラッグ&ドロップします。
場所はどこでもよいです。例としてわかりやすいようにLocationを0,0,0に置きます。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
次にマテリアルを作成します。コンテンツフォルダ > 右クリック > Materialを選択します。名前はCelにします。ダブルクリックしてマテリアルエディタを開きます。
最初にノード表示されているMaterial DomainをPost Processにします。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
右クリック > 検索で「SceneTexture」でSceneTextureノードを作成します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
SceneTextureノードを選択し、詳細パネルからUMaterialExpressionSceneTextureのSceneTextureIdをPostProcessInput0に変更します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
再度、右クリック > 検索で「SceneTexture」でSceneTextureノードをもう一つ作成します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
SceneTextureノードを選択し、詳細パネルからUMaterialExpressionSceneTextureのSceneTextureIdをPostProcessInput0に変更します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
SceneTexture:PostProcessInput0のColorピンからSceneTextureDiffuseColorのColorピンをDivideで除算します。
Divideノードは、右クリックから検索します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
Clampノードを作成して、Divideの出力ピンからClampノードの入力ピンに繋げます。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
ComponentMaskノードを作成して、Clampノードの出力ピンからComponentMaskノードの入力ピンに繋げます。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
ComponentMaskノードを選択します。
どこかをクリックすると画像は閉じます
詳細パネルのMaterial Expression Component MaskのRにチェックをいれます。G,B,Aのチェックは外します。
どこかをクリックすると画像は閉じます
SceneTexture:DiffuseColorのColorピンからComponentMaskノードを作成し、今度はComponentMaskの詳細パネルのMaterial Expression Component MaskのR、G、Bにチェックを入れます。Aのチェックは外します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
次に以下のような画像を用意してください。
ペイントソフトなどで作成します(Windowsのペイントでも可)。大きさは128x128ピクセル、解像度は96dpiで作成します。
白、グレーを縦に半分ずつ塗ります。
どこかをクリックすると画像は閉じます
UEにインポートしたら、以下のように作成した画像ファイルの詳細パネル > Textureパラメータを設定してください。
X-axis Tiling Method : Clamp
Y-axis Tiling Method : Clamp
Filter : Nearest
どこかをクリックすると画像は閉じます
※ Filter項目の出し方は▲印をクリックすると、項目数が拡張されます。そのなかにFilter項目があります。
作成してインポートした画像をマテリアルにもっていき、Texture Sampleノードを作成します。作成方法は、コンテンツブラウザから画像をドラッグ&ドロップすると自動的に作成されます。
どこかをクリックすると画像は閉じます
作成できたら、ComponentMaskのRの出力ピンをTextureSampleのUVsピンに接続します。
どこかをクリックすると画像は閉じます
Multiplyノードを作成して、TextureSampleノードのRGBピンと、ComponentMask RGBピンとを乗算します。
MultiplyノードはキーボードのMキーを押しながらマウスを左クリックすると作成できます。
どこかをクリックすると画像は閉じます
Multiplyノードの出力ピンをマテリアルノードのEmissive Colorに接続します。
どこかをクリックすると画像は閉じます
ここで一旦Applyを押してSaveします。
どこかをクリックすると画像は閉じます
マテリアルノードの全体としては以下のようになります。
どこかをクリックすると画像は閉じます
エディタにもどり、PostProcessVolumeの設定をします。PostProcessVolumeを選択します。
どこかをクリックすると画像は閉じます
PostProcessVolumeの詳細パネルから、Rendering FeaturesのPost Process MaterialsのArrayを表示します。
どこかをクリックすると画像は閉じます
+ボタンを押します。すると以下のように項目が追加されます。
どこかをクリックすると画像は閉じます
Chooseをクリックすると、以下のようなメニューが表示されます。
どこかをクリックすると画像は閉じます
Asset referenceを選択すると、以下のように表示が変更されることを確認します。
どこかをクリックすると画像は閉じます
Noneを記載されているところに、先ほど作成した名前をCelに設定したマテリアルをドラック&ドロップします。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
Post Process Volumeの詳細パネルから、Post Process Volume SettingsのInfinite Extent(Unbound)にチェックします。
どこかをクリックすると画像は閉じます
トゥーンマテリアル適用前
※適当にSphereを置いています
どこかをクリックすると画像は閉じます
トゥーンマテリアル適用後
どこかをクリックすると画像は閉じます
ついでに、レベル上にグレイマンを表示させる方法を紹介します。表示させる方法は、コンテンツブラウザのAdd/Importボタンを押し、Add Feature or Content Packをクリックします。
どこかをクリックすると画像は閉じます
Add Content to the Projectから、Third Personを選択します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
Third Personをダブルクリックか、Add to Projectをクリックすると、コンテンツブラウザが以下のように切り替わります。これはコンテンツブラウザのフォルダに新規にThirdPersonBPというフォルダが作成され、その位置に移動したことを示します。
ここからBlueprintsフォルダをダブルクリックします。
どこかをクリックすると画像は閉じます
ThirdPersonCharacterがあるので、これをレベル上にドラッグ&ドロップします。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
グレイマンにトゥーンシェーダーがかかった状態でレベル上に登場していることが確認できます。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
比較の参考のために、トゥーンシェーダーのかからない、通常のグレイマンは以下になります。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
参考にしたサイトはこちらです。
🔗 参考リンク
【UE5】ポストプロセスでセルルックライティング作るよ!【I'll make cell look lighting in Post Processing!】【Post Process】【春日部つむぎのゲーム作ってみよう!】
https://www.youtube.com/watch?v=VfM_BjdJFRA
Cel Shaded Materials Tutorial in UE4
https://www.youtube.com/watch?v=9YQEAvvzh0k
🔗 参考リンク
Let's Enjoy Unreal Engine
UE4 比較的安価な手法でトゥーン(セル)シェーディングをやってみる
https://unrealengine.hatenablog.com/entry/2016/05/29/204545
🔗 参考リンク
キンアジのブログ
【UE4】ポストプロセスマテリアルで簡単なセルシェーディングやってみた 【★★★】
https://kinnaji.com/2018/12/10/instantcellshading/
🔗 参考リンク
【UE5】アニメセルシェーダーやってみたよ!【マテリアル】【I've tried Anime Cell Shaders! [Materials]】【春日部つむぎのゲーム作ってみよう!】
https://www.youtube.com/watch?v=jkK9pCmadZo
UE4 Tutorial: Three-Tone Toon Shader
https://www.youtube.com/watch?v=p8m8F3Y-WHA
UE4 | Toon Shader using a LUT
https://www.youtube.com/watch?v=l7NecMyiMZM