|
Модератор
|
|
Создание своего рендер движка (не реального времени)09.03.2020, 10:28. Показов 7343. Ответов 14
Метки нет (Все метки)
В интернете куча статей и уроков по созданию рендер движков для игр, то есть реального времени. А никто не знает похожих уроков по созданию не реалтайм рендера? Мне просто интересно их устройство и хочется написать простейший. Даже не знаю как правильно загуглить данный вопрос, вечно получаю игровые движки. Интересно нечто похожее (но сильно упрощенное разумеется) на corona, vray. И интересно не плагин для 3д студий а как самостоятельная программа. Посмотреть исходники открытых вариант так себе, тупо код для меня мало полезен. Интересно на сколько много отличий от игровых движков и поиграться с результатами, очевидно что фотореализм не по силам но интересные результаты можно получить.
0
|
|
| 09.03.2020, 10:28 | |
|
Ответы с готовыми решениями:
14
Реализация течения времени. Виртуальное время. Замедление и ускорение относительно реального времени. DS1302 часы реального времени форматирование времени Написание своего движка |
|
Просто Икс
691 / 233 / 47
Регистрация: 15.12.2009
Сообщений: 696
|
|
| 09.03.2020, 14:08 | |
|
ну... вобщем-то реал-тайм от статичного отличается разве что циклом, если совсем упрощенно
![]() по сути тот же Ogre3D ты можешь запустить без цикла и он тебе просто выведет статичную картинку на экран или в файл. + т.к. нам не нужен реал-тайм, то мы можем разбить конечное изображение (то что видит камера) на блоки и делать обработку в определенной последовательности.
0
|
|
|
Модератор
|
|
| 09.03.2020, 14:57 [ТС] | |
|
Просто на примере тех же corona, vray изначально они были только cpu, и только потом появилась возможность gpu рендера (сначала сильно уступало cpu версиям). И одна и та же сцена на одном и том же движке но при разных методах (gpu cpu) дает всегда различные результаты (не всегда сильно, но заметить просто).
Игровые движки пишутся грубо говоря на directx, opengl (и его разновидностях) и vulkan, а они используют для рендера gpu, а компы для статик рендера обычно с очень мощными многопоточными процессорами, кучей оперативки и видеокартами затычками (чтото уровня gtx-хх50, например gtx1050). Вот отсюда я и сделал выводы что начинка этих движков совсем иная... Это если не брать в расчет физически корректные рендеры по типу maxwell, которые так же больше нацелены на cpu. При статик рендере количество полигонов измеряется миллионами, что для реального времени очень много. И нормальным считается использовать highpoly модельки без карт нормалей. Про разделение хорошая идея, только как это реализовать у меня идей нету совсем.
0
|
|
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|
| 09.03.2020, 15:31 | |
|
alecss131, в посте ссылка на статью, посвященную софтверному рендеру Алгоритмы закраски фигур
0
|
|
|
Просто Икс
691 / 233 / 47
Регистрация: 15.12.2009
Сообщений: 696
|
||
| 09.03.2020, 17:24 | ||
|
OpenGL и DirectX это API для работы с 2D и 3D графикой. Шейдеры, CUDA, OpenCL это развитие технологий, которые расширяют функционал работы с 2D\3D графикой, предоставляя возможности GPU Свет, Камеры, Материалы, Бамп и карты Нормалей, Шумы, Voronoi etc. это все не более чем алгоритмы работы, но они сами по себе не несут тот факт что это будет реал-тайм или статичная картинка лишь рациональность их использования и аппаратные возможности заставляют нас постоянно выбирать между "гладко но долго" или "угловато но быстро" Добавлено через 37 минут образно говоря, real-time это лишь кол-во кадров в секунду. представь, что ты рендеришь анимацию и у тебя тоже будут кадры в секунду, чем сложнее сцена тем меньше "fps" Добавлено через 3 минуты различие лишь в том куда ты это выводишь, в файл, которые ты потом склеиваешь и получаешь видео или на экран с отловом бампнутых кнопок и тд
0
|
||
|
Модератор
|
|
| 09.03.2020, 17:48 [ТС] | |
|
То есть выходит что то что мне нужно написано тут грубо говоря? https://habr.com/ru/post/248153/ я помню недавно сам находил эту ссылку, пока так сказать добавил в список для чтения)
Видеокарты уже давно прилично мощные но для статичного рендера странно что редко кто их использует и крупные платные плагины только недавно начали развивать использование gpu. Хотя сейчас после прочтения перевода сайта learnopengl и принятия во внимание того что принцип везде один становится понятным возможность статик рендера не в 1 картинку а в, так сказать, набор картинок одной и той же сцены но разных аспектах
0
|
|
|
Просто Икс
691 / 233 / 47
Регистрация: 15.12.2009
Сообщений: 696
|
|
| 09.03.2020, 18:55 | |
|
Ну, собственно как ты наверное заметил там в самом начале сказано, что объясняется как сам OpenGL устроен.
т.е. конечно при максимальном погружении ты можешь писать свой "OpenGL", хотя я не совсем понимаю какой в этом смысл, если рассматривать в общем, а не частные случаи или как в статье придти к пониманию КАК это работает ![]() Всеже отказываться от накопленного опыта в целом это не очень рационально. Представь кол-во различных алгоритмов, кол-во человек работающих над ними, кол-во часов затраченных каждым из них в отдельности. Если ты имеешь представление как реализовать оптимальнее и лучше какой-то из них это одно, а когда написать все с нуля это совершенно другое. К тому же не забывай что существующие решения аппаратно независимы, а отказ от них неизбежно влечет учитывать причуды оборудования того или иного производителя. По крайней мере как мне это представляется, но я могу и ошибаться ![]() В любом случае, да, очень похоже, что тобой приведенная статья неплохое начало пути в этом вопросе
0
|
|
|
Модератор
|
|
| 09.03.2020, 19:12 [ТС] | |
|
У меня была идея написать свой opengl, используя vulkan))) В смысле написать библиотеку с использованием вулкана но с простотой использования opengl. Но пока не разберусь в opengl вулкан больше трогать не хочу.
Я лучше всего знаю джаву и мне приятней писать на нем, так что привязки к ос не будет. Да и в целом по сути писать свои игровые движки не имеет смысла, конкурировать с существующими невозможно. Но люди зачем то пишут, включая одиночек. Для меня написание этого больше как обучение и понимание существующего.
0
|
|
|
Просто Икс
691 / 233 / 47
Регистрация: 15.12.2009
Сообщений: 696
|
||
| 10.03.2020, 22:07 | ||
Если попадется что-нибудь интересное по теме, то буду иметь ввиду и маякну
0
|
||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 10.03.2020, 22:13 | ||
|
0
|
||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 10.03.2020, 22:29 | |
|
Наверно гуглить “cофтверный рендер”.
Поищите инфу про даты выхода старых игрушек doom 1, quake 1 и т.п. когда там вроде еще не было видеокарт. Вот тех времен книги в стиле “компьютерная графика на ЭВМ“ и нужно искать.
0
|
|
|
Просто Икс
691 / 233 / 47
Регистрация: 15.12.2009
Сообщений: 696
|
|
| 11.03.2020, 04:35 | |
|
еще немного добавлю...
если в играх мы знакомы с ray casting то в не реал-тайм рендринге для фотореализма у нас добавляются более тяжелые алгоритмы ray tracing (трассировка луча) (постепенно вводится и в игры с подачи nVidia), path tracing (Трассировка пути), photon mapping (Метод фотонных карт), Radiosity (метод излучательности(?)) сюда пожалуй еще можно добавить композитинг, когда рендер имеет возможность накладывать слой за слоем добавляя все больше реализма к конечному изображению. впрочем это уже немного дальше от "простого рендера"
0
|
|
|
Модератор
|
|
| 11.03.2020, 20:54 [ТС] | |
|
Я уже точно не помню но в настройках vray были на выбор (добуквенно не помню, могу спутать слова, давно не пользовался) irradiance map, light cache и brute force. Почти во всех гайдах ставили первые два, причем первый на первое место, второй на второе, то есть рендер мог использовать 2 и надо было выбрать, потом отдельно каждый настроить. Только сейчас пришли мысли погуглить эти штуки.
Еще что меня приводило к мыслям о отличии от реального времени это критерии остановки. На выбор 3 критерия, это время (очевидно), шум (совсем не понятно) и количество проходов (passes, вот тоже не понятно, ведь в реальном времени каждый кадр заново, а как несколько раз одно и тоже при этом используя старые данные для уточнения). И еще рендер в реальном времени отображал прогресс и квадратик над которым идет обработка. Вот такие части мне плохо понятны, ведь как можно обрабатывать маленькие кусочки картинки когда влиять могут другие даже не соседние части. Про слои знаю, некоторые люди даже сами их смешивают в итоговую картинку в других программах.
0
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 11.03.2020, 21:59 | ||||
|
Добавлено через 9 минут Добавлено через 7 минут
0
|
||||
|
178 / 33 / 17
Регистрация: 02.02.2014
Сообщений: 373
|
|
| 12.10.2020, 12:37 | |
|
То, что тебе нужно:
https://habr.com/ru/post/248153/ Разжёвано буквально всё, очень круто описано. В целом да, есть два подхода к решению этой задачи - это когда треугольнички проецируют на плоскость экрана (растеризация), и когда из каждого пикселя виртуальной камеры вылетают невидимые лучи, отражаются/преломляются и вот на что они попадут, такого цвета пиксель и будет (трасировка). Первый быстрый, второй реалистичный, но жрёт. И у того, и у другого есть куча всяких подвидов, к тому же в реальных продуктах их часто миксуют. В играх юзают первый подход, в продакшене (3д макс и прочий не реалтайм) - второй. Первый подход аппаратно ускоряется видеокартами. Второй - до поколения GeForce 2000 ускорялся, но не очень эффективно, а начиная с этой серии - получил полное аппаратное ускорение. Но даже с аппаратным ускорением, трасировка лучей - очень суровый алгоритм. В новых играх обычно его используют чуть-чуть, для отражений и света, а остальное спихивают на классическую растеризацию, иначе тебе для 1080p не хватит даже двух GeForce 3090. Такие дела.
0
|
|
| 12.10.2020, 12:37 | |
|
Помогаю со студенческими работами здесь
15
OpenGL: Как создать рендер девайс, рендер контекст встроенными средствами? Калькулятор реального времени График реального времени Часы реального времени Приоритет реального времени.... Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|