Войти

Программирование игр

Игровой движок, 3D графика, сеть, физика, логика, уеб

НовостиСтатьиПодсказкиТерминыFAQФорумИнфо

Статьи

Имитация раскачивания дерева под воздействием ветра
Имитация раскачивания дерева под воздействием ветра
Статья демонстрирует простой метод имитации воздействия ветра на дерево (куст), реализованный на вертексном шейдере.

Читать | Комментарии [19]
9 окт. 2020

Освещение с использованием фотометрического профиля
Освещение с использованием фотометрического профиля
Фотометрический профиль (ФП) описывает распределение интенсивности света точечного источника, полученные с помощью соответствующего измерительного оборудования. Используя данные ФП можно добиться эффекта симуляции сложных теней и нестандартного затухания света.

Читать | Комментарии [25]
3 июня 2020

Гидродинамика Шрёдингера на пальцах
Предрасчёт рейкаста для эффективного рендеринга травы и меха
На пути к эффективному алгоритму Global Illumination, часть 1
Синхронизации в Vulkan

Термины

Universal Scene Description (USD)
Universal Scene Description (USD)
Universal Scene Description (USD) — файловый формат описания трехмерной сцены, разработанный компанией Pixar.

Читать
5 июня 2018

Verge3D
Verge3D
Verge3D - трёхмерный движок для веба, использующий технологию WebGL. Основан на Three.js, от которого отличается наличием реалистичных материалов, визуальным редактором логики Puzzles, средой создания приложений и более тесной интеграцией с программами моделирования Blender и 3ds Max. 14 декабря 2017 года в рамках проекта был запущен облачный сервис Verge3D Network для публикации и распространения 3D-приложений.

Читать | Комментарии [19]
8 дек. 2017

Вуду-программирование
Blend4Web
Forward+

Подсказки

MAX Script: Разделение 3D модели на элементы по группам нормаль векторов.
MAX Script: Разделение 3D модели на элементы по группам нормаль векторов.
Здесь представлен скрипт 3D Studio MAX, при помощи которого можно разделить 3D модели на элементы по группам нормалей, также смотрите «MAX Script: Разделение 3D модели на элементы по группам сглаживания».

Читать
10 мая 2020

Delphi: Точный таймер (Win API)
^ Матрица LookAt
Инверсия матрицы 4x4

Новости

Развитие рендера в Path of Exile
Выложили мой доклад с exilecon. В нём я рассказываю о нескольких необычных техниках рендеринга, разработанных для Path of Exile. Доклад на английском языке. Есть русские субтитры.

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Ссылка | Комментарии [69]
8 апр. 2020

Ray Tracing Gem. Доступно бесплатно!
Опубликована PDF-книга «Ray Tracing Gem. High-quality and real-time rendering with DXR and other APIs» на 600+ страниц, подготовленная NVIDIA и разными специалистами из области рейтрейсинга. Можно скачать отсюда:
https://link.springer.com/book/10.1007/978-1-4842-4427-2

Ссылка | Комментарии [7]
4 мар. 2019

Microsoft анонсировала DirectX Raytracing (DXR)
На проходящей в Сан-Франциско конференции разработчиков игр (GDC) компания Microsoft анонсировала поддержку в DirectX 12 технологии DirectX Raytracing (DXR). Новый программный интерфейс позволяет производить просчет рейтрейсинга при помощи поддержки этой технологии в железе.

Рейтрейсинг позволяет достичь расчета реалистичного освещения, теней и материалов. Классические технологии вывода графики в компьютерных играх основаны на растеризации, но, несмотря на большой прогресс в алгоритмах, реалистичность генерируемых изображений все равно имеет ряд проблем. Растеризация в целом работает по другому принципу, чем визуальное восприятие человека. Рейтрейсинг, в свою очередь, достаточно близко описывает поведение физического процесса.

SEED-screenshot | Microsoft анонсировала DirectX Raytracing (DXR)

Подробнее…

Ссылка | Комментарии [504]
20 мар. 2018

О дизайне игровых подсистем в 2048 Tournament
Опубликован доклад по итогам разработки игры 2048 Tournament. В нём секции о естественной и искусственной сложности, о принципах дизайна систем, о типах ошибок, о декларативном формировании сценария действий, о том, как у нас работает конечный автомат и о паре архитектурных трюков.

P.S. Не забудьте включить полноэкранный режим просмотра.
Ссылка на доклад: http://www.goo.gl/6DoH7R

2048_tournament_postmortem | О дизайне игровых подсистем в 2048 Tournament

Ссылка
27 янв. 2015

Форум

IF в шейдерах18 апр. 202120:17Vogd2
Что-то слышал про то, что if-else конструкции в шейдерах это плохо.

Это так?
Как правильно написать такой код в шейдере?

  fixed4 c;
  
  if (IN.worldPos.y < _Y2)
    c = _Color2;
  else if (IN.worldPos.y > _Y1)
    c = _Color1;
  else
  {
    c = lerp(_Color1, _Color2, (IN.worldPos.y - _Y1) / (_Y2 - _Y1));
  }

Процедурная генерация сюжетов, сценариев в играх.18 апр. 202117:09flint2
Товарищи учёные, доценты с кандидатами!
Энштейны ненаглядные, любимые до слёз.
Замучилися я с иксами, запуталися в нулях...
Как Вы считаете, ваше мнение?:
Процедурная генерация историй в интерактивной форме.
Как мне кажется (ударение на мне) сделал процедурный генератор рассказов. - многие верят!
Пытаюсь применить, приспособить для игрушек.
Пытался с текстовыми новеллами - туфта!
Мой мозг не воспринимает «Вы стоите перед столом, надо выбрать документы для расследования, или яблоко».
Причём слова выделены, как сноска. - ну, отвращение!
Пробовал с «рогаликами» - отсекается изюминка рассказа.
Вроде-бы нашёл форму выражения в формате а-ля Wolfenstein. https://disk.yandex.ru/d/CWLtZypNxJjZYg
И контент можно минимизировать - относительно. (есть мысли)
Хорошо карты генерируются.... вроде-бы всё хорошо. можно города и «помещения, пещеры...»
Разумеется, что не одна история в другой...
Плюсы:
Достаточно всё удобно.
Заморочек неразрешимых нет!
Всё, как по нотам.
Минусы:
Сыновья говорят, что такого уже давно не носят и все привыкли стрелять, а вся история - по барабану!
С движком придётся шаманить, изобретать. - один я не потяну наверное.
Может есть Кулибины со своими вечными двигателями? - буду рад пообщаться.
Unity, UE не предлагать. - для нас Ваше мнение очень важно!

Товарищи теоретики от сценаристов, что у Вас в мозгу - озвучьте.
Любимые художники - тут поле не паханное!
Кто рисует, тот гараздей всё понимает!
Коллеги кодеры, ну что тут говорить...

Поделитесь своими мыслями на этот счёт.

А может плюнуть, и завязать с этим делом?
Делать себе рассказы и озвучивать https://disk.yandex.ru/d/aHCP-QNNL2gnVQ на сон грядущий, да и дело с концом?


Но тема мне кажется интересной.

- Ты меня уважаешь?
- И я тебя!
- Пойдём логическим путём.
- Пойдём вместе!

Правка: 19:20

Зависает при использовании потоков18 апр. 202111:534rtemTrickster
При использовании любых потоков будь то OpenMP или std::async приложение намертво виснет

исходный код:

+ Показать

Правка: 11:56

Заработок с мобильных игр в 2021 году17 апр. 202111:20Goste_Face
Всем привет!)

Пару дней назад, на своём YouTube канале я решил рассмотреть то сколько можно заработать на своей мобильной игре в 2021 году. Я решил не учитывать момент что игру можно сделать непосредственно платной, так как такой вариант мне кажется менее эффективным по сравнению с донатом и рекламой, если же вы не согласны с моим как я думаю логичным мнением я буду рад послушать вашу критику. Ссылку на видео я прикреплю)

https://youtu.be/gsbrpc21kxI

Экран15 апр. 202122:37ultroplaIr
Как в GMS 2 управлять экраном через саму игру? Имеется в виду настройка разрешения в самой игре и включение/отключение полноэкранного режима. Я искал в интернете, но ничего не нашёл, можете подсказать что-нибудь по этой теме или сказать, где можно это найти самому?
Normal mapping15 апр. 202115:36SmoothBoy
Добрый день. Изучаю normal mapping (текстуры с нормалями вместо цветов) мне не ясно зачем надо tangent space?

То есть по моей логике- есть например вращается куб, что бы рассчитать освещение за кубом надо так же вращать нормали, и рассчитывать освещение. А tangent space позволяет что? Нормали преобразовывать для расчетов что бы не вращать за кубом в данном случае?

Как превратить произвольный вектор направления в одно из 16 возможных направлений?14 апр. 202111:41Robotex
Как сжать вектор, чтобы он занимал меньше места (не float x,y,z, а просто 4 бита)? Есть какая-то готовая формула, возвращающая ближайший вектор из заданных, чтобы не городить костыль из кучи проверок, что он находится в том или ином секторе пространства?
Заменить сравнения логическими операциями (или операторами)14 апр. 20219:42MikeNew
Как заменить комбинацией  логических операций и операторов (%,&, сдвиги, сложение, умножение) вот такой код?
if (x == 0) xx = 0;
if (x == 1) xx = 1;
if (x == 2) xx = 1;
if (x == 3) xx = 0;

Не удается подобрать подходящую комбинацию.

Правка: 9:43

Вычислить координаты ячейки регулярной сети в вертексном шейдере13 апр. 202118:57MikeNew
Рисуется террайн посредством карты высот. В вершинном шейдере нужно для каждого квада получить координаты XY ячейки, показывающие ее координаты.
На рисунке большим черным шрифтом - нужные координаты(которые нужно вычислить), красным - координаты вершин квадов в глобальном пространстве.
Изображение


На один квад вершинный шейдер вызовется четыре раза. Соответственно, для левого верхнего квада нужно получить в вершинном шейдере координаты (0,0), для правого верхнего - (1,0), для левого нижнего (0,1)...

Возможно ли это сделать не передавая эти координаты через атрибуты вершины, а посчитать непосредственно в самом вертексном шейдере? Или это в принципе невозможно?

Правка: 19:01

Как вращать в шейдере масштабированную текстуру, наложеную на террайн13 апр. 20217:28MikeNew
С немасштабированной текстурой (которая один в один совпадает с тайлом) все просто:
vec2 uvRot = vec2(cos(angle) * (uv.x - 0.5) - sin(angle) * (uv.y - 0.5) + 0.5, 
                  sin(angle) * (uv.x - 0.5) + cos(angle) * (uv.y - 0.5) + 0.5);    

А как быть с текстурой, которая не совпадает с тайлом?
С той, которая получает кординаты в фрагментом шейдере по принципу

uv = tilePostion *scale;

Правка: 7:32

Букмекерские конторы по материалам http://winline.ru. , ігрові автомати , Вычислительная гидродинамика , Скачать конвертер NEF файлов в JPG , joycasino мобильная версия https://joycasino2019.site/