MovieRenderGraphでSeparateTranslucencyA出力時に”Use High Precision(32-bit) Output”が必須となる挙動について

お世話になっております。

<br/>

現在UE5.8Preview版のMovieRenderGraphを使用して画像出力について検討しています。"SeparateTranslucencyA"を含めて15枚のPost Process Material(再現手順にて画像内容を説明)画像をEXR型式で出力する設定を組んでいますが、"SeparateTranslucencyA"マテリアルの”Use High Precision(32-bit) Output”設定を有効にしないと画像が出力されない挙動に出遭いました。

<br/>

【レンダリング挙動】

  • PostProcessMaterialの"SeparateTranslucencyA"の”Use High Precision(32-bit) Output”が有効の場合

    MRGのレンダリングが実行し、正常終了する。15枚の画像が指定のパスに保存されます。

  • PostProcessMaterialの"SeparateTranslucencyA"の”Use High Precision(32-bit) Output”が無効の場合

    レンダリングウィンドウが立ち上がり、レンダリング自体は正常に実行して終了するように見えますが、すべての画像が指定のパスにファイルが保存されません。

<br/>

【質問】

1.”Use High Precision(32-bit) Output”を有効にしないとPostProcessMateiral画像が出力されないことはUE5.8の仕様でしょうか、それともバグでしょうか。

<br/>

2.”Use High Precision(32-bit) Output”の有効化による影響範囲と内部処理への影響について教えていただきたいです。

この設定を有効にしますと、レンダリング負荷が高く、時間が長く、出力ファイルサイズが大きくなること確認できました。設定有効によってレンダリングパイプライン内部でどのような処理の変化が起きるのでしょうか。32-bitを使用した演算が走ることが負荷、ファイルサイズなどが増大する主因というにんしきで正しいでしょうか。

<br/>

レンダリング時間を管理するため、この設定について正しく把握したいと考えています。ご知見をいただけますと幸いです。

<br/>

よろしくお願いします。

[Attachment Removed]

再現手順
プロジェクト内容:車両コンフィギュレーター、画像出力(コンフィグの画面を出力)

  • 最大画像出力解像度:14399x8082
  • シーンの構成:
    • 車両データ:22000程のNaniteがオンに設定されたスタティックメッシュで構成された一つのBPアクター。表示される際に2900程のスタティックメッシュが表示され、以外のスタティックメッシュが非表示になります。
    • 背景:背景はシンプルなスタティックメッシュで構成され、照明は一つのSkylightや10つのRectLightになります。
  • レンダリングに関する設定
    • Nanite On
    • Lumen On
    • HWRT On
  • MRG
    • 添付画像にご参考お願いします(画像内容以外の設定はデフォルトのままになります)
  • 追加のポストプロセスマテリアル
  • SubsurfaceColor
  • Specular
  • BaseColor
  • WorldNormal
  • Roughness
  • Metallic
  • Opaciy
  • LightingModel
  • SceneDepth
  • SceneDepthWorldUnits
  • SceneColor
  • PreTonemapHDRColor
  • PostTonemapHDRColor
  • SeparateTranslucencyA
  • SeparateTranslucencyRGB
  • システム構成
    • OS:Microsoft Windows server 2022 Standard
    • GPU:NVIDIA Quadro RTX A6000 48GB
    • CPU:Xeon Gold 6426Y (16C/32T) 2.5GHz
    • メモリ:64GB
    • OSドライブ:699GB
    • UEプロジェクトドライブ:9.78TB

[Attachment Removed]

画像で認識できる部分を​設定し、追加のポストプロセスをSeperateTranslucencyAとRGB、SubsurfaceColorなどのいくつかだけを推測で設定してMRGで出力しましたが、

Use High Precision(32-bit) Outputの設定無しで、SeperateTranslucencyAを含む出力が得られました。

恐らく​MovieRenderGraphConfigに設定された追加のポストプロセスマテリアルの組み合わせが影響を与えている可能性がありますが、それがSeparateTranslucencyAかどうかを断定することは出来ません。

大変恐縮ですが問題の再現のために​ MovieRenderGraphConfigアセットを選択し、アセットアクション(AssetAction)>移行(Migrate) で空のuprojectにファイルを移行したプロジェクトをご共有願えませんでしょうか?恐らく機密性の高いアセットは含まれないはずです。

また出力時のログになにか警告やエラーが出ていないかご確認いただきお気づきの点があったらコメントいただけますと助かります。​

以下は個別の質問項目への回答です。

質問1.”Use High Precision(32-bit) Output”を有効にしないとPostProcessMateiral画像が出力されないことはUE5.8の仕様でしょうか、それともバグでしょうか。

前述の検証によってUse High Precision(32-bit) OutputのオプションなしでもPostProcessMaterialの出力が得られることは確認できました。オプション無しで正常に出力ファイルが得られることが仕様で間違いありません。

恐らくセットアップ中の設定の組み合わせなどによってバグが発生している可能性があるため問題を再現​して調査させていただきたいです。

質問2.”Use High Precision(32-bit) Output”の有効化による影響範囲と内部処理への影響について教えていただきたいです。

この設定が有効になると対応するポストプロセスマテリアルの出力フォーマットが32bitRGBA形式にオーバーライドされEXRに出力されるファイルフォーマットも併せて32​bit化されます(オフの場合シーンカラーのフォーマットと同じでデフォルトでは16bitRGBA)。そのポストプロセス前のシーンのレンダリングには影響はありません

この設定によってポストプロセスマテリアルのレンダリング時のレンダーターゲット用のメモリ使用量が増加するため恐らく数%から数10%程度のGPU処理時間が増加し、それをファイルに出力する際の32bitEXRのエンコードとファイルサイズの増加による出力の速度の低下が現れるはずです。

[Attachment Removed]

ご調査ありがとうございます。手元のプロジェクトではGameModeOverrideのノードの有無で影響は無かったのですが​、

このノードの動作を調査した所、r.PostProcessing.PropagateAlphaをオーバライドしていることがわかりました。(UMovieGraphGlobalGameOverridesNode::ApplySettings参照)

このフラグはポストプロセス中の書き込み先のバッファのフォーマットに対してFloatRGBAかαなしのFlaotR11G11B10の選択に影響を与えます。

恐らくプロジェクト設定やポストプロセスマテリアルのBlendableLocationなどの影響でFloatR11G11B11フォーマットが使われる状態になっており、このフォーマットがαの伝播を遮っている可能性がありそうです。

GlobalGameOverrideは主にストリーミングやLOD、MRGには不要なTickごとのスムージングの無効化などの動作をMRGのレンダリングに合わせてシステムに設定します。

大きくパフォーマンスを損なうものではありませんし、新規作成した​MovieRenderConfigに設定されていることからわかるように基本的にこのノードが接続されていることを想定しています。

なおMyProject.zipのアップロードがなんらかの影響で失敗しているようでプロジェクトを取得することができませんでした。​

もし追加の調査が必要でしたら再度アップロードをお願いします。​​

[Attachment Removed]

大変恐縮ではございますがプロジェクトのアップロードに問題が生じているようです。アップロードされたファイルとしては初回のポストに含まれる3枚の画像だけが見えている状態です。

アップロードの手順としてはこのEPSのポストに対してクリップのアイコンを使ってプロジェクトのzipをアップロード頂いているということでよろしいでしょうか?

さて”1枚のみPNG型式PPMのレンダリングでは画像が出力ない”問題についてですが、 png sequence ノードを接続し、 Global Output Settings のCustomPlaybackRangeStart/CustomPlaybackRangeEndを設定した状態でレンダリングを行いましたが問題無く1フレーム分のレンダリングが行われています。

出力フレームのレンジの設定はこの方法で行われていますか?

[Image Removed]

[Attachment Removed]

お世話になっております。

ご相談させていただいた、”1枚のみのPNG型式PPMレンダリングでは画像出力できない”問題は、UE5.8正式版で確認したところ、解消できました。ご返答ありがとうございました。

ただし、PostProcessMaterialの”SeparateTranslucencyA”の”Use High Precision(32-bit) Output”設定を有効しないとすべての画像が出力できない問題に関しましては、UE5.8正式版でも相変わらず発生しています。

zipデータのアップロードですが、EPSページの機能でアップロードしておきましたが、何かの問題でダウンロードできないようですね。

[Image Removed]

以前アップロードした画像を削除して、zipファイルだけを残しておきました。(ファイル名:MyProject_2.zip。レベルシーケンサー、MRG設定ファイルは”Content\BluePrints”の直下に保存されています)

お手数ですが、ご確認いただけますと助かります。

よろしくお願いします。

[Attachment Removed]

MyProject_2が見えるようになりました。調査しますので少々お時間を頂けますでしょうか。

[Attachment Removed]

  • MyProjectを展開し、適当なレベルにカメラを配置して半透明キューブを設定を配置
  • TryGraph_EXR_Testに対して
    • GlobalGameOverrideノードを追加
    • DeferredRendererノードのPPM File Name Format の警告が出ていたのでデフォルト値に再設定
    • RenderLayerのLayer名についての警告が出ていたのでNameにそれぞれExrLayer,PNGLayerを設定
  • GlobalOutput設定に0-4フレームを出力するように指定

として出力してみたところ

16レイヤー分x5フレーム分で合計80枚出力されておりました。この状態のプロジェクトを添付いたしました。ご確認ください。

[Attachment Removed]

お世話になっております。

ご検証いただきありがとうございます。ご提案いただいた通り、問題が発生しているレンダリング設定を移行したプロジェクトを準備してアップロードしました(プロジェクトファイルはMyProject.zip、MRG設定は"Content\BluePrints"の直下に保存されています)。ご確認いただけますと幸いです。

”32-Bit”設定を使用した影響について承知しました。プロジェクトのレンダリング負荷を最小限に抑えたいと考えていますので、なるべく”32-Bit”の設定を使用しないと検討させていただきます。

また、継続に検証を行いまして気になった挙動についてご相談させていただきたいです。

・PNG/EXR出力の不具合について

ご提供させていただいたファイルにはPNGとEXRを両方出力する設定が含まれています。EXRの出力を外しますと、PNGのみのレンダリングでは画像が出力されません。

一方で、自分で検証を行いましたところ、”Global Game Override”ノードを追加することで、”32-Bit”を無効にしても画像が正しく出力されることを確認できました。PNGのみの出力もできるようになります。

この結果を踏まえ、追加でご相談させていただきたいです。”Global Game Overrides”の使用によりレンダリング負荷への影響はありますでしょうか。”Global Game Overrides”を追加することによる負荷の上昇を抑えるため、推奨の設定や回避策がございましたらご教示いただけますでしょうか。

お忙しいところ恐縮ですが、ご知見をいただけますと幸いです。

よろしくお願いします。

[Attachment Removed]

お世話になっております。ご返答ありがとうございます。

ご検証いただいた結果、”GameModeOverride”の有無は出力に影響しないについて承知しました。ノードに関する調査ありがとうございます。引き続き教えていただいたプロジェクトやポストプロセスマテリアルの設定について検証します。

以前ご相談させていただいた、”1枚のみPNG型式PPMのレンダリングでは画像が出力ない”問題について解消方法を探ってみました。

検証結果:

・レベルシーケンサーの出力フレームを”0-1”(実質1枚出力)に設定してレンダリングを行いますと、レンダリングが行いますが、画像が出力されません。

・出力フレーム”0-2”に変更し、出力枚数を二枚に変更ますと二枚の画像が出力できるようになります。

本プロジェクトの運用上、レンダリングの処理時間を極力短縮したいと考えています。そのため、不要な2枚目のレンダリングを行わず、1枚のみのレンダリングで、正常な画像出力方法を模索しています。

ご質問:

・「1枚のみのレンダリング」の画像出力ができない挙動の原因は何でしょうか。解決策がございましたら教えていただいてもいいでしょうか。

また、改めてプロジェクトをアップロードしました(ファイル名:MyProject_2.zip。レベルシーケンサー、MRG設定ファイルは”Content\BluePrints”の直下に保存されています)。ご確認いただけますと幸いです。

よろしくお願いします。

[Attachment Removed]

お世話になっております。ご確認ありがとうございます。

”GlobalGameOverride”ノードを追加することで、”32-Bit”設定の問題の解消ができました。

ご回答ありがとうございました。またどうぞよろしくお願いします。

[Attachment Removed]