Pull to refresh
-26
0
Send message

256 строчек голого C++: пишем трассировщик лучей с нуля за несколько часов

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

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

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

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


Читать дальше →
Total votes 241: ↑241 and ↓0+241
Comments124

[The Old New Thing] Могу ли я использовать свой стек как угодно?

Reading time3 min
Views4.6K

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



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

Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments24

Бизнес, я люблю тебя

Reading time11 min
Views41K
Я хотела бы начать этот пост очень пафосно. Например, так: «Я работаю в бизнесе уже 10 лет, получила железное сердце и обросла панцирем». Или так: «Да-да, Хабр, я работник коммерческой службы: когда-то аналитик, потом продажник, потом маркетолог. Я тот самый, кого вы все не любите». В конце концов, именно так должен выглядеть пост первого января. Но нет. Никакого пафоса и романтики. Работаю в коммерции ИТ-компаний некруглые 11,5 лет. Была всем: разработчиком, проджектом, маркетологом, продажником, внедренцем, редактором, ИТ-консультантом. До этого была на госслужбе и преподавала. И я сегодня, несмотря на сто доводов против, могу сказать: «Бизнес, я люблю тебя!» Ну понятно, что развитие этой мысли под катом.


Читать дальше →
Total votes 103: ↑95 and ↓8+87
Comments67

Мысли о современном C++ и игровой разработке

Reading time18 min
Views31K
Новый год для игровых разработчиков начался с волны критики, обрушившейся в адрес комитета по стандартизации C++ после публикации Араса Пранкевичуса «Жалобы по поводу современного C++». Возник серьезный вопрос: действительно ли комитет стандартов потерял связь с реальностью, или все наоборот, и это игровые разработчики откололись от остального С++ сообщества?

Вашему вниманию предлагается перевод популярного поста Бена Дина, — ветерана игровой индустрии, проработавшего продолжительный срок в компаниях Blizzard, Electronic Arts и Bullfrog в качестве разработчика на C++ и тимлида, — в котором он отвечает на критику с позиции собственного опыта.

TL;DR: Комитет по стандартизации C++ не имеет скрытой цели игнорировать нужды игровых разработчиков, а «современный» C++ не собирается становиться «неотлаживаемым» языком.
На протяжении всей прошлой недели в Twitter шла активная дискуссия, в ходе которой многие программисты – особенно те из них, кто работает в сфере игровой разработки – высказались о том, что нынешний вектор развития «современного C++» не отвечает их потребностям. В частности, с позиции обычного игрового разработчика, все выглядит так, будто производительность отладки в языке игнорируется, а оптимизация кода становится ожидаемой и необходимой.

В силу того, что на 2019 год я успел проработать в игровой индустрии более 23 лет, у меня имеется собственное мнение, основанное на наблюдениях по данной теме применительно к игровой разработке, которым мне и хотелось бы поделиться. Важна ли для игровых разработчиков «отлаживаемость» и почему? В чем заключаются вопросы, связанные с ней?

Для начала — небольшой экскурс в историю.
Читать дальше →
Total votes 30: ↑30 and ↓0+30
Comments60

Разработка электроники. Выигрышная стратегия технологического стартапа. Часть I

Reading time13 min
Views17K
Тема оказалось слишком широка, чтобы уместить её в одну статью. Предлагаю вашему вниманию вступительную часть. В ней пойдёт речь о действиях, которые желательно предпринять ещё до написания технического задания на разработку, чтобы существенно снизить риски неудачи.



Мир вошёл в эпоху “умных вещей”, что породило интерес к технологическим стартапам, который только растёт год от года. На КС они бьют рекорды по сборам, даже несмотря на то, что достойно выполнить свои обязательства удаётся далеко не всем. За десяток с хвостиком лет попыток работы в роли волшебника воплощающего задумки клиентов и вдыхающего в них жизнь мною накоплено много опыта. Безжалостная статистика говорит о том, что 9 из 10 стартапов терпят фиаско. В моей практике это соотношение менее драматично. Возможно потому, что стараюсь не принимать участие в проектах, изначально имеющих большие шансы на провал.

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

О чём пойдёт речь под катом
Не стоит отливать ТЗ в граните.

Сколько денег необходимо для запуска технологического стартапа?
Начинать проверку вашей идеи стоит ещё до начала разработки.
Стратегическая канва — отличный инструмент для проверки конкурентоспособности.
Создание пространства, свободного от конкуренции на реальном примере.
Изучение ближайших аналогов — хорошая практика.
Подбор ключевых компонентов и оценка себестоимости.
Как создать Голубой Океан
Total votes 34: ↑31 and ↓3+28
Comments84

30 Android-библиотек и инструментов, которые не должны пройти мимо вас в 2018 году

Reading time9 min
Views38K

30 Android-библиотек и инструментов, которые не должны пройти мимо вас в 2018 году


В течение лета 2018 года было разработано и обновлено множество отличных Android-библиотек и инструментов.


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


Надеюсь, вам понравится. Давайте начнём!

Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments5

Исследование IFR: количество промышленных роботов в России по-прежнему ничтожно

Reading time3 min
Views17K

Количество роботов на 10 000 работников в 2017 году. Источник: ITIF

Россия опять заняла одно из последних мест в мировом рейтинге роботизации производства. Ежегодно такие рейтинги выпускает Международная федерация робототехники (IFR) для Фонда информационных технологий и инноваций (ITIF). Рейтинг включает в себя количество промышленных роботов на 10 000 производственных рабочих в стране.

Согласно информации, опубликованной IFR в Фонде информационных технологий и инноваций (ITIF), средний мировой показатель в 2017 году составил 85 роботов на 10 000 работников. Это на 15% больше, чем в прошлом году.
Читать дальше →
Total votes 26: ↑24 and ↓2+22
Comments69

Аппарат для выдачи печенья «Кукинатор 3000»

Reading time8 min
Views17K


Всем привет! Я работаю в компании, которая разрабатывает оборудование для мониторинга нефтяных вышек, майнинговых ферм, ДГУ и прочих скучных вещей. Но в этот раз мы автоматизировали кое-что иное. Итак, встречайте: «Кукинатор 3000» — аппарат по выдаче печенья лучшим сотрудникам.

Аппарат представляет из себя конструкцию из ПВХ и некоторых деталей:
Спираль c приводом (служит для подачи товара), экран, монетоприемник, и мозг всей конструкции — контроллер Wiren Board 6.
Читать дальше →
Total votes 44: ↑41 and ↓3+38
Comments22

Большой 3D принтер CreatBot D600

Reading time4 min
Views4.7K
Всем привет, с вами компания 3Dtool. Сегодня в нашем обзоре 3D принтер внушительных размеров, который выводит профессиональную 3D печать на новый уровень.

Он носит название CreatBot D600, и поставляется в довольно прочном, деревянном ящике.


Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments4

Дайджест свежих материалов из мира фронтенда за последнюю неделю №317 (28 мая — 3 июня 2018)

Reading time3 min
Views15K
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.


Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments4

Самый умный обогреватель

Reading time2 min
Views41K


Сегодня я расскажу об одном интересном девайсе. Им можно обогревать помещение, поставив под окно, как любой другой электрический конвектор. Им можно обогревать «с умом», по любым мыслимым и немыслимым сценариям. Он сам может легко управлять умным домом. На нем можно играть и (о, Космос!) даже работать. (осторожно, много больших фото под катом)
Читать дальше →
Total votes 60: ↑54 and ↓6+48
Comments195

Прибор ночного видения на базе тепловизионного модуля Flir Lepton 3

Reading time6 min
Views24K
Ранее я написал статью о подключении к компьютеру тепловизионной приставки к смартфону Flir One Gen 2. Пришла пора вынуть из этой приставки модуль лептон и подключить к микроконтроллеру напрямую, собрав прибор ночного видения с разрешением 160x120 пикселей.
Total votes 44: ↑44 and ↓0+44
Comments19

SamsPcbGuide, часть 4: Трассировка сигнальных линий. Минимизация индуктивности

Reading time8 min
Views19K
Мир, трассировка печатной платы, май. Потому что трассировка печатной платы — это труд. И эта статья открывает целый блок, цель которого дать правильные инструменты для этой задачи. В ней обосновывается важность контроля траектории возвратного тока и минимизации индуктивности контура тока критических сигнальных линий, а также даются рекомендации по их оптимальной трассировке.
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments16

Учёные создали фермент, который разлагает пластик

Reading time3 min
Views21K


Пластик — огромная проблема. Точнее, не сам пластик, а отходы, заполонившие моря, океаны, землю. Даже в самых отдаленных уголках планеты, до которых и добраться-то сложно, находят своеобразные артефакты культуры — пластиковые бутылки, пакеты и многое другое. Некоторые страны начали воевать с производителями пластиковых изделий, а также с их массовыми потребителями (например, супермаркеты, которые миллиардами закупают пакеты).

Но это война небыстрая, планета успеет укрыться слоем пластика до того, как победят «борцы с пакетами». Правда, кроме прямых запретов есть и другие способы борьбы, которые могут казаться весьма неожиданными. Например, бактерии, которые питаются пластиком, служащим основным материалом для изготовления большинства упаковочных материалов. Сейчас, изучив жизнедеятельность этих бактерий, ученые смогли выделить фермент, при помощи которого микроорганизмы перерабатывают пластик.
Читать дальше →
Total votes 32: ↑32 and ↓0+32
Comments85

Ранняя вселенная 1. Инфляционная Космология: является ли наша вселенная частью мультивселенной? Часть 1

Reading time34 min
Views19K
На сайте бесплатных лекций MIT OpenCourseWare выложен курс лекций по космологии Алана Гуса, одного из создателей инфляционной модели вселенной. Курс мне показался достаточно интересным, чтобы заняться его переводом.

Вашему вниманию предлагается перевод первой лекции: «Инфляционная Космология. Является ли наша вселенная частью мультивселенной? Часть 1».
Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments20

Нейросеть AttnGAN рисует объекты по частям, используя векторное пространство не только предложений, но и слов

Reading time3 min
Views10K

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

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

Последние разработки исследователей в этой области основаны на генеративно-состязательных сетях (GAN). Общим подходом является перевод всего текстового описания в глобальное векторное пространство предложений (global sentence vector). Такой подход демонстрирует ряд впечатляющих результатов, но у него есть главные недостатки: отсутствие чёткой детализации на уровне слов и невозможность генерации изображений высокого разрешения. Группа разработчиков из Лихайского университета, Ратгерского университета, Университета Дьюка (все — США) и компании Microsoft предложили своё решение проблемы: новая нейросеть Attentional Generative Adversarial Network (AttnGAN) представляет собой улучшение традиционного подхода и позволяет многоступенчато изменять сгенерированное изображение, меняя отдельные слова в текстовом описании.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments15

Новогодние подарки, часть первая: Meltdown

Reading time13 min
Views104K
Да, я знаю, что это уже третий материал на GT/HH по данной проблеме.

Однако, к сожалению, до сих пор я не встречал хорошего русскоязычного материала — да в общем и с англоязычными, чего уж тут греха таить, та же проблема, там тоже многих журналистов изнасиловали учёные — в котором внятно раскладывалось бы по полочкам, что именно произошло 3 января 2018 года, и как мы будем с этим жить дальше.

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

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

К счастью, подвержены они ей в разной степени. К несчастью, самый серьёзный удар пришёлся на самые распространённые процессоры — Intel, причём затронул он абсолютно все выпускающиеся и практически все эксплуатируемые (единственным исключением являются старые Atom, выпущенные до 2013 года) процессоры этой компании.
Читать дальше →
Total votes 179: ↑177 and ↓2+175
Comments265

Полусинтетический организм с шестью основаниями ДНК теперь умеет размножаться

Reading time3 min
Views27K
По крайней мере с момента появления последнего общего предка всего живого на Земле примерно 3,5 млрд лет назад генетическая информация хранится в четырёхбуквенном алфавите, который распространяется и считывается в виде двух базовых пар. Это четыре азотно-углеродно-водородные основания: аденин (А), тимин (Т), цитозин (С) и гуанин (G). В силу своего химического состава они связываются в базовые пары в строгом порядке, не допускающем вариантов: только A-T и С-G. В такой четверичной системе закодирована вся жизнь на Земле.

Главная цель синтетической биологии как науки — создание новых жизненных форм и новых функций у существующих организмов. Логичный путь к достижению этой цели — разработка полусинтетических организмов с расширенным набором базовых пар. Кроме четырёх оснований живой природы они могут содержать пару синтетических оснований, образующих третью искусственную базовую пару: X-Y.

Предыдущие попытки создать такой полусинтетический организм достигли апогея в 2016 году. Тогда генетикам удалось вывести штамм Escherichia coli, которая извлекала необходимые синтетические трифосфаты из окружающей среды и использовала их для репликации плазмид с синтетическим основанием. Это был первый случай репликации полусинтетической ДНК, но всё-таки такой полусинтетический организм был не совсем полноценным. Просто хранения и передачи синтетической базовой пары недостаточно. Чтобы нести какую-то пользу, она должна быть полностью функциональной, то есть способной в конечном итоге через РНК на экспрессию белков. И это будут белки, создать которые не способна ни одна естественная форма жизни в четверичной системе.
Читать дальше →
Total votes 44: ↑44 and ↓0+44
Comments97

Как с помощью спутников превратить вулкан в электростанцию

Reading time4 min
Views11K
image

Эфиопия вызывает в воображении картины песчаных пустынь, суетных улиц Аддис-Абебы или крутых склонов горного хребта Сымен — возможно, с бегуном где-то на заднем плане. Однако же эта страна является ещё и одной из самых вулканически активных на Земле, благодаря Восточно-Африканской рифтовой долине, проходящей прямо через её сердце.

Расщелины, или рифты, появляются в геологическом процессе, раскалывающем тектонические плиты — примерно со скоростью роста ваших ногтей. В Эфиопии из-за этого магма выходит на поверхность, и существует более 60 известных вулканов. Многие из них в прошлом претерпевали колоссальные извержения и оставляли за собой гигантские кратеры, усеивающие рифтовую долину. Некоторые из них активны и сегодня. Посетители вулканов могут увидеть пузырящиеся лужи грязи, горячие источники и множество отверстий, из которых вырывается пар.
Total votes 25: ↑22 and ↓3+19
Comments5

Краткая история Лямбды, или почему Итан привирает

Reading time11 min
Views35K
В очередном опусе Итана Сигеля резанула фраза
в интернете кто-то неправ
Пронаблюдав за удалёнными сверхновыми и измерив, как Вселенная расширялась миллиарды лет, астрономы обнаружили нечто удивительное, загадочное и неожиданное.
И нет, с переводом всё в порядке, в оригинале ещё желтее:
By observing distant supernovae and measuring how the Universe had expanded over billions of years, astronomers discovered something remarkable, puzzling and entirely unexpected

wat?

О какой неожиданности может идти речь? Там ведь совершенно шикарная история длиной в 80 лет с яркими открытиями и закрытиями. История про то, как на самом деле делается настоящая наука. История скорее про физиков, чем про физику.
Читать дальше →
Total votes 133: ↑133 and ↓0+133
Comments118

Information

Rating
Does not participate
Registered
Activity