Демо -эффект — это название компьютерных визуальных эффектов в реальном времени , которые можно найти в демонстрациях , созданных демосценой .
Основная цель демонстрационных эффектов в демонстрациях — продемонстрировать навыки программиста. Из-за этого демо-кодеры часто пытались создать новые эффекты, техническую основу которых не могли легко понять другие программисты.
Иногда, особенно в случае сильно ограниченных платформ, таких как Commodore 64 , эффект демонстрации может заставить целевую машину делать вещи, которые предположительно выходят за рамки ее возможностей. Способность творчески преодолевать серьезные технические ограничения высоко ценится среди демосценеров.
Современные демонстрации не так сосредоточены на эффектах, как демонстрации 1980-х и 1990-х годов. Эффекты теперь редко являются самостоятельными элементами контента, и их роль в демонстрации программистов уменьшилась, особенно в демонстрациях для ПК . На сегодняшний день демосценеры ПК, скорее всего, продемонстрируют свои навыки программирования с помощью процедурной генерации контента или функций 3D-движка, чем с помощью превосходных визуальных эффектов.
Существуют демоверсии, написанные для множества различных устройств, которые значительно различаются по своим графическим возможностям и возможностям обработки данных. Различия в аппаратном обеспечении также отражаются в типах эффектов, придуманных для каждой платформы, а также в методах, используемых при реализации.
Демосцена зародилась на домашних компьютерах, таких как Commodore 64 и Amiga , которые имели относительно продвинутые и очень «взламываемые» пользовательские чипы и процессоры. До широкого распространения передового автоматизированного проектирования интегральных схем чипы проектировались вручную и поэтому часто имели много недокументированных или непреднамеренных функций. Отсутствие стандартизации также означало, что проектирование оборудования, как правило, отражало собственные идеи и творческий талант дизайнеров. По этой причине большинство «старой школы» демонстрационных эффектов были основаны на творческой эксплуатации функций конкретного оборудования. Много усилий было вложено в обратную разработку оборудования, чтобы найти недокументированные возможности, пригодные для новых эффектов.
Однако IBM PC- совместимые компьютеры 1990-х годов не обладали многими из специальных функций, типичных для домашних компьютеров, вместо этого используя стандартные детали. Это компенсировалось большей вычислительной мощностью общего назначения. Возможность продвинутых аппаратных трюков также ограничивалась большой изменчивостью аппаратного обеспечения ПК. По этим причинам декодеры ПК эпохи DOS предпочитали сосредоточиться на алгоритмах программного рендеринга на уровне пикселей.
Демокодеры часто искали вызов и уважение, «перенося» эффекты с одной платформы на другую. Например, во время «золотого века» демо Amiga многие известные эффекты Amiga были переделаны с помощью Atari ST , Commodore 64 и PC, некоторые из которых считались неполноценными в ключевых функциях, требуемых для рассматриваемых эффектов. С середины 1990-х годов, когда PC стал основной платформой, демо для Amiga и C-64 также начали включать «пиксельные эффекты» ПК-типа.
Самые ранние компьютерные программы, напоминающие демонстрационные эффекты, появились за несколько десятилетий до появления демосцены. Возможно, самым ранним примером этих так называемых хаков отображения является программа Bouncing Ball на компьютере Whirlwind в начале 1950-х годов. Другой известный хак отображения, munching squares , был изначально создан на PDP-1 примерно в 1962 году.
Эти эффекты были типичны в 1980-х и начале 1990-х годов и впервые были реализованы на Commodore 64, Atari ST или Amiga. Они часто полагались на пользовательское аппаратное обеспечение системы или считались сложными из-за этого. Например, 3D-объекты, отрисованные точками, довольно сложны на системах без дисплеев байт на пиксель или ограниченной пропускной способности видеопамяти, или системах с медленными и/или ограниченными (например, 8 бит, без FPU ) процессорами.
Эффекты, основанные на программном рендеринге в пиксельные буферы кадров, были типичны для середины и конца 1990-х годов и обычно впервые реализовывались на ПК или Falcon030. Они стали популярными, поскольку системы с пиксельно-адресуемой высокоскоростной видеопамятью и более быстрыми процессорами (что позволяло выполнять более сложные вычисления в реальном времени) стали обычным явлением.
Некоторые из этих эффектов были позже перенесены на плоские пиксельные машины, такие как Amiga , без использования преобразования chunky to planar. Например, группа Sanity реализовала ротозумер, используя комбинацию предварительно отрендеренных плоских битовых карт и медных эффектов.
3D компьютерная графика используется в демонстрациях с конца 1980-х годов. В настоящее время универсальный 3D-движок является неотъемлемой частью большинства новых демонстраций.
В конце 1980-х и начале 1990-х годов вращающиеся 3D-объекты считались эффектами сами по себе из-за сложности их расчета и рендеринга. В частности, большинство систем не имели блока с плавающей точкой. Вместо универсальных 3D-алгоритмов декодеры часто использовали специальные трюки, оптимизированные для вращения и рендеринга конкретного объекта, такого как куб или сфера . Поскольку даже рисование точек, линий или заполненных многоугольников само по себе было сложной задачей, соревнование часто вращалось вокруг простой оптимизации процедур рисования с использованием предварительно рассчитанных математических вычислений.
Для обычного зрителя многие демонстрационные эффекты выглядят как нечто достижимое с помощью универсального 3D-движка. Однако классические эффекты с очевидным 3D-видом часто вообще не имеют 3D-расчетов в реальном времени. Например, статические таблицы преобразования экрана в текстуру могут использоваться с симметричными 3D-объектами, которые вращаются вокруг своей оси симметрии.
До появления на рынке аппаратного обеспечения для 3D-ускорения демокодеры часто сосредотачивались на методах освещения и затенения в программных 3D-движках, включая затенение по Гуро , затенение по Фонгу , текстурирование , рельефное отображение , отображение окружения , излучательность и даже трассировку лучей в реальном времени .
Универсальные 3D-движки очень редко называют «эффектами», хотя визуализированные сцены часто содержат что-то, что можно так считать.