Рубрика «DirectX»

image

Часть 1: 1976-1995 годы

Часть 2: 3Dfx Voodoo

Падение 3Dfx и расцвет двух гигантов

На рубеже веков отрасль графики демонстрировала тенденции к дальнейшей консолидации.

С профессионального рынка полностью ушла iXMICRO, а NEC и Hewlett-Packard выпустили свои последние продукты — серии TE5 и VISUALIZE FX10. После продажи RealVision компания Evans & Sutherland тоже покинула отрасль, сосредоточившись на проекционных системах для планетариев.

На рынке потребительской графики ATI объявила о приобретении в феврале 2000 года ArtX Inc. за 400 миллионов долларов. ArtX разрабатывала GPU под кодовым названием Project Dolphin (который позже назвали «Flipper») для Nintendo GameCube, что значительно увеличило годовую прибыль ATI.

История видеопроцессоров, часть 3: консолидация рынка, начало эпохи конкуренции Nvidia и ATI - 2

GPU компании ATI для GameCube

Также в феврале 3dfx объявила о сокращении штата на 20%, а сразу после этого купила Gigapixel за 186 миллионов и получила её технологии рендеринга на основе тайлов.Читать полностью »

image

Часть 1. Молнии

В этой части мы рассмотрим процесс рендеринга молний в Witcher 3: Wild Hunt.

Рендеринг молний выполняется немного позже эффекта занавес дождя, но всё равно происходит в проходе прямого рендеринга. Молнии можно увидеть на этом видео:

Они очень быстро исчезают, поэтому лучше просматривать видео на скорости 0.25.

Можно увидеть, что это не статичные изображения; со временем их яркость слегка меняется.

С точки зрения нюансов рендеринга здесь есть очень много сходств с отрисовкой занавес дождя в отдалении, например, такие же состояния смешивания (аддитивное смешивание) и глубины (проверка включена, запись глубин не выполняется).
Читать полностью »

Привет! В данной статье представлена простая реализация Reflective Shadow Maps (алгоритм описан в предыдущей статье). Далее я объясню, как я это сделал и какие подводные камни были. Также будут рассмотрены некоторые возможные оптимизации.

image
Рисунок 1: Слева направо: без RSM, с RSM, разница
Читать полностью »

Написание системы попарно взаимодействующих частиц на C++ с использованием DirectX 11 - 1

На хабре уже есть много статей про использование вычислительных шейдеров с Unity, однако статью о использовании вычислительного шейдера на "чистом" Win32 API + DirectX 11 затруднительно. Однако эта задача ненамного сложнее, подробнее — под катом.

Для этого будем использовать:

  • Windows 10
  • Visual Studio 2017 Community Edition с модулем "Разработка классических приложений на C++"Читать полностью »

Точность глубины — это боль в заднице, с которой рано или поздно сталкивается любой программист графики. На эту тему написано множество статей и работ. А в разных играх и движках, и на различных платформах можно увидеть множество различных форматов и настроек depth buffer.

Преобразование глубины на GPU выглядит неочевидным из-за того, как именно оно взаимодействует с перспективной проекцией, и изучение уравнений ситуацию не проясняет. Чтобы понять как это работает, полезно нарисовать несколько картинок.

image

Эта статья разделена на 3 части:

  1. Я попытаюсь объяснить мотивацию нелинейного преобразования глубины.
  2. Я представлю несколько графиков, которые помогут понять как нелинейное преобразование глубины работает в разных ситуациях, интуитивно и визуально.
  3. Обсуждение основных выводов Tightening the Precision of Perspective Rendering [Paul Upchurch, Mathieu Desbrun (2012)], касающихся влияния ошибки округления чисел с плавающей точкой на точность глубины.

Читать полностью »

Только что пришла в голову мысль — нужно найти какое-то хобби. Иначе с катушек можно съехать. А поскольку я весьма бесполезный человек, ничего кроме как тыкать кнопки не умеющий, хобби будет такое: не реже раза в неделю устраивать стрим с написанием игрушки. После стрима запись публикуется на Хабре. (Можно попробовать постить на Хабр прям лайв, но это сильно сложней).

Написание очень feedback driven — если кому-то нужны пояснения, то я могу пояснить как смогу. Если есть предложения — постараюсь учитывать. На хабре читаются все комментарии до последнего, в других местах — как получится.

Первый блин комом вот здесь:

Под катом — тезисное описание для тех, кому справедливо влом тратить на просмотр полтора часа.

Читать полностью »

image

Сегодня стартовала GDC 2018, и первый серьезный анонс на ней сделала Microsoft совместно со своими партнерами.

В графическое API DirectX 12 будет добавлена новая важная функциональная часть — DirectX Raytracing (DXR). Под этим названием скрывается новое стандартное API для трассировки лучей под DirectX с поддержкой аппаратного и программного ускорения.

Как известно, трассировка лучей (ray tracing) долгое время считалась слабо применимой в приложениях реального времени (например, в играх) технологией в силу низкой практической производительности. Если обычный растровый рендер переводит 3D-сцену в 2D-изображение, применяя различные шейдеры и слои для эмуляции освещения, то в случае трассировки лучей (ray tracing) происходит моделирование взаимодействия отдельных лучей с поверхностями и отслеживается обратная траектория распространения луча, вследствие чего моделируются все связанные с лучами отражения и т.д. (bounces, refractions, reflections). Что ж, видимо, время наконец-то настало.

В свою очередь, NVIDIA анонсировала технологию RTX для трассировки лучей на графических процессорах Volta и выше, которая будет полностью поддерживаться DXR (подразумеваем, что в таком случае вся функциональность RTX доступна в виде графического API).

Самое главное: всё это уже можно пощупать — ссылки на скачивание пакета экспериментального SDK доступна внизу поста, примеры идут в комплекте. Вам потребуется участие в Windows Insider Program и билд Windows 10 Redstone 4 (RS4).
Читать полностью »

Готовим Physically Based Rendering + Image-based Lighting. Теория+практика. Шаг за шагом - 1Хей, привет. 2017 год на дворе. Даже простенькие мобильные и браузерные приложения начинают потихоньку рисовать физически корректное освещение. Интернет пестрит кучей статей и готовых шейдеров. И кажется, что это должно быть так просто тоже обмазаться PBR… Или нет?

В действительности же честный PBR сделать достаточно сложно, потому что легко достичь похожего результата, но сложно правильного. И в интернете полно статей, которые делают именно похожий результат, вместо правильного. Отделить мух от котлет в этом хаосе становится сложно.
Поэтому цель статьи не только разобраться, что же такое PBR и как он работает, но и научиться писать его. Как отлаживать, куда смотреть, и какие ошибки типично можно допустить.
Статья рассчитана на людей, которые в достаточной мере уже знают hlsl и неплохо знакомы с линейной алгеброй, и можете написать свой простейший неPBR Phong свет. В общем я постараюсь как можно проще объяснить, но рассчитываю на то, что некоторый опыт работы с шейдерами вы уже имеете.
Читать полностью »

По сей день в Интернете можно встретить споры о том, какой же графический API лучше: Direct3D или OpenGL? Несмотря на свой религиозный характер, такие словесные баталии приносят полезный результат в виде неплохих исторических обзоров развития аппаратно-ускоренной графики.

image

Целью данного поста является перевод одного из таких экскурсов в историю, написанного Джейсоном МакКессоном (Jason L. McKesson) в ответ на вопрос «Почему разработчики игр предпочитают Windows». Этот текст вряд ли отвечает на поставленный вопрос, но историю развития и противостояния двух самых популярных графических API он описывает очень красочно и довольно подробно, поэтому в переводе я сохранил авторскую разметку. Текст написан в середине 2011 года и охватывает промежуток времени, начинающийся незадолго до появления Direct3D и до момента написания. Автор оригинального текста является опытным разработчиком игр, активным участником StackOverflow и создателем обширного учебника о современном программировании 3D-графики. Итак, предоставим слово Джейсону.
Читать полностью »

Input lag во время рендеринга и как его побеждать - 1Привет всем.
Многие из вас знакомы с лагом ввода. Это бывает, когда вас в очередной раз убивают в компьютерной игре, и вы кричите: «Ну я же нажал блок/атаку/уворот». Ну а затем джойстик летит в стену. Знакомо? Происходит это потому, что между нажатием клавиш и появлением результата на экране проходит значительное время. Фактически, когда вы смотрите в экран — вы видите прошлое состояние, которое может абсолютно не отражать действительность.
Если вы разрабатываете собственную игру, или вообще занимаетесь рендером, и хотите уменьшить задержки ввода, то крайне советую заглянуть под кат.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js