0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Unity】CameraStackにBaseカメラのFXAAが適用されてしまう問題について

Last updated at Posted at 2024-09-14

概要

整腸勇者では、CanvasのRenderModeをScreenSpace - Cameraとし、専用のUICameraを用意してBaseCameraのCameraStackとして登録しUIを描画している。この時、BaseCameraではAAの設定としてFXAAを採用していた。すると、なぜかUICameraで撮影されたUIに対してもFXAAが適用されるという問題にぶつかった。TextMeshProで描画していた文字が僅かに荒く描画されていて気付いた。今回はこの問題に対しての解決方法を記録に残す。

FXAAでテキストを描画、このように明らかにピクセルが破綻している。

image.png

もちろん、CanvasのRenderModeをScreenSpace - Overlay にすることでこの問題は発生しなくなるが、今回はUIの上に3Dのエフェクトを配置したいという要件があり、ScreenSpace - Camera を採用必要があった。

結論

BaseCameraでFXAAではなく、SMAAを採用すると解決する。(TAAもで可)

設定内容

image.png

SMAAでテキストを描画、綺麗にピクセルが描画されるようになった。

image.png

CameraStackに影響を与えないFXAAの設定

を、知ってる人がいれば教えて下さい!

詳細

同じような問題にぶつかっている人をネットで見つけることができた。
URP Camera Stack and Anti-Aliasing

ここでも話題としてあがっているが、どうやらFXAAはカメラスタックの描画が全て終わった後でAA処理をしているので、カメラスタックにUICameraを積むと一緒にAAが適用されてしまうとのこと。SMAAにすることで当該カメラだけにAAがかかるので問題は解消する。

他の解決方法としては、CameraStackを用いずにUICameraの内容をオフスクリーンレンダリングして描画するような方法も取れるかもしれないが、今回はSMAAを採用することで解決することとした。

他にもScreenSpace - Overlayにするという方法もあるが、前述した要件があるのに加え、今からUIの構成を変更するのも結構なコストがかかるのでこの選択肢は取れない。

FXAAとSMAA

アンチエイリアシング
つまり、FXAAの方が高速だが、SMAAもモバイルやプラットフォームでも採用することのできるパフォーマンスではあるとのこと。クオリティ的にはSMAAの方に軍配があがるように見える。

AAなし

image.png

FXAA

image.png

SMAA

image.png

環境

Unity2022.3.39f1

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?