w23 / xash3d-fwgs

Vulkan Ray Tracing fork of Xash3D FWGS engine. Intended to be merged into master at some point in the future.
160 stars 16 forks source link

Vsync modes (`vk_vsync`) #728

Open 0x4E69676874466F78 opened 4 months ago

0x4E69676874466F78 commented 4 months ago

Добавить квар для выбора режима вертикальной синхронизации.

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPresentModeKHR.html Нас интересуют первые 4.

    VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
    VK_PRESENT_MODE_MAILBOX_KHR = 1,
    VK_PRESENT_MODE_FIFO_KHR = 2,
    VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,

Нельзя просто так выставить любой режим, нужно проверить какие реально доступны и если указанный режим недоступен игнорировать значение квара (выставлять по умолчанию), можно заодно выдать предупреждение об этом. Нужно так же в описании квара выводить список поддерживаемых режимов.

Сам режим выставляется здесь: https://github.com/w23/xash3d-fwgs/blob/6ffaad02f2887f7d9e2777df99dac82df2b84a03/ref/vk/vk_swapchain.c#L107-L109

w23 commented 4 months ago

vk_vsync_mode может показывать сам доступные режимы, можно спец команду не делать для этого. Это бы в идеале (как и многие другие настройки рендеринга) вынести в меню настроек видео. Надо разобраться, можно ли, и как это делать.

0x4E69676874466F78 commented 4 months ago

vk_vsync_mode может показывать сам доступные режимы, можно спец команду не делать для этого. Надо разобраться, можно ли, и как это делать.

Я об этом кстати думал, но мы тогда немного вытекаем из vk_cvar.c в этом плане, хотя в этом в принципе нет ничего плохого. Движок поддерживает смену описания на лету. Я так в рамках HDR уже сделал как костыль, который забыл убрать после того как разобрался с clearflags. Если ты за, то я в HDR ветке у себя уберу лишнюю команду и список будет динамически формировать из обхода сурфейсов.

w23 commented 4 months ago

vk_cvar.c не очень удачный, можно под него сильно не подстраиваться.

Не знаю, насколько стабильно обновление описания команды. Можно менять его и его, если да. А можно и выводить доступные при неправильном или пустом аргументе/значении, как то сделано для дебажного отображения

0x4E69676874466F78 commented 4 months ago

Можно сделать по аналогии https://github.com/w23/xash3d-fwgs/pull/727/commits/8ffea312d887245bf9749ef276fbaf139907b87a но пока этот код ещё не ревьюился, возможно я сделал не совсем правильно.