void buf_bloom(const int& level = 255) {
if (bloom_flag) {
GraphFilterBlt(BufScreen_.get(), BufScreen_.get(), DX_GRAPH_FILTER_TWO_COLOR, 250, GetColor(0, 0, 0), 255, GetColor(128, 128, 128), 255);
GraphFilterBlt(BufScreen_.get(), GaussScreen_.get(), DX_GRAPH_FILTER_DOWN_SCALE, EXTEND);
GraphFilter(GaussScreen_.get(), DX_GRAPH_FILTER_GAUSS, 16, 1000);
}
BufScreen.SetDraw_Screen(false);
if (bloom_flag) {
SetDrawMode(DX_DRAWMODE_BILINEAR);
SetDrawBlendMode(DX_BLENDMODE_ADD, level);
GaussScreen_.DrawExtendGraph(0, 0, disp_x, disp_y, true);
GaussScreen_.DrawExtendGraph(0, 0, disp_x, disp_y, true);
SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 255);
}
}
現在サンプルを参考にこのような形でブルームエフェクトを実装しているのですが、GraphFilterBltのクリップフィルタ(2種?)は輝度によってのみクリップしています。
この場合赤色光などを表現できません。赤の輝度付近でクリップしようにも他の色が混じってしまいます。そこでお伺いします。
@輝度以外でクリップする方法はありますか?
Aこのように実装しましたが、より良い方法はありますか?シェーダーなど検討しましたが、知識不足でして…