• Создание шейдеров

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

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


    Сцена из Minecraft, до и после добавления нескольких шейдеров.

    Задача этого туториала


    Иногда программирование шейдеров представляется загадочной чёрной магией и его часто понимают неправильно. Существует множество примеров кода, демонстрирующих создание невероятных эффектов, но в которых практически нет объяснений. В своём руководстве я хочу восполнить этот пробел. Я сосредоточусь в основном на базовых принципах создания и понимания кода шейдеров, чтобы вы смогли с лёгкостью настраивать, сочетать или писать свои собственные шейдеры с нуля!
    Читать дальше →
  • Все что вы хотели узнать о разработке и производстве микросхем, но стеснялись спросить

      Господа! Я уже писал о предстоящих семинарах Чарльза Данчека, содержащих полный ликбез по всем этапам проектирования и производства микросхем, но с тех пор возникли дополнения:

      * Во-первых, к семинарам присоединилась Cadence Design Systems, одна из двух ведущих компаний в области автоматизации проектирования микросхем. Cadence представит часовой доклад с программой в конце этого поста.

      Регистрация на сайте (UPD: по-видимому, первоначальная регистрация переполнилась. Но роснановцы сказали, что если первый зал переполнится, они выделят зал побольше. Напишите емейл на почту).

      * Во-вторых, к семинарам присоединились четыре ведущих российских компаний-проектировщиков микросхем: АО «НИИМА «Прогресс», АО «БАЙКАЛ ЭЛЕКТРОНИКС», ООО «ЛАБСИСТЕМС» и ОАО НПЦ «ЭЛВИС». Каждая из них сделает публичную презентацию с информацией, которую вы при других обстоятельствах как правило не сможете получить без NDA.

      * В-третьих, в дополнение к официальной программе семинаров в Москве, Санкт-Петербурге и Киеве мы решили организовать неформальные встречи интересующихся в виде прогулки сначала по Москве в это воскресенье, 30 октября. Вы сможете показать Чарльзу Данчеку Москву (он в первый раз в России) и спросить про проектирование чипов.

      Мы подумываем, чтобы в следующих год расширить такие мероприятия на регион Новосибирск-Томск, в связи с чем вот приветственное видео с девушкой из новосибирского академгородка:



      Пояснение: РОСНАНО и МИСиС организуют семинар Nanometer ASIC в Москве, но в Питере такой семинар организует Университет ИТМО, а в Киеве — КПИ и КНУ, лаборатория «Лампа» КПИ и студенческое workspace «Белка» КПИ.

      Детали про встречу и семинары — под катом:
      Читать дальше →
    • RISC'овый Debian под QEMU


        Для встраиваемых систем на базе процессоров с архитектурами MIPS и ARM нередко используются специализированные генераторы дистрибутивов ОС GNU/Linux: buildroot, openwrt и прочие Yocto.
        Но иногда интересно запустить на такой системе универсальную ОС Debian. Установить Debian на ЭВМ с процессором архитектуры x86/amd64 — дело несложное, а вот со встраиваемыми системами, поверьте, у нас не всё так однозначно...
        В данной публикации я расскажу как можно при помощи debootstrap установить, а затем как при помощи QEMU запустить ОС Debian для ЭВМ с процессорами MIPS и ARM.
        Читать дальше →
      • MIPSfpga: вне канона


          В течении последних трёх недель в МИЭТ, МГУ, МИФИ, МФТИ и других российских ВУЗах прошли семинары по процессору на ПЛИС MIPSfpga. В рамках семинаров прошли лабораторные работы на которых демонстрировалось как применять MIPSfpga на практике.
          В публикации я расскажу о своих экспериментах с MIPSfpga, которые выходят за рамки лабораторных работ, рассмотрю возможности интеграции процессорного ядра MIPSfpga с IP-блоками opencores.org. Также поведаю о портировании MIPSfpga на некоторые платы на базе ПЛИС Altera (приведены значения Fmax и показатели использования ресурсов ПЛИС).
          Читать дальше →
          • +13
          • 11,5k
          • 6
        • Работодатель против работника и конкурента – кто победит в споре за интеллектуальные права?



            Основано на реальных событиях, происходящих повсеместно и в рамках полемики вот здесь


            Эта история началась довольно банально. Сотрудники во время работы на некую компанию создали программу, которая успешно продавалась. Затем основали собственную фирму и стали заниматься тем, что умеют лучше всего – продолжили продавать тот же самый софт. Бывший работодатель возмутился такому подходу к конкуренции и попытался запретить использование «своего» продукта в «чужих» интересах. Авторы придерживались ровно противоположного мнения. Заметив, что вопрос мирно не решается, работодатель подает в суд. Вот вам и довольно типичное дело из судебной практики.

            Кто прав? Суд привлечет авторов к ответственности или встанет на их сторону?

            Читать дальше →
          • Переходим с STM32 на российский микроконтроллер К1986ВЕ92QI. Практическое применение: Генерируем и воспроизводим звук. Часть четвертая: создаем цифровую часть одноголосной и многоголосой музыкальной открытки

            • Tutorial

            Введение.


            В данной статье мы закончим тему генерации звука средствами нашего микроконтроллера. Создадим одноголосную и многоголосую основу для музыкальной открытки.
            Читать дальше →
            • +10
            • 12,6k
            • 6
          • Искусство командной строки



              Вот уже как неделю английская версия the art of command line висит в секции trending на Github. Для себя я нашел этот материал невероятно полезным и решил помочь сообществу его переводом на русский язык. В переводе наверняка есть несколько недоработок, поэтому милости прошу слать пулл-реквесты мне сюда или автору оригинальной работы Joshua Levy вот сюда. (Если PR отправите мне, то я после того, как пересмотрю изменения отправлю их в мастер-бранч Джоша). Отдельное спасибо jtraub за помощь и исправление опечаток.

              Enjoy!
            • Provisional Application и для чего это нужно

                Подача предварительной заявки на изобретение (Provisional Application) в патентное ведомство США (USPTO) – весьма популярный шаг среди разработчиков, особенно на этапе посевной или стартапа. Это действие можно уподобить занятию места в длинной очереди, когда вы говорите «я скоро вернусь» и идете по своим делам. Если вы вернулись не слишком поздно, то очередь, хотя и без особого энтузиазма, но пустит вас обратно. Так же и с предварительной заявкой – в течение 12 месяцев после подачи вы можете вернуться к заявке и дать ей ход.
                Читать дальше →
              • Пулы потоков: ускоряем NGINX в 9 и более раз

                • Перевод
                Как известно, для обработки соединений NGINX использует асинхронный событийный подход. Вместо того, чтобы выделять на каждый запрос отдельный поток или процесс (как это делают серверы с традиционной архитектурой), NGINX мультиплексирует обработку множества соединений и запросов в одном рабочем процессе. Для этого применяются сокеты в неблокирующем режиме и такие эффективные методы работы с событиями, как epoll и kqueue.

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

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

                У медали есть и обратная сторона. Главной проблемой асинхронного подхода, а лучше даже сказать «врагом» — являются блокирующие операции. И, к сожалению, многие авторы сторонних модулей, не понимая принципов функционирования NGINX, пытаются выполнять блокирующие операции в своих модулях. Такие операции способны полностью убить производительность NGINX и их следует избегать любой ценой.

                Но даже в текущей реализации NGINX не всегда возможно избежать блокировок. И для решения данной проблемы в NGINX версии 1.7.11 был представлен новый механизм «пулов потоков». Что это такое и как его применять разберем далее, а для начала познакомимся с нашим врагом в лицо.
                Читать дальше →
              • Моделирование дипольной антенны в openEMS



                  В предыдущей части было рассказано как промоделировать распространение ЭМВ при помощи симулятора
                  openEMS. Теперь рассмотрим как рассчитать что-либо полезное. Промоделируем дипольную полуволновую антенну на частоту 500 МГц. Будет рассмотрено моделирование в частотной области и моделирование диаграммы направленности (ДН) антенны. Схема данной антенны показана на рисунке.



                  Дипольная антенна состоит из двух лучей, каждый из которых имеет длину равную 1/4 волны для резонансной частоты. Запитывается антенна из центра. Антенна имеет сопротивление на чатоте резонанса, равное приблизительно 75 Ом и дигарамму направленности в форме тора. Подробнее о теории работы дипольной антенны можно прочитать, например, в учебнике Айзенберга или Белоцерковского. Эти результаты мы и должны получить после моделирования.

                  Под катом приведён скрипт с моделью дипольной антенны с построчным разбором. Предполагается, что читатель знаком с основами Matlab/Octave, электротехники и теории антенн (знает что такое комплексное сопротивление, S-параметры и КСВ).
                  Читать дальше →