steps3D - Графика, ООП
8 октября 2024

Пара полезных ссылок - Memory types of discrete GPUs и Understanding GPU caches. Полезны для понимания отличий памяти GPU и особенностей работы кэшей на GPU.

И еще пара видео с CppCon - о том как избегать использования виртуальных методов и почему не всегда стоит их избегать - Using Modern C++ to Eliminate Virtual Functions и Optimizing Away C++ Virtual Functions May Be Pointless.



25 сентября 2024

Новая статья про расширения Vulkan - Расширение VK_EXT_dynamic_rendering.



12 сентября 2024

Всех нас с днем программиста !



9 сентября 2024

Сегодня 9 сентября, а значит сегодня день тестировщика ! С праздником вас всех, куда бы мы без вас.

Наткнулся сегодня на Хабре на статью со следующим названием - Профессиональная разработка на Brainfuck. И в догонку пара онлайн-IDE для Brainfuck - Brainfuck IDE и Online Brainfuck compiler.



29 августа 2024

Новая статья - Расширение VK_KHR_buffer_device_address или для буферов наконец завезли адреса.

Еще полезная ссылка - WebGPU Unleashed: A Practical Tutorial.

Презентация от Guerrilla Games Synthesizing Realistic Clouds for Video Games.

Две интересные статьи от NVidia про оптимизацию - Improving GPU Performance by Reducing Instruction Cache Misses и Boosting Application Performance with GPU Memory Access Tuning.



12 августа 2024

Еще одна статья по Vulkan - Механизм запросов (queries) в Vulkan. Примеры классов уже выложены на https://github.com/steps3d/vulkan-with-classes.git.



8 августа 2024

SIGGRAPH 2024 Links.

Готовлю ряд статей по расширениям Vulkan, текст пока не готов полностью, но весь код я выкладываю на https://github.com/steps3d/vulkan-with-classes.git уже сейчас. Комментарии и вопросы приветствуются.

Очень жизненно и актуально -



26 июля 2024

Сегодня последняя пятница июля - а значит всех с днем Системного Администратора

Сделал небольшую статью с разбором выравнивания буферов (UBO, SSBO) в Vulkan.

Начал сильно править свою библиотеку для Vulkan, возможно в какой-то момент буду просто делать новую. Пока столкнулся с ситуацией, когда non-copieable, moveable классы не удобны и хочется иметь объекты, которые могут быть shared. Начал постепенно переводить классы на такой подход. В ближайшее время планируется несколько статей по расширениям Vulkan.



20 июля 2024

Выкладываю статью, которая на самом деле была довольно давно написана, потом после просмотра видео Niagara я ее дорабатывал - Mesh-шейдеры и расширение NV_mesh_shader. Эта статья только по OpenGL, для Vulkan планирую отдельную статью.

Вот уже много лет у меня есть несколько тулов на компе, которые все время со мной, установка винды всегда начинается с них. В первую очередь это Far - на самом деле реально тяжело на Linux без него (знаю, что есть порт, но его надо руками собирать). Огромное количество полезных функций, кроме того можно самому писать плагины на Lua.

Еще одним таким любимым тулом является Notepad++. Просто потрясающий редактор, к тому же очень быстро работает. Хотя в последнее время стараюсь осваивать VS Code.

Еще одним любимым тулом является Meld - потрясающий визуальный diff/merge.

Также уже много лет пользуюсь Firefox и пока что слезать с него не собираюсь.



8 июля 2024

Продолжая ссылки по С++.

Опасность устарела: несколько важных нюансов в новых стандартах C++ - про undefined behaviour от лаборатории Касперского. Очень интересно и поучительно, как компилятор может совершенно законно "оптимизировать" код. У меня знакомый проверил пример с поиском в таблице (с выходом за ее границу) - в зависимости от опций оптимизации получается много интересных результатов, причем падение - только в одном случае.

Нативная рефлексия в C++ уже близко - есть надежда что в С++ 26 появится нативная поддержка метаинформации. Выглядит все очень здорово, сразу пропадает куча традиционного костыльного кода типа сериализации, экспорт в скриптовые языки. Да и чисто шаблонный код в ряде случаев можно сделать гораздо проще и читабельнее за счет метаинформации.



5 июня 2024

Давно хотел поделиться очень хорошей статьей - Ода хейта C++. Я сам на С++ пишу больше 30 лет, но вот ряд мест в нем, как и то, куда он развивается, вызывают очень негативные эмоции. В частности есть ощущение, что метаинформацию ряд лиц из комитета не переваривают вообще и что почти все развитие идет в сторону шаблонов, причем делая сам язык заметно сложнее.

Как-то так получилось, что только недавно узнал про серию видео от Арсения Копулькина Niagara. Очень интересно разбирает основы Vulkan и много про оптимизацию рендеринга.

И статья, которую давно собирался выложить, Vulkan с классами - пишем deferred renderer.



9 мая 2024

С днем победы ! На мой взгляд это священный праздник для всех нас.



24 апреля 2024

Новая статья - Анимация системы частиц при помощи вычислительных шейдеров в Vulkan.

Не могу не поделиться -



8 апреля 2024

Не могу не поделиться -



28 марта 2024

С днем рождения меня !

По случаю дня рождения статья про вихревой шум (curl noise).



20 марта 2024

Я уже выкладывал свою лекцию по Data Oriented Design. И вот еще хочу поделиться парой ресурсов по этой теме.

Entity Component Systems & Data Oriented Design от Aras Pranckevičius.

Хорошая подборка ресурсов по DOD



14 марта 2024

Сегодня (03.14.2024) международный день числа пи !

Сборник вредных советов от Андрея Карпова - 60 антипаттернов для С++ программиста. Если вы пишете на С++, то очень советую изучить.

Давно хотел освоить Blender - хочу попробовать по урокам от Blender Guru.



8 марта 2024

С международным женским днем !



23 февраля 2024



11 февраля 2024

Новая статья - Хэш-таблицы на GPU (CUDA и GLSL) .

Найден способ сломать Windows 11 — выставить системную дату и время на 23:59 31 декабря 9999 года и подождать. И убогая мелкомягкая поделка дохнет за несколько минут. Причем лечится только переустановкой.



25 января 2024

Сегодня Татьянин день, так что всех причастных с праздником и МГУ с очередной годовщиной !

Кроме того, сегодня также день рождения Владимира Высоцкого.

Tileable Volume Noise

BlueNoiseGenerator от Bart Wronski

За отказ от С++ совсем мало дают, зато за доброту к QA целых +250 :)



14 января 2024

С Новым Старым Годом !

Очень интересное видео по С++ - C++ Features You Might Not Know.

Интересная статья про ray marching - Painting with Math: A gentle study of raymarching.

И новая статья - Реализация эффекта motion blur.



3 декабря 2023

Ежегодно 3 декабря отмечается Всемирный день компьютерной 3D-графики (World Computer Graphics Day). Идея праздника была выдвинута в 1998 году и принадлежит американской компании Alias. Так что всех с праздником !



24 ноября 2023

Сегодня сайту steps3d.narod.ru исполняется ровно 20 лет - первая публикация на сайте была 24 ноября 2003 года !!! В честь юбилея новая статья - Иерархический z-буфер: создание и использование для определения видимости.

Также решил выложить свою лекцию по Data Oriented Design которую я читал несколько лет назад (еще до COVID) на своей прежней работе.

И одна полезная ссылка - книга Physically Based Rendering в онлайн-доступе.



12 ноября 2023

Нашел несколько полезных ссылок по тому, как работает графический конвейер с кучей ссылок. RenderHell, Render Hell – Book I и Render Hell – Book II.

Также на github в python-коде поправил ошибку загрузки dds-файлов.



15 октября 2023

Наконец посмотрел фильм "Вызов". Мне предыдущие два фильма про космос ("Время первых" и "Салют-7") очень понравились. Но тут фильм просто потрясающий - великолепно снят, интересный сюжет, потрясающие съемки на МКС. На мой взгляд "Гравитация" нервно курит в сторонке. Теперь хочу посмотреть на большом экране.

Выкладываю следующую статью про программирование Vulkan при помощи классов - работа с текстурами. Обновил соответствующий репозиторий на github.



20 сентября 2023

В этом году не смог поздравить с днем программиста (13 сентября), днем тестировщика (9 сентября) и всероссийским днем трезвости (11 сентября), не говоря уже о дне пирата (19 сентября). Поэтому поздравляю сразу скопом со всеми этими праздниками.

В ближайшее время готовится продолжение серии статей про Vulkan и статья о mesh-шейдерах в OpenGL.

И еще - приближается 20-летие сайта steps3d.narod.ru !



1 сентября 2023

Обычно когда начинаю занятия в начале сентября, то рассказываю шутку о том, что поздравлять студентов и преподавателей с 1 сентября это то же самое, что поздравлять лошадь с началом весенне-полевых работ :)

Тем не менее, поздравляю всех с днем знаний 1 сентября и небольшая злобная картинка на тему -



23 августа 2023

Место, где скоро будут материалы с SIGGRAPH 2023.

Недавно начал читать книгу "Параллельное программирование на C++ в действии. Практика разработки многопоточных программ" от Энтони Уильямса и очень сильно пожалел, что не прочел ее раньше. Очень хороший рассказ про параллельность вообще и ее применение в С++ с описаниями необходимых классов из стандартной библиотеки.



13 августа 2023

Выкладываю следующую статью про программирование Vulkan при помощи классов. Обновил соответствующий репозиторий на github.



28 июля 2023

Последняя пятница июля - день системного администратора. Так что с праздником. И, как говорится, сисадмин шоколадки не пьет :)



23 июля 2023

Новая статья об indirect-рендеринге - как в multi-draw-indirect брать drawCount прямо с GPU, а не передавать его из CPU. Очень полезно когда список выводимых объектов строится прямо на GPU и их число заранее не известно.



9 июля 2023

Выложили в открытый доступ исходники первого Far Cry.

Нашел интересную презентацию по рендерингу в Doom Eternal.



30 июня 2023

Новая статья - Vulkan with classes. Это продолжение серии статей про Vulkan, но в этой серии будут с использоваться различные С++ wrapper'ы для Vulkan, для облегчения написания кода. Весь код для этой серии выкладывается на gitbub. Буду благодарен за обратную связь - что понравилось, что не понравилось, может быть есть какие-то предложения по улучшению.



12 июня 2023

В честь дня России выкладываю новую статью - Битоническая сортировка при помощи вычислительных шейдеров. В ней рассматривается эффективная сортировка массива при помощи вычислительных шейдеров с использованием разделяемой памяти.

Посмотрел презентации по создании процедурных облаков в Horizon - очень понравилось, попробую повторить и сделать статью на сайт.



17 мая 2023

С дочкой успешно прошли Horizon: Zero Dawn и сейчас проходим Horizon: Forbidden West. Очень красиво сделано, никак не ожидал такого от игры где с луком охотишься на машины. Стало интересно как игры делались и нашел ряд очень интересный презентаций о них. Так что ниже идет идут ссылки на презентации по играм.

GPU-based Procedural Placementin Horizon Zero Dawn

Decima: Advances in Lighing and AA

Nubis: Authoring Real-Time Volumetric Cloudscapes with the Decima Engine

Decima Engine: Visibility in Horizon Zero Dawn

Nubis: Realtime Volumetric Cloudscapes In A Nutshell

Adventures with Deferred Texturing in Horizon Forbidden West

Decima Engine: Advances in Lighting and AA

GPU-Based Procedural Placement in Horizon Zero Dawn

The Vegetation of Horizon Zero Dawn



9 мая 2023

С Днем Победы !

Я ранее выкладывал ссылку на видео по рендерингу дождя для UE4. Сейчас я выкладываю ссылку на реализацию указанных эффектов на GLSL в виде отдельных шейдеров.



12 апреля 2023

С днем космонавтики !

И несколько ссылок, не имеющих отношения к космонавтике. Недавно заинтересовался такой штукой как Visibility Buffer. Штука действительно очень интересная и присутствует в Nanite. В будущем планирую сделать статью на сайт по этой теме.

А пока - несколько ссылок по этой теме.

Пожалуй первая публикация по этой теме - The Visibility Buffer: A Cache-Friendly Approach to Deferred Shading.

Еще статья от Вольфганга Энгеля Triangle Visibility Buffer. A Rendering Architecture for high-resolution Displays and Console Games.

И самая свежая статья по теме от filmicworlds.com Visibility Buffer Rendering with Material Graphs.



1 апреля 2023

С 1 апреля !

Выкладываю новую статью - Рендеринг полос дождя. О том, как при помощи геометрического шейдера можно генерировать дождь.



28 марта 2023

С днем рождения меня !



14 марта 2023

Сегодня день Пи. Всех с праздником !



8 марта 2023

Всех с праздником !

Исправил ошибку с с загрузкой DDS в python-code.



5 марта 2023

Выкладываю новую статью - Непериодическое повторение текстуры. Рассматриваются различные способы повторения текстуры чтобы извежать хорошо заметной периодичности. Примеры кода есть в репозитории в каталое python-code.



23 февраля 2023



17 февраля 2023

Оказывается ровно 24 года назад был изготовлен мастер-диск Heroes of Might and Magic III. В свое время много сил и времени было отдано третьим героям и на мой взгляд именно они являются лучшими.

Небольшой рассказ про их историю с кучей интересных деталей - C Днём Рождения, Герои Меча и Магии 3.

Нашел интересный видео-урок по созданию эффекта дождя на поверхности для UE4. Попробую переписать это на GLSL и рассказать здесь.



11 февраля 2023

Новая статья - Проективное текстурирование. Рассматривается как можно текстурировать поверхности, когда не заданы текстурные координаты.

Была исправлена небольшая но гадкая опечатка в Mesh.py - неверно считался AABB для создаваемого объекта.

Большая просьба хотелось бы получить обратную связь на статьи по Vulkan и пользуется ли кто-то питоновский код из репозитория.



18 января 2023

Следующая статья по Vulkan - Библиотека VMA (Vulkan Memory Allocator) .

Она посвящена использованию библиотеки VMA, позволяющей упростить выделение памяти GPU и преодолеть ограничение на число выделений памяти в Vulkan.



9 января 2023

А вот и первая статья в этом году - Скелетная анимация с ASSIMP. Хоть она и не по Vulkan я надеюсь вам понравится.



31 декабря 2022

Всех с наступающим 2023 годом !

В этом году было очень много всего, год был тяжелым, но важным для всей страны.

На этот год у меня был план по числу статей и обновлений на сайт и его впервые за последние несколько лет удалось полностью выполнить. Хочется теперь в наступающем году не уронить планку - будет много новых статей по самым разным темам.



25 декабря 2022

Обещанная в этом году лекция по Vulkan - рендеринг треугольника во внеэкранный буфер.

В этой лекции рассматривается рендеринг треугольника, но не в окно, а во внеэкранный буфер. Это связано с тем, что процесс рендеринга в окно в Vulkan гораздо сложнее, чем в OpenGL (но и дает больше возможностей для управления процессом показа)

В новом году будут новые лекции, в первую очередь по Vulkan. Но там будет рассматриваться уже использование различных объектов для "заворачивания" сущностей Vulkan. Это позволяет сделать программу гораздо компактнее и понятней. Кроме Vulkan есть планы на ряд других лекций.



18 декабря 2022

Выкладываю ссылку на еще одну подборку лекций по Vulkan.

До Нового Года будет еще одна лекция по Vulkan. Это будет рендеринг треугольника во внеэкранный буфер.

Хотелось бы получить какие-то отзывы по лекциям по Vulkan - что нравится,что нет, насколько полезны.



3 декабря 2022

Сегодня 3 декабря - 3D Day. Поздравляю всех причастных и интересующихся !

Выкладываю ссылку на подборку лекций по Vulkan. Очень хорошее объяснение ряда деталей Vulkan.



20 ноября 2022

Я уже выкладывал ссылку на книгу Федора Пикуса по идиомам и паттернам С++. А сегодня две ссылки на его лекцию Concurrency in C++: part 1 и Concurrency in C++: part 2.

А также еще одна интересная ссылка на реализацию битонической сортировки на вычислительном шейдере в Vulkan.



13 ноября 2022

Новая (правда небольшая) статья по Vulkan - Особенности систем координат в Vulkan, отличия от OpenGL.



30 октября 2022

Почитал несколько статей по рендерингу каустики и выкладываю свой код.

Посмотрел на днях фильм "Лучшие в аду" - очень понравился, так что рекомендую.

Готовлю еще несколько статей по Vulkan, к последней выложил отсутствовавший архив с кодом.



29 сентября 2022

Выкладываю новую статью о Vulkan - Часть 4. Шейдеры, pipeline layout, compute pipeline.



25 сентября 2022

Хочу поделиться парой интересных ссылок - интересная статья о дисеринге - Дизерпанк — статья о дизеринге изображений, которую мне хотелось бы прочитать. Возможно позже я сделаю свою реализацию описанных алгоритмов.

В открытый доступ выложил классную книгу - Game Programming Patterns. Это книга о паттернах проектирования применительно к играм. Книга на английском.



19 сентября 2022

19 сентября - международный пиратский день (точнее день "говорим как пираты"). Всех пользователей торрентов с праздником !!!



13 сентября 2022

Сегодня 256-рой день в году - день программиста !!! Всех с профессиональным праздником !



9 сентября 2022

День тестировщика. Всех тестировщиков с праздником. Больше тестов хороших и разных !



5 сентября 2022

Новая статья - Трехмерные SDF и операции над ними.



21 августа 2022

Ряд правок примеров на python - добавлена загрузка GLTF, классы VertexFormat и Renderpass. Класс VertexFormat фактические заворачивает в себя настройки буферов и содержит Vertex ArrayObject, файл two.py - пример использования. Класс Renderpass это обертка целого прохода рендеринга (в том числе и во фреймбуфер), включая очистку, bind для используемых текстур и шейдерной программы. Буду рад любым отзывам по полезности и вообще использованию python для на работы на OpenGL.

Продолжаю написание текстов по Vulkan и скоро будет следующий.



31 июля 2022

Сегодня день Военно-Морского Флота. Всех с праздником !

Выложил третью статью про Vulkan.



26 июня 2022

Выложил вторую статью про Vulkan.



17 июня 2022

Наконец-то убогий мелкомягикй браузер окончательно сдох !

Также несколько небольших правок в репозитории. Наиболее серьезная - в оконных кассах изменены методы для расчета модельно-видовой матрицы и матрицы проектирования - теперь матрица проектирование это чистый glm.perspective, а glm.lookAt входит в состав модельно-видовой матрицы.



3 июня 2022

Выложил первую статью про Vulkan. Планируется большая серия статей по Vulkan. Причем вначале мы будем идти прямо по raw API, а затем переключимся на использование helper-классов, поскольку без них код даже для рендеринга треугольника получается очень громоздкий.

Первое время буду выкладывать архивы с исходным кодом, потом перенесу код на github.



9 мая 2022

В примерах на python добавлен рендеринг clear coat - поверхности со слоем лака поверх основного материала.

Также была исправлена ошибка на питоне по загрузке некоторых палитровых текстур. Добавлен в код на С++ класс Renderpass, заворачивающий сразу много параметров в одну простую операцию.

Некоторое время назад я купил Far Cry 6 и все никак не мог запустить - игра требовала не просто мягкие окошки 10, а установленных определенных обновлений - без них игра просто не запускалась с довольно бредовым сообщением. Все-таки накатил эти обновления и начал проходить. Очень красиво и бредово. Судя по всему просто переложение Far Cry 5 в другой сеттинг. Но побегать и пострелять сгодится. Ну а дрессированный крокодил, бросающийся на противников - это просто мега-круто !



9 мая 2022

Всех с праздником Великой Победы !

Новая статья - Рендеринг кожи.



19 апреля 2022

Уже очень давно хотел написать статью про Physically Based Rendering и вот наконец могу ее выложить - Physically Based Rendering. Планирую в будущем ее дополнить статьей по IBL PBR.



11 апреля 2022

Выкладываю новую статью - Что такое гамма ?. В ней рассматривается что такое гамма, гамма-коррекция и эачем все это нужно.



28 марта 2022

В свой день рождения выкладываю новую статью - Текстуры движения. В ней рассматривается как можно анимировать произвольную текстуру при помощи так называемой текстуры движения (flow texture). Весь код к ней находится на github.



11 марта 2022

Много мелких правок кода на python. Добавлен класс Font.py для рендеринга SDF-шрифтов и добавлен пример на использование такого шрифта (перевод соответствующего кода с С++). Добавлен маленький пример на python выводящий анимированный четырехмерный куб.

Ряд старых примеров кода, живших на Google Code, переехали на github - https://github.com/steps3d/old-graphics-code. Код старый и местами может не собираться. Буду благодарен за любые замечания и исправления.

Обратите внимание там есть старые примеры кода на Vulkan https://github.com/steps3d/vulkan-samples. Я готовлю несколько статей по Vulkan, но для них код будет перерабатываться и скорее всего это будет новый репозиторий. Все примеры собираются под Windows и Linux.



20 декабря 2021

Новая статья - Detail normal maps. В ней рассматривается как накладывать друг на друга две (в перспективе и больше) карты нормалей - например, наложение карты детализации на основную.



3 декабря 2021

Сегодня 3 декабря - 3D Day ! Все причастных и интересующихся праздником !



2 декабря 2021

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

По ряду примеров, сделанных ранее, будут статьи и сейчас я выкладываю первую Using modern OpenGL with python. Там рассматривается использование современного (3.х и старше) OpenGL вместе с python 3, есть ряд примеров кода и свои helper-классы. Так что в следующих статьях код будет не всегда на С++, но и на python.

Слегка обновил страничку по инструментам - внезапно очень понравился VS Code - никогда не думал, что буду хвалить что-то от мелкомягих, но редактор очень хорош - кроссплатформа, куча плагинов.

Уже не первый год постоянно использую Meld - визуальный diff/merge. Изначально он был только под Linux, но сейчас есть и виндовая версия. Очень удобный инструмент, когда надо сравнить два огромных каталога со слегка отличающимися файлами. Удобно также, что можно не только переносить файлы и изменения, но и редактировать код прямо на месте.

Много лет писал код на python исключительно на Notepad++, сейчас начал все больше использовать PyCharm.

По совету бывших (увы) коллег из Cadence попробовал в качестве редактора векторной графики Inkscape - после ряда видеоуроков удалось разобраться в нем и я собираюсь полностью перейти на него (с Visio). Хотя интерфейс у него явно не очевидный и требует привыкания.

У меня уже сейчас готова еще пара статей и есть планы еще на несколько, так что я надеюсь, что обновления на сайте будут появляться чаще.



9 марта 2020

К сожалению довольно редко получается писать. Хотя на самом деле почти завершена работа по второй части книги и и продумывается третья часть (Vulkan и CUDA).

Вышла книга по работе с CUDA на Python, которую я переводил для издательства ДМК Пресс.

PyCUDA

Сейчас читаю очень интересную книгу по паттернам в современном С++, огромным плюсом книги является то, что в ней хорошо разобраны такие вещи как RAII, SFINAE, CRTP и т.п.

C++ Patterns

С огромным удовольствием прошел второе дополнение к игре Metro:Exodus - просто великолепно. Хочется пройти еще раз более внимательно. Но хочется больше открытости, а не рельсы.



28 июля 2019

Наконец вышла первая часть книги -

По этой ссылке можно ознакомиться с оглавлением книги.

Весь код к книге доступен на github. Для сборки используется cmake, но есть и обычные make-скрипты для Linux и форточек. Буду очень благодарен за комментарии и найденные ошибки. В ряде последних статей использовалась кодовая база именно для этой книги.

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



1 июля 2019

Выкладываю последние две лекции по CUDA в этом году - лекция 7, лекция 8.

Наткнулся на заметку о легендарном в компьютерной граифке чайнике - Чайник из Юты: история эталонной 3D-модели.

Первая часть уже готова и вот-вот выйдет - вот информация на сайте издательства .

По этой ссылке можно ознакомиться с оглавлением книги.

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



18 апреля 2019

Выкладываю следующие две лекции по CUDA в этом году - лекция 5, лекция 6.



24 марта 2019

Прошло много времени с последнего обновления :))

Выкладываю сразу 4 лекции по CUDA в этом году - лекция 1, лекция 2, лекция 3 и лекция 4.

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

Еще есть очень большая глава по освещению и физически-корректным моделям освещения. И рассматривается трассировка лучей и OpenGL 3.3 вместе с рядом спецэффектов.

В следующую часть войдут сложные эффекты, OpenGL 4.5, некоторые приемы оптимизации, сплайны и многое другое.

Исполнилось 12 лет с выхода моей любимой игры - STALKER: Shadow Of Chernobyl. регулярно к ней возвращаюсь. Сейчас играю в Metro: Exodus. Графика офигенная. Очень нравится свобода перемещения. Они по факту возвращаются в истокам - сталкеру. Осталось выбросить всю эту бредятину про метро и будет супер. Ну и выбросить всякие либеральные идеи - вроде той, что в Долине.



30 апреля 2018

Выкладываю восьмую лекцию по CUDA в этом году - брать здесь.

Также новая статья - Order-Independent Transparency в OpenGL.



15 апреля 2018

Выкладываю седьмую лекцию по CUDA в этом году - брать здесь.

Набор презентаций от Khronos на GDC 2018 - брать здесь.

Также новая статья - Расширение ARB_bindless_texture.

Картинка для новой книги (работа почти завершена, идет вычитка глав) - трехмерный фрактал, трассировка в реальном времени прямо в фрагментном шейдере.

3d fractal



6 апреля 2018

Выкладываю шестую лекцию по CUDA в этом году - брать здесь.

Интересный сайт по шейдерам, включая шумовую функцию на GLSL.

Очень порадовало видео, про выступающих против оружия в США. Где к группе выступающих против штурмовых винтовок обратились с просьбой объяснить, что же такое штурмовые винтовки. Ответа как вы понимаете, так и не последовало.

Наводит на мысль, что все эти хоплофобы просто такие же больные на голову, как и антипрививочники. Ни те, ни другие совершенно не разбираются в предмете, против которого выступают. И не хотят разбираться - все же ясно говорят по телевизору (пишут в интернете) :)) А телевидение заботливо фильтрует подаваемую информацию - сомневаюсь, что много где рассказали о случае, когда преступника, ворвавшегося в школу и ранившего двоих учеников, застрелил один из сотрудников школы.



1 апреля 2018

Выкладываю пятую лекцию по CUDA в этом году - брать здесь.

Очень интересная ссылка по трехмерные фракталы с кучей картинок.



22 марта 2018

Выкладываю четвертую лекцию по CUDA в этом году - брать здесь.

Полезный тул (если кто не не знает) - cubemap filtering tool. Также к нему есть GUI - cmftStudio.



14 марта 2018

Сегодня - день Пи - 3.14. Так что поздравляю всех.

Выкладываю третью лекцию по CUDA в этом году - брать здесь.

Наткнулся на пару статей с примерами красивых L-систем - первая и вторая.

Еще одна интересная презентация от EA - Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite.



8 марта 2018

Поздравляю прекрасную половину с 8 марта !

8 march

Выкладываю вторую лекцию по CUDA в этом году - брать здесь.

И еще одна интересная презентация от Frostbite - Physically Based and Unified Volumetric Rendering in Frostbite.

Понадобилось построить серию графиков и диаграмм и открыл для себя библиотеку myplotlib для Python. Мне очень понравилось - всего несколько строк на Python позволяют строить красивые графики.

Еще одна приятная новость - Khronos Group объявляет о релизе Vulkan® 1.1 и SPIR-V 1.3.



28 февраля 2018

Выкладываю первую лекцию по CUDA в этом году - брать здесь.

И презентация о рендеринге в Mirrors Edge.



24 февраля 2018

Еще одна статья по CUDA - Cooperative groups в CUDA. На самом деле очень интересная новая возможность в CUDA 9, новый способ организации взаимодействия нитей, вплоть до взаимодействия между нитями одной сетки или даже нескольких сеток, выполняемых на разных GPU.



12 февраля 2018

Еще одна статья по CUDA - Некоторые возможности CUDA, часть 2.

С 26 февраля начинаю читать спецкурс по CUDA на ВМК МГУ (понедельник, 16-20, ауд 524), будет много нового по сравнению с прошлым годом.

Очень интересная статья о работе памяти - What Every Programmer Should Know About Memory. К сожалению написана в 2007 году и когда я показал ее одному из своих коллег-электронщиков, ряд положений были безжалостно раскритикованы как неверные или устаревшие. Но это касается в основном самого низкого уровня - устройство ячеек памяти, refresh и т.п. А в целом очень много интересной и полезной информации, важной для оптимизации работы с памятью.

На днях вступил в ожесточенный спор с коллегой насчет плоского дизайна - в первую очередь в Windows 10. Мне было очень интересно неужели умному, образованному человеку может нравится этот шлак.

Моя позиция на тему плоского дизайна - это убожество, дизайн для детей-дебилов, дизайн для даунов.

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

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

И это вполне логично - фактически минимализм - это просто один из инструментов для создания UI. И его задача - бороться с усложнением и утяжелением интерфейса (что к сожалению часто встречается). А в том, что мы видим сейчас происходит абсолютизация этого принципа - он доводится до абсолюта, фактически мы получаем Reductio ad absurdum. И естественно это делается за счет других инструментов.

Грубо говоря маятник искусственно тянут в сторону минимализма. И понятно чем это закончится - маятник пойдет обратно и мы увидим полную противоположность минимализма. К сожалению в силу того, что эта противоположность будет сильно гипертрофирована мы опять получим плохие интерфейсы.



11 февраля 2018

Выкладываю очередную статью по CUDA - Некоторые возможности CUDA, часть 1.

Также были исправлены опечатки в ряде предыдущих статей по CUDA и было внесено исправление в статью о библиотеке thrust.

Скоро снова начну курс по CUDA на ВМК МГУ, будут многочисленные дополнения по сравнению со старым. Как всегда, лекции буду выкладывать на сайт.



14 января 2018

Вот и наступил Новый 2018 год ! Как вы уже наверное заметили, я начал небольшую серию статей по CUDA. Это небольшие статьи по различным аспектам CUDA, появившимся в последние несколько нет, которые не вошли в курс по CUDA (ну и в мою книгу по CUDA). Планируется еще несколько таких статей - своего рода разминка перед чтением курса в этом году. Я собираюсь его заметно обновить и это как небольшая разминка.

Вот очередная статья по CUDA - Динамический параллелизм в CUDA.

Также я хотел бы поделиться несколькими интересными на мой взгляд ссылками - Статья о рендеринге в DOOM 4, Презентация Tiago Sousa и Jean Geffroy о рендеринге в DOOM 4. Еще одна интересная ссылка - How Unreal Renders a frame.



24 декабря 2017

Выложил новую статью по CUDA - Команда Shuffle и ее использование в CUDA.



17 декабря 2017

Выложил новую статью по CUDA - Работа с Unified - памятью в CUDA.



4 декабря 2017

Пока хронически не доходят руки написать свою статью про работу с OpenGL 3/4, решил выложить несколько полезных ссылок на эту тему. К сожалению вопрос о том, что почитать по современному OpenGL задается мне довольно часто и мало чего можно порекомендовать - большинство книг сильно устарели.

Много всего правильно содержится в книге (котору я переводил) - OpenGL ES 3.0. Руководство разработчика. Хотя книга посвящена и OpenGL ES 3, в ней очень много полезной информации для того, чтобы начать писать на современном OpenGL.

Еще одной достойной книгой является OpenGL 4. Язык шейдеров. Книга рецептов. Однако это книга именно по шейдерам и реализации различных эффектов.

Также есть несколько статей в интернете с примерами того, как работать с современным OpenGL. Мне лично очень нравится следующий набор статей, начинающих с создания контекста и завершающийся созданием теней и постпроцессинга - Уроки по OpenGL 3.

Также посмотрел на свои старые примеры и решил выложить инструкции по сборке. Они все собираются под Windows и Linux при помощи Makefile-ов (Makefile для сборки под Linux, Makefile.nmake для сборки под Windows). Для сборки требуются различные библиотеки, в данном архиве собраны они все - framework-old. Также могут понадобиться следующие наборы текстур - 1, 2 и 3.



16 апреля 2017

Выкладываю еще одну лекцию - восьмая лекция - основа OpenCL и вычислительные шейдеры в OpenGL.



9 апреля 2017

Выкладываю сразу две лекции - шестую и лекция седьмую.



26 марта 2017

Выкладываю сразу две лекции - четыре и лекция пять.



12 марта 2017

Выкладываю следующую лекцию по CUDA в этом году - третья.

На самом деле на ВМК в этом году не только я читаю спецкурс по CUDA. Александр Колганов также читает спецкурс по CUDA - вот ссылка на его лекции.



5 марта 2017

Наконец обновление на сайте. Выкладываю первые две лекции по CUDA в этом году - первая и вторая. Из изменений в этом году планирую добавить пару лекций по Vulkan.

Последнее время все время и силы уходят на два проекта - перевод книги Грэхема Селлерса "Vulkan. Programming Guide" и работа над своей книжкой по графике.

Как только перевод будет закончен он выйдет в издательстве ДМК-Пресс.

Своя книга больше всего близка к Computer Graphics: From Pixels to Programmable graphics hardware. Однако она полностью переработана, включено много нового материала, на новом фреймворке. Весь исходный код будет доступен на github. Книга будет большой и толстой и включать в себя очень много самого разного материала.



13 июня 2016

Выкладываю новую статью - Вычислительные шейдеры в OpenGL.

Планируется еще несколько статей, также весьма плотно работаю в Vulkan. Как только удастся что-то понятное написать с читаемыми примерами - сразу же будет выложено на сайт.



29 мая 2016

Купил Doom 4 и сейчас активно прохожу. Впечатления пока потрясающие - море драйва, потрясающая графика. Жестокие убийства - просто супер. Единственное, что расстраивает - как можно было сделать в Doom сохранение только в контрольных точках. Как же достает это засилье консольщины, когда самые гадкие вещи тащат с консолей в PC-gaming.

Купил свежую книгу Макса Фрая - Я иду искать. Очень нравится. Мне вообще нравятся все книги про сэра Макса. А вот остальные книги этого автора как-то не идут :(((

Очень порадовал тот факт, что исходники старого доброго Serious Sam выложили в открытый доступ - смотреть здесь.

Также стали доступны исходники Cry Engine.

Ну и немножко попросили попиарить - ресурс с различными моделями, форумом и т.п..



9 мая 2016

Прежде всего - с Днем Победы ! Это святой праздник, очень грустно, что находятся выродки, поливающие этот праздник и нашу историю грязью

Выложил на сайт новую (правда очень короткую) статью Расширение ARB_multi_draw_indirect.

Хочется и в этот раз сказать несколько "добрых" слов о мелкомягких - неделю назад, внезапно, без предупреждения, без запроса разрешения Форточки 10 попытались поставиться на ноутбук моей жены. Мало того, что это было сделано без разрешения, так и без информации о том, что вообще происходит после включения сразу начинает что-то грузить и ставить. При этом вообще не упоминается Windows 10, нет никакой возможности отменить.

Ну и по прошествии часа - "мы тут поставили вам Windows 10, ознакомьтесь с лицензионным соглашением". Очень мило - сперва эта блевотина ставится, а уже потом, когда ее поставили - лицензионное соглашение.

К счастью при выборе "Отказываюсь", долго поскрипев винтом, исходная система все=таки была восстановлена. В-общем мелкомягкие во всей "красе". На самом деле я может бы и оставил Win10, но если бы это было сделано не откровенно по-хамски. Тут чисто из принципа я откатился назад, потом - GWX Control Panel и полный запрет на дальнейшие подобные действия.

Посмотрел совершенно великолепный фильм - "Игра на понижения". Никакая это не комедия, а очень грустная правда о той жадности, тупости и сговоре, которые привели к кризису 2008 года. Очень советую посмотреть, особенно если вы все еще верите в демократию.

Сделал себе предзаказ Doom 4, теперь жду качественного мяса.



26 апреля 2016

Выкладываю новую статью - Работа с библиотекой GLFW. В ближайшее время будет несколько статей по Vulkan. Также продолжатся статьи по расширениям OpenGL.

Хочу попиарить одну достойную книгу -

Очень хорошая книга - сжатый и конкретный рассказ о новых и полезных фичах С++ 11 и С++ 14.



15 марта 2016

Выкладываю небольшую статью - Расширение ARB_vertex_attrib_binding. В ближайшее время будет статья по библиотеке GLFW и несколько статей по Vulkan.

Ну и немножко "доброго" о форточках-10.

Опять же на эту тему очень понравилась статья Тим Суини из Epic Microsoft wants to monopolise games development on PC. We must fight it.

Статья о том, что Universal Windows Platform (UWP) это фактически способ мелкомягимх монополизировать игровой (и не только игровой) рынок - фактически единственным способом распространения приложений под UWP является через мелкомягкий Windows Store. Т.е. мелкомягкие хотят вклиниться между пользователем и разработчиком игры.

Понятно, что это подвергает большой угрозе такие удобные сревисы как Steam - да, можно настроить форточки так, чтобы можно было ставить приложения этого типа не только из мелкомягкого магазина, но и из других источников, но это требует влезания вглубь настроек и мало кто будет это делать. При этом мне лично нравится Steam и я с удовольствием покупаю игры через них и я им доверяю, но я вообще не доверяю микро$офту.

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

Т.е. речь идет о попытке превратить открытую платформу PC в закрытую и полностью контролируемыми микро$офтом. Всякие разговоры о безопасности - это полный бред. Как известно самая большая уязвимость сидит за клавиатурой. Ну и вспомним сколько критических уязвимостей нам подарили за последний год как сами M$, так и ряд вполне уважаемых компаний. Вирус, внедренный в документ M$ Office или в flash это фактически самый распространенный способ заражения. И его новый тип приложений не исправит, поскольку уязвимость изначально содержится в самих приложениях.



28 февраля 2016

После долгого перерыва первое обновление. За время, прошедшее с последнего обновления на сайте, успел выйти омерзительная Windows 10 и долгожданный Vulkan.

Насчет Windows 10 даже говорить долго не хочется - по сути эта даже Windows 8, с небольшими косметическими правками, переименованная из маркетинговых соображений. Которая несет в себе постоянный шпионаж за пользователем, неотключаемые обновления, пасьянс с рекламой и куче предустановленного дерьма. На эту тему есть несколько добрый статей на сайте автора DirectX - Alex StJohn'а с весьма красноречивыми названиями. Ниже я просто приведу картинку с его сайте.

Также у меня вышла новая книга Компьютерная графика. Учебник и практикум. Это учебник для магистров по основам графики и OpenGL, есть глава по шейдерам.

Очень порадовал выход Vulkan и я готовлю ряд статей по нему. Глядя на форму gamedev.ru у меня сложилось ощущение, что многие ожидали чего-то другого. Хотя на самом деле вышло именно то, что и должно было выйти. Естественно, что новый API сложнее, чем Mantle, поскольку он должен поддерживать большое количество различных GPU, включая мобильные GPU с тайловой архитектурой. Естественно, что куча всяких неявных действий, выполняемых OpenGL "за кадром" теперь нужно явно выполнять самому - это естественно вытекает из получения полного контроля - контроль всегда подразумевает и ответственность.

Сравнение с CUDA не совсем корректно - во-первых, нужно сравнивать с CUDA driver API, а он гораздо сложнее, а во-вторых - сам graphics pipeline гораздо сложнее чем compute pipeline. Отсюда и вытекает полученная сложность.

Кроме того, под него пока нет практически никаких библиотек. Для примера попробуйте написать на OpenGL, не используя никаких библиотек - только сам OpenGL и WinAPI. Поверьте, число строк будет весьма серьезным. Для всех своих примеров я использую библиотеки - иногда свои, иногда нет. Со временем вокруг Vulkan появятся такие библиотеки, облегчающие написание программ.

Очень нравится в Vulkan, то что с самого начала вводятся conformance тексты. Так что есть большая надежда, что программы наконец-то будут работать одинаково на различных GPU. Кроме того, драйвера будут заметно проще и компилятор шейдеров вынесен из драйвера, что тоже уменьшит количество проблем. Использование бинарного формата для шейдеров позволит использовать шейдеры на различных языках - пока есть реализация компилятора только для GLSL, но никто не мешает писать свои компиляторы для других языков.

Ну и еще одна добрая картинка напоследок -



9 марта 2015

Выкладываю еще одну статью по OpenGL - Расширение ARB_multi_bind.

Также выкладываю лекции по CUDA, прочитанные за последние две недели - первая и вторая.

На этой неделе прошла GDC 2015 и на ней были несколько докладов по OpenGL Next. Было дано новое имя - Vulkan и выложены слайды по новому API, сам API будет представлен позже в этом году. Вот основная презентация по новому API. Вот еще одна презентация, более подробно рассказывающая о новом API.

Новый API является довольно низкоуровневым и многое из того, что OpenGL делал за программиста, нужно будет делать явно. Но это и одновременно дает в руки программиста гораздо больше возможностей по оптимизации кода.

IMHO OpenGL никуда не денется - с одной стороны есть очень много работающего кодаЮ который никто не будет переписывать, с другой стороны далеко не всем нужен такой контроль и не каждый захочет взять на себя всю необходимую работу. Так что для многих задач OpenGL будет вполне простым и удобным решением. Постепенно, с развитием различных библиотек под Vulkan, переход на него будет упрощаться для тех, кому не нужно столь высокое быстродействие.

Интересной особенностью Vulkan является то, что для него (как и для OpenCL 2.1) задается бинарное внутреннее представление для шейдеров. При этом совсем не важно на каком языке был написан шейдер - главное, это чтобы его можно было откомпилировать в это представление. Так уже обещают C++ для OpenCL 2.1. Все это очень радует и хочется, чтобы поскорее можно было все это попробовать.



1 марта 2015

Выкладываю новую статью - Использование спецификатора layout в GLSL .

Также немного почистил список статей и раздел Code Snippets. Если есть какие-то пожелания по тому, что можно включить в этот раздел - пишите на форуме или в личку.

На следующей неделе будет проходить GDC 2015 и в его рамках пройдут доклады, посвященные glNext. Так что жду с большим нетерпением.

Еще несколько статей уже написаны (на бумаге) и ждут того, когда я их наконец наберу.

Ну и на злобу дня - я лично рад тому, что жулика и вора Немцова пристрелили. Если бы я верил в ад, то пожелал бы ему там гореть.



14 февраля 2015

Поздравляю всех с днем Святого Валентина. Кроме того, оказывается сегодня еще и вполне программистский праздник - 14 февраля 1946 был продемонстрирован первый электронный компьютер ENIAC-1.

Выкладываю новую статью - по расширению ARB_shader_image_load_store.

Очень понравилась кнопка сделать все хорошо.

Еще начал читать книгу Эндрю Мэтьюза Живи легко! - очень рекомендую.



8 февраля 2015

Выкладываю новую статью - по расширению ARB_shader_storage_buffer_object.

Опять порадовали мелкомягкие - очередная уязвимость нулевого для в Internet Explorer.

И аналогичным образом порадовала Adobe с очередной огромной дырой в флеше, когда он наконец сдохнет.

Понравилась очередная статья об эффективном использовании OpenGL.

Очень порадовало, что на GDC 2015 будет рассказ о glNext от Valve.

Начал читать нового Макса Фрая - Слишком много кошмаров - очень нравится.



1 февраля 2015

Выкладываю новую статью - Расширение ARB_buffer_storage .

Из последнего прочитанного понравилась статья о PBR в Skyforge и продолжение рассказа о построении всего конвейера на CPU - 5 и 6.

Еще с интересом прочитал Основы программирования графики на Apple Metal: Начало.



26 янавря 2015

Недавно наткнулся на то, как могут различные религии трактовать стакан (он наполовину полон или наполовину пуст).

На gamedev.ru в теме о восстановлении координат по значением из z-буфера встретил утверждение о том, что приведенная моей статье формула неверна. Сразу решил это проверить. Оказалось, что не смотря на одну ошибку итоговая формула все-таки верна. Дело просто в том, какое именно значнение подставляется в эту формулу - непосредственно из буфера глубины (т.е. изменяющееся на отрезке [0,1]]), или же уже приведенное к отрезку [-1,1] (т.е. фактически уже zNDC).

Еще очень понравились лекции по графике на Хабре - там делается попытка разобрать все с самого начала, включая растеризацию, написание буфера глубины и т.п. Лекции - 1, 2, 3, 4a и 4b.



6 янавря 2015

А выкладываю новую статью - Расширение ARB_texture_storage.

Мне понравилась эта статья, где автор высказывает свои мысли насчет языка Swift. Честно говоря я сам Swift не пробовал (и не собираюсь), но много про него читал. И ощущение очень похоже - это просто красивый syntax sugar, для тех, кому неприятен синтаксис Objective-C. На самом деле по сути это просто урезанный вариант Objective-C, причем именно урезанный (например, выкинута вся работа с метаинформацией). И в этом смысле он просто выдумка маркетологов - для программистов он ничего не дает (IMHO).

Очень понравились две статьи на Хабре про использование OpenGL из питона - PyOpenGL для начинающих и немного новогоднего настроения и PyOpenGL с шейдерами.

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

Очень порадовала Гейм-дизайн vs обработка дерева.

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

Очень понравилась статья о том, как компании искусственно снижают срок службы своих товаров, я думаю многие сталкивались с этим в той или иной форме.

Немного о политике - Как выглядели бы сообщения в твитере американских оппозиционеров. Посмотрите и подумайте. Почему-то у нас очень принято поливать дерьмом свою Родину. Причем очень часто это делается людьми которые ничего достойного вообще не сделали. Революции в нашей стране всегда заканчиваются гибелью огромного количества людей и разрухой, причем потом выясняется что все революционеры строить сами ничего не умеют. Есть очень хорошее высказывание Франсуа Миттерана о том, что к сожалению все люди, которые знают как надо управлять государством работают таксистами. У нас это к сожалению тоже так :(((



2 янавря 2015

Поздравляю всех с наступившим 2015 годом.

Постараюсь в этом году чаще обновлять сайт. А сейчас выкладываю новую статью - статью о работе с библиотекой thrust.



Старые новости

Новости за 2012-2014 года.

Новости за 2011 год.

Новости за 2010 год.

Новости за 2009 год.

Новости за 2008 год.

Новости за 2007 год.

Новости за 2006 год.

Новости за 2005 год.

Новости за 2004-2003 года.