Приветствую обитателей Blast Hack'a.
Не так давно наткнулся на эту тему и загорелся желанием провернуть такое, провозился около 4-5 дней и вот это чудо говнокодерской мысли тут.
Заказ - Функция блюра для mimgui
Опишу идеальный для меня вариант. Нужно написать функцию, которая будет создавать child содержимое которого будет размыто с указанной степенью вместе с содержимом. То есть если внутри child содержится текст, элементы управления, картинки и т.п. то они должны быть также размыты. При этом всё что...
www.blast.hk
Предупреждение: На слабых пк может значительно убивать фпс(лично у меня фпс падает в 2 раза на около офисном железе 2009 года)
Использование блюра несколькими скриптами одновременно уменьшает фпс сильнее, так же падение фпс зависит от размера размываемой области.
Конфликты с графическими модификациями по типу ENB и ReShade не проверялись!
При изменении цвета блюра может произойти такое с деревьями, если туман очень близко(в теории)
Если указать слишком большие значения rounding и при этом задать цвет блюру - будет не очень красиво
Если вдруг библиотека крашнется(с ошибкой в консоли) - может визуально испортиться изображение до закрытия окна(окон) с блюром и любого движения камерой
Если указать слишком большие значения rounding и при этом задать цвет блюру - будет не очень красиво
Если вдруг библиотека крашнется(с ошибкой в консоли) - может визуально испортиться изображение до закрытия окна(окон) с блюром и любого движения камерой
Список функций
Пример использования в скриптах
Установка
Переместить файл mimgui_blur.lua в папку
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
Установка
Переместить файл mimgui_blur.lua в папку
gta_sa_folder\moonloader\lib\