Введение
Эффект демо - это название для компьютерных визуальных эффектов в реальном времени, обнаруженных в демо, созданных демосценой. Основная цель демо-эффектов в демонстрациях - показать навыки программиста. Из-за этого демо-кодеры часто пытались создать новые эффекты, техническая основа которых не может быть легко понята другими программистами. Иногда, особенно в случае сильно ограниченных платформ, таких как Commodore 64, демо-эффект может заставить целевую машину делать вещи, которые, предположительно, выходят за рамки ее возможностей. Способность творчески преодолевать основные технические ограничения высоко ценится среди демосценщиков. Современные демо не так сосредоточены на эффектах, как демо 1980-х и 1990-х годов. Эффекты редко являются самостоятельными элементами контента, и их роль в программировании уменьшилась, особенно в демонстрациях на ПК. Как и сегодня, разработчики ПК с большей вероятностью продемонстрируют свои навыки программирования с помощью процедурного генерирования контента или функций 3D-двигателя, чем с помощью превосходных визуальных эффектов.
Относительно аппаратного обеспечения
Существуют демо-версии, написанные для многих различных устройств, которые значительно различаются по своим графическим характеристикам и возможностям обработки данных. Различие в аппаратном обеспечении также отражается в типах эффектов, изобретенных для каждой платформы, а также в методах, используемых при реализации. Демо-сцена взлетела на домашних компьютерах, таких как Commodore 64 и Amiga, которые имели относительно продвинутые и очень "разрушимые" пользовательские чипы и процессоры. До широкого распространения передового компьютерного проектирования интегральных схем чипы проектировались вручную и поэтому часто имели много незадокументированных или непреднамеренных функций. Отсутствие стандартизации также означало, что дизайн оборудования, как правило, отражал собственные идеи дизайнеров и творческий настрой. По этой причине большинство демо-эффектов "старой школы" основывалось на творческой эксплуатации особенностей конкретного оборудования. Много усилий было вложено в обратную инженерию оборудования, чтобы найти недокументированные возможности, используемые для новых эффектов. Однако IBM PC-компатиблы 1990-х годов не имели многих специальных функций, типичных для домашних компьютеров, вместо этого использовали стандартные детали. Это было компенсировано большим объемом вычислительной мощности. Возможность передового аппаратного обмана также ограничивалась большой изменчивостью ПК-аппаратного обеспечения. По этим причинам, PC-демокодеры эпохи DOS предпочитали сосредоточиться на алгоритмах рендеринга программного обеспечения на уровне пикселей. Демокодеры часто искали вызов и уважение, "переводя" эффекты с одной платформы на другую. Например, во время "золотого века" демо-версий Amiga многие известные эффекты Amiga были переделаны с Atari ST, Commodore 64 и PC, некоторые из которых считались уступающими по ключевым характеристикам, необходимым для рассматриваемых эффектов. С середины 1990-х годов, когда ПК стал основной платформой, демо для Amiga и C 64 начали включать в себя ПК, как "пиксельные эффекты".
Ранняя история
Самые ранние компьютерные программы, напоминающие демо-эффекты, предшествовали демосцене на несколько десятилетий. Возможно, самым ранним примером так называемых "программ взлома дисплея" является программа под названием "Подпрыгивающий мяч" на компьютере Whirlwind в начале 1950-х годов. Еще один известный взлом дисплея, "munching squares", был первоначально создан на PDP 1 примерно в 2000 году. В 1962 году.
3D-рендеринг
3D-компьютерная графика была представлена в демонстрациях с конца 1980-х годов. В настоящее время, 3D-двигатель общего назначения является неотъемлемой частью большинства новых демо. В конце 1980-х и начале 1990-х годов вращающиеся 3D-объекты считались эффектами самостоятельно из-за сложности их вычисления и рендеринга. В частности, большинство систем не имели единицы с плавающей точкой. Вместо 3D-алгоритмов общего назначения, демокодеры часто использовали специальные трюки, оптимизированные для вращения и рендеринга конкретного объекта, такого как куб или сфера. Поскольку даже рисование точек, линий или заполненных многоугольников было само по себе сложной задачей, конкуренция часто вращалась вокруг простой оптимизации рисования при использовании заранее рассчитанной математики. Для случайного зрителя многие демо-эффекты выглядят как что-то, достижимое с помощью 3D-двигателя общего назначения. Однако классические эффекты с видимым 3D-образом часто не имеют никаких 3D-расчетов в реальном времени. Например, статические таблицы поиска текстуры на экране могут использоваться с симметричными 3D-объектами, которые вращаются вокруг своей оси симметрии. До появления массового 3D-аппаратуры ускорения, демокодеры часто фокусировались на освещении и теневых методах в программных 3D-двигателях, включая тенирование Гурау, тенирование Фонг, картографирование текстуры, картографирование ударов, картографирование окружающей среды, радиозности и даже трассирование лучей в реальном времени. 3D-моторы общего назначения очень редко называются "эффектами", хотя рендерируемые сцены часто содержат что-то, что может рассматриваться как таковое.