表示するサンプルコードの言語を指定できます。

ライトブルーム (PostEffectLightBloom)

概要

画面で一定以上明るい画素をぼかして加算することで、光が溢れているような表現を与えるポストエフェクトです。 例えば、エフェクトや加算されたテクスチャオブジェクトと組み合わすことで大きな効果を発揮します。

更に、HDR表示の場合は通常の0~255の画素では表現できない値もぼかせます。

具体的な処理としては元の画像から閾値を超えた画素を抽出し、閾値を超えた分の輝度をぼかして元の画像に加算しています。

ポストエフェクトあり

主なメソッド

なし

主なプロパティ

名称 説明
Intensity ぼけの強さ。値が大きいほど光がぼけます。
Threshold 閾値。この値を超えた画素がぼかされます。255を1.0とした数値を指定します。HDR表示の場合は1.0以上の値も指定可能です。
Exposure 露光の強さ。この値が大きいほどぼけた光が強くなります。
IsLuminanceMode RGBでなく、輝度を参照してぼかす色を決定します。

使用方法

ライトブルームをかけるサンプルです。

SS

C++

#include <Altseed.h>

// レイヤーにライトブルームのポストエフェクトを適用する。
int main()
{
    // Altseedを初期化する。
    asd::Engine::Initialize(asd::ToAString("PostEffect_LightBloom").c_str(), 640, 480, asd::EngineOption());

    auto texture = asd::Engine::GetGraphics()->CreateTexture2D(asd::ToAString("Data/Texture/Picture1.png").c_str());

    // シーンクラスのインスタンスを生成する。
    auto scene = std::make_shared<asd::Scene>();

    // レイヤークラスのインスタンスを生成する。
    auto layer = std::make_shared<asd::Layer2D>();

    // 画像描画オブジェクトのインスタンスを生成する。
    auto obj = std::make_shared<asd::TextureObject2D>();

    // オブジェクトの位置とテクスチャを設定。
    obj->SetPosition(asd::Vector2DF(50, 50));
    obj->SetTexture(texture);

    // シーンを変更し、そのシーンにレイヤーを追加し、そのレイヤーにオブジェクトを追加する。
    asd::Engine::ChangeScene(scene);
    scene->AddLayer(layer);
    layer->AddObject(obj);

    // ライトブルームクラスのインスタンスを生成する。
    auto posteffect = std::make_shared<asd::PostEffectLightBloom>();

    // ライトブルームのぼかしの強さを設定する。
    posteffect->SetIntensity(10.0f);

    // ライトブルームの露光の強さを設定する。
    posteffect->SetExposure(1.0f);

    // ライトブルームで光らせる明るさのしきい値を設定する。
    posteffect->SetThreshold(0.3f);

    // レイヤーにライトブルームのポストエフェクトを適用。
    layer->AddPostEffect(posteffect);

    // HDRモードをONにする(ライトブルームの効果が見えるようにするため)
    scene->SetHDRMode(true);

    // Altseedのウインドウが閉じられていないか確認する。 
    while (asd::Engine::DoEvents())
    {
        // Altseedを更新する。
        asd::Engine::Update();
    }

    // Altseedを終了する。
    asd::Engine::Terminate();
}

C#


class PostEffect_LightBloom
{
    public string Description
    {
        get { return "レイヤーの描画結果にライトブルーム効果をかけるサンプル。"; }
    }
    public string Title
    {
        get { return "ライトブルーム"; }
    }
    public string ClassName
    {
        get { return "PostEffect_LightBloom"; }
    }

    // レイヤーにライトブルームのポストエフェクトを適用する。
    [System.STAThread]
    static void Main(string[] args)
    {
        // Altseedを初期化する。
        asd.Engine.Initialize("PostEffect_LightBloom", 640, 480, new asd.EngineOption());

        var texture = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Picture1.png");

        // シーンクラスのインスタンスを生成する。
        var scene = new asd.Scene();

        // レイヤーのコンストラクタを呼び出す。
        var layer = new asd.Layer2D();

        // レイヤークラスのインスタンスを生成する。
        var obj = new asd.TextureObject2D();

        // 画像描画オブジェクトのインスタンスを生成する。
        obj.Position = new asd.Vector2DF(50, 50);
        obj.Texture = texture;

        // シーンを変更し、そのシーンにレイヤーを追加し、そのレイヤーにオブジェクトを追加する。
        asd.Engine.ChangeScene(scene);
        scene.AddLayer(layer);
        layer.AddObject(obj);

        // ライトブルームクラスのインスタンスを生成する。
        var posteffect = new asd.PostEffectLightBloom();

        // ライトブルームのぼかしの強さを設定する。
        posteffect.Intensity = 10.0f;

        // ライトブルームの露光の強さを設定する。
        posteffect.Exposure = 1.0f;

        // ライトブルームで光らせる明るさのしきい値を設定する。
        posteffect.Threshold = 0.3f;

        // レイヤーにライトブルームのポストエフェクトを適用。
        layer.AddPostEffect(posteffect);

        // Altseedのウインドウが閉じられていないか確認する。
        while (asd.Engine.DoEvents())
        {
            // Altseedを更新する。
            asd.Engine.Update();
        }

        // Altseedを終了する。
        asd.Engine.Terminate();
    }
}

Java

class PostEffect_LightBloom 
{
    public java.lang.String getDescription() {
        return "レイヤーの描画結果にライトブルーム効果をかけるサンプル。";
    }
    public java.lang.String getTitle() {
        return "ライトブルーム";
    }
    public java.lang.String getClassName() {
        return "PostEffect_LightBloom";
    }
    public static void main(String args[])
    {
        // Altseedを初期化する。
        asd.Engine.Initialize("PostEffect_LightBloom", 640, 480, new asd.EngineOption());

        asd.Texture2D texture = asd.Engine.getGraphics().CreateTexture2D("Data/Texture/Picture1.png");

        // シーンクラスのインスタンスを生成する。
        asd.Scene scene = new asd.Scene();

        // レイヤーのコンストラクタを呼び出す。
        asd.Layer2D layer = new asd.Layer2D();

        // レイヤークラスのインスタンスを生成する。
        asd.TextureObject2D obj = new asd.TextureObject2D();

        // 画像描画オブジェクトのインスタンスを生成する。
        obj.setPosition(new asd.Vector2DF(50, 50));
        obj.setTexture(texture);

        // シーンを変更し、そのシーンにレイヤーを追加し、そのレイヤーにオブジェクトを追加する。
        asd.Engine.ChangeScene(scene);
        scene.AddLayer(layer);
        layer.AddObject(obj);

        // ライトブルームクラスのインスタンスを生成する。
        asd.PostEffectLightBloom posteffect = new asd.PostEffectLightBloom();

        // ライトブルームのぼかしの強さを設定する。
        posteffect.setIntensity(10.0f);

        // ライトブルームの露光の強さを設定する。
        posteffect.setExposure(1.0f);

        // ライトブルームで光らせる明るさのしきい値を設定する。
        posteffect.setThreshold(0.3f);

        // レイヤーにライトブルームのポストエフェクトを適用。
        layer.AddPostEffect(posteffect);

        // Altseedのウインドウが閉じられていないか確認する。
        while(asd.Engine.DoEvents())
        {
            // Altseedを更新する。
            asd.Engine.Update();
        }


        // Altseedを終了する。
        asd.Engine.Terminate();
    }
}