Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Nvidia создаёт студию по ремастеру старых игр на RTX

Разработка игрГрафический дизайнИгры и игровые приставки


Похоже, что Quake 2 RTX будет не единственным ремастером, для которого NVIDIA будет добавлять эффекты трассировки лучей в реальном времени. Согласно списку вакансий на сайте компании, NVIDIA занялась созданием студии, которая будет специализироваться на добавлении эффектов Ray Tracing к ремастерам классических компьютерных игр.

Как следует из описания этого списка вакансий, NVIDIA запустила новую программу ремастеринга игр.

«Мы выбираем некоторые из лучших игр прошлых десятилетий и переносим их в эпоху трассировки лучей. Таким образом, мы дадим им самые современные визуальные эффекты, сохранив великолепный геймплей», — заявляется в описании к вакансии.
Читать дальше →
Всего голосов 19: ↑18 и ↓1 +17
Просмотры4.2K
Комментарии 0

Khronos Group выпустила публичную версию расширений Vulkan Ray Tracing

APIГрафический дизайнИгры и игровые приставки

Источник: Khronos

Khronos Group выпустила расширения для поддержки трассировки лучей в API Vulkan, основанные на стандарте NVIDIA RTX. Расширения позволят Vulkan API стать первым в отрасли открытым кроссплатформенным стандартом для ускорения трассировки лучей, который не будет зависеть от аппаратных решений.
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры3.7K
Комментарии 1

Порт Metro Exodus для PS5 и Xbox Series будет работать с трассировкой лучей

Игры и игровые приставки

Разработчики 4A Games и Deep Silver рассказали подробности об обновлении игры Metro Exodus для игровых приставок PlayStation 5 и Xbox Series X. Игра получит в название дополнение Enhanced Edition и поддержку 60 кадров в секунду и трассировку лучей.

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Просмотры5.1K
Комментарии 5

Технология программной трассировки лучей от Euclideon

Работа с 3D-графикой
Маленькая австралийская компания Euclideon сделала громкое заявление, что разработала новую технологию рендеринга 3D-графики, которая якобы «в 100 000 раз лучше» ныне существующих. Они имеют в виду количество полигонов: их графический движок (конвертер полигонов) Unlimited Detail способен рендерить более 21 триллиона вокселов на 20 FPS с помощью программной трассировки лучей (рейтрейсинга).


Читать дальше →
Всего голосов 61: ↑51 и ↓10 +41
Просмотры4.4K
Комментарии 120

Трассировка пути на GPU, часть 1

Компьютерное железо
Из песочницы
Железо и рендеринг
Наиболее популярные, на сегодняшний день, архитектуры процессоров — x86-64. Их относят к CISC. Они обладают огромным набором команд, что привело к большой площади ядра на кристалле. Это, в свою очередь, повлекло за собой сложность в реализации нескольких ядер на чипе. Процессоры x86 не идеальны для многопоточных вычислений, где требуются многократное выполнение небольшого набора команд (RISC).
В свою очередь, рендеринг — алгоритм, который отлично распараллеливается практически на неограниченное количество ядер.

Unbiased renders
В виду того, что производительность железа неуклонно растет — технические вопросы (например семплинг отражений материалов в V-Ray, количество биасов при антиалиасинге, размытии в движении, глубине резкости, мягких тенях) все больше переходят на плечи железа. Так, несколько лет назад появился первый коммерческий рендер «без допущений» (unbiased render) — Maxwell Render.
Основным его преимуществом было качество финальной картинки, минимум настроек, всевозможных «биасов». С течением времени качество картинки приближается к «идеальному». А недостатком было и есть — время рендеринга. Ждать, пока шум сойдет, приходилось очень долго, и многие люди после нескольких проб сразу от него отказались. Еще хуже обстояли дела с анимацией (по понятным причинам).

image
Читать дальше →
Всего голосов 27: ↑14 и ↓13 +1
Просмотры7.3K
Комментарии 19

Симплекс Серпинского

Ненормальное программированиеC++


Данная статья предназначена для ознакомления с базовой математической составляющей компьютерной многомерной графики. На примере симплекса Серпинского в статье рассматриваются вопросы построения, перемещения, проецирования и отображения сложных многомерных геометрических фигур.
Также имеются картинки, видео, исходники, и уверяю вас, что всё очень просто, читайте, вникайте.
Читать дальше →
Всего голосов 111: ↑111 и ↓0 +111
Просмотры14.4K
Комментарии 49

Unbiased rendering (рендеринг без допущений)

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


Изображение отрендерено с помощью Maxwell Render.

Читать дальше →
Всего голосов 165: ↑161 и ↓4 +157
Просмотры50.2K
Комментарии 70

Unbiased DirectX Рендеринг на GPU, CPU и в облаке

GPGPU
Как создать рендерер, который бы работал даже на компьютере вашей бабушки? Изначально перед нами стояла немного другая задача — создать unbiased рендер для всех моделей GPU: NVidia, ATI, Intel.
Хотя идея такого рендера для всех видеокарт витала в воздухе давно, до качественной реализации, тем более на Direct3D, дело не доходило. В своей работе мы пришли к весьма дикой связке и дальше расскажем, что нас к ней привело и как она работает.

renderbro resource combined
Читать дальше →
Всего голосов 83: ↑79 и ↓4 +75
Просмотры43K
Комментарии 55

Трёхмерная графика с нуля. Часть 1: трассировка лучей

Работа с 3D-графикойРазработка игрАлгоритмыМатематика
Перевод
image


Эта статья разделена на две основные части, Трассировка лучей и Растеризация, в которых рассматриваются два основных способа получения красивых изображений из данных. В главе Общие концепции представлены некоторые базовые понятия, необходимые для понимания этих двух частей.

В этой работе мы сосредоточимся не на скорости, а на чётком объяснении концепций. Код примеров написан наиболее понятным образом, который не обязательно является самым эффективным для реализации алгоритмов. Есть множество способов реализации, я выбрал тот, который проще всего понять.

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


Читать дальше →
Всего голосов 90: ↑90 и ↓0 +90
Просмотры98K
Комментарии 53

Трассировка лучей на GPU в Unity

Работа с 3D-графикойРазработка игрUnity
Перевод
Для трассировки лучей (ray tracing) настали удивительные времена. Компания NVIDIA реализует ускоренное с помощью ИИ шумоподавление, Microsoft объявляет о нативной поддержке в DirectX 12, а Питер Ширли продаёт свои книги по свободной цене (pay what you want). Похоже, что трассировка лучей наконец получила шанс быть принятой при дворе. Возможно, говорить о начале революции ещё слишком рано, но уже определённо стоит начать изучать и накапливать знания в этой области.

В этой статье мы напишем с нуля в Unity очень простой трассировщик лучей с помощью compute shaders. Скрипты мы будем писать на C#, а шейдеры — на HLSL. Весь код выложен на Bitbucket.

В результате у нас получится отрендерить нечто подобное:

Читать дальше →
Всего голосов 38: ↑38 и ↓0 +38
Просмотры16.8K
Комментарии 6

Трассировка пути на GPU в Unity — часть 2

Работа с 3D-графикойРазработка игрАлгоритмыUnity
Перевод
image

«Нет ничего хуже чёткого образа размытой концепции». – фотограф Энсел Адамс

В первой части статьи мы создали трассировщик лучей Уиттеда, способный трассировать идеальные отражения и резкие тени. Но нам не хватает эффектов нечёткости: рассеянного взаимоотражения, глянцевых отражений и мягких теней.

Основываясь на уже имеющемся у нас коде, мы итеративно решим уравнение рендеринга, сформулированное Джеймсом Каджия в 1986 году и преобразуем наш рендерер в трассировщик пути, способный передавать вышеупомянутые эффекты. Мы снова будем использовать C# для скриптов и HLSL для шейдеров. Код выложен на Bitbucket.
Читать дальше →
Всего голосов 22: ↑22 и ↓0 +22
Просмотры5.9K
Комментарии 0

Моделирование эффекта Саньяка методами геометрической оптики

COMSOLГлобальные системы позиционированияCAD/CAMКосмонавтикаЛазеры

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


Специфика моделирования ИНС заключается в том, что в области моделирования часто происходит как прямолинейное, так и вращательное движение, которое сильно влияет на работу этих систем и, соответственно, требует учета. В нашей статье мы коротко расскажем о том, что такое эффект Саньяка и как устройства на его основе можно численно исследовать в пакете COMSOL Multiphysics®.

Читать дальше →
Всего голосов 22: ↑22 и ↓0 +22
Просмотры9.6K
Комментарии 12

Трехмерный движок внутри запроса SQL

Ненормальное программированиеSQLSQLite
Tutorial
Несколько лет назад на форуме SQL.ru решили провести сравнение реализаций трассировщиков лучей на разных языках программирования. К сожалению, моя заявка не может участвовать т.к. она не выводит надпись «PIXAR», поэтому публикую ее здесь.

Для чистоты эксперимента я использовал SQLite без расширений. Оказалось, что там нет даже функции SQRT.

WITH RECURSIVE numbers AS (SELECT 0 AS n UNION ALL SELECT n+1 FROM numbers WHERE n<89),
pixels AS (SELECT rows.n as row, cols.n as col FROM numbers as rows CROSS JOIN
numbers as cols WHERE rows.n > 4 AND rows.n < 38 AND cols.n > 9 AND cols.n < 89),
rawRays AS (SELECT row, col, -0.9049 + col * 0.0065 + row * 0.0057 as x,
-0.1487 + row * -0.0171 as y, 0.6713 + col * 0.0045 + row * -0.0081 as z FROM pixels),
norms AS (SELECT row, col, x, y, z, (1 + x * x + y * y + z * z) / 2 as n FROM rawRays),
rays AS (SELECT row, col, x / n AS x, y / n AS y, z / n AS z FROM norms),
iters AS (SELECT row, col, 0 as it, 0 as v FROM rays UNION ALL
SELECT rays.row, rays.col, it + 1 AS it, v + MAX(ABS(0.7+v*x) - 0.3,
ABS(0.7+v*y) - 0.3, ABS(-1.1+v*z) - 0.3, -((0.7+v*x) * (0.7+v*x) +
(0.7+v*y) * (0.7+v*y) + (-1.1+v*z) * (-1.1+v*z)) * 1.78 + 0.28) AS v
FROM iters JOIN rays ON rays.row = iters.row AND rays.col = iters.col WHERE it < 15),
lastIters AS (SELECT it0.row, it0.col, it0.v AS v0, it1.v AS v1, it2.v AS v2
FROM iters as it0 JOIN iters AS it1 ON it0.col = it1.col AND it0.row = it1.row
JOIN iters AS it2 ON it0.col = it2.col AND it0.row = it2.row
WHERE it0.it = 15 AND it1.it = 14 AND it2.it = 13),
res AS (SELECT col, (v0 - v1) / (v1 - v2) as v FROM lastIters)
SELECT group_concat(
substr('$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/|()1{}[]?-_+~<>i!lI;:,"^. ',
round(1 + max(0, min(66, v * 67))), 1) || CASE WHEN col=88 THEN X'0A' ELSE '' END, '')
FROM res;



Здесь можно покрутить кубик

Под катом построчный разбор запроса. Как обычно, достаточно знания основ SQL и школьной математики.
Читать дальше →
Всего голосов 169: ↑168 и ↓1 +167
Просмотры37.7K
Комментарии 24

256 строчек голого C++: пишем трассировщик лучей с нуля за несколько часов

ПрограммированиеC++Работа с 3D-графикойРазработка игрМатематика
Tutorial
Публикую очередную главу из моего курса лекций по компьютерной графике (вот тут можно читать оригинал на русском, хотя английская версия новее). На сей раз тема разговора — отрисовка сцен при помощи трассировки лучей. Как обычно, я стараюсь избегать сторонних библиотек, так как это заставляет студентов заглянуть под капот.

Подобных проектов в интернете уже море, но практически все они показывают законченные программы, в которых разобраться крайне непросто. Вот, например, очень известная программа рендеринга, влезающая на визитку. Очень впечатляющий результат, однако разобраться в этом коде очень непросто. Моей целью является не показать как я могу, а детально рассказать, как подобное воспроизвести. Более того, мне кажется, что конкретно эта лекция полезна даже не столь как учебный материал по комьпютерной графике, но скорее как пособие по программированию. Я последовательно покажу, как прийти к конечному результату, начиная с самого нуля: как разложить сложную задачу на элементарно решаемые этапы.

Внимание: просто рассматривать мой код, равно как и просто читать эту статью с чашкой чая в руке, смысла не имеет. Эта статья рассчитана на то, что вы возьмётесь за клавиатуру и напишете ваш собственный движок. Он наверняка будет лучше моего. Ну или просто смените язык программирования!

Итак, сегодня я покажу, как отрисовывать подобные картинки:


Читать дальше →
Всего голосов 241: ↑241 и ↓0 +241
Просмотры112K
Комментарии 124

Рисуем мультяшный взрыв за 180 строчек голого C++

ПрограммированиеC++Разработка игрМатематикаCGI (графика)
Tutorial
Неделю назад я опубликовал очередную главу из моего курса лекций по компьютерной графике; сегодня опять возвращаемся к трассировке лучей, но на сей раз пойдём самую чуточку дальше отрисовки тривиальных сфер. Фотореалистичность мне не нужна, для мультяшных целей подобный взрыв, как мне кажется, сойдёт.

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

Итого, как в таких условиях нарисовать вот такую картинку за 180 строчек кода?


Читать дальше →
Всего голосов 204: ↑204 и ↓0 +204
Просмотры62.9K
Комментарии 58

О создании бюджетных стереоизображений на пальцах (стереограмма, анаглиф, стереоскоп)

ПрограммированиеC++Работа с 3D-графикойРазработка игрCGI (графика)
Tutorial
Пришли очередные выходные, надо написать пару десятков строк кода и нарисовать картинку, да лучше не одну. Итак, на прошлых и позапрошлых выходных я показал, как делать трассировку лучей и даже взрывать всякое. Это многих удивляет, но комьпютерная графика — очень простая вещь, пары сотен строк голого C++ вполне хватает на создание интересных картинок.

Тема сегдоняшнего разговора — бинокулярное зрение, причём сегодня даже до ста строк кода не дотянем. Умея рендерить трёхмерные сцены, было бы глупо пройти мимо стерепар, сегодня будем рисовать примерно вот такое:


Читать дальше →
Всего голосов 68: ↑68 и ↓0 +68
Просмотры16.4K
Комментарии 31

Wolfenstein 3D: трассировка лучей с помощью WebGL1

Работа с 3D-графикойРазработка игрWebGL
Перевод
image

После появления прошлым летом графических карт Nvidia RTX трассировка лучей (ray tracing) снова обрела былую популярность. За последние несколько месяцев мою ленту в Twitter заполнил бесконечный поток сравнений графики со включенным и отключенным RTX.

Полюбовавшись на такое количество красивых изображений, я захотел самостоятельно попробовать скомбинировать классический упреждающий рендерер (forward renderer) с трассировщиком лучей.

Страдая синдромом неприятия чужих разработок, я в результате создал собственный гибридный движок рендеринга на основе WebGL1. Поиграть с демо рендеринга уровня из Wolfenstein 3D со сферами (которые я использовал из-за трассировки лучей) можно здесь.
Читать дальше →
Всего голосов 50: ↑50 и ↓0 +50
Просмотры14.4K
Комментарии 11

Трассировка лучей на GPU в Unity — Часть 3

Работа с 3D-графикойРазработка игрАлгоритмыUnity
Перевод
[Первая и вторая части.]


Сегодня мы совершим большой скачок. Мы отойдём от исключительно сферических конструкций и бесконечной плоскости, которые трассировали ранее, и добавим треугольники — всю суть современной компьютерной графики, элемент, из которого состоят все виртуальные миры. Если вы хотите продолжить с того, чем мы закончили в прошлый раз, то воспользуйтесь кодом из части 2. Готовый код того, что мы будем делать сегодня, выложен здесь. Давайте приступим!

Треугольники


Треугольник — это всего лишь список трёх соединённых вершин, каждая из которых хранит свою позицию, а иногда и нормаль. Порядок обхода вершин с вашей точки обзора определяет, на что мы смотрим — на переднюю или заднюю грань треугольника. Традиционно «передом» считается порядок обхода против часовой стрелки.

Во-первых, нам нужно иметь возможность определять, пересекает ли луч треугольник, и если да, то в какой точке. Очень популярный (но совершенно точно не единственный) алгоритм для определения пересечений луча с треугольником был предложен в 1997 году джентльменами Томасом Акенин-Меллером и Беном Трембором. Подробно о нём можно прочитать в их статье «Fast, Minimum Storage Ray-Triangle Intersection» здесь.
Читать дальше →
Всего голосов 18: ↑18 и ↓0 +18
Просмотры6.8K
Комментарии 3

Мир трехмерной гиперсферы. Геодезическая трассировка лучей в замкнутой вселенной со сферической геометрией

JavaScriptМатематикаWebGLНаучно-популярноеАстрономия
Хотели посмотреть на мир глазами существа живущего в компактной замкнутой вселенной со сферической геометрией? Посмотреть на мир без ночи? Мир, где на небе виден другой полюс планеты? Мир, где нет разницы между солнечным и лунным затмением? Добро пожаловать под кат!


Читать дальше →
Всего голосов 71: ↑70 и ↓1 +69
Просмотры20.4K
Комментарии 74

Как работает рендеринг 3D-игр: растеризация и трассировка лучей

Работа с 3D-графикойРазработка игр
Перевод
image

Часть 1: обработка вершин

В этой статье мы подробнее рассмотрим то, что происходит с 3D-миром после завершения обработки всех его вершин. Нам снова придётся стряхнуть пыль с учебников по математике, освоиться в геометрии пирамид усечения и решить загадку перспектив. Также мы ненадолго погрузимся в физику трассировки лучей, освещения и материалов.

Главная тема этой статьи — важный этап рендеринга, на котором трёхмерный мир точек, отрезков и треугольников становится двухмерной сеткой разноцветных блоков. Очень часто этот процесс кажется незаметным, потому что преобразование из 3D в 2D оказывается невидимым, в отличие от процесса, описанного в предыдущей статье, где мы сразу же могли увидеть влияние вершинных шейдеров и тесселяции. Если вы пока не готовы к этому, то можете начать с нашей статьи 3D Game Rendering 101.

Подготовка к двум измерениям


Подавляющее большинство читателей читают этот веб-сайт на совершенно плоском мониторе или экране смартфона; но даже если у вас есть современная техника — изогнутый монитор, то отображаемая им картинка тоже состоит из плоской сетки разноцветных пикселей. Тем не менее, когда вы играете в новую Call of Mario: Deathduty Battleyard, изображения кажутся трёхмерными. Объекты движутся по сцене, становятся больше или меньше, приближаясь и отдаляясь от камеры.
Читать дальше →
Всего голосов 24: ↑24 и ↓0 +24
Просмотры18.3K
Комментарии 5
1