Тема: Melissa Project
Показать сообщение отдельно
Старый 30.11.2014, 19:13   #38
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Melissa Project

Мягкие тени, любуйтесь.
Вместе с этим я еще сделал управляемый процесс пост обработки. Вешается свой колбэк. Вот пример:
class MyRenderCallback : public mfRenderCallback
{
public:
    MyRenderCallback(mfScene *scene)
    {
        m_hdr = scene->loadProgram("hdr.glsl");
        m_ssao[0] = scene->loadProgram("ssao_pass_1.glsl");
        m_ssao[1] = scene->loadProgram("ssao_pass_2.glsl");
        m_screenBuffer = scene->createRenderFramebuffer(0, 0);
        m_ssaoBuffer[0] = scene->createRenderFramebuffer(0, 0);
        m_ssaoBuffer[1] = scene->createRenderFramebuffer(0, 0);
    }

    void onRender(mfRenderContext *context)
    {
        context->drawScreenToFramebuffer(m_screenBuffer);
        context->setFramebufferToProgram("_screen_buffer_", m_screenBuffer, m_ssao[0], 0);
        context->processEffectToFramebuffer(m_ssao[0], m_ssaoBuffer[0]);

        context->setFramebufferToProgram("_base_screen_buffer_", m_screenBuffer, m_ssao[1], 0);
        context->setFramebufferToProgram("_screen_buffer_", m_ssaoBuffer[0], m_ssao[1], 1);
        context->processEffectToFramebuffer(m_ssao[1], m_ssaoBuffer[1]);

        context->setFramebufferToProgram("_screen_buffer_", m_ssaoBuffer[1], m_hdr, 0);
        context->processEffectToScreen(m_hdr);
    }

private:
    mfProgram *m_hdr = 0;
    mfProgram *m_ssao[2];
    mfFramebuffer *m_screenBuffer = 0;
    mfFramebuffer *m_ssaoBuffer[2];
};
Миниатюры
Нажмите на изображение для увеличения
Название: newimage2.jpeg
Просмотров: 790
Размер:	338.6 Кб
ID:	21197  
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
mr.DIMAS (30.11.2014)