Unity Shader Programming Vol.03 (v.2.1.0)【PDF】
- Unity Shader Programming Vol.03 (v.2.1.0)【PDF】¥ 2,000
- Unity Shader Programming Vol.03 (v.2.0.0 サンプル)【PDF】¥ 0
Unity でシェーダプログラミングを始めたいけど、公式の資料や散見する様々な資料では難しいという人に対し、小さく、簡単に、サンプル付きでまとめた資料です。 総ページ数:99 本文中のサンプルはオープンソースで管理しています。合わせて購入の検討に利用してください。 https://github.com/XJINE/UnityShaderProgramming_03_Sample
資料の内容
この資料では、シェーダのもっとも基本的な使い方である「シェーディング」について解説します。光の当たる部分は明るく、当たらない部分は暗く描画し、反射の程度によって物体の材質を表現する技術です。 この資料の目標は、シェーディングに必要となる基本的な概念を理解し、さらに高度な資料やシェーダプログラムを読み進めることができる程度の知識を共有することです。 内容は基本的なものから始め、歴史的経緯を交えつつ、順を追って情報量を増やすようにしています。最終的にはやや高度な物理ベースレンダリングの入門までを解説しますが、一連の内容について、あらかじめいくつかご了承して頂きたいことがあります。 まず、最新技術までを正確に解説したり、実用的な実装方法を完全に解説するものではありません。簡単に解説するため、情報量を少なくし、簡略化しています。 また、影 (シャドウ) をつける処理についてはこの資料には含まれないので注意してください。GI (グローバルイルミネーション) や SSS (サブサーフェーススキャタリング) のような、さらに高度なシェーディング技術についても含まれません。 最後に、最低限必要な数学や物理学の情報がやや含まれます。算出方法や原理については既知でなくとも理解が進むように解説していますが、合わせてご了承ください。
目次
はじめに 第 1 章 法線の可視化 ―― 1.1 法線とは ―― 1.2 Vertex シェーダで法線を受け取る ―― 1.3 座標系を変換する ―― 1.4 Fragment シェーダで法線を可視化する ―― 1.5 ラスタライズによる補間 ―― 1.6 appdata の定義を省略する ―― 1.7 法線の正規化 第 2 章 拡散反射光を考慮する Lambert シェーダ ―― 2.1 光の挙動と拡散反射光 ―― 2.2 光源を考慮したレンダリングのための設定 ―― 2.3 平行光源の光線ベクトルを取得する ―― 2.4 拡散反射光を算出する 第 3 章 Flat, Phong, Gouraud シェーディング ―― 3.1 Flat シェーディング ―― 3.2 Gouraud シェーディング 第 4 章 光源の色を考慮したシェーディング ―― 4.1 光の色を乗算する ―― 4.2 疑似的な環境光 第 5 章 環境光を考慮したシェーディング ―― 5.1 Unity における環境光の設定 ―― 5.2 unity_AmbientSky ―― 5.3 ShadeSH9 第 6 章 複数の光源を考慮したシェーディング ―― 6.1 FowardBase / ForwardAdd ―― 6.2 Blend による光の加算 ―― 6.3 環境光の計算 ―― 6.4 共通ライブラリによる効率化 第 7 章 点光源によるシェーディング ―― 7.1 変数とセマンティクスの追加設定 ―― 7.2 平行光源と点光源とを区別する ―― 7.3 光を減衰する ―― 7.4 光源の範囲とパフォーマンスの考慮 第 8 章 スポットライトによるシェーディング ―― 8.1 スポットライトのパラメータ ―― 8.2 スポットライトの当たり判定 ―― 8.3 フォールオフの実装 第 9 章 複数種類の光源に対応するシェーディング ―― 9.1 multi_compile_fwdadd ―― 9.2 UNITY_LIGHT_ATTENUATION 第 10 章 鏡面反射光を表現する Phong の反射モデル ―― 10.1 鏡面反射光 ―― 10.2 鏡面反射光の実装 ―― 10.3 鏡面反射を含む Gouraud シェーディング 第 11 章 簡略化して改良した Blinn-Phong モデル ―― 11.1 ハーフベクトル ―― 11.2 Blinn-Phong モデルの実装 第 12 章 環境光のフレネル反射を考慮したシェーディング ―― 12.1 フレネル反射とは ―― 12.2 フレネル反射の算出 ―― 12.3 フレネル反射の反映 第 13 章 Cook-Torrance モデルと BRDF 入門 ―― 13.1 BRDF ―― 13.2 Cook-Torrance モデルの実装 ―― 13.3 異なる BRDF モデルとその関数 第 14 章 より正しい物理現象の再現と金属らしさ ―― 14.1 エネルギー保存則とヘルムホルツの相反定理 ―― 14.2 拡散反射と鏡面反射の割合を制御する 第 15 章 環境マップによる映り込みと反射表現 ―― 15.1 キューブマップ・環境マップ ―― 15.2 映り込みは環境光に等しい 第 16 章 オクルージョンマップによる詳細な陰影表現 ―― 16.1 オクルージョンマップ ―― 16.2 テクスチャの適用 ―― 16.3 オクルージョンの適用 ―― 16.4 スペキュラマップ/ ラフネスマップ 第 17 章 ノーマルマップによる詳細な凹凸の表現 ―― 17.1 ノーマルマップ ―― 17.2 接空間 ―― 17.3 法線情報の復元 ―― 17.4 ノーマルマップを反映する 第 18 章 ハイトマップ (視差マップ) による詳細な凹凸の表現 ―― 18.1 ハイトマップ ―― 18.2 ハイトマップの基本的な仕組み ―― 18.3 ハイトマップの適用 ―― 18.4 弱点と発展形 ―― 18.5 バンプマップ 第 19 章 Fog による奥行きの表現 ―― 19.1 Fog の設定 ―― 19.2 Mode による違い ―― 19.3 Unity におけるFog の実装 ―― 19.4 multi_compile_fog ―― 19.5 UnityCG.cginc を確認する ―― 19.6 UNITY_FOG_COORDS ―― 19.7 UNITY_TRANSFER_FOG ―― 19.8 UNITY_APPLY_FOG おわりに
想定する読者と方針
この資料は Unity の基本的な操作方法については知識があり、シェーダプログラミングを経験したことがない方を読者に想定しています。あるいは、シェーダプログラミングの学習を進める上での補助的な資料として役立てることを想定しています。 また、この資料は「UNITY SHADER PROGRAMMING - Vol.02」の続刊です。したがって、これより以前の資料で解説した内容を前提にして作られています。もし必要があれば以前の資料を確認して頂くか、別の資料で補うようにしてください。 この資料のよい点として (1) もっとも小さいサンプルからステップバイステップ形式で内容が整理されていること、(2) それぞれのステップでサンプルが用意されていることが挙げられます。 ほとんどすべての技術的な解説については Unity 公式の資料やその他の資料から確認することができますが、多くの場合に、それらは学習の順序などを考慮していません。教材形式の資料を用いて学習する一番のメリットは、さまざまな資料を集め、それらを取捨選択しながら順序立てる負担を軽減できることにあるでしょう。 一方で、この資料では高度な技術やその詳細、応用の類は解説されていません。特に、シェーダプログラミング以外の CG に関する詳細な解説や数学的な内容は、その多くを割愛しています。これらは「シェーダプログラミングの入門」に当たっては不要であり、より詳細な情報については、それらを専門に扱う資料を参照した方がよいためです。したがって、数学的な内容からきちんと順序立てて CG を学習したい方、高度な技術や CG による表現技法について学習したい方には、この資料は不向きであるといえます。
感想・要望・その他のお問い合わせ
要望、感想、誤字脱字などのご指摘、その他のお問い合わせについては専用フォームでお伺いします。折り返しのご連絡等については必ずのお約束をしかねる体制であることご了承ください。 【問い合わせフォーム】 https://goo.gl/forms/mOiWo6JuPz848deh1
価格について
価格は (1) 学習のために順序立てて整理する (2) 最小限のサンプルを考えて用意する (3) 執筆して管理する、などの要因から決定しています。 価格は、特に新しい情報が追加されるときに改定されることがあります。あるいは、広く広報するなどの目的のために、一時的に改定することがあります。 新しいバージョンがリリースされるとき、既に同じものを購入されている方については、基本的には追加料金なしに入手できるようにしています。ただし電子的な管理が可能なもの、著しく内容が変更されないものに限ります。 上記について、予めご了承ください。
更新履歴
ver.1.0.0 (2019.05.20) ―― 初回リリース。 ver.1.0.1 (2019.05.26) ―― 誤字脱字、難解な言い回しを修正。 ver.1.2.2 (2019.06.06) ―― スポットライトの章を追加。 ―― Gouraud シェーディングの解説を追加。 ―― シェーダ―バリアントの解説を追加。 ―― 誤字脱字、難解な言い回しを修正。 ver.2.0.0 (2020.04.10) ―― 旧 Vol.02 を Vol.03 としてリメイク。 ―― ShaderVariant, MipMap などの一部内容を、新 Vol.02 へ移植。 ―― キャプチャを除くすべての図の更新。 ver.2.1.0 (2020.09.24) ―― 全体で言い回し調整。 ―― 19 章 Fog を追加。