среда, 24 февраля 2016 г.

Vulkan API, Initialization

Продолжаю переводить спецификацию, перевод предыдущего раздела можно посмотреть здесь: http://vbomesh.blogspot.com/2016/02/vulkan-api-fundamentals.html
В этот раз перевод коснется раздела Инициализации Вулкана.

Vulkan API, Fundamentals

16 февраля произошло значимое событие, наконец-то была релизнута спецификация графического API Vulkan и были выпущены первые драйвера.
Более подробную информацию об этом можно найти на сайте Хроноса:
https://www.khronos.org/vulkan/
Там собраны ссылки на основные ресурсы по Вулкану - драйвера, доки, демки.

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

В связи с этим я решил попытаться разобраться с этим API, начав не с критики демок, а с фундаментальных понятий нового API, хорошо описанных в спецификации Вулкана:
https://www.khronos.org/registry/vulkan/specs/1.0/pdf/vkspec.pdf

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

И так, начнем, Vulkan, Fundamentals...


воскресенье, 8 ноября 2015 г.

OpenGL 4.4 Instancing. Часть 2.

В предыдущей главе мы рассмотрели несколько типов инстансинга, в частности нас больше всего интересовало рисование посредством glDrawElementsInstanced и glDrawElementsIndirect, а так же их производных – glMultiDrawElementsInstanced и glMultiDrawElementsIndirect. Давайте сравним результаты их работы.

OpenGL 4.4 Instancing. Часть 1.


Как же быстро идет время, казалось бы, еще вчера анонсировали OpenGL 4.4, сел я делать краткий обзор по новинкам и вот уже и 2015-й заканчивается, а Khronos Group уже трубит о Vulkan… Отсутствие свободного времени, а также анонс нового API убавили энтузиазма, и эта статья пропылилась в закромах черновиков два года. Однако, «Рим строился не за один день», и пока Vulkan API мне не удалось даже пощупать, так что эта тема может быть для кого-то все еще актуальна. Переписывать статью уже лень, так что оставил все как было два года назад J 
Итак, в древние времена я выложил несколько статей по инстансингу и выводу GUI средствами OpenGL 2.1. Однако время идет и все меняется, так вот на улице уже откуда ни возьмись 2014 год и OpenGL 4.4, а по всем каналам трубят о том, какая крутая штука этот новый инстансинг. Давайте и мы разберемся какие средства для инстансинга нам предоставляет OpenGL 4.4.

вторник, 8 января 2013 г.

VBO. Обобщенные атрибуты

В предыдущих уроках мы с вами рассмотрели работу со стандартными (встроенными) вершинными атрибутами, устанавливаемыми через gl*Pointer, где вместо "*" мог быть один из стандартных атрибутов - Vertex/Normal/Color/TexCoord и прочие. Однако, в OpenGL3.х+ этот тип атрибутов был объявлен устаревшим и удален, то же самое произошло и в OpenGL ES 2.0/3.0.
К счастью не все так плохо как кажется, во-первых, начиная с OpenGL 3.2 существует два профиля OpenGL - "ядро" и "профиль совместимости". В профиле совместимости вернули весь "устаревший" функционал, в том числе и стандартные вершинные атрибуты, так что, если вы не планируете переходить на "core" версию или переходить на мобильные платформы, то вам бояться нечего. Во-вторых, если вам все же придется в будущем осуществить такой переход, то основы можно заложить уже сегодня, благо обобщенные атрибуты, на которые был осуществлен переход в современных версиях OpenGL (3.x+/ES2.0+) существуют еще с OpenGL 1.3 и с тех пор практически не изменились. О них мы и поговорим в этой части.

вторник, 11 декабря 2012 г.

OpenGL 4.3. Рендеринг в текстуру, альтернативы FBO

Не так давно я привел перевод одной из статей по SSBO (shader_storage_buffer_object), сегодня я решил продолжить рассмотрение нововведений, появившихся в OpenGL 4.2-4.3, в частности  - продолжить знакомство с уже знакомым нам SSBO и clear_buffer_object, а так же рассмотреть появившееся в OpenGL 4.2 расширение shader_image_load_store.
Оба этих расширения предоставляют альтернативный вариант рендеринга в текстуру, но возникает закономерный вопрос о производительности этих подходов. В этой статье я разберу каждый из вариантов и сделаю оценку их производительности.

пятница, 7 декабря 2012 г.

OpenGL 4.3. Shader Storage Buffer Object

В OpenGL 4.3 появился давно ожидаемый новый тип буфера - Shader Storage Buffer Object (сокращенно SSBO), являющийся по существу массивом для произвольного чтения/записи в шейдере, исключающий необходимость использовать для этих целей текстурные буферы совместно с расширением Image Load Store. Вкратце об этом буфере написано в этой статье, здесь я привожу ее перевод с некоторыми дополнениями (взятыми из спецификации).