2025年3月18日

Evergineにおけるサブサーフェススキャタリング(SSS)

はじめに

Evergine は、フォトリアルなマテリアルを実現するための重要な機能であるサブサーフェススキャタリング(SSS)のソリューションを統合サポートしています。これにより、光が表面下に浸透して散乱し、再び現れる皮膚、蝋、大理石、その他の半透明な表面のような複雑なマテリアルの描写が大幅に進歩します。

SSSとは?

図1 異なる半透明マテリアル(皮膚、蝋、葉)

サブサーフェススキャタリング(SSS)は、光が半透明または半透過性のマテリアルと相互作用する方法を説明するメカニズムです。表面反射のみを考慮する標準的なシェーディングモデルとは異なり、SSSは光がマテリアルに入り、内部で跳ね返り、異なる点から出ていく様子を考慮します。この効果は、有機物や半透明のオブジェクトに特徴的な、柔らかく拡散した輝きを捉えるために不可欠であり、それらをより生き生きと見せます。

図2 標準表面とSSS表面での光の挙動の違い。

Evergineのリアルタイム実装

現時点では、物理的に正確なSSSをリアルタイムでレンダリングすることはできません。しかし、Evergineはパフォーマンスとリアリズムのバランスを取る最適化されたSSSソリューションを使用しています。私たちは、この記事で説明されているJorge Jimenezによって作成されたソリューションからインスピレーションを得ました。

これを行うために、Evergineで新しいSSSEffectを作成し、SSSレンダリングを2つの異なる領域に分割しました:

透過率(半透明性)

図3 耳における特徴的な皮膚の透過率。

透過率とは、光が半透明のオブジェクトを通過する現象であり、耳や鼻孔などの領域で一般的に見られます。

これは新しいSSSEffectに実装されており、ライトのシャドウマップを使用します。各ピクセルについて、レンダリングされたピクセルとシャドウマップの深度との間の距離を計算します。これにより、そのポイントでの表面の厚さを知ることができ、どれだけの光が通過できるかを計算できます。

次の図はこれらの概念を示しています:

図4 点z1とz2はライトのシャドウマップに投影され、両方の点の深度を計算できます。

この効果を完成させるために、距離制限を設定し、グラデーション関数を使用して光に色を付けました。

拡散ブラー

この効果は、拡散プロファイルを使用してスクリーンスペースで拡散ブラーを適用する効率的なコンピュートシェーダー(SSSBlur)に依存しており、色彩豊かな効果をもたらします。皮膚のディテールを柔らかくし、光の散乱をシミュレートすることに優れています。

これを達成するために、SSSEffectは(シェーダーパラメータに基づいて)ブラー効果の強度を計算し、それをGBufferPassのDistortionアタッチメント、具体的にはBチャンネルに格納します。次に、DefaultPostprocessing Graphがこのテクスチャを使用し、法線テクスチャ、深度、カメラの視野角を使用して、2つのSSSBlurパス(水平および垂直)を適用し、最終結果を生成します。

図5 両方のレンダリング技術を適用した最終結果。

プロジェクトでのSSSマテリアル作成

マテリアルにSSSプロパティを追加するのは簡単です。以下の手順に従ってください(Evergine Studioで):

  • マテリアルを開くか、新しいマテリアルを作成します。それを選択してマテリアルエディターを起動します。
  • FXコンボボックスをクリックして、プロジェクトで利用可能なエフェクトのリストを開きます。
  • SSSEffectを選択します。これにより、StandardEffectからの以前のパラメータが保持されます。
  • 次のパラメータでマテリアルをカスタマイズします:
    • SSS Scatter: (デフォルトは0.045) SSS効果の「幅」、つまり光が表面を通して散乱できる最大距離を定義します。
    • SSS Intensity: (デフォルトは0.1) 効果の強さを制御します。
    • SSS Bias: (デフォルトは0.003) 透過率を計算するために縮小する距離を調整し、アーティファクト(シャドウマッピングの深度バイアスなど)を回避するのに役立ちます。
    • SSS Translucency Color: (デフォルトはD05749FF)透過率効果の色。
    • SSS Translucency Texture: モデルの異なる領域で半透明の色を調整するために使用されるカラーテクスチャ。
    • SSS Scatter Texture: SSS Scatterパラメータに乗算係数を適用し、表面の厚みにバリエーションを与えます。
  • 次のステップでは、シーンにPostprocessing Graph エンティティを追加します。
  • Postprocessing Graphエンティティを選択し、SSS タブでEnabledをチェックします。これによりSSSディフューズブラーが有効になります。
  • パラメータを調整します:
    • Quality: パスごとのブラーサンプル数を設定します。3つのオプションがあります:
      • SSS_QUALITY_OFF
      • SSS_QUALITY_1
      • SSS_QUALITY_2
    • SSS Width Factor: (デフォルトは0.075) マテリアルのSSS Scatter パラメータに対する補正係数です。

マテリアルとポストプロセッシングの両方のパラメータを設定すると、この美しい手のような印象的な結果を得ることができます。

まとめると、SSSの実装は、ユーザーと対話し、生き生きと感じられるリアルなキャラクターやアバターを作成するという目標への新たな一歩です。今後のアップデートにご期待ください!

Antonio avila
著者
Antonio Ávila
Plain Concepts Research