Вот за эту ссылку отдельное спасибо
Ну вот и ответ на мой вопрос — оказывается там прекалькулированная заранее, и тупо загруженная таблица смещений. Понятно что методы ее вычисления — это скорее, тема отдельной статьи. а насчет методов — думаю авторы иллюзион слыхом не слыхивали ни об одном из перечисленных. Посчитали по формуле сферы с проекцией на ортогональную плоскость да и все, тупо из бейсика, поками.
Рискну предположить, что непосредственно в теле демы по этой таблице генерится статичный развернутый цикл.
  • avatar bfox
  • 0
вот мне уже самому хочется этот эмузвин попробовать после такого всеобщего вокруг него ажиотажа)
Неа, тема то про то что таблицы посчитанные на PC это почти запилятор, а таблицы посчитанные ПЗУшным калькулятором или хитрым монстрокодом это тру :) Вот это позабавило. Ну а так, каждому нравиться своё, кому-то этюды с сильным кодом, кому-то всё подряд, кому-то эмузвин :)
Общим термином «запилятор» я обычно нарекаю любую растровую анимацию)
  • avatar VBI
  • 0
похоже мы по разному воспринимаем термин запилятор.
ибо ты говоришь о спрайте «4 фазы анимации маленького шарика 2 на 2 знакоместа», а я о экранном выводе заданного гифа, в котором уже заданы кадры и координаты вывода.
Денис, тот факт что у меня нет времени на написание полноценных дем, не отменяет того факта, что тема программирования демоэффектов мне крайне интересна. Но мне больше в демах интересны не «флоу», а программистские этюды. Как свободный человек, я имею право выбирать чем мне интересоваться.
Ну смотри, 4 фазы анимации маленького шарика 2 на 2 знакоместа, проще эффективнее загрузить прямо спрайтами, чем пытаться их как-то генерить на месте
Тут надо разделять понятие демы и интры. Понятно что в деме такой ход неприменим. А вот интра она на то и интра, чтобы все генерить «в себе», с минимальным объемом загружаемого исходного кода, в этом и состоит ее прелесть.
Ну, во-первых мне искренне жаль, что своим безобидным вопросом, с просьбой раскрыть для меня некоторые интересующие меня, но не раскрытые в статье аспекты я вызывал твое раздражение, мне правда стыдно.В оправдание, хотелось бы пояснить: Если я что-то спрашиваю, то я спрашиваю именно то что я спрашиваю, без скрытых смыслов и двойного дна. Если я обращаюсь не конкретно к тебе, а ко многим, или пространному «кому-то», то это значит лишь то, что я прочитал много статей на хайпе по программированию, и, по моему скромному разумению, чуть более во всех из них вышеописанные аспекты игнорируются. А коммент, именно под твоей статьей я написал, так как доселе я считал, что именно ты можешь адекватно воспринять вопрос, и, возможно, если не лень ответить. Я прекрасно отдавал себе отчет, что достопочтенный Интроспек не будет переписывать ради меня эту статью, но, т.к., эта статья заявляется как первой в цикле подобных – то, возможно, если будет желание, в какой-то из следующих статей, он учтет и мое пожелание, а также, возможно, его учтет и КТО-ТО ДРУГОЙ. На твоем месте, я бы был удовлетворен, так как подобные вопросы (в отличие от бездумного тыкания плюсиков) свидетельствуют как минимум о том, что статью прочитали, заинтересовались, т.е. работа проделана не зря. Задавая эти вопросы, я ожидал услышать ответы по существу, или на худой конец, что-то вроде: «Извиняй чувак, мне было в лом в этом разбираться, да и вообще я хотел написать о другом». Вместо этого я в очередной раз, вижу, как у автора, говоря современным слэнгом, начинает «подгорать», причем буквально с «пол-оборота». Причем ладно бы я сказал статья Г. и автор М., так нет, в целом выразил благодарность за поднятую интересную тему, просто попросил раскрыть тему еще полнее. Насчет «клешней»: адекватная реакция на вопрос, который не понятен – просьба разъяснить точнее, что имелось ввиду, а не злость.
Насчет понтований: тут понтов никаких, я действительно знал эти методы, и видел синус в мувинг шите, я спрашивал не про него. Но их реализации в конкретной деме, тем не менее, интересны, ибо всегда полезно иметь ввиду чужой успешный опыт, ибо свои представления могут быть ошибчно и неэффективны.
  • avatar VBI
  • 0
Так понимаю, у нас статья на час ранее появилась? :)
ага, наел более внятное объяснение:
www.petesqbsite.com/sections/express/issue25/index.html
Не, все верно, чо: нашел кусок кода, посчитал такты, поделился открытием.
Но вы все сами понимаете, что следующий шаг — запилятор

Долго смеялся :) Самое главное демы не забывайте делать, а то в теории то все крутые и принципиальные!
ОК, например, линия Dark^X-Trade, прекрасная статья, никаких вопросов вообще. Но много ты знаешь реально быстрых линий, спроектированных иначе чем у него?
А было такое в истории спектрума? Что вот в каком-то журнале что-то разжовывалось и приводило к всплеску однообразных эффектов?
  • avatar TmK
  • 2
В коде каждого из нас зарыт злостный гоблин… :)
Я про то, что какой бы ужастик в коде не был, интересен путь, а также проблемы и нюансы решаемые и возникающие в процессе.
Ммм, а ещё возможно, что они и по-честному посчитали, с учётом перспективы.
Вот тут есть пример выкладок: www.javaworld.com/article/2076696/learn-java/draw-textured-spheres.html
Мне, кстати, кажется, что твоя точка зрения про таблицы весьма экстремальна. Мне прекалк в 30 секунд не кажется нормальным, а уж особенно в середине трекмо. Ты напомнил мне, как кодер ротозумера в Batman Forever на амстраде вместо традиционного расчета вектора для шагания по текстуре сделал просто таблицу готовых векторов для каждого нужного ему угла и его обвиняли его в том, что у него не ротозумер, а анимация.

С моей точки зрения, это какие-то бессмысленные ограничения, которые портят впечатление с т.зр. зрителя. Т.к. я стараюсь делать демы для зрителей, я не считаю принципиальным кто и где считал таблицы и, даже больше, я уже неоднократно задействовал кодогенераторы написанные на PC. Это позволяет при прочих равных условиях повысить качество сгенерированного кода (качество в плане объёма и/или скорости), даёт сопоставимую скорость распаковки, а так же в разы упрощает отладку.
Я бы рассказал с удовольствием, если бы у меня не было чёткого ощущения, что должен быть какой-то способ лучше чем то, что я наделал в запарке. Итоговый эффект вышел в 3 фрейма на пентагоне; но концовка самую малость тормозит на классике, т.е. слегка вылезает из 3х фреймов. Исходно подразумевался рендер в 3 прохода (1. линии -> чанки 2х2, 2. чанки 2х2 -> чанки 1х1, 3. вывод чанков 1х1), но в первом проходе я накосячил и времени переделать его ещё раз не оставалось, поэтому сделан второй проход, который чинит недостатки первого, потом третий проход, который частично красит кадр и переводит всё в чанки 8х8 и только потом 4й проход с выводом чанков.

Первые 2 прохода, невзирая на недостатки того, как я их сделал, довольно эффективны. Третий проход писался последним и на него не было времени, он фактически не оптимизирован…

Короче, ты прав, может и нужно написать ужастик, хоть кодеры поржут.