Исходник mimgui blur

Приветствую обитателей Blast Hack'a.​

Не так давно наткнулся на эту тему и загорелся желанием провернуть такое, провозился около 4-5 дней и вот это чудо говнокодерской мысли тут.

Демонстрация
изображение_2023-06-08_082351210.png

Предупреждение: На слабых пк может значительно убивать фпс(лично у меня фпс падает в 2 раза на около офисном железе 2009 года)
Использование блюра несколькими скриптами одновременно уменьшает фпс сильнее, так же падение фпс зависит от размера размываемой области.
Конфликты с графическими модификациями по типу ENB и ReShade не проверялись!
При изменении цвета блюра может произойти такое с деревьями, если туман очень близко(в теории)
изображение_2023-06-08_085132120.png

Если указать слишком большие значения rounding и при этом задать цвет блюру - будет не очень красиво
изображение_2023-06-08_091445475.png

Если вдруг библиотека крашнется(с ошибкой в консоли) - может визуально испортиться изображение до закрытия окна(окон) с блюром и любого движения камерой

Список функций
Lua:
Fullscreen(draw_list, level, color, rounding) -- Размытие всей области экрана
CurrentItem(draw_list, level, color, rounding) -- Размытие элемента imgui, стоящего перед вызовом этой функции
DrawOnPos(draw_list, start_pos, end_pos, level, color, rounding) -- Размывает указанную область, если не указаны позиции - размоет всю область экрана
-- level = степень размытия, от 1 до того, пока не крашнет игру ;D


Пример использования в скриптах
Lua:
local imgui = require 'mimgui'
local bBlur = require 'mimgui_blur'

local bool = imgui.new.bool(false)
local map_image, sw, sh

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil

    sw, sh = getScreenResolution()
    map_image = imgui.CreateTextureFromFile(getWorkingDirectory() .. "\\resource\\MAP.png")
end)

local test_frame = imgui.OnFrame(function() return bool[0] end, function()
    bBlur.Fullscreen(imgui.GetBackgroundDrawList(), 1) -- если указать ForegroundDrawList то заблюдит всё, включая окно

    imgui.SetNextWindowSize(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver)
    imgui.SetNextWindowPos(imgui.ImVec2(200, 200), imgui.Cond.FirstUseEver)
    if imgui.Begin("Blur Test", bool, imgui.WindowFlags.NoCollapse) then
        local dl = imgui.GetWindowDrawList()
        local cpos = imgui.GetCursorPos()

        imgui.Image(map_image, imgui.ImVec2(500, 500))
        if not imgui.IsItemHovered() then
            bBlur.CurrentItem(dl)
        else
            local rect_start, rect_end = imgui.GetItemRectMin(), imgui.GetItemRectMax()
            bBlur.DrawOnPos(dl, rect_start, imgui.ImVec2(rect_start.x + rect_end.x / 3, rect_start.y + rect_end.y / 3))
        end

        imgui.SetCursorPos(cpos + imgui.ImVec2(0, 18))
        imgui.Text("Text above blur effect")
        imgui.End()
    end
end)

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    repeat wait(100) until isSampAvailable()

    sampRegisterChatCommand("bTest", function() bool[0] = not bool[0] end)
    wait(-1)
end
MAP.png

Установка
Переместить файл mimgui_blur.lua в папку gta_sa_folder\moonloader\lib\




Автор библиотеки: Andrinall
Оригинал на c++, взятый за основу: 3r4y/imgui-blur-effect
 

Вложения

  • mimgui_blur.lua
    8.9 KB · Просмотры: 101

#Northn

Police Helper «Reborn» — уже ШЕСТЬ лет!
Всефорумный модератор
2,634
2,482
Оно будет рандомно крашить, чуть позже создам другую тему и объясню в чем дело
 
  • Клоун
  • Нравится
Реакции: Fott и Andrinall

Andrinall

Известный
Автор темы
679
532
Оно будет рандомно крашить, чуть позже создам другую тему и объясню в чем дело
За время тестов не крашило(на 5 часов пк оставлял), возможно от обстоятельств зависит.
Интересно увидеть иной вариант.
 
  • Нравится
Реакции: #Northn

Иглобрюх

Активный
250
73
Заметил прикол, если альт табнуться с игры пока активен блюр и обратно, то игра перейдет в оконный режим и будет тупо черная картинка. Иногда может вместо этого просто закрыться
1686214447236.png
 

s3nder_

Известный
61
82
Заметил прикол, если альт табнуться с игры пока активен блюр и обратно, то игра перейдет в оконный режим и будет тупо черная картинка. Иногда может вместо этого просто закрыться
у меня такие приколы были когда я с рендерами возился
как я понял, если в SAMPFUNCS/sampfuncs-settings.ini стоит antipause=true, то такая штука происходит
(поставил на false, больше такого не происходило)
 

Иглобрюх

Активный
250
73
у меня такие приколы были когда я с рендерами возился
как я понял, если в SAMPFUNCS/sampfuncs-settings.ini стоит antipause=true, то такая штука происходит
(поставил на false, больше такого не происходило)
Не из-за этого, стоит antipause=false. Потестил как на чистой сборке так и на чистом лаунчере арз, при альт табе обратно переходят в оконный режим с черной картинкой, но лаунчер ещё может крашнуть иногда с окном краша иногда без.
 

Andrinall

Известный
Автор темы
679
532
Заметил прикол, если альт табнуться с игры пока активен блюр и обратно, то игра перейдет в оконный режим и будет тупо черная картинка. Иногда может вместо этого просто закрыться
Как-то я и не подумал что обычные люди полностью скрывают игру(я уже года 2-3 с оконным без рамки сижу)
Сейчас попробовал пофиксить возвращением оригинального renderTarget в момент onD3DDeviceLost но как-то не очень пока. Буду думать как исправить.

upd: нашёл решение, но оно приводит к крашу библиотеки. Появилась более правильная реализация блюра
 
Последнее редактирование:
  • Нравится
Реакции: Иглобрюх

NSVY

Известный
72
11
Как-то я и не подумал что обычные люди полностью скрывают игру(я уже года 2-3 с оконным без рамки сижу)
Сейчас попробовал пофиксить возвращением оригинального renderTarget в момент onD3DDeviceLost но как-то не очень пока. Буду думать как исправить.
Никогда не замечал какого-то инпутлага при игре в оконном без рамки?
 

Andrinall

Известный
Автор темы
679
532
Никогда не замечал какого-то инпутлага при игре в оконном без рамки?
Нет, не было такого. Стрелялся, гонял, дрифтил, рпшил - всё ок было.
Раньше гонял с оконным от собейта, потом перешёл на плагин WindowMode, когда кто-то создал тему с вопросом про откл. верт.синхры.