Исходник Background blur

alive forever
Забаненный
Статус
Оффлайн
Регистрация
21 Июн 2017
Сообщения
663
Реакции[?]
400
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код не идеальный ,делался давно и на коленке.
При включении меню можно блюрить фон кс. В меню не работает,поэтому делайте проверку на IsInGame.

Объявляем:
Код:
static ITexture* mirrorTexture = NULL;
In pt hook:
Код:
if (!Materials::mirrorTexture) {
            g_pMatSystem->forceBeginRenderTargetAllocation();
            Materials::mirrorTexture = g_pMatSystem->createFullFrameRenderTarget("blur_test");
            g_pMatSystem->forceEndRenderTargetAllocation();
        }

        if (auto renderCtx = g_pMatSystem->GetRenderContext()) {
            renderCtx->PushRenderTargetAndViewport();
            renderCtx->SetRenderTarget(Materials::mirrorTexture);

            renderCtx->PopRenderTargetAndViewport();

            int w, h;
            g_pEngine->GetScreenSize(w, h);
            renderCtx->DrawScreenSpaceRectangle(
                Materials::blur_mat,
                0, 0, w, h,
                0, 0, w, h,
                w, h,
                nullptr, 1, 1);

            renderCtx->Release();
        }

RV hook :
Код:
void __fastcall RenderView(void* thisptr, void*, CViewSetup& setup, CViewSetup& hudViewSetup, unsigned int nClearFlags, int whatToDraw)
{
    oRenderView(thisptr, setup, hudViewSetup, nClearFlags, whatToDraw);

    int w, h;
    g_pEngine->GetScreenSize(w,h);

    CViewSetup view;
    view.x = 0;
    view.y = 0;
    view.width = w;
    view.height = h;
    view.m_bOrtho = false;
    view.m_bDoBloomAndToneMapping = true;
    view.m_bRenderToSubrectOfLargerScreen = true;
    view.m_bDrawWorldNormal = true;

    auto renderCtx = g_pMatSystem->GetRenderContext();

    renderCtx->PushRenderTargetAndViewport();
    renderCtx->SetRenderTarget(Materials::mirrorTexture);

    oRenderView(g_pRenderView, view, hudViewSetup, VIEW_CLEAR_COLOR | VIEW_CLEAR_FULL_TARGET | VIEW_CLEAR_OBEY_STENCIL, 0);

    renderCtx->PopRenderTargetAndViewport();
    renderCtx->Release();

    
}
CreateMaterial :
Код:
 static IMaterial* blur_mat = NULL;
std::ofstream("csgo\\materials\\blured.vmt") << R"#("Refract"
{
"$normalmap" "models/inventory_items/cologne_prediction/cologne_prediction_glass"
"$refracttint" "[1 1 1]"
"$bluramount" "100"
"$refractamount" ".0"
}
)#";

    Materials::blur_mat = g_pMatSystem->FindMaterial("blured", "Other textures");
    Materials::blur_mat->IncrementReferenceCount();
Итог:
1576417412144.png
 
Сверху Снизу