Два слова о процедурной графике
![](https://hype.retroscene.org/uploads/images/00/00/90/2024/07/12/1a7d49.png)
Связана недооценка, думаю, с тем, что конкурс одновременно не вполне понятен как тем, кто любит демки (поскольку процедурная графика статична), так и тем, кто любит картинки (т.к. процедурная графика не позволяет нарисовать что хочешь). И всё же, его популярность хоть и медленно, но растёт.
Первые работы во многом были вызваны интересом к теме трассировки лучей (raytracing). Сам по себе алгоритм довольно простой, но требует много вычислений, поэтому работы стали возможны, когда распространились компьютеры с, во-первых, достаточно высокой производительностью и, во-вторых, с достаточным количеством отображаемых цветов (или, хотя бы, градаций серого). Я порылся на pouet и нашёл одну из первых работ в категории «procedural graphics» — Digital Phantasy by EG:
![](https://hype.retroscene.org/uploads/images/00/00/90/2024/07/12/eafb0d.png)
Эта 1кб работа под DOS вышла в 1997 году. Помню, в том же году мы с друзьями развлекались написанием простых программ для raytracing'a блестящих шариков на IBM PS/2 Model 30 286 с монохромным MCGA монитором. Совпадение по времени не случайно, на raytracing тогда вообще была мода — в рекламе компьютеров и мониторов часто можно было видеть подобные изображения.
Другой темой, популярность которой стала расти немного позднее, были фракталы. Скажем, вот 2-million-Polys-and-some-Moonlight by Apocalypse Inc (4кб, 2005 год, PC/Windows):
![](https://hype.retroscene.org/uploads/images/00/00/90/2024/07/12/ecafd1.png)
или Versus 4k by Fulcrum (4кб, 2008 год, PC/Windows):
![](https://hype.retroscene.org/uploads/images/00/00/90/2024/07/12/3eda36.png)
Довольно впечатляющие, хоть и схематичные изображения можно получить даже просто кривыми — Blacklines by Calodox (4кб, 2007 год, PC/Windows):
![](https://hype.retroscene.org/uploads/images/00/00/90/2024/07/12/ff7c93.png)
И конечно, удобными объектами для визуализации являются те, которые содержат повторяющиеся элементы Klava by Quite & Youth Uprising (4kb, 2008 год, PC/Windows):
![](https://hype.retroscene.org/uploads/images/00/00/90/2024/07/12/6170e6.jpg)
Из-за низкой скорости вычислений формирования сложных реалистичных изображений поначалу приходилось ждать довольно долго. Однако, с ростом производительности компьютеров и возможностей видеокарт стали появляться намного более сложные и реалистичные работы. К примеру, в 2022 году 4кб работа Orders of Magnitude by Bitshifters collective (PC, Windows) выглядела так (обратите внимание на текстуры и мелкие детали):
![](https://hype.retroscene.org/uploads/images/00/00/90/2024/07/12/0c077a.png)
Можно сочетать сразу несколько подходов — разные геометрические примитивы, их повторение, искажение. А потом ещё и применить raymarching. Hoody by Rgba (4кб, 2020 год, PC/Windows):
![](https://hype.retroscene.org/uploads/images/00/00/90/2024/07/12/f9be67.png)
Или вот I felt the earth breathing by Quite, тоже 4кб для PC/Windows (2009 год):
![](https://hype.retroscene.org/uploads/images/00/00/90/2024/07/12/ec6591.png)
Фактически, работы занимающие единицы килобайт, становятся неотличимы от фотографий — RiverScape by Razor 1911 (4кб, 2023 год, PC/Windows):
![](https://hype.retroscene.org/uploads/images/00/00/90/2024/07/12/77787f.jpg)
Существует масса алгоритмов, которые могут быть использованы при создании интересных изображений — помимо упомянутых, это l-systems, генетические алгоритмы, metaballs, шум Перлина, диаграммы Вороного и другие.
Как и в случае с демками, у процедурной графики параллельно с прогрессом в плане реалистичности и качества изображения можно наблюдать и другую тенденцию, когда люди пытались и пытаются изобразить что-то совсем уж ограниченными средствами и на компьютерах, которые на момент создания работы уже устарели (и даже не всегда предназначены для показа изображений). К примеру, например сравнительно свежая (2022) работа Necropolis 3071 a.d. by Haujobb под PC/DOS, занимающая всего лишь 256 байт:
![](https://hype.retroscene.org/uploads/images/00/00/90/2024/07/12/ef17ae.png)
А вот и вовсе работа для ZX Spectrum (Northern sunset s!lence by bfox), тоже занимающая 256 байт. Как видим, если цветов мало — можно, во-первых, имитировать их большее, чем есть, количество, а во-вторых, показывать лишь силуэт:
![](https://hype.retroscene.org/uploads/images/00/00/90/2024/07/12/a27373.jpg)
Другой подход — использование уже имеющихся в ПЗУ символов знакогенератора, как например в 4кб работе Unfall beim Bügeln by Metalvotze для Commodore 64 (используются символы PETSCII):
![](https://hype.retroscene.org/uploads/images/00/00/90/2024/07/12/07b55b.png)
В работе Inanna by DreamWeb (4кб, Commodore Amiga, 2023 год) мы видим не просто схематичный рисунок, но сама схематичность стала идеей — летающие треугольники подчеркивают «нормальность» того, что изображение само состоит из полигонов:
![](https://hype.retroscene.org/uploads/images/00/00/90/2024/07/12/75ba7f.png)
Что можно запихнуть в 256 байт (работа Planet by Desire) на Apple II с крайне примитивной графикой? Ну, определённо космос — он же по большей части чёрный :)
![](https://hype.retroscene.org/uploads/images/00/00/90/2024/07/12/c8560c.png)
В целом суть в игре на аппаратных особенностях — на одном компьютере вы получите выигрыш от большого количества цветов или их имитации градиентом (Commodore Amiga, C64). На другом можно рисовать идеально гладкие кривые без всяких синусов (Vectrex). На третьем — использовать видеопроцессор для рисования полигонов (Sony Playstation 1) и т.д.
![Кадр из 1кб интро Christmas tree goes to a party для Vectrex by Frog](https://hype.retroscene.org/uploads/images/00/00/90/2024/07/12/d232fb.jpg)
![1кб C'2024 Invtitation gfx для Sony Playstation 1 (PSX) by Frog](https://hype.retroscene.org/uploads/images/00/00/90/2024/07/12/595ed0.jpg)
При этом у каждой из этих платформ есть также и свои недостатки — скажем, у RISC процессоров это большой объём кода, у ZX Spectrum или старых PC — отсутствие аппаратной поддержки рисования примитивов, у компьютеров с векторным устройством отображения — сложность сплошной заливки области и т.д.
Везде получается игра с возможностями и ограничениями. Для старых платформ ограничение размера в конкурсе процедурной графики обычно не более 1кб, поскольку в 4кб на некоторых платформах можно легко поместить готовую картинку даже без сжатия. Кстати, пара работ из тех, что упомянуты выше — была представлена на Chaos Constructions в Питере. В этом году мы проводим его снова (24-25 августа в ДК Кирова) и мне, как автору одной из двух уже поданных туда (конкретно на procedural graphics) работ, хочется больше конкуренции. Приглашаю поучаствовать!
Большой вопрос во всей истории с процедурной графикой — где проходит черта между ней и обычной распаковкой сжатого изображения? Почему нельзя считать комбинацию из jpeg+распаковщик процедурной графикой? Чёткой границы конечно нет. С одной стороны, авторам просто нет особого смысла обманывать (да и всё равно рано или поздно, если работа станет известной, кто-то это раскопает), с другой — упаковать качественное реалистичное изображение высокого разрешения в 4кб — весьма проблематично. Во многом ситуация тут схожа с запретом чистой анимации в демках.
В качестве иллюстрации — работа для Atari XE/XL, что называется, «на грани» с распаковкой — Mona by Ilmenit. Здесь в 256 байт умята Мона Лиза. Исходные данные для «мазков» были подобраны, фактически, перебором — за несколько дней работы мощного компьютера:
![](https://hype.retroscene.org/uploads/images/00/00/90/2024/07/12/a6fc2a.png)
0 комментариев