UE4,UE5に代表される、ClearCoat の内容の簡単な情報収集。
利用用途ととしては、主にハードサーフェイス系のマテリアルのシェーディングに用いられる。
説明については下記にあり。
クリアコート モデルと言えば、よくカーペイント タイプのマテリアルが連想されますが、使用はそれに限定されません。標準的な材質の上に薄い半透明の表面がある多層材質をシミュレートするのにも使われます。金属の表面にも非金属の表面にも使えます。
https://www.unrealengine.com/ja/tech-blog/improved-shading-models-in-unreal-engine-4-25-and-beyond
現実では、自動車の塗料用の用語としても用いられる。
上塗カラーを塗装した上に塗り重ねる、最終的な上塗(トップコート)としてクリヤーを塗装することをクリヤーコートといいます。
https://www.paint-works.net/color_mix/point/point04.htm
UEの実装としては、2つあり、
・塗装のような通常のClearCoat
・カーボンファイバーなど複雑なものに向けた、Dual-NormalClearCoat
と分かれているようだ。
Dual-NormalClearCoatは、2つ目のNormalが必要なようで、プロジェクト設定から変える必要がある。
https://docs.unrealengine.com/4.27/ja/RenderingAndGraphics/Materials/HowTo/ClearCoatDualNormal/
マテリアルのピンについては、DefaultLitと比べて、
・ClearCoat
・ClearCoatRoughness
が追加される。
2つ目のNormalを使用する場合は、特殊な手順とノードを利用する必要があるようだ。
ClearCoatBottomNormal マテリアル式ノードを必ずマテリアル グラフに追加して、使用したい法線マップを入力に接続しておいてください。そうしておかないと、マテリアルの中で 2 つ目の法線マップを見ることができません。
https://docs.unrealengine.com/4.27/ja/RenderingAndGraphics/Materials/HowTo/ClearCoatDualNormal/
組み込みのチュートリアルは色々と公開されているので、使いたくなったら参考にしてみるのが良いだろう。
実装について。
Shaders\Private\ClearCoatCommon.ush
にシェーダ関数が存在する。
ClearCoatLayerCombine を見ると、GBuffer に ClearCoat 用のFloat2つのバッファが存在し、そのパラメータを元にシェーディングを利用しているように見える。
なお、SecondNormalを有効にすると、プロジェクトに対してシェーダ全コンパイル相当の依存が掛かるようです。
式やレンダリングの詳細については、必要が出たら調査しようと思います。