この記事の3行まとめ
- サイバーエージェントのコア技術本部チーム、連載記事「シェーダー最適化入門」の第3回を技術ブログで公開
- 半透明エフェクト描画時のオーバーフローによるGPU負荷を、縮小バッファを用いて軽減する手法を紹介
- UnityのURPで縮小バッファを活用するフローを、サンプルコードをもとに解説している
サイバーエージェント ゲーム・エンターテイメント事業部 コア技術本部(以下、コアテク)は、『シェーダー最適化入門 第3回目 「レンダリングターゲットの解像度~縮小バッファエフェクト~」』と題した記事を、技術ブログ「CORETECH ENGINEER BLOG」で公開しました。
レンダリングターゲット(描画結果を出力する対象)の解像度を下げることで描画負荷を軽減する手法として、縮小バッファを用いた描画について解説しています。
◤#コアテクブログ 更新◢
\連載記事🌟/
シェーダー最適化入門 第3回目
「レンダリングターゲットの解像度~縮小バッファエフェクト~」https://t.co/MWisBkJLIr
前回のタイルベースGPUとメモリ速度に続き、今回はそれに関連して、GPU負荷とレンダリングターゲットの解像度の関係を解説!
— サイバーエージェント 技術広報(ゲーム・エンタメ) (@ca_ge_tech) April 24, 2025
◤#コアテクブログ 更新◢
\連載記事🌟/
シェーダー最適化入門 第3回目
「レンダリングターゲットの解像度~縮小バッファエフェクト~」https://t.co/MWisBkJLIr
前回のタイルベースGPUとメモリ速度に続き、今回はそれに関連して、GPU負荷とレンダリングターゲットの解像度の関係を解説!
— サイバーエージェント 技術広報(ゲーム・エンタメ) (@ca_ge_tech) April 24, 2025
記事中では、高解像度のレンダリングターゲットはフラグメントシェーダーの実行回数が増加し、GPU負荷の上昇やメモリ不足に陥る要因となると述べています。
また、パーティクルエフェクト生成時など半透明のオブジェクトを重ねて描画する際に発生する「オーバードロー」(※)では、フラグメントシェーダーの実行回数が増加することで負荷が上昇すると語られています。
※ 同じピクセルに対して複数回レンダリングが行われること
半透明オブジェクトを重ねて描画すると、透けて見える背後のオブジェクトも全てシェーディングする必要があるため、重複部分でオーバーフローが発生する(画像はブログ記事より引用)
これを解消するため、縮小バッファに半透明エフェクトを描画し、シーンに合成することでGPU負荷を軽減するアプローチが紹介されています。
(画像はブログ記事より引用)
不透明の背景色は縮小バッファに描画されていないため、アルファブレンディング(※)において意図しない結果が出力される可能性があります。記事中ではそれを解決するアルファブレンディングの設定方法も解説しています。
※ すでに描画されている不透明の色と、追加で描画する半透明の色を線形補間によりブレンドする処理
そのほか、UnityのUniversal Render Pipeline(URP)におけるRender Graphで縮小バッファを作成し、エフェクトを描画してシーンに合成する方法をサンプルコードを交えて解説しています。
解像度1/2の縮小バッファを定義したサンプルコード(画像はブログ記事のスクリーンショット)
記事全文はコアテクの技術ブログをご確認ください。
シェーダー最適化入門 第3回目 「レンダリングターゲットの解像度~縮小バッファエフェクト~」 | CORETECH ENGINEER BLOG