Open emadurandal opened 6 years ago
個人的にはこれをUniVRMに合わせて用意する必要はないと思っています。
UE4でのトゥーンシェーダーの実装は多岐に渡り、どれもメリットデメリットがあります。 シェーダーレベルでの互換性維持は同じレンダリングパスやシステムを持っていない限りは非現実的なところがあり、ひとまずは簡単な実装でもいいので提供ができればなと。
これはUnity以外の全てのエンジンや環境でも同様ですし、各々でよりいい表現を提供できればいいのではないかと。
なるほど、確かに費用対効果があまり良くないかもしれませんね。
懸念していたのは、現状皆LookDev(ライティング品質チェック)をUnityで当然行うわけなので、それをUE4で読み込んだ場合に、変に暗かったり明るすぎたり、意図通りにならなすぎて、不満が出てしまうことでした。 できれば大きな不満が出ない程度に、ある程度揃えるくらいはできると良さそうですが、最初に突き詰める部分ではないかもしれませんね。
各々でよりいい表現を提供できればいいのではないかと。
それが運用として受け入れられるのなら、ベストですね。
UE4でのVRMサポートにあたって、VRMの標準実装であるUniVRMが依存しているMToon(MToonはVRM仕様において、標準のトゥーンシェーダーという扱いです)を、UE4に移植する必要があります。
このMToonシェーダーですが、UnityのForwardレンダリングパイプラインの仕様に寄りそった設計実装になっています。
UnityのFowardレンダリングは、ライティングがBaseパスとAddパスに分かれており、MToonシェーダーもそれぞれのパス用のシェーダが用意されています。 https://docs.unity3d.com/ja/current/Manual/RenderTech-ForwardRendering.html
マルチ光源下でのライティングパス設計がUnityとUE4では異なるため、特にこのAddパスのライティング寄与をどうするか、というところで、一度MToon開発者のSantarhさんと話し合ったことがあります。
そこで話題に出た選択肢としては、以下の二つでした。 A. Addパスは切り捨てる(これはできればやりたくない) B. Addパスの寄与を想定範囲内に正規化し、同様の仕組みをUE4でも作って、できる限り光の計算量を両エンジンで近づける。
Bについては、以下のようなイメージです。
ただし、現状のMToonは上記のような実装にはなっていません(開発者のSantarhさんも一度は考えられたそうなのですが、標準実装として処理にC#スクリプトが必要になるのは手軽さという観点であまり好ましくない、との理由から見送ったそうです)。
もっとも、上のような形(またはその他の形)に、こちらサイドの都合で仕様を変えていただけるかは正直わかりません。しかし、いずれにせよMToonの移植に当たっては、Santarhさんらドワンゴ社の方達との連携を行いながら進めるのが望ましいと考えています。