シェーダー

シェーダーアセットの種類
  • スタンダードシェーダー基本的な物理ベースシェーディング (PBS) を行うシェーダー
  • ビルトインシェーダーUnity エディターに付属しているシェーダー
  • シェーダースクリプト (ShaderLab)スクリプトを使用して作成するシェーダー
    • サーフェスシェーダー
    • 頂点シェーダー/フラグメントシェーダー

公式サイト:

シェーダーアセット | Unity マニュアル [公式]

マテリアル

ドキュメント:

マテリアルの作成と使用 | Unity マニュアル [公式]

使い方

参考:

マテリアルとシェーダー | ゲームの作り方!

概要

参考:

Shader の種類 | NEAREAL

入門

参考:

1から始める Unity Shader 全6回 | Unity Shader 入門

スタンダードシェーダー (Standard Shader)

  • 一般的な用途で必要な機能を包括的に併せ持ったシェーダー
  • 物理ベースのライティングに基づくレンダリングを行う。
  • HDR 表現が可能
こちらのページを参照

ドキュメント:

Standard Shader | Unity マニュアル [公式]

HDR レンダリング | Unity 2018.4 マニュアル [公式]

ビルトインシェーダー

リポジトリ:

TwoTailsGames/Unity-Built-in-Shaders: Unity Built in Shaders – GitHub

参考:

内蔵シェーダのソースコード | nakamura001

旧シェーダー (Legacy Shaders)

ドキュメント:

旧シェーダーコード | Unity マニュアル [公式]

コード:

TwoTailsGames/Unity-Built-in-Shaders/DefaultResourcesExtra – GitHub

Unlit シェーダー

ライティングの影響を受けないシェーダー

  • Unlit/Alpha
  • Unlit/Color
  • Unlit/Texture
  • Unlit/Transparent 半透明 (テクスチャの RGB がベースカラーとなり、アルファチャンネルが透過率を表す。)
  • Unlit/Transparent Cutout カットアウト (アルファチャンネルが閾値以下のピクセルが完全に透過となる。)

参考:

Unlit Shader の要素を全て解説 | アマガミナブログ

Photogrammetory で使える Unlit だけど影を落とすシェーダー | STYLY

内蔵シェーダのコード解説 Unlit/Texture | 強火で進め

内蔵シェーダのコード解説 Unlit/Transparent | 強火で進め

内蔵シェーダのコード解説 Unlit/Transparent Cutout | 強火で進め

透過/アルファ

こちらのページを参照

リンク:

Extending Unity 5 Rendering Pipeline: Command Buffers | Unity Blog [Official]

参考:

アルファとアルファテスト | Tsumiki Tech Times

Unlit/Transparent でアルファ値を外から設定したいシェーダー – Qiita

Unlit/Transparent シェーダーの全文解説/ アルファ値を設定できるようにしてみた | miyakolog

Decent Desktop Glass Shader? – Unity Forum

ノーマルマップ (Normal Map)

ドキュメント:

法線マップ (Normal Map / Bump mapping) | Unity マニュアル [公式]

参考:

Unity でノーマルマップを作成する | Unity + UnrealEngine4 + Blog.

Blender/Unity を用いたノーマルマップの作成、適用手順 | XR-Hub

金属反射/スペキュラー反射/拡散反射 (Metallic / Specular / Smoothness)

金属と非金属の違い
  • 金属/導体/導電体 (Metal / Conductor)
    • 鏡面反射が強く、反射色はアルベドの影響を受ける
  • 非金属/絶縁体/誘電体 (Non-Metallic / Insulator / Dieletric)
    • 反射はアルベドの上にコーティングされたように現れる
    • 反射色はほぼ白色に近い
メタリックワークフロー
  • メタリック (Metallic) 金属の場合に 1.0 を使用し、非金属の場合に 0.0 を使用する//ほとんどの自然な物質は中間の値を取らない
  • スムーズネス (Smoothness) 完全に鏡面反射の場合に 1.0 を使用し、完全に拡散反射の場合に 0.0 を使用する
    • ソース (Source) スムーズネスのチャンネルをどのテクスチャから取得するか指定する
      • Metallic Alpha メタリックテクスチャのアルファチャンネルを使用する
      • Albedo Alpha アルベドテクスチャのアルファチャンネルを使用する

ドキュメント:

Metallic と Specular のワークフロー | Unity マニュアル [公式]

Metallic パラメータ | Unity マニュアル [公式]

Specular パラメータ | Unity マニュアル [公式]

Smoothness | Unity マニュアル [公式]

参考:

Specular color based on light color? – Unity Forum

ハイトマップ (Height Map)

ドキュメント:

ハイトマップ | Unity マニュアル [公式]

放出/エミッション (Emission)

ドキュメント:

Emission | Unity マニュアル [公式]

参考:

目やパーツの一部を光らせる | テラシュールブログ

Fragment Shader に Emission を適用する – Qiita

Standard の Emission をプログラムから切り替える方法 | kan のメモ帳

How to add emission map to this shader – Unity Forum

カスタムレンダーキュー (Custom Render Queue)

カスタムレンダーキューの順序として、05000 の整数が指定できる。値の小さなキューから順に描画される。マテリアルでカスタムレンダーキューを指定しなかった場合、シェーダーにおけるキューの指定値が使用される。スタンダードシェーダーでは、レンダリングモードの指定に応じてレンダーキューが自動的に変更される。スクリプトからマテリアルのレンダーキューを変更する際に、-1 を指定するとシェーダーで定義された値が使用される。

定義済みレンダーキュー
  • Background最初に描画されるべきオブジェクト/背景用 (1000)
  • Geometry一般の不透明なオブジェクト/デフォルト (2000)
  • AlphaTestアルファテストを用いるシェーダー/カットアウト (2450)
  • Transparent透明/透過/半透明のオブジェクト (3000)
  • Overlayオーバーレイ/最後に描画されるべきオブジェクト/レンズフレアなど (4000)

ドキュメント:

Material.renderQueue | Unity スクリプトリファレンス [公式]

Shader.renderQueue | Unity スクリプトリファレンス [公式]

RenderQueue | Unity スクリプトリファレンス [公式]

SubShader 内のタグ | Unity マニュアル [公式]

参考:

Custom Render Queue について | LIGHT11

レンダリング順について | 踊るプログラマー

マテリアルの描画がシェーダーの Queue 順に処理されない原因と対策 | 神様は有休消化中です。

マテリアルから描画順番を設定する | 生存日記

描画順番の話 | 困った時の自分用メモ

Rendering Queues in Unity | Ahmed Schrute

Setting the render queue for Standard shader – Unity Forum

シームレステクスチャ

参考:

Seamless texture shader unlit query – Unity Forum

Tiling of a material, independen of its size – Game Development Stack Exchange

テクスチャの繰り返し感を避ける

参考:

Improved Terrain Texture Tiling – Unity Forum

フラットシェーディング

参考:

フラットシェーディングでローポリっぽく見せる | おもちゃラボ

How to Change Object Shading in Unity | LMHPOLY

Flat shading – Unity Forum

Flat shading – Unity Answers

法線の再計算する

ドキュメント:

Mesh.RecalculateNormals | Unity スクリプトリファレンス [公式]

参考:

スムージング角を用いて法線の再計算を行う | NORIO BLOG

better RecalculateNormals | My note

A better method to recalculate normals in Unity Part 2 | The Scheming Developer

Smooth shading for procedurally generated mesh – Unity Forum

ベルベット (Velvet)

参考:

Velvet | Unify Community Wiki

Very Simple Velvet shader! – Unity Forum

Velvet shader ? – Unity Forum

窓の領域のみオブジェクトを描画する

参考:

窓シェーダーを使った仕掛けの作り方 | STYLY

HoloLens で向こう側が見える窓を動的に追加してみる | 凹みTips

両面描画/ポリゴン裏面の表示/非表示 (Backface Culling)

  • 単純な葉っぱの裏側を描画するには、Unity 標準の「Nature/Tree Soft Occlusion Leaves」を使う。
  • スタンダードシェーダーを複製して Cull Off の記述を追加したシェーダーを作成する。
  • Free Double Sided Shaders
こちらのページを参照

ドキュメント:

ShaderLab: Culling と Depth Testing | Unity 2018.4 マニュアル [公式]

Double Sided | High Definition RP 10.4 Manual [Official]

参考:

裏面も表示する | Shade3D チュートリアル

両面描画 | Tsumiki Tech Times

丸影を描画する

参考:

ちょっとしたシェーダーテクで丸影のドローコール削減してみた | ケットシーウェア

SDF

参考:

Compute Shader でランタイムに SDF マップを生成するエクスペリメント | KAYAC engineers’ blog

GLSL で SDF をつくりたい – Qiita

Embedded Materials

ドキュメント:

Materials Tab | Unity Manual [Official]

参考:

Blender からインポートしたモデルのマテリアル設定方式について | ゴマちゃんフロンティア

Unity でマテリアルが変更できない時 | Sirohood

複数のゲームオブジェクトにまとめてマテリアルを設定する

参考:

C# でまとめて GameObject の Shader 変更/コライダー追加 | STYLY Developer’s Blog

Immediate Window で複数の Material の設定を一括更新してみる | テラシュールブログ

Assign material to multiple objects – Unity Answers

Setting multiple materials from script – Unity Forum

複数のマテリアルを割り当てる

参考:

2つのテクスチャを合成するシェーダー – Qiita

ノーマルマップを作成する

Creating Normal Maps for Unity in Blender

PBR テクスチャ

参考:

PBR マテリアルのテクスチャは実際どのようなテクスチャなのか | tkmkrocket_tech

Autodesk Interactive シェーダー

旧スタンダード Roughness Setup シェーダー

コード:

TwoTailsGames/Unity-Built-in-Shaders/AutodeskInteractive.shader – GitHub

参考:

Standard Roughness Setup を探しているあなたへ | Unity Connect

What happened to the ‘Standard (Roughness)’ shader? – Unity Forum

非均一なスケーリング

参考:

Handle Uniform Non-Uniform scale in a shader? – Unity Forum

比較

参考:

Shader の種類 | NEAREAL

キャラクターのシェーダー比較 (Standard / Unlit / Mtoon / Cubed / UnitychanToon) | トマシープが学ぶ

パフォーマンス

参考:

シェーダーのパフォーマンス | Unity マニュアル [公式]

アセットバンドル (Asset Bundle)

参考:

Asset Bundle に格納した Scene や Prefab がピンクになる問題 | テラシュールブログ

shaders are pink when loaded from an Asset Bundle – Unity Support

RenderDoc

ドキュメント:

RenderDoc の統合 | Unity マニュアル [公式]

マテリアルがピンク色になって正常に表示されない

参考:

LWRP プロジェクトに取り込んだモデルがピンク一色になるときの対応メモ | ねぎたまらぼ

Materials are pink | Unity Forum

Textures and Materials turn pink after installing and activating lightweight render pipeline | Unity Answers

How to fix the pink materials in a Lightweight Render Pipeline project in Unity? | reddit

エラー

参考:

hidden/internal Error Shader – Unity Answers

不明になったマテリアルを検出する (Missing)

こちらのページを参照

参考:

Renderer のマテリアルが Missing かどうか判定する | 生存日記

URP

  • Lit
    • Simple Lit
  • Baked Lit
  • Unlit
  • Particles Lit
  • Particles Simple Lit
  • Particles Unlit
  • SpeedTree
  • Autodesk Interactive
  • Autodesk Interactive Transparent
  • Autodesk Interactive Masked
こちらのページを参照

ドキュメント:

Shaders and Materials | Universal RP 7.1 Manual [Official]

まとめ

シェーダに関するオススメ記事まとめ 120個 | コガネブログ

無料のオススメシェーダまとめ 110個 | コガネブログ

視差オクルージョンマッピング (Pallax Occlusion Mapping)

リポジトリ:

coposuke/PallaxOcclusionMapping: 視差オクルージョンマッピング – GitHub

参考:

視差オクルージョンマッピング | コポうぇぶろぐ

Surface Gradient Bump Mapping

動画:

Demo – Samples

ドキュメント:

Surface Gradient Bump Mapping | Unity Manual [Official]

入手:

Surface Gradient Bump Mapping Samples | Unity Asset Store [Official]

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA