この記事の3行まとめ
- スパーククリエイティブ、Unreal Engine 5におけるディザリングの実装手順と最適化手法をブログ記事で解説
- DitherTemporalAAノードと、物体とカメラの距離に応じて透過度合いを調節するC++コードを用いた実装例を紹介
- カメラに近いメッシュのみ透過判定を実行する仕組みを実装することで、分岐を削減して最適化
スパーククリエイティブは2026年2月25日(水)、「【UE5】ディザを嗜む(ついでに最適化)」と題した記事を、同社の技術ブログで公開しました。
透過部位を網掛け状に配置してアンチエイリアシングでぼかすことで半透明のマテリアルを表現する「ディザリング」をUnreal Engine 5で実装する手順と、その最適化手法を解説しています(以下、Unreal EngineはUEと表記)。
なお、記事中で使用しているUEのバージョンはUE5.6です。
(画像はブログ記事より引用)
ディザリングは、通常の半透明(Translucent)マテリアルと比較して重複時の描画負荷が軽いことや、影を容易に描画できること、また本来なら遮蔽物に遮られて視認できない物体が手前に映ってしまう描画順の不具合を抑制できることなどが特徴とされています。
UEにおいてはDitherTemporalAAノードを用いることで、ディザリング用マテリアル(記事中ではMaskedと呼称)を実装可能。
さらに記事中では、ゲーム実行中に物体とカメラの距離に応じて透過度合いを調節するため、Create Dynamic Material Instanceノードに相当する処理をC++で記述しています。
ディザリングの実装例。ここでは原点に近い物体ほど透過率が高くなるように処理を組んでいる(画像はブログ記事より引用)
またディザリング最適化手法の一例として、カメラから離れており透過の必要がないメッシュには不透明(Opaque)マテリアルを適用し、一定距離まで近づいたメッシュのみMaskedへと切り替えることで分岐処理を削減しています。
カメラから遠いメッシュ(赤のキューブ)はディザリング処理を行わないOpaqueに設定し、一定距離内に収まるメッシュ(緑のキューブ)のみMaskedマテリアルを適用(画像はブログ記事より引用)
そのほか、ディザリング処理を施すことでAuto Instancingによるドローコールの一元化が無効となった際の対処法などが紹介されています。
詳細はブログ記事本文をご確認ください。
「【UE5】ディザを嗜む(ついでに最適化)」スパーククリエイティブ技術ブログ