как-то не однозначно работать с аишками. С одной стороны неплохой буст - например щас накидал запрос на forward+ с тенями, оптимизациями и оно мне пишет какой-то код, буду смотреть
с другой - аишка не смогла банально вычесть вектор right на основе вектора up и вектора froward для левосторонней системы координат на glm. Для камеры.
в glm по умолчанию правостороняя система координат, и 99% примеров в интернете на этом. Но можно включить человеческую адекватную левостороннюю.
Только аишка не осилила камеру переписать под это, хотя и понимало что я от нее требовал, но все равно упорно писало правосторонюю. Пришлось руками поменять местами forward и up в glm::cross.... Ну такое
никакая это не замена программиста, а просто прокачанный гугл+стековерфлоу+гитхаб поиск+гист
grv
> Библиотеки для создания движков (контейнеры без исключений, ассерты, логгеры и т. Д.). Недодвижки
у меня кстати наоборот была и есть мысля разделить блоки движков по разным репозиториям
типа все что связано с окном, в одном. связанное с рендером в другой. Без связи друг с другом - просто библиотеки
war_zes
> Без связи друг с другом - просто библиотеки
Я понял, что написание библиотек - это в разы сложнее написания движка. Надо все учесть, все нюансы и случаи. Вообще не хочу таким заниматься. Честно говоря, движок-то уже неохота писать. Не то что библиотеки. Охота понаделать кринжовых уровней, наполненный различным бредом и купить скелета и налепить что-то. Вообщем хочется тактильного и визуально го. Дрочить в код порядком надоело.
Дрочить в код порядком надоело.
Микрософт и Интел другого мнения :)
Первым делом библиотеки и движки, ну а девушки игры как нибудь потом.
war_zes
> есть мысля разделить блоки движков по разным репозиториям
Для каждой функции свой репозиторий делай. Потом каждый день можно репозитории делать.
Потом каждый день можно репозитории делать.
Успех.
war_zes
Ты конечно можешь не воспринимать критику, но зачем каждый раз заново изобретать этот велосипед?
Вместо того чтобы плодить бесконечные нано репозитории изучи лучше модульное программирование или разберись для чего нужны классы в С++.
И тогда тебе не нужно будет для каждой задачи создавать отдельный репозиторий на гитхабе. Ведь эти подходы именно и заключаются в том, что каждый модуль или класс решает свою единственную задачу (без излишнего функционала и многозадачности).
И в проекте ты берешь только те классы или модули, которые нужны для данного игрового проекта.
Alesca
> Ведь эти подходы именно и заключаются в том
ну результат обычно немного противоположный - обертка, над оберткой, поверх обертки, включая обертки, над обертками..
как вон diligent engine где каждый чих через сотню наследований.
Я тоже начинал с этого, а включая мое свойство все тянуть к себе в код - получается нечитаемая, негибкая мешанина в которой невозможно что-то изменить. Еще веселее - если хочется попробовать разные варианты одной сущности.
Вот от этого я и ухожу.
если же говорить по примерам - то вот возьмем классическую обертку VertexBuffer - все понимают как она выглядит, что там есть и... Тут мне хочется попробовать раздельные буферы и она уже сломана. Или попробовать вариант запихнуть в этот буфер еще и индексы и снова все сломалось. А если я хочу вообще все через ssbo гонять....
Тогда сделать более абстрактной - получить Buffer... но даже там будет некоторые негибкие моменты, а самое главное - многие методы будут тупо с одной строкой кода... И вот я дошел что таки лучше вообще все убрать и юзать GLuint
Alesca
> И в проекте ты берешь только те классы или модули, которые нужны для данного игрового проекта.
оно кстати так не работает - за все надо платить. если не производительностью (а тот же ue5 уже пугает своими требованиями в недавно вышедших играх), то даже банально - изучением всех этих классов
сейчас борюсь с низким фпс на forward+ shading. Вроде реализация классическая - по крайней мере в большинстве примеров один и тот же код, но почему-то все тормозит в шейдере расчета освещения по выбранным источникам. Тупо цикл тормозит. Хотя всего-то 30 активных источников из 128 циклов... У людей же в тестах от 1024 и норм ровно тот же код. В загадках.
хочу в игре много фонариков, да. deffered мне не нравится, прозрачность сломана, и почему-то у меня постоянно получается эффект капли (то есть свет на стене выглядит не кругом, а каплей)
war_zes
> ну результат обычно немного противоположный - обертка, над оберткой, поверх обертки, включая обертки, над обертками..
> как вон diligent engine где каждый чих через сотню наследований.
>Я тоже начинал с этого, а включая мое свойство все тянуть к себе в код - получается нечитаемая, негибкая мешанина в которой невозможно что-то изменить.
Ну как бы да, бывает в программах говнокод. Даже в движках написанных профессионалами. Но если ты будешь постоянно заниматься таким рефакторингом ты не сможешь двигаться вперёд.
Alesca
> Но если ты будешь постоянно заниматься таким рефакторингом ты не сможешь двигаться вперёд
Да. Здесь есть ловушка. Когда чел рефакторит код, он планирует его переиспользовать. Но этого не случится. Ему покажется позже, что код говно или лень будет разбираться и чел все начнёт делать заново. Правда в том, что жизни не хватит, чтобы прокачаться настолько, чтобы сразу видеть идеальный вариант. Такие энергетические ресурсы недоступны мозгу. Мозг - медленная штука в плане метаболизма. Смысл есть все-жи пилить какой-то один проект до победного, пусть и не очень красиво будет. Потому что это будет мозгом засчитано за победу типа "смог, написал". А постоянный рефакторинг мозгом засчитывается за непонятные расходы энергии. Жаль, я этого раньше не понимал.
Тем более ИИ умнеет. Скоро (лет через 5) никому кодрочерство уже точно не будет нах... нужно.
grv
> Тем более ИИ умнеет.
скорее тупеет, в чем иишки могли год назад, сейчас буксуют.
grv
> Ему покажется позже, что код говно или лень будет разбираться и чел все начнёт делать заново.
поэтому надо сразу нормально писать
о, иишками можно еще и проверять код. особенно сложные шейдеры - дает дельные советы
заканчиваю делать forward+ shading. Дальше накинуть теней и рендер для игры готов
war_zes
Писать рендер движки - это не твоё. Возьми готовый фреймворк и используй его.
https://github.com/NVIDIAGameWorks/Falcor
Его пишут много умных людей. Не трать время впустую, пытаясь сделать то, чего ты не умеешь.