• Не умничайте с формами для входа

    • Перевод
    В последнее время меня начинает сильно раздражать авторизация на сайтах. Поскольку менеджеры паролей становятся более популярными, такие как 1Password (который я использую) и менеджер паролей Chrome (который я тоже использую), веб-сайтам важно учитывать этот факт.

    Давайте рассмотрим некоторые шаблоны входа в систему, которые на мой взгляд не идеальны. А затем рассмотрим лучшие практики. TL;DR; Это страницы авторизации, которые просты, предсказуемы, на обычных страницах и дружат с менеджерами паролей.
    Читать дальше →
  • Вычисляемое видео в 755 мегапикселей: пленоптика вчера, сегодня и завтра



      Какое-то время назад автору довелось читать лекцию во ВГИК, и в аудитории было много людей с операторского факультета. Аудитории был задан вопрос: «С каким максимальным разрешением вы снимали?», и дальше выяснилось, что примерно треть снимала 4К или 8 мегапикселей, остальные — не более 2К или 2 мегапикселя. Это был вызов! Мне предстояло рассказать про камеру с разрешением 755 мегапикселей (raw разрешением, если быть точным, поскольку конечное у нее 4К)  и какие феерические возможности это дает для профессиональной съемки.

      Сама камера выглядит так (этакий маленький слоник):



      Причем, открою страшную тайну, чтобы сделать этот снимок искали ракурс получше и человека покрупнее. Мне доводилось щупать эту камеру вживую, скажу, что она выглядит намного крупнее. Снимок ниже с Йоном Карафином, с которым мы примерно одного роста, более точно передает масштабы бедствия:



      Кому интересны принципиально возможности вычисляемого видео о которых редко пишут — вся правда под катом! )
      Читать дальше →
    • Яндекс! Спасибо за Uber

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


          Я уже перестал вздрагивать и удивляться, когда звонит телефон и в трубке раздается жесткий уверенный голос: «Вас беспокоит капитан такой-то (майор такой-то), вы можете ответить на пару вопросов?» Почему бы не поговорить с родной полицией…

          Вопросы всегда одни и те же. «У нас есть видео с подозреваемым, пожалуйста, помогите восстановить лицо»… «Помогите увеличить номер с видеорегистратора»… «Здесь не видно рук человека, пожалуйста, помогите увеличить»… И так далее в том же духе.

          Чтобы было понятно о чем речь — вот реальный пример присланного сильно сжатого видео, где просят восстановить размытое лицо (размер которого эквивалентен примерно 8 пикселям):


          И ладно бы только русские дяди Степы беспокоили, пишут и западные Пинкертоны.
          Читать дальше →
        • Введение в программирование: простой 3D-шутер с нуля за выходные, часть 2

          • Tutorial
          Продолжаем разговор про 3Д шутер за выходные. Если что, то напоминаю, что это вторая половина:


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


          К сожалению, большинство студентов выбирает простые игры типа 2Д платформеров. Я пишу эту статью для того, чтобы показать, что создание иллюзии трёхмерного мира ничуть не сложнее клонирования марио броз.
          Читать дальше →
        • Введение в программирование: простой 3D-шутер с нуля за выходные, часть 1

          • Tutorial
          Этот текст предназначен для тех, кто только осваивает программирование. Основная идея в том, чтобы показать этап за этапом, как можно самостоятельно сделать игру à la Wolfenstein 3D. Внимание, я совершенно не собираюсь соревноваться с Кармаком, он гений и его код прекрасен. Я же целюсь совсем в другое место: я использую огромную вычислительную мощность современных компьютеров для того, чтобы студенты могли создавать забавные проекты за несколько дней, не погрязая в дебрях оптимизации. Я специально пишу медленный код, так как он существенно короче и просто понятнее. Кармак пишет 0x5f3759df, я же пишу 1/sqrt(x). Мы преследуем разные цели.

          Я убеждён, что хороший программист получается только из того, кто кодит дома в своё удовольствие, а не только просиживает штаны на парах в университете. В нашем университете программистов учат на бесконечной череде всяких библиотечных каталогов и прочей скукоте. Брр. Моя цель — показать примеры проектов, которые интересно программировать. Это замкнутый круг: если интересно делать проект, то человек проводит над ним немало времени, набирается опыта, и видит вокруг ещё больше интересного (оно же стало доступнее!), и снова погружается в новый проект. Это называется проектное обучение, вокруг сплошной профит.

          Простыня получилась длинная, поэтому я разбил текст на две части:


          Выполнение кода из моего репозитория выглядит вот так:


          Это не законченная игра, но только заготовка для студентов. Пример законченной игры, написанной двумя первокурсниками, смотрите во второй части.
          Читать дальше →
        • Морти, мы в UltraHD! Как посмотреть любой фильм в 4K, дорисовав его через малоизвестную нейросеть

            Наверное, вы слышали про технологию Яндекса DeepHD, с помощью которой они как-то раз улучшили качество советских мультфильмов. Увы, в публичном доступе ее еще нет, а у нас, рядовых программистов, вряд ли найдутся силы написать свое решение. Но лично мне, как обладателю Retina-дисплея (2880х1800), недавно очень захотелось посмотреть «Рика и Морти». Какого же было мое разочарование, когда я увидел, как мыльно на этом экране выглядит 1080р, в котором существуют оригиналы этого мультсериала! (это прекрасное качество и обычно его вполне достаточно, но поверьте, ретина так устроена, что анимация с ее четкими линиями в 1080р выглядит мыльновато, словно 480р на FHD-мониторе)

            Я твердо решил, что хочу увидеть этот мультсериал в 4К, хотя и совершенно не умею писать нейросети. Однако решение было найдено! Любопытно, что нам даже не придется писать код, понадобится лишь ~100 ГБ места на диске и немного терпения. А результат — четкое изображение в 4К, которые выглядит достойнее, чем любая интерполяция.

            image
            Читать дальше →
          • О создании бюджетных стереоизображений на пальцах (стереограмма, анаглиф, стереоскоп)

            • Tutorial
            Пришли очередные выходные, надо написать пару десятков строк кода и нарисовать картинку, да лучше не одну. Итак, на прошлых и позапрошлых выходных я показал, как делать трассировку лучей и даже взрывать всякое. Это многих удивляет, но комьпютерная графика — очень простая вещь, пары сотен строк голого C++ вполне хватает на создание интересных картинок.

            Тема сегдоняшнего разговора — бинокулярное зрение, причём сегодня даже до ста строк кода не дотянем. Умея рендерить трёхмерные сцены, было бы глупо пройти мимо стерепар, сегодня будем рисовать примерно вот такое:


            Читать дальше →
          • Активность мозга человека впервые транслировали в чёткую речь


              Схема метода реконструкции речи. Человек прослушивает слова, в результате активируются нейроны его слуховой коры. Данные интерпретируются четырьмя способами: сочетанием двух типов регрессионных моделей и двух типов речевых представлений, затем поступают в систему нейросетей для извлечения признаков, которые впоследствии используются для настройки параметров вокодера

              Нейроинженеры Колумбийского университета (США) первыми в мире создали систему, которая переводит мысли человека в понятную, различимую речь, вот звукозапись слов (mp3), синтезированных по мозговой активности.

              Наблюдая за активностью в слуховой коре головного мозга, система с беспрецедентной ясностью восстанавливает слова, которые слышит человек. Конечно, это не озвучивание мыслей в прямом смысле слова, но сделан важный шаг в этом направлении. Ведь похожие паттерны мозговой активности возникают в коре головного мозга, когда человек воображает, что слушает речь, или когда мысленно проговаривает слова.
              Читать дальше →
            • Анатомия сокола

              • Перевод

              Недавно мы объявили о разработке игры Falcon Age о выращивании взрослой птицы из птенца сокола и совместном противостоянии силам, стремящимся колонизировать планету. Falcon Age выйдет в 2019 году на PS4 и PS VR.

              На прошлой неделе мы показали игру на PAX и получили замечательные отзывы, особенно о самом соколе. Давайте подробно рассмотрим его дизайн, настройку анимаций и рига, ИИ и навигацию, технологию создания перьев и звуки хищника.

              Дизайн сокола


              Рассказывают Чандана Эканаяке и Дэрран Хёрлбат.


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

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



                Среди созданных нами продуктов есть по-настоящему легендарный лендинг пейдж, ставший донором для зарождающегося в интернете сегмента механизированной штукатурки. За три года работы он не только привлёк много клиентов, но и был скопирован почти 100 раз. Хотите узнать, что такого особенного в нем было?
                Читать дальше →
              • Рисуем мультяшный взрыв за 180 строчек голого C++

                • Tutorial
                Неделю назад я опубликовал очередную главу из моего курса лекций по компьютерной графике; сегодня опять возвращаемся к трассировке лучей, но на сей раз пойдём самую чуточку дальше отрисовки тривиальных сфер. Фотореалистичность мне не нужна, для мультяшных целей подобный взрыв, как мне кажется, сойдёт.

                Как всегда, в нашем распоряжении только голый компилятор, никаких сторонних библитек использовать нельзя. Я не хочу заморачиваться с оконными менеджерами, обработкой мыши/клавиатуры и тому подобным. Результатом работы нашей программы будет простая картинка, сохранённая на диск. Я совершенно не гонюсь за скоростью/оптимизацией, моя цель — показать основные принципы.

                Итого, как в таких условиях нарисовать вот такую картинку за 180 строчек кода?


                Читать дальше →
              • Q2VKPT: полностью переписанный Quake II с реалистичным освещением

                • Перевод

                Q2VKPT — это первая играбельная игра с полным рейтрейсингом, эффективно симулирующая полностью динамическое освещение в реальном времени с помощью тех же современных технологий, которые используются в киноиндустрии (см. Disney's practical guide to path tracing).

                Недавний выпуск моделей GPU с функциями трассировки лучей (raytracing) открыл абсолютно новые возможности для будущего игровой графики, однако правильное использование рейтрейсинга — нетривиальная задача. В то время, как некоторые разработчики игр начали исследовать открывающиеся возможности в рендеринге теней и отражений, Q2VKPT стал первым проектом, реализовавшим эффективное общее решение для всех видов переноса света: прямого, рассеянного и отражённого освещения (см. раздел «Медиа»). В киноиндустрии такая унификация привела к значительному улучшению гибкости и продуктивности. Существует вероятность, что подобное развитие технологий в играх обещает схожее улучшение визуальной точности и реализма графики в течение ближайших нескольких лет. Этот проект должен служить подтверждением концепции для области исследований компьютерной графики и игровой индустрии; к тому же он позволяет фанатам игр взглянуть на потенциальное будущее игровой графики. Кроме использования аппаратно ускоряемого рейтрейсинга, Q2VKPT в основном обеспечивает свою эффективность благодаря технике адаптивной фильтрации изображения, которая интеллектуальным образом отслеживает изменения в освещённости сцены, чтобы повторно использовать как можно больше информации из предыдущих вычислений.
                Читать дальше →
              • Юбилейный Android 10 (Q). Что известно уже сейчас?

                  Совсем недавно ребята из XDA-developers заглянули под капот утекшей сборки новой, ещё не анонсированной, версии Android. Давайте посмотрим, что они там нашли.


                  Читать дальше →
                • Как рендерится кадр Rise of the Tomb Raider

                  • Перевод

                  Rise of the Tomb Raider (2015 год) — это сиквел превосходного перезапуска Tomb Raider (2013 год). Лично я нахожу обе части интересными, потому что они отошли от стагнирующей оригинальной серии и рассказали историю Лары заново. В этой игре, как и в приквеле, центральное место занимает сюжет, она предоставляет увлекательные механики крафтинга, охоты и скалолазания/исследований.

                  В Tomb Raider использовался разработанный Crystal Dynamics движок Crystal Engine, также применявшийся в Deus Ex: Human Revolution. В сиквеле использовали новый движок под названием Foundation, ранее разрабатывавшийся для Lara Croft and the Temple of Osiris (2014 год). Его рендеринг можно в целом описать как тайловый движок с предварительным проходом освещения, и позже мы узнаем, что это означает. Движок позволяет выбирать между рендерерами DX11 и DX12; я выбрал последний, по причинам, которые мы обсудим ниже. Для захвата кадра использовался Renderdoc 1.2 на Geforce 980 Ti, в игре включены все функции и украшательства.

                  Анализируемый кадр



                  Чтобы не было спойлеров, скажу, что в этом кадре плохие парни преследуют Лару, потому что она ищет артефакт, который разыскивают и они. Этот конфликт интересов никак не разрешить без оружия. Лара ночью пробралась на вражескую база. Я выбрал кадр с атмосферным и контрастным освещением, при котором движок может показать себя.
                  Читать дальше →
                • 256 строчек голого C++: пишем трассировщик лучей с нуля за несколько часов

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

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

                  Внимание: просто рассматривать мой код, равно как и просто читать эту статью с чашкой чая в руке, смысла не имеет. Эта статья рассчитана на то, что вы возьмётесь за клавиатуру и напишете ваш собственный движок. Он наверняка будет лучше моего. Ну или просто смените язык программирования!

                  Итак, сегодня я покажу, как отрисовывать подобные картинки:


                  Читать дальше →
                • Внутри Quake: определение видимых поверхностей

                  • Перевод
                  image

                  Ветеран программирования трёхмерной графики Майкл Абраш на примере разработки первого Quake рассказывает о необходимости творческого мышления в программировании.

                  Много лет назад я работал в теперь уже не существующей компании-производителе видеоадаптеров Video Seven. Там я помогал в разработке клона VGA. Мой коллега Том Уилсон, долгие месяцы круглосуточно работавший над разработкой VGA-чипа Video Seven, стремился сделать VGA как можно более быстрым, и был уверен, что его производительность оптимизирована почти по максимуму. Однако когда Том уже вносил в конструкцию чипа последние штрихи, до нас донеслись слухи, что наш конкурент Paradise достиг ещё большей производительности в своём разрабатываемом клоне, добавив в него FIFO.

                  На этом слухи заканчивались — мы не знали, ни что это за FIFO, ни насколько он помог, ничего другого. Тем не менее, Том, обычно приветливый и расслабленный человек, превратился в активного, одержимого фанатика со слишком большим процентом кофеина в крови. Исходя из этих крупиц информации, он пытался выяснить, что же удалось сделать Paradise. В конце концов он пришёл к выводу, что Paradise вероятно вставил FIFO-буфер записи между системной шиной и VGA, чтобы когда ЦП выполнял запись в видеопамять, записываемые данные сразу же попадали в FIFO, и это позволяло ЦП продолжать обработку, а не простаивать каждый раз, когда он выполнял запись в память дисплея.

                  У Тома не было ни логических элементов, ни достаточно времени на реализацию полного FIFO, но ему удалось реализовать FIFO глубиной в одну операцию, что позволяло процессору обгонять VGA-чип на одну операцию записи. Том не был уверен, что это даст хорошие результаты, но это было единственное, что он смог сделать, поэтому он реализовал эту систему и передал чип в производство.
                  Читать дальше →
                  • +87
                  • 27k
                  • 6
                • Расшифровка трассировщика лучей размером с открытку

                  • Перевод

                  «Он снова это сделал!», — вот, что первое пришло мне в голову, когда я посмотрел на оборотную сторону флаера Pixar [1], полностью заполненную кодом. Скопление конструкций и выражений была подписана в правом нижнем углу не кем иным, как Эндрю Кенслером. Для тех, кто его не знает, скажу: Эндрю — это программист, придумавший в 2009 году 1337-байтный трассировщик лучей размером с визитку.

                  На этот раз Эндрю придумал нечто более объёмное, но с гораздо более интересным визуальным результатом. Так как я закончил писать свои Game Engine Black Books про Wolf3D и DOOM, у меня появилось время на изучение внутренностей его загадочного кода. И почти сразу меня буквально очаровали обнаруженные в нём техники. Они сильно отличались от предыдущей работы Эндрю, основанной на «стандартном» трассировщике лучей. Мне было интересно узнать о ray marching, функциях конструктивной объемной геометрии, рендеринге Монте-Карло/трассировкой пути, а также множестве других трюков, которые он использовал, чтобы ужать код в такой небольшой кусок бумаги.

                  Читать дальше →
                • [Пятничное] ASCII граффити на ретро мониторах и других поверхностях

                    Если человек, которому нравится пиксель арт – стар, то человек, понимающий эстетику ASCII – суперстар! Конечно, это – шутка, и возраст тут, скорее всего, не причем. Мой сын, например, любит играть в ASCII игры, которые я делаю. По крайней мере, он так говорит.

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

                    image

                    Под катом вы увидете множество ASCII композиций на мониторах древних компьютеров и терминалов, а также на других поверхностях, например, на почтовой марке. Возможно, некоторые сделанные мной изображения найдут отклик в ваших сердцах.
                    Читать дальше →
                  • Что должна сделать читалка, чтобы вы читали больше?

                      image


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

                      Читать дальше →

                    Самое читаемое