差分

ナビゲーションに移動 検索に移動

MonoGameで遅延レンダリングをする

1,292 バイト追加, 2020年4月8日 (水) 04:54
ページの作成:「2020年4月時点のMonoGameではマルチプルレンダーターゲットが正常に動かない。 このためXNA時代に書かれたマルチプル…」
2020年4月時点の[[MonoGame]]では[[マルチプルレンダーターゲット]]が正常に動かない。

このため[[XNA]]時代に書かれた[[マルチプルレンダーターゲット]]を使った[[遅延レンダリング]]のサンプルプログラムをそのまま動かそうとすると残念なことになる。

== 概要 ==
[[XNA]]の教科書に載っている[[遅延レンダリング]]の実装例では[[マルチプルレンダーターゲット]]を利用して2回の[[ドローコール]]で前半部分を済ませているのが一般的である。
// この2つ
clear(color, normal, depth);
draw(color, normal, depth);

// 以降は同じ
light = lighting(color, normal, depth);
final = combine(light, color);

一方、[[MonoGame]]ではこの部分を6回もの[[ドローコール]]に分割する必要がある。
clear(color);
draw(color);

clear(normal);
draw(normal);

clear(depth);
draw(depth);

// 以降は同じ
light = lighting(color, normal, depth);
final = combine(light, color);

それでも[[ポイントライト]]などが数十から数百も存在するという状況では圧倒的に[[ドローコール]]を削減できる。

== 実装例 ==
後ほど[[github]]にアップする。

[[category: MonoGame]]

案内メニュー