Рубрика «OpenGL» - 3

Весь мир в кармане или как сделать мобильную карту за пару дней - 1

В прошлой статье я рассказывал о том, как можно быстро сделать Web-звонилку. А что если поставить более амбициозную задачу — собрать своё собственное приложение с картой, без рекламы и с блэк-джеком? А если всего за пару дней?

Давайте сделаем это! Прошу под кат.

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

image

Это вторая статья из серии «3D-карты конца 90-х, на которых работал Quake». В первой части мы рассмотрели Rendition Vérité 1000 конца 1996 года и специальный порт игры для неё под названием vQuake. Rendition удалось победить всех на рынке Quake. На короткий промежуток времени она оставалась единственной платой, способной запускать блокбастер id Software с аппаратным ускорением.

Но всё изменилось в январе 1997 года, когда id Software выпустила новую версию Quake под названием GLQuake. Так как порт был создан с помощью miniGL (подмножества стандарта OpenGL 1.1), любой производитель аппаратных ускорителей мог написать драйвера miniGL и принять участие в гонке 3D-карт. С этого момента возможность конкуренции была открыта каждому. Цель заключалась в генерации как можно большего количества кадров в секунду. Наградой была слава и деньги покупателей. Вкратце изучив историю, можно понять, что два авторитета того времени без сомнений считали царями горы двух производителей.

Пока что в этом нет никаких сомнений: миром Quake правит Voodoo. А так как Quake правит миром игр, то покупка 3Dfx Voodoo почти неизбежна для геймеров.

— Tom's Hardware, 30 ноября 1997 года

3DFX Voodoo 1
— Эталон, по которому меряются все остальные карты.

— Файл .plan Джона Кармака. 12 февраля 1998 года[2]

Только взглянув на спецификации[3], в которых заявлялось о скорости заполнения в 50 мегапикселей/с, я сразу же захотел изучить эту карту и понять, что же сделала 3dfx, чтобы создать столько мощный продукт.
Читать полностью »

Сегодня я покажу, как открыть открыть окно и создать контекст OpenGL. Это на удивление непростая задача, OpenGL до сих пор не имеет официальных кроссплатформенных средств создания контекста, поэтому будем опираться на сторонние библиотеки (в данном случае GLFW и glad). В интернете уже очень много подобных hello world, но всё, что я видел, мне не нравится: или оно очень навороченное, или картинки в примерах уж очень примитивные (либо и то, и другое!). Большое спасибо всем авторам, но я выкачу очередной туториал :)

Сегодня мы отрисуем вот такое:

hellOGL: OpenGL hello world - 1
Читать полностью »

Настало время как я разобрался с freetype2. Теперь я хочу сделать так, чтобы мой код стал доступен нуждающимся. Потому как обдумывать, как работать с библиотекой, не всегда есть время. Я хочу показать код работы именно с freetype и немного с opengl. Немного о коде. Я не могу создавать сложный код. У меня все получается как-то по-простому. Я видел несколько фрагментов кода, работающего с freetype2, и никак не мог понять, как он на самом деле работает. Уж очень сложный код создавали авторы. Я надеюсь, что мой простой код вам понравиться. После прочтения этой статьи можно будет создать многострочный текст и отобразить одной текстурой на экран.
Читать полностью »

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

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

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

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

image

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

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

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

Дорабатывая шейдер для готовящейся к выходу игры, я столкнулся с неприятным артефактом, который проявляется только при включении аппаратного MSAA. На скриншоте ландшафта видно несколько чересчур ярких пикселей. Значения цвета в нескольких из них было настолько велико, что после наложения блума они превратились в разноцветных «призраков».
image

Предлагаю вашему вниманию перевод статьи, которая детально объясняет причину этого феномена и способ борьбы с ним.
Читать полностью »

imageВсем привет!

В мире существует огромное количество приложений на OpenGL, и, кажется, Apple c этим не вполне согласна. Начиная с iOS 12 и MacOS Mojave, OpenGL переведен в статус устаревшего. Мы интегрировали Apple Metal в MAPS.ME и готовы поделиться своим опытом и результатами. Расскажем, как рефакторили наш графический движок, с какими трудностями пришлось столкнуться и, самое главное, сколько у нас теперь FPS.

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

OGL3
В предыдущем уроке мы подготовили нашу модель PBR для работы вместе с методом IBL – для этого нам потребовалось заранее подготовить карту облученности, которая описывает диффузную часть непрямого освещения. В этом уроке мы обратим внимание на вторую часть выражения отражающей способности – зеркальную:

$L_o(p,omega_o)=intlimits_{Omega} (k_dfrac{c}{pi} + k_sfrac{DFG}{4(omega_o cdot n)(omega_i cdot n)}) L_i(p,omega_i) n cdot omega_i domega_i$

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

Портирование Quake3 - 1

В операционной системе Embox (разработчиком которой я являюсь) какое-то время назад появилась поддержка OpenGL, но толковой проверки работоспособности не было, только отрисовка сцен с несколькими графическими примитивами.

Я никогда особо не интересовался геймдевом, хотя, само собой, игры мне нравятся, и решил — вот хороший способ развлечься, а заодно проверить OpenGL и посмотреть, как игры взаимодействуют с ОС.

В этой статье я расскажу о том, как собирал и запускал Quake3 на Embox.

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


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