HDR OpenGL эффект

Хочу реализовать HDR эффект подобно такому из игры SpaceEngine, однако все мои попытки дают какой-то не очень красивый результат, яркость картинки просто жёстко увеличивается и всё... Вот три скрина из SpaceEngine и пара моих.. SpaceEngine: введите сюда описание изображения

введите сюда описание изображения введите сюда описание изображения

Вот какой у меня результат: введите сюда описание изображения введите сюда описание изображения Шейдеры hdr простые, взял их с learnopengl.

hdr.vs:

#version 460 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec2 aTexCoords;

out vec2 TexCoords;

void main() {
    TexCoords = aTexCoords;
    gl_Position = vec4(aPos, 1.0);
}

hdr.fs:

#version 460 core
in vec2 TexCoords;

uniform sampler2D hdrBuffer;
uniform bool hdr;
uniform float exposure;

void main() {
    const float gamma = 2.2;
    vec3 hdrColor = texture(hdrBuffer, TexCoords).rgb;
    if(hdr) {
        // reinhard
        // vec3 result = hdrColor / (hdrColor + vec3(1.0));
        // exposure
        vec3 result = vec3(1.0) - exp(-hdrColor * exposure);
        // also gamma correct while we're at it
        result = pow(result, vec3(1.0 / gamma));
        gl_FragColor = vec4(result, 1.0);
    }
    else {
        vec3 result = pow(hdrColor, vec3(1.0 / gamma));
        gl_FragColor = vec4(result, 1.0);
    }
}

В программе вызывается всё подобным образом:

glBindFramebuffer(GL_FRAMEBUFFER, hdrFBO);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
... // Рендер сцены
glBindFramebuffer(GL_FRAMEBUFFER, 0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
hdrShader.Use();
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, colorBuffer);
hdrShader.SetBool("hdr", true);
hdrShader.SetFloat("exposure", 2.5f);
    
glDisable(GL_DEPTH_TEST);
renderQuad();
glEnable(GL_DEPTH_TEST);

Что я делаю не так?(


Ответы (1 шт):

Автор решения: szabiyako

Возможно ты имеешь ввиду bloom эффект? Если да, то это немного другой эффект (не hdr) и для него пишется отдельный шейдер для постобработки. Если нет, то что именно тебе не нравится в твоём варианте, относительно SpaceEngine?

→ Ссылка