Ну и предлагаю вам почитать превод последней части главы "Render Pass" спецификации, в которой рассказывается об еще одном фундаментальном понятии Вулкана - Framebuffers, они же буферы кадра или фреймбуферы.
Разработка движка прекращена, исходные коды проекта доступны тут: http://code.google.com/p/glsnewton/
среда, 23 марта 2016 г.
понедельник, 21 марта 2016 г.
Vulkan API, Render Pass
Render Pass
Вот я и добрался до следующего болшого куска спецификации, так же имеющего важное значение для понимания фундаментальных основ Вулкана, к Render Pass и Subpass. В предыдущей статье я уже затрагивал тему Render Pass, теперь пришло время изучить спецификацию.
четверг, 17 марта 2016 г.
Vulkan, еще раз о синхронизации...
Наконец-то я закончил перевод этого здоровенного и не менее важного куска спецификации. О том, что я думаю об авторе этого раздела спецификации я уже писал много, потому я просто счастлив что это осталось позади (хотя кто знает что еще меня ждет впереди))
Написано там было очень много, о параметрах, и случаях использования, о вариантах, о тонкостях и прочем, но это тот случай, когда за деревьями леса не видно, потому я и решил собрать воедино всю эту информацию в одной короткой статье, так сказать для закрепления материала.
Ярлыки:
Barriers,
Events,
Fences,
Semaphores,
Vulkan API
Vulkan API. Memory Barriers and Implicit Ordering Guarantees.
Вот я и добрался до последней главы раздела "Synchronization and Cache Control", перевод этого раздела оказался достаточно "стремным", как вообщем-то и текст оригинала. После этой статьи я приведу еще одну итоговую, где постараюсь в сжатом виде пересказать содержание последних серий, ну а пока - Memory Barriers и Implicit Ordering Guarantees.
Ярлыки:
Barriers,
Buffer Memory Barriers,
Global Memory Barriers,
Image Memory Barriers,
Implicit Ordering Guarantees,
Specification,
Vulkan API
понедельник, 14 марта 2016 г.
Vulkan API, Barriers, Execution And Memory Dependencies.
Перевод этой части спецификации очень затянулся. Причин здесь несколько, во-первых - большой объем информации, во-вторых - высокая сложность материала (много терминов, много новых понятий и концепций, отсутствующих в других API и прочее), ну и ко-всему - неудачный порядок изложения материала, что приемлемо для спецификации, но неудобно для систематизированного изучения. Так же у меня есть претензии к автору этой главы, так как написано все очень коряво и без понимания сути материала очень сложно передать мысль “своими словами”, а перевод оказывается набором слов.
Потому, чтоб упростить понимание этой главы, я немного изменил порядок следования глав и разбавил их фрагментами статей от AMD (можно ж ведь и сложные вещи простым языком описать, снимаю перед этими ребятами шляпу).
Ну и прежде чем приступить к переводу следующего куска спецификации я решил забежать немного вперед и дать определение некоторым из используемых в этой главе спецификации терминов.
суббота, 12 марта 2016 г.
Vulkan Renderpasses
Переводя следующую главу спецификации я столкнулся с несколькими проблемами.
По всей видимости, начиная с главы "6.4 Execution And Memory Dependencies", у спецификации поменялся автор - два слова связать не может, постоянно пережовывает одно и тоже, сплош и рядом тафтология, предложения закручивает так, что и 100-грамм не помогает, вообщем текст ужасный, местами я при перечитывании переведенного просто удалял целые абзацы, заменяя их одной фразой.
Но это пол-беды, не знаю кто виноват, этот же автор или еще кто, но в этой главе явно нарушен порядок изложения материала (да, я понимаю что это спецификация, но все же), вначале разжовываются сценарии, а только через пару глав рассказывается что же такое эти dependency, renderpass, subpass, pipeline stages и многое другое. В результате теряется суть написанного и весь перевод главы становится абсолютно бессмысленным.
Можно было бы оставить "как есть", и в конце приписать что-то типа "не виноватая-я, оно так и было" и предложить вернуться к этой главе спустя сотню страничек спеки, но я все же постараюсь сделать это повествование логичным, хоть и придется отойти от порядка изложения определенного в спецификации, в том числе и используя "сторонние" материалы.
По всей видимости, начиная с главы "6.4 Execution And Memory Dependencies", у спецификации поменялся автор - два слова связать не может, постоянно пережовывает одно и тоже, сплош и рядом тафтология, предложения закручивает так, что и 100-грамм не помогает, вообщем текст ужасный, местами я при перечитывании переведенного просто удалял целые абзацы, заменяя их одной фразой.
Но это пол-беды, не знаю кто виноват, этот же автор или еще кто, но в этой главе явно нарушен порядок изложения материала (да, я понимаю что это спецификация, но все же), вначале разжовываются сценарии, а только через пару глав рассказывается что же такое эти dependency, renderpass, subpass, pipeline stages и многое другое. В результате теряется суть написанного и весь перевод главы становится абсолютно бессмысленным.
Можно было бы оставить "как есть", и в конце приписать что-то типа "не виноватая-я, оно так и было" и предложить вернуться к этой главе спустя сотню страничек спеки, но я все же постараюсь сделать это повествование логичным, хоть и придется отойти от порядка изложения определенного в спецификации, в том числе и используя "сторонние" материалы.
Стоило мне принять это решение как тут же попалась статья от AMD по этим самым renderpass-ам, с которых и начнется повествование.
воскресенье, 6 марта 2016 г.
Vulkan API, Synchronization primitives, Events.
Продолжение перевода 6 главы - Synchronization and Cache Control, в этот раз рассмотрим третий тип синхронизации - события(Events).
Предыдущие части можно посмотреть здесь:
Vulkan API, Synchronization primitives, Semaphores
Vulkan API, Synchronization primitives, Semaphores
В предыдущей части мы начали разбирать примитивы синхронизации Вулкана и рассмотрели Fence-оъект, сигнализирующий о завершении выполнения буфера команд в очереди. В этой части мы познакомимся со сторым типом примитивов синхронизации - Semaphores.
Vulkan API, Synchronization primitives, Fences.
Одним из ключевых изменений, произошедших в Вулкане, стало ручное управление потоками команд, что с одной стороны - позволило существенно снизить нагрузку на CPU, с другой - требует понимания принципов многопоточного программирования. Важнейшим инструментов многопоточного програмирования являются примитивы синхронизации. Вулкан предоставляет 4 типа таких примитивов, в этой части мы рассмотрим первый из них - Fences.
пятница, 4 марта 2016 г.
Vulkan API, Command Buffers
Признаться, начинал я переводить эту главу нехотя, во-првых - она очень большая :)
Во-вторых - на этом месте все туториалы делают большой прыжок и минуя эту главу начинают создавать поверхность рендеринга, фреймбуфер и прочее. Был и у меня такой соблазн, темболе что предыдущие главы были достаточно простыми. Однако я себя пересилил и думал правильно сделал. Тут как никогда подходит выражение - "чем дальше в лес тем больше дров", количество понятий, новых терминов, нюансов использования и связей с другими объектами здесь просто зашкаливает. Боюсь к этой статье придется возвращаться еще не раз, так как на этом этапе нужно начинать планировать всю архитектуру вашего приложения, причем в таких деталях, что аж мурашки по коже :) Без этого ваше приложение будет работать, но эффективность его будет на уровне вызовов glBegin/glEnd на фоне дисплейных списков. Вообщем скоро вы сами все поймете :)
среда, 2 марта 2016 г.
Vulkan API, Queues.
Queues. Queue Family Properties
Перевод этой части спецификации несколько затянулся, связано это с тем, что объем кода для примера стал слишком большим и появилось желание это все обернуть в соответствующие классы. На сколько удачным оказалось это решение покажет время, но объем кода примеров уже снизился существенно.
Ну что ж, приступим...
Ну что ж, приступим...
Подписаться на:
Сообщения (Atom)