Исходник mimgui blur | Обновление 1.1!

Привет

эффект размытия, наконец, теперь и в mimgui

GitHub mimgui blur:

Скачать mimgui blur
Установка: переместить папку mimgui_blur из архива в папку «*Корневая папка с игрой*/moonloader/lib»


Список функций:
Lua:
mimgui_blur.apply(draw_list, radius, color, rounding, rounding_corners) -- размывает целиком указанный дравлист. все параметры, кроме draw_list, являются необязательными
mimgui_blur.applyItem(draw_list, radius, color, rounding, rounding_corners) -- размывает предыдущий элемент в дравлисте. все параметры, кроме draw_list, являются необязательными
mimgui_blur.applyRect(draw_list, pos_start, pos_end, radius, color, rounding, rounding_corners) -- размывает указанную область в дравлисте. все параметры, кроме draw_list, pos_start, pos_end являются необязательными
Следует отметить, что все эти функции можете вызывать до/после рендера элементов в окнах, и в зависимости от порядка вызова, соответственно, будут размываться те элементы, которые стояли до вызова apply(Item/Rect)

Пример использования:
Lua:
local imgui = require 'mimgui'
local vkeys = require 'vkeys'
local mimgui_blur = require 'mimgui_blur'
local wm = require 'windows.message'
local new = imgui.new
local renderWindow = new.bool(false)
local sizeX, sizeY = getScreenResolution()
local blurMode = false
local blurRadius = new.float(0.8)
local newFrame = imgui.OnFrame(
    function() return renderWindow[0] end,
    function(player)
        imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(800, 600), imgui.Cond.FirstUseEver)
        -- mimgui_blur.apply(imgui.GetBackgroundDrawList(), blurRadius[0])
        -- imgui.GetBackgroundDrawList():AddLine(imgui.ImVec2(math.huge, math.huge), imgui.ImVec2(math.huge, math.huge), 0xff0000ff)
        if imgui.Begin("Main Window", renderWindow) then
            imgui.Text("Hello")
            imgui.Text(string.format("Current render mode: %s", renderWindow[0]))
            if imgui.Button('Switch mode') then blurMode = not blurMode end
            imgui.SliderFloat("Blur radius", blurRadius, 0.0, 100.0)
            mimgui_blur.apply(not blurMode and imgui.GetWindowDrawList() or imgui.GetBackgroundDrawList(), blurRadius[0])
        end
        imgui.End()
    end
)
function main()
    addEventHandler('onWindowMessage', function(msg, wparam, lparam)
        if msg == wm.WM_KEYDOWN or msg == wm.WM_SYSKEYDOWN then
            if wparam == vkeys.VK_X then
                renderWindow[0] = not renderWindow[0]
            end
        end
    end)
    wait(-1)
end
 
Последнее редактирование:

DeadPeopleWithMe

Известный
802
412
Код:
mimgui_blur.applyRect(draw_list, pos_start, pos_end, radius, color, rounding, rounding_corners)
добавить бы такое же с возможностью использовать 4 точки (типа AddQuadFilled) для блюра разных геометрических фигур