Дядя Миша писал: Ну ладно, я понял, что твоём знакомство с языком было крайне поверхностным и настрой был изначально негативным. Т.е. тебя предварительно напугали.
Да поверхностным. Ну тоесть написать что то простое или что то подправить. Я наверное просто не знаю нужных библиотек, например по началу Vector3 и нужные операции с ним я писал на крестах с нуля, потом узнал что есть библиотека где он уже есть. Может быть где то и листы и словари есть.
В любом случае я не говорю что C++ плохой язык, это очень мощный инструмент, особенно когда нужно тонко работать с памятью. Но для игровой логики мне кажется он избыточен.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: Но для игровой логики мне кажется он избыточен.
Всё зависит от сколько игровой логики ты хочешь написать на языке.
У меня изначально были очень широкие планы в этом отношении, т.е. язык должен был описывать всё, что можно описать в халфовских дллках.
Ни один из существующих скриптовых языков для этого не годился.
Поэтому пришлось создать HeadShot. Если в дальнейшем по каким-то причинам я урежу объем кода, реализованного на нём, это не потребует от меня никакого вмешательства в язык. А вот если бы мне захотелось большего, а язык был бы к этому не готов, получилась бы ерунда как в Юнити.
Во всех этих скриптовых языках беда с АТД. Они их не поддерживают.
Точнее поддерживают, но в виде встроенных нативных объектов.
Это значит, что если у тебя в классе вектора или кватерниона нет каких-то операций, то сделать ничего с этим невозможно. Может эти нативные классы можно как-то расширять, я не уверен, но всё равно тут нет целостности. В Шоте корректная работа с АТД, можно создавать свои.
Конечно я могу реализовать тот же vec3 целиком нативно, если посчитаю что так будет намного быстрее. Но главное что есть свобода выбора.
Цитата:
Crystallize писал: Можно будет писать general purpose приложения с интерфейсом?
Да, Шот очень хорошо подойдет для создания окошек, это одно из его назначений.
Добавлено 06-08-2024 в 13:01:
Цитата:
FiEctro писал: мощный инструмент, особенно когда нужно тонко работать с памятью
Про тонкую работу с памятью у большинства неверное представление.
Начнём с того, что ни у Си ни у С++ нет никаких встроенных средств для управления памятью. Только ручное. Однако в С++ есть конструкторы и деструкторы, которые как раз и помогают об этом не задумываться до поры до времени. Но если в чистом Си ситуацию исправить невозможно, каждый раз приходится всё делать вручную, то в крестах можно написать очень удобные аллокаторы на шаблонах, простые и эффективные в реализации.
Тут ещё важно понимать, что у пользователя есть только один-единственный способ выделить память - это функция malloc. И абсолютно все аллокаторы имеют её в своей основе. А внутренняя реализация malloc зависит от винды.
И если до XP SP2 он был очень медленный и норовил фрагментировать память, то с выходом второго сервис-пака ситуация полностью изменилась и теперь городить свои кастомные аллокаторы никакого смысла не имеет - внутренняя реализация операционки справится всяко лучше.
Но их всё равно городили по инерции, года до 2017-го наверное.
Добавлено 06-08-2024 в 13:05:
А про Шот скажу так. Это С++ с человеческим лицом. С одной стороны он позволяет работать с памятью в таком же объеме, как и С++, с другой - позволяет вообще особо не заботиться о памяти, всё от задач зависит.
Поэтому когда вы пишете игровой код на Шоте - это не сильно отличается от написания кода на Шарпе. В плане безопасности.
Дядя Миша писал: А вот если бы мне захотелось большего, а язык был бы к этому не готов, получилась бы ерунда как в Юнити.
Во всех этих скриптовых языках беда с АТД. Они их не поддерживают.
Точнее поддерживают, но в виде встроенных нативных объектов.
Это значит, что если у тебя в классе вектора или кватерниона нет каких-то операций, то сделать ничего с этим невозможно. Может эти нативные классы можно как-то расширять, я не уверен, но всё равно тут нет целостности.
А что такое АТД? В Юнити можно наследоваться от движковых классов, делать всякие перегрузки т.д.
Цитата:
Дядя Миша писал: Поэтому когда вы пишете игровой код на Шоте - это не сильно отличается от написания кода на Шарпе. В плане безопасности.
Вот это клёво.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Лет 14 назад называли. Сейчас всё потихоньку идёт к deprecated. Может быть есть смысл посмотреть в сторону Vulkan?
Почти 8 лет над OpenGL никто не работает, очевидно на технологию положили болт сами Khronos, чего тогда ожидать от поставщиков драйверов. Плюсом всякие модные фишки типа RTX, можно пощупать, народ поиграется.
Абстрактный Тип Данных. Вот как раз всякие vec3, mat4 и прочая тому подобная пердь. С которыми хочется работать так же просто, как интами и флоатами, т.е. писать выражения, а не вызовы функции, типа Matrix4x4_Concat( a, b, c ); А вместо этого писать c = a * b;
Цитата:
FiEctro писал: В Юнити можно наследоваться от движковых классов, делать всякие перегрузки т.д.
Ну ясно. В принципе, я могу библиотеки на Шоте тоже сконфигурировать подобным образом, но пока что не делаю этого.
Цитата:
Unit писал: Может быть есть смысл посмотреть в сторону Vulkan?
Вулкан как раз на этих интелах-встройках работать и не будет.
Цитата:
Unit писал: Почти 8 лет над OpenGL никто не работает, очевидно на технологию положили болт сами Khronos
Это распространённое, хотя и ошибочное мнение. Такой пример приведу - WinAPI не менялся с 90-х годов, там куча легаси и очень стрёмных решений. Но при этом никто не говорит что он устарел. Потому что это точка совместимости, на которой всё держится, десятки или даже сотни тысяч приложений под Windows, написанных в разное время тем не менее способны запуститься даже на Win11. Но сам интерфейс ужасен, да.
Для меня тот факт, что OpenGL перестали трогать - это наоборот весьма позитивный сигнал, что там больше ничего не сломают, что он полностью стабилен и его наконец-то можно смело использовать. Всё что постоянно обновляют использовать нельзя, это значит что оно нестабильное. Но почему-то все считают наоборот. Ещё пример приведу: вот строители строят дом. Никто же не живёт в доме, пока возводятся стены? Наоборот, как только строители закончат и уедут в другое место - заезжают жильцы. И никто не говорит "ох, строители не обновляли наш дом уже восемь лет, он устарел, нам срочно надо другой дом". Так почему же такой ажиотаж с софтом? Нет ответа.
Теперь что касается Вулкана. Здесь уместно вспомнить старый анекдот - чтобы ни делал Хронос, у него всегда получается OpenGL. Технически у Вулкана есть ровно одно преимущество над OpenGL - он умеет работать с потоками. Собственно на этом и всё. Остальные преимущества таковыми не являются. Увеличенная скорость работы, которую нам обещали на Вулкане - это просто отключённые слои валидации, отладки. Без этих слоёв действительно скорость работы вырастает, но и любая ошибка приводит к BSOD. Люди устали постоянно перезагружать компьютер при разработке, поэтому начиная с какой-то, кажется 1.2 версии, слои валидации по умолчанию включили обратно. Никаких особенных возможностей, по сравнению с OpenGL, вулкан не даёт. В OpenGL 4.6 была очередь рендер-команд, из которой по сути и вырос вулкан - вот она потенциально способна давать прирост, но я не тестировал, так что ничего не скажу. Второй момент - абстрактный язык хранения шейдеров.
Для меня это ничего особо не даёт в моменте, у меня тут своя система.
Но в теории наверно можно написать собственный компилятор шейдеров и оптимизировать его. Третье - между версиями нет совместимости.
То что было написано под Вулкан 1.1 с довольно высокой вероятностью вызовет синьку при запуске под Вулкан 1.3. Зачем мне этот головняк нужен? Я ещё не забыл глюки OpenGL-драйверов в 2014-м году, когда отлаживал Параною. При том что, повторюсь, у большинства целевой аудитории ноутбуки в них процессорное видео от интел, которое не поддерживает вулкан, т.к. большая часть этих процов была выпущена до 2015-го года. У людей не сказать чтобы прямо сильно свежий парк железа. И дискретные видеокарты тоже далеко не у всех. А Юнити на этих интелловских карточках прекрасно себя чувствует, между прочим.
Теперь что касается лучей. RTX - это сплошной обман потребителя. Лучи реализованы в железе. Что это значит? Это значит что их использование не должно влиять на фпс. Тем не менее оно влияет и влияет очень сильно.
Тогда спрашивается за что платили? За три модные буквы? Те же Эпики не стали связываться с RTX, а реализовали собственную технологию Lumen.
Я планирую сделать нечто подобное. Опыт программного рейтрейсинга у меня уже есть, в той же параное 2 есть экспериментальные рейтрейсинговые тени. В принципе при наличии хороших ускоряющих структур можно получать весьма достойные результаты даже на дохлом железе. Так что нет, RTX меня не интерисует. И без меня достаточно людей, которые им занимаются.
AMD так и не допилили свои OpenGL драйвера под винду, вроде только под линукс. А на винде там у них какая то лютая эмуляция идёт. Зато с Директом и Вулканом везде по идее всё впорядке.
Цитата:
Дядя Миша писал: Тогда спрашивается за что платили? За три модные буквы? Те же Эпики не стали связываться с RTX, а реализовали собственную технологию Lumen.
Я планирую сделать нечто подобное
RTX это не только радиосити, это ещё и мягкие тени, и касутики, и стёкла, и волюм лайты, и объёмные партикли. Если делать всё через растеризацию то не факт что быстрее будет. Люмен тоже крайне всрато работает, он скорее для замены лайтмапы чем динамики.
Добавлено 06-08-2024 в 15:46:
Цитата:
Дядя Миша писал: Я планирую сделать нечто подобное. Опыт программного рейтрейсинга у меня уже есть, в той же параное 2 есть экспериментальные рейтрейсинговые тени. В принципе при наличии хороших ускоряющих структур можно получать весьма достойные результаты даже на дохлом железе. Так что нет, RTX меня не интерисует. И без меня достаточно людей, которые им занимаются.
С рейтрейсером в целом всё понятно. На вторую кваку уже была готовая реализация которая работала как RTX только на любой видеокарте. Проблема больше в качественном деноизере, у RTX видеокарт он очень крутой и шустрый, ничего для реалтайма я больше не видел. Хотя не, вру, у Директа 12 (DXR) вроде ещё что то было. Он тоже поддерживает аппаратный рейтрейсинг и при этом не требует RTX видеокарт.
Как вообще работают топовые деноизеры я не знаю.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: А на винде там у них какая то лютая эмуляция идёт
GL_POLYGON_OFFSET на каких-то моделях валился в эмуляцию, да.
Цитата:
FiEctro писал: RTX это не только радиосити, это ещё и мягкие тени, и касутики, и стёкла, и волюм лайты, и объёмные партикли. Если делать всё через растеризацию то не факт что быстрее будет
Так ты уже делал? Сравнивал? Всё что ты перечислил не требует RTX. А полноценный рейтрейсер на его основе всё равно сделать невозможно.
И не только потому что железка не потянет. А как минимум потому что в играх полно фуллбрайт объектов, как ты их собрался реализовывать?
Т.е. это будет объект, который не излучает свет и не принимает его.
Рейтрейсер не умеет такое рендерить. Внезапно!
Цитата:
FiEctro писал: Как вообще работают топовые деноизеры я не знаю.
Вот ещё и денойзер этот. Я совсем забыл про него. В текущем виде реализация неюзабельна.
Дядя Миша писал: А как минимум потому что в играх полно фуллбрайт объектов, как ты их собрался реализовывать?
Т.е. это будет объект, который не излучает свет и не принимает его.
Рейтрейсер не умеет такое рендерить. Внезапно!
Умеет. Но почему не излучает? Фуллбрайт это эмишен же, ещё с начала 90х в 3д максе эта фишка была.
Да блин светящиеся текстуры в hlrad что по твоему?
Да и вообще этот фуллбрайт не тяжелая штука совсем, его и в другом проходе рисовать можно.
И как то не верится мне что из луча мы просто не можем передавать только цвет текстуры, да ну бред какой то.
Цитата:
Дядя Миша писал:
Так ты уже делал? Сравнивал? Всё что ты перечислил не требует RTX. А полноценный рейтрейсер на его основе всё равно сделать невозможно
Ну в Quake2 RTX поиграй, и в Portal RTX. Если я такое накручу растеризацией в Юнити или Анриле думаю да будет тяжелее.
Цитата:
Дядя Миша писал: Вот ещё и денойзер этот. Я совсем забыл про него. В текущем виде реализация неюзабельна.
Не совсем понял про какой из деноизеров ты говоришь, и про какую "неюзабельную" реализацию. Но в целом мы с тобой правильно угадали, они берут информацию с картинки с низким разрешением и как то строят вектора для размытия шума на её основе + я так понял накапливают лучи с предыдущих кадров (хотя это не совсем деноизер, а скорее обычное свойство рейтрейсера), но тем не менее все эти данные используют для сглаживания шума. Я только начал эту тему изучать, так что большего пока не знаю. Может здесь напишет кто то про деноизеры более подробно, как знать.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: Но почему не излучает? Фуллбрайт это эмишен же
Ну вот представь ты хочешь сделать объект, который вообще игнорирует свет. В рейтрейсере подобное невозможно.
Цитата:
FiEctro писал: Не совсем понял про какой из деноизеров ты говоришь, и про какую "неюзабельную" реализацию.
Да про любой тащем-то. Мне в принципе не нравится этот подход со случайным выпусканием лучей. Особенно на открытом пространстве, где 70% уйдут на нагрев GPU. Если бы оно хотя бы не тормозило, ещё можно было бы закрыть на это глаза. Но оно тормозит, греется и стоит невменяемых денег.
Дядя Миша писал: Ну вот представь ты хочешь сделать объект, который вообще игнорирует свет. В рейтрейсере подобное невозможно.
Как ты вообще это себе представляешь? В лучшем случае он будет чёрным, но точно так же он будет черным и на растеризации. Мне кажется ты что то путаешь. Да и повторюсь ничего не мешает отрисовать в отдельном проходе, Блендер так и делает несмотря на все твои "невозможно".
Цитата:
Дядя Миша писал: Да про любой тащем-то. Мне в принципе не нравится этот подход со случайным выпусканием лучей. Особенно на открытом пространстве, где 70% уйдут на нагрев GPU.
Опять же, на растеризацию уйдёт не меньше. Отрисуй столько же отражений да ещё и размытых как на рейтрейсинге на какой нибудь спонзе. У тебя и 5 фпс не наберётся.
Цитата:
Дядя Миша писал: А! И на XP ещё не работает к тому же.
Ну в Паранойе же работало.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Дядя Миша писал: Ну вот откуда, откуда ты берёшь подобные заявления?
Я пересмотрел кучу демок и несколько движков. В том же Анриле или Юнити можно и так и так накрутить графику и сравнить (хоть там и не RTX). Честные отражения на растеризации вообще не сделать в большом количестве. Воксели тебе тоже не нравятся.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: Честные отражения на растеризации вообще не сделать в большом количестве
Да они если честно и не нужны в большом кол-ве. RTX свернул в сторону отражений, когда выяснилось что для рассчёта радиосити он не годится.
Точнее годится, но только для идеально отражащющих поверхностей, типа зеркал. Потому что от матовой поверхности отразится не один луч, а минимум 16, а лучше 192. Никакой RTX этого не вытянет в ближайшие лет 10 так точно. Разве что чудо случится и вот эти поляритонные транзисторы окажутся не фейком, а вполне рабочей технологией. Тогда у нас будут процы на один пета-герц и вот они вытянут абсолютно всё )
Дядя Миша писал: Разве что чудо случится и вот эти поляритонные транзисторы окажутся не фейком, а вполне рабочей технологией. Тогда у нас будут процы на один пета-герц и вот они вытянут абсолютно всё )
Ну или не вытянут по причине забитого болта на оптимизацию. Имхо чем сильнее железо, тем народ меньше заморачивается с оптимизацией, и большинство игр это какое-то топтание на месте, и по графике и по геймплею, физики вообще почти нет.