Только Portal и Portal 2 есть и на Xbox 360 (и на One и Series по обратной совместимости), и на PlayStation 3, с набором головоломок для PlayStation Move для второй части (а на ПК, соответственно, этот же набор выпущен для Razer Hydra), а 1 ещё и на Nvidia Shield. А Portal: Still Alive это вообще эксклюзив Xbox 360, хоть и основанный на Portal: The Flash Version MapPack.
На консолях игры разрабатываются под одну конкретную конфигурацию железа, поэтому там интерфейсы делают такие, которые позволяют работать с данными непосредственно в том виде, в котором с ними работает железо. Соответственно, если текстура на консоли описывается такими-то 32 байтами с такой-то структурой, где в таких-то битах лежит адрес, в таких-то указан паттерн адресации, в таких-то размер, игра может эти 32 байта с такой структурой собрать так, как она захочет, хоть на CPU, хоть на GPU. На ПК, поскольку графические API должны быть реализуемы на всём зоопарке видеокарт разных поколений от разных производителей, все внутренности спрятаны за непрозрачными абстрактными объектами, свободы на ПК гораздо меньше, это и есть главная проблема в эмуляции GPU.
Основная часть драйвера, в которой собираются буферы команд, реализуются функции графических API, компилируются шейдеры, находится в закрытых user-space библиотеках, выложили только kernel-space часть.
Ну вообще даже близко нет, весь чипсет свой, но это только малюсенькая часть беды. Единственное, что в PS4 общее с ПК — набор инструкций x86, а в остальном это целиком консольная консоль. Я вообще удивляюсь, как можно пытаться поверх ПКшной видяхи с ПКшными графическими API эмулировать GPU, на котором ты одной и той же инструкцией записи циферки в память, скажем, buffer_store_dword, можешь переписать хоть текстуру в нативном формате с переставленными данными, хоть дескриптор текстуры (причём его никто не запрещает хоть прямо в шейдере собрать тупо из циферок, а не грузить откуда-то) или фреймбуфера, хоть структуру сжатия фреймбуфера, хоть тупо какой-нибудь буфер, который будет читаться чисто на CPU, хоть из шейдеров генерировать другие шейдеры))) Даже просто bindless текстуры это уже страшная проблема, так как у тебя есть просто огромный массив, в котором где-то дескрипторы свежих текстур, где-то протухшие дескрипторы, а где-то вообще мусор, и пока ты не отрендеришь объект на GPU, ты не узнаешь, какие реально текстуры будут использоваться, а тебе на ПК ведь надо их создать и забиндить на CPU, вызвав какие-нибудь vkCreateImage, vkCreateImageView, vkAllocateDescriptorSets, vkUpdateDescriptorSets, vkCmdBindDescriptorSets, и ещё и скопировать в них, предварительно перегнав из нативного формата в линейный. Хоть пиши софтварный рендерер вообще.
Обыкновенный код на C++, вполне удобно читается. Да, delete вместо RAII это немного опасно, но кому-то может нравиться более явное управление временем жизни. Инкапсуляция довольно адекватная в классах.
После этой гифки начался сущий ад
Душа в Hazard Zone, где ты с отрядом ездишь пингвинов смотреть 💙 И вытаскиваешь товарищей, попавших под серьёзное дерьмо
Помянем рандезуки с вингсьюта… https://twitter.com/Standingfast85/status/1620077366344290307
Возьмут вытащат… и заплатят! https://youtu.be/cSrBx3yM73Q
Андрей Павлов стал лидером по количеству дизлайков комментариев филибоев в нижнем интернете, но об этом теперь никто не знает.
Лелуш это который россиянин в Поднебесной?
Р
К
H
Два, как минимум
Подрочил? Ну да, понимаю, успокаивает.
При том, что прорывная технология помогает разгрузить видяху, а тормоза-то от защиты на центральном процессоре)))
Нивелировать потери за счёт DLSS… Антипиратская защита будет работать на видеокарте? Это что-то совсем новенькое)
Не представляю, как бы я хотя бы до одной капсулы с дисками добежал с 25 отрядами…
Судя по HUD, это продолжение «Собаке топором по голове двинули» от Тома Краниса?
Я на Razer Hydra прекрасно MotionPack проходил)
Только Portal и Portal 2 есть и на Xbox 360 (и на One и Series по обратной совместимости), и на PlayStation 3, с набором головоломок для PlayStation Move для второй части (а на ПК, соответственно, этот же набор выпущен для Razer Hydra), а 1 ещё и на Nvidia Shield. А Portal: Still Alive это вообще эксклюзив Xbox 360, хоть и основанный на Portal: The Flash Version MapPack.
На консолях игры разрабатываются под одну конкретную конфигурацию железа, поэтому там интерфейсы делают такие, которые позволяют работать с данными непосредственно в том виде, в котором с ними работает железо. Соответственно, если текстура на консоли описывается такими-то 32 байтами с такой-то структурой, где в таких-то битах лежит адрес, в таких-то указан паттерн адресации, в таких-то размер, игра может эти 32 байта с такой структурой собрать так, как она захочет, хоть на CPU, хоть на GPU. На ПК, поскольку графические API должны быть реализуемы на всём зоопарке видеокарт разных поколений от разных производителей, все внутренности спрятаны за непрозрачными абстрактными объектами, свободы на ПК гораздо меньше, это и есть главная проблема в эмуляции GPU.
Основная часть драйвера, в которой собираются буферы команд, реализуются функции графических API, компилируются шейдеры, находится в закрытых user-space библиотеках, выложили только kernel-space часть.
Ты имеешь в виду прослойку, через которую их драйвер общается с ядром?)
Про «с GPU попроще» я подробно расписал в https://dtf.ru/games/1205445-rossiyskiy-razrabotchik-pokazal-rannyuyu-versiyu-svoego-emulyatora-ps4-na-pk-on-vpervye-smog-zapustit-na-nem-igry?comment=17025822. Реверсить AMD проще, чем Nvidia, потому что там и реверсить особо ничего не надо, есть открытые Mesa/RADV и AMDVLK. Но эмулировать проще, всё же, Nvidia Maxwell, потому что там, хотя бы, текстура это текстура в глобальной таблице, а буфер констант это буфер констант :) А не просто кусок метаданных, который мы каким-то образом откуда-то получили, в первом случае, или голый кусок данных по какому-то адресу во втором.
Ну как минимум https://github.com/xenia-project/xenia/commits?author=Triang3l ;)
Ну вообще даже близко нет, весь чипсет свой, но это только малюсенькая часть беды. Единственное, что в PS4 общее с ПК — набор инструкций x86, а в остальном это целиком консольная консоль. Я вообще удивляюсь, как можно пытаться поверх ПКшной видяхи с ПКшными графическими API эмулировать GPU, на котором ты одной и той же инструкцией записи циферки в память, скажем, buffer_store_dword, можешь переписать хоть текстуру в нативном формате с переставленными данными, хоть дескриптор текстуры (причём его никто не запрещает хоть прямо в шейдере собрать тупо из циферок, а не грузить откуда-то) или фреймбуфера, хоть структуру сжатия фреймбуфера, хоть тупо какой-нибудь буфер, который будет читаться чисто на CPU, хоть из шейдеров генерировать другие шейдеры))) Даже просто bindless текстуры это уже страшная проблема, так как у тебя есть просто огромный массив, в котором где-то дескрипторы свежих текстур, где-то протухшие дескрипторы, а где-то вообще мусор, и пока ты не отрендеришь объект на GPU, ты не узнаешь, какие реально текстуры будут использоваться, а тебе на ПК ведь надо их создать и забиндить на CPU, вызвав какие-нибудь vkCreateImage, vkCreateImageView, vkAllocateDescriptorSets, vkUpdateDescriptorSets, vkCmdBindDescriptorSets, и ещё и скопировать в них, предварительно перегнав из нативного формата в линейный. Хоть пиши софтварный рендерер вообще.
А что общего между архитектурой PS3 и архитектурой PS4?)
Обыкновенный код на C++, вполне удобно читается. Да, delete вместо RAII это немного опасно, но кому-то может нравиться более явное управление временем жизни. Инкапсуляция довольно адекватная в классах.
Уже представляю, как челночницы в няшных халатиках скоро будут заниматься параллельным импортом Nintendo Switch в Россию
Ждём, когда Steam Deck обойдёт Switch в Японии