Eye シェーダー
Eye シェーダーは、HD レンダーパイプライン (High Definition Render Pipeline、HDRP) で目をレンダリングするときにまず利用するものです。角膜屈折、コースティクス、瞳孔拡張、縁の黒ずみ、およびサブサーフェススキャタリングなどの重要な現象を表現し、キャラクターに息を吹き込みます。
よく見てみると、Eye シェーダーは事前設定された Shader Graph です。Eye シェーダー実装に関する情報、または独自の Eye シェーダーバリアントを作成する方法は、 Eye Master Stack に関する Shader Graph ドキュメントを参照してください。
目の解剖学
現実的な結果を制作するためにも、目をレンダリングするときに実際の生物学的構造を知っておくと役に立ちます。
- Iris (虹彩) は平らで色の付いた瞳孔周辺の輪を指します。角膜の下にあります。
- Cornea (角膜) は虹彩の上にある透明なレンズです。瞳孔に光を反射し集めます。
- Pupil (瞳孔) は虹彩にある穴で、光を目に入れ網膜へ到達させます。
- Limbus (縁郭)、または Limbal Ring (角膜縁リング) は、角膜と強膜の間の暗い境界領域です。
- Sclera (強膜) は目の外側を保護する不透明レイヤーです。
アイマップの制作
サブサーフェス散乱、角膜縁リング、スムースネス、およびその他のサーフェス情報のプロパティーが Iris と Sclera の間で混ざるため、それぞれのマップを個別に供給しなければならないことに、注意してください。つまり、Iris 情報が含まれない Sclera マップ、そして Sclera 情報が含まれない Iris マップを供給するということです。
目のマテリアルの作成
HDRP の新しいマテリアルは、デフォルトで Lit シェーダー を使います。ゼロから Eye マテリアルを作成するには、マテリアルを作ってから Eye Shader を使わせます。手順は以下の通りです。
- Unity Editor で、プロジェクトの Assets ウィンドウに移動します。
- Assets ウィンドウを右クリックし、Create > Material を選択します。これで新しいマテリアルが Unity プロジェクトの Assets フォルダーに追加されます。
- Material Inspector の上部にある、Shader ドロップダウンをクリックし、HDRP > Eye を選択します。
プロパティー
Surface Options
Surface Options はマテリアルの表面の全体的な外観と、Unity が画面でマテリアルをレンダリングする方法を制御します。
プロパティー | 説明 |
---|---|
Surface Type | マテリアルが透明度をサポートするかを指定します。Transparent Surface Type のマテリアルは、Opaque (不透明) な Surface Type のマテリアルよりも、リソースに負荷がかかります。選択するオプションに応じて、HDRP はさらにプロパティーを表示します。オプションは以下の通りです。 • Opaque: • Transparent: クリアなプラスチックやガラスなどのような、光が突き通ることができる半透明のマテリアルをシミュレートします。 機能に関する詳細および各 Surface Type が表示するプロパティ―のリストは、サーフェスタイプに関するドキュメント を参照してください。 |
- Rendering Pass | HDRP がマテリアルをプロセスするレンダリングパスを指定します。 • Before Refraction: 屈折パスの前にゲームオブジェクトを描画します。つまり、HDRP は屈折をプロセスするときにマテリアルを含みます。このオプションを展開するためには、Surface Type ドロップダウンから Transparent を選択します。 • Default: Surface Type に応じて、デフォルトの不透明、または透明レンダリングパスでゲームオブジェクトを描画します。 • Low Resolution: Default パスの後で、半分の解像度でゲームオブジェクトを描画します。 • After post-process: Unlit マテリアル のみに使われます。すべてのポストプロセスエフェクト後にゲームオブジェクトを描画します。 |
- Blending Mode | HDRP がマテリアルの各ピクセルのカラーと背景ピクセルをブレンドするために使う方法を特定します。オプションは以下の通りです。 • Alpha: マテリアルのアルファ値を使ってオブジェクトの透明度を変更します。0 は完全透明です。1 は完全に不透明ですが、マテリアルは透明レンダーパス中にレンダリングされます。これは雲など、完全に可視化したいものの、時間とともにフェードさせたい景観に役立ちます。 • Additive: マテリアルの RGB 値を背景色に追加します。マテリアルのアルファチャンネルが強度を調整します。0 の値は何も追加せず、1 の値はマテリアルのカラーを 100% 背景色に追加します。 • Premultiply: すでにマテリアルの RGB 値とアルファチャンネルを乗算したものと想定します。画像をフィルタリングする、または異なるレイヤーを構成する際に Alpha ブレンドよりも良い結果が得られます。 このプロパティーは Surface Type を Transparent に設定したときのみに表示されます。 |
- - Preserve Specular Lighting |
アルファブレンディングによってスペキュラーハイライトの強度を減らすかどうかを示します。これはガラスや水を照らす太陽光線のような、透明なサーフェスのスペキュラ―要素を保存します。 このプロパティーは、Surface Type を Transparent に設定したときのみに表示されます。 |
- Sorting Priority | これを使うと、重ねられた透明なサーフェスのレンダリング順序を変更できます。詳細と使用例については、マテリアルソートに関するドキュメント を参照してください。 このプロパティーは、Surface Type を Transparent に設定したときのみに表示されます。 |
- Receive Fog | フォグが透明な表面に影響を与えるかを示します。無効にすると、シーンでフォグを計算する際に HDRP はマテリアルを考慮しません。 |
- Back Then Front Rendering |
HDRP がマテリアルを 2 つの別のドローコールでレンダリングするかを示します。HDRP は最初のドローコールで裏面をレンダリングし、2 番目の呼び出しで正面をレンダリングします。 このプロパティーは、Surface Type を Transparent に設定したときのみに表示されます。 |
- Transparent Depth Prepass | HDRP が並び替えを向上させるために透明なサーフェスからポリゴンを深度バッファに追加するかを示します。HDRP はライティングパスの前にこの操作を実行し、GPU のパフォーマンスを向上させます。 |
- Transparent Depth Postpass | HDRP がポストプロセスが使う深度バッファにポリゴンを追加するかを示します。HDRP はライティングパスの前にこの操作を実行します。モーションブラー または フィールドの深度 など、深度情報を使うポストプロセスエフェクトを利用する際に、この機能を有効にすると便利です。 |
- Transparent Writes Motion Vectors | HDRP がマテリアルを使う透明なゲームオブジェクトにモーションベクトルを描画するかを示します。これにより HDRP は透明なオブジェクトに対し、モーションブラーのようなエフェクトを処理できます。モーションベクトルに関する詳細は、モーションベクトルに関するドキュメンテーション を参照してください。 このプロパティーは Surface Type を Transparent に設定したときのみに表示されます。 |
- Depth Write | HDRP が、マテリアルを使うゲームオブジェクトの深度値を書き込むかを示します。 |
- Depth Test | HDRP が深度テストに使う比較関数を特定します。 |
- Cull Mode | マテリアルを使うゲームオブジェクトに除去するフェースを特定します。オプション: • Front: メッシュのフロントフェースを除去します。 • Back: メッシュのバックフェースを除去します。 このプロパティは、Double Sided を無効にしたときのみに表示されます。 |
Alpha Clipping |
マテリアルが Cutout シェーダー のように作動するかを示します。 機能に関する詳細およびこの機能が持つプロパティーのリストは、Alpha-Clipping に関するドキュメント を参照してください。 |
- Threshold | HDRP が各ピクセルをレンダリングするか決定するために使うアルファ値制限です。ピクセルのアルファ値が制限と等しいまたは制限以上の場合、HDRP はピクセルをレンダリングします。もし値が制限以下の場合は、HDRP はピクセルをレンダリングしません。デフォルト値は 0.5 です。 |
- Use Shadow Threshold |
HDRP がアルファクリッピングに別のしきい値を使うかを示します。 このプロパティーは Alpha Clipping を有効にしたときのみに表示されます。 |
- - Shadow Threshold |
HDRP がピクセルにシャドウをレンダリングするかを決定するために使うアルファ値の制限です。 このプロパティーは、Use Shadow Threshold を有効にしたときのみに表示されます。 |
- Alpha to Mask |
Alpha-to-coverage をオンにするかどうかを示します。プロジェクトで MSAA を使う場合は、Alpha-to-coverage がマルチサンプルカバレッジマスクをピクセルシェーダーの結果アルファ値に比例してマスクします。これは通常、アンチエイリアスを用いた植生とその他のアルファテストされたシェーダーに使われます。 このプロパティーは、Alpha Clipping が有効なときのみに表示されます。 |
- Prepass Threshold |
HDRP が透明深度プレパスに使うアルファ値の制限です。これは上で説明した、メインの Threshold プロパティーと同様に作用します。 このプロパティは、Transparent Depth Prepass のチェックボックスを有効にしたときのみに表示されます |
- Postpass Threshold |
HDRP が透明深度ポストパスに使うアルファ値の制限です。これは上で説明した、メインの Threshold プロパティーと同様に作用します。 このプロパティーは、Transparent Depth Postpass のチェックボックスを有効にしたときのみに表示されます。 |
Double Sided | HDRP がジオメトリでポリゴンの両面をレンダリングするかを示します。機能に関する詳細およびこの機能が展開するプロパティーのリストは、両面に関するドキュメント を参照してください。 |
- Normal Mode | HDRP が背面を向いたジオメトリ用の法線を計算するために使うモードを特定します。 • Flip: 裏面の法線は正面の法線の 180°です。これはマテリアルにも適用され、ジオメトリの両面で同じように見えます。 • Mirror: 裏面の法線は正面の法線を反転させます。これはマテリアルにも適用され、バックフェースで反転します。例えば葉っぱなど、ジオメトリの両面で同じ形状を維持したいときに便利です。 • None: 裏面の法線は正面の法線と同じです。 このプロパティーは、Double-Sided を有効にしたときのみに表示されます。 |
Material Type | マテリアルのタイプを指定します。これにより、選択するタイプに応じて、マテリアルを異なる設定でカスタマイズできます。オプションは以下の通りです。 • Subsurface Scattering: マテリアルに サブサーフェススキャタリング のワークフローを適用します。サブサーフェススキャタリングは、肌や植物の葉っぱのような半透明のオブジェクトとライトがどのように相互作用するか、光が侵入するかをシミュレートします。ライトがサブサーフェススキャタリングが適用されたマテリアルの表面に侵入すると、別のポイントでサーフェスを出る前に、散乱してぼやけます。 • Standard: マテリアルにベーシックメタリック Shader ワークフローを適用します。これはデフォルトの Material Type です。 • Anisotropy: マテリアルに異方性のワークフローを適用します。異方性が適用されたマテリアルのハイライトは、違う角度から見ると見え方が変わります。例えばブラッシュドメタルやベルベットなど、異方性ハイライトを含むマテリアルを作成する際に、この Material Type を使ってください。 • Iridescence: マテリアルに Iridescence ワークフローを適用します。遊色が適用されたマテリアルは、視野角または照明の角度が変化するにつれて、徐々に色が変わります。石鹸の泡、虹色の金属、または昆虫の羽などといったマテリアルを作成する際にこの Material Type を使います。 • Specular Color: マテリアルに Specular Color ワークフローを適用します。色のついた鏡面ハイライトを含むマテリアルを作成する際に、この Material Type を使います。これは ビルトインスペキュラ―シェーダー に類似しています。 • Translucent: マテリアルに Translucent ワークフローを適用します。この Material Type と厚みマップを使って、半透明のマテリアルをシミュレートします。Subsurface Scattering マテリアルとは対照的に、Translucent マテリアルはマテリアルを通過するライトはぼやけません。 機能に関する詳細および各 Material Type が展開するプロパティーのリストは、マテリアルタイプドキュメント を参照してください。 |
- Transmission |
HDRP が厚みマップを使ってマテリアルの半透明さをシミュレートするかを示します。サブサーフェススキャタリングおよび透過の設定は、Diffusion Profile から行います。詳細は、サブサーフェススキャタリング のドキュメントを参照してください。 このプロパティーは、Material Type ドロップダウンから Subsurface Scattering を選択したときのみに表示されます。 |
Receive Decals | HDRP がマテリアルの表面にデカールを描画できるかを示します。 |
Receive SSR/SSGI | スクリーンスペースリフレクションパスをプロセスする際に、HDRP がマテリアルを含むかを示します。HDRP はスクリーンスペースのグローバルイルミネーションを計算する際にもマテリアルを考慮します。 このプロパティは、Surface Type を Opaque に設定したときのみに表示されます。 |
Receive SSR Transparent | スクリーンスペースリフレクションパスを処理する際に、HDRP がマテリアルを含むかを示します。 このプロパティーは、Surface Type を Transparent に設定したときのみに表示されます。 |
Geometric Specular AA | マテリアルで HDRP がジオメトリックのアンチエイリアスを行うかを示します。曲がったジオメトリの表面のスムースネス値を修正し、スペキュラ―アーティファクトを除去します。 機能に関する詳細およびこの機能でアクセス可能なプロパティーのリストは、ジオメトリックスペキュラ―アンチエイリアスに関するドキュメント を参照してください。 |
- Screen Space Variance | 範囲が 0 から 1 の、幾何学的なスペキュラ―アンチエイリアスエフェクトの強度です。値が高ければそれだけ、エイリアシングが少なくよりぼやけた結果が得られます。 このプロパティーは、Geometric Specular AA を有効にしたときのみに表示されます。 |
- Threshold | HDRP がアーティファクトを減らすためにスムースネス値から差し引くオフセットの最大値です。 このプロパティーは、Geometric Specular AA を有効にしたときのみに表示されます。 |
Displacement Mode | HDRP がマテリアルの表面の高さを変更するために使う方法を特定します。オプションは以下の通りです。 • None: マテリアルに置換を適用しません。 • Vertex displacement: メッシュの頂点を Height Map に従って変換します。 • Pixel displaement: メッシュサーフェス上のピクセルを Height Map に従って変換します。 機能に関する詳細および各 Displacement Mode が展開するプロパティーのリストは、Displacement Mode に関するドキュメント を参照してください。 |
- Lock With Object Scale | Transform の Scale を使ってディスプレイスメントの高さを変更するかを示します。これにより、ディスプレイスメントの大きさと Transform の Scale の割合を保つことができます。 このプロパティーは、Displacement Mode を Vertex Displacement または Pixel Displacement に設定したときのみに表示されます。 |
- Lock With Height Map Tiling Rate | Height Map のタイリングを使ってディスプレイスメントの大きさを変更するかを示します。これにより、ディスプレイスメントの大きさと Height Map テクスチャのスケールの割合を保つことができます。 このプロパティーは、Displacement Mode を Vertex Displacement または Pixel Displacement に設定したときのみに表示されます。 |
- Minimum Steps | Unity がピクセル置換を実行する、Texture サンプルの最小数です。 このプロパティーは、Displacement Mode を Pixel Displacement に設定したときのみに表示されます。 |
- Maximum Steps | Unity がピクセル置換を実行する、テクスチャサンプルの最大数です。 このプロパティーは、Displacement Mode を Pixel Displacement に設定したときのみに表示されます。 |
- Fading Mip Level Start | ピクセルの置換エフェクトがフェードアウトを始めるミップレベルです。 このプロパティーは、Displacement Mode を Pixel Displacement に設定したときのみに表示されます。 |
- Primitive Length | Unity が置換マッピングを適用するメッシュの長さ (メートル単位) です。 このプロパティーは、Displacement Mode を Pixel Displacement に設定したときのみに表示されます。 |
- Primitive Width | Unity が置換マッピングを適用するメッシュの幅 (メートル単位) です。 このプロパティーは、Displacement Mode を Pixel Displacement に設定したときのみに表示されます。 |
- Depth Offset | HDRP が置換に従って深度バッファを修正するかを示します。これにより、深度バッファ (コンタクトシャドウ など) を使うエフェクトは、ピクセル置換のディテールをキャプチャすることができます。 このプロパティーは、Displacement Mode を Pixel Displacement に設定したときのみに表示されます。 |
Exposed Properties
プロパティー | 説明 |
---|---|
Sclera Map | 強膜の色を制御するテクスチャを割り当てます。 |
Sclera Normal Map | Sclera (強膜) に法線マップを定義するテクスチャを割り当てます。 |
Sclera Normal Strength | 0 から 8 の間で Sclera 法線強度を修正します。 |
Iris Map | 目の虹彩の色を制御するテクスチャを割り当てます。 |
Iris Normal Map | 目の虹彩に法線マップを定義するテクスチャを割り当てます。 |
Iris Normal Strength | 0 から 8 の間で虹彩の法線強度を修正します。 |
Iris Clamp Color | 屈折光線が角膜内部に到達する場合に使われる色を設定します。 |
Pupil Radius | Iris Map で瞳孔の半径をパーセンテージとして設定します。 |
Pupil Debug Mode | 有効にすると、Iris Map に希望する Pupil Radius を調整できるデバッグモードを表示します。適切な調整を行うために、Iris Offset を 0 に、Pupil Aperture を 0.5 (ニュートラル値) に設定し、必ず白い丸が虹彩内にあることを確認してください。次の例を参照してください。![]() |
Pupil Aperture | 瞳孔の絞りを設定します。0 は最小の絞り (Min Pupil Aperture) で 1 は最も幅の広い絞り (Max Pupil Aperture) です。 |
Min Pupil Aperture | 瞳孔の最小絞り値を設定します。 |
Max Pupil Aperture | 瞳孔の最大絞り値を設定します。 |
Sclera Smoothness | 強膜のスムースネスを設定します。 |
Cornea Smoothness | 角膜のスムースネスを設定します。 |
Iris Offset | Iris 配置のオフセットを設定します。現実の目は左右対称でも中央揃えでもないため、役立ちます。 |
Limbal Ring Size Iris | 光彩の角膜縁リングの相対的な大きさを設定します。 |
Limbal Ring Size Sclera | 強膜の角膜縁リングの相対的な大きさを設定します。 |
Limbal Ring Fade | 角膜縁リングのフェードアウト強度を設定します。 |
Limbal Ring Intensity | 角膜縁リングの暗さを設定します。 |
Iris Diffusion Profile | Diffusion Profile を設定し、Iris の Subsurface Scattering プロパティーを制御します。 |
Sclera Diffusion Profile | Diffusion Profile を設定し、強膜の Subsurface Scattering プロパティーを制御します。 |
Advanced Options
プロパティー | 説明 |
---|---|
Enable GPU Instancing | このチェックボックスを有効にすると、可能な場合は、同じジオメトリとマテリアルのメッシュを 1 つのバッチでレンダリングするように HDRP に指示します。これにより、レンダリングのスピードが上がります。さまざまなマテリアルがある場合やハードウェアが GPU をサポートしない場合は、HDRP はメッシュを一度にレンダリングできません。例えば、オブジェクトピボットに基づくアニメーションを持つゲームオブジェクトの 静的バッチ はできませんが、GPU ならそれらのインスタンス化が可能です。 |
Baked Emission | エミッションカラーがグローバルイルミネーションに影響を与えるかを示します。 |
Motion Vector For Vertex Animation | HDRP が頂点アニメーションを使うゲームオブジェクトにモーションベクトルを書き込むかを示します。これにより、頂点アニメーションに起因するゴーストがなくなります。 |
Add Precomputed Velocity | Alembic ファイルに保存された事前計算された速度情報を使うかを示します。 |