Поверь, мне понятны как работают эти эффекты целиком и полностью. Вопрос мой гипотетический. и используемый «матан» часто сложнее и интереснее стандартного алгоритма меппинга текстуры.
То что в данном случае это синус это понятно. Но это, во-первых, лишь малая часть моего вопроса.
Интересно как авторы в каждом случае устраивают матрицы этих кривуль, как их лучше хранить
для каждого кадра (при прекалькуляции), или где-то выгодно считать на лету по таблицам того же исходного синуса — тогда
какие используются алгоритмы для быстрых вычислений.
во вторых, часто дело синусом не ограничивается, и идет в ход матан пожощще. А вот авторы
статей про демо эффекты, почему-то стараются всегда этот вопрос обходить стороной.
Скажу за себя: лично мне куда интереснее писать свой код, основываясь на хорошо объяснённых алгоритмах, чем копипастить чужой код и пытаться в нём разобраться. Но я ни на чём не настаиваю.
Ну вот а мне такой способ объяснения понятнее, чем лоскуты неперевареного кода, которые любишь выкладывать ты.
Твой Moving Shit, насколько я помню, и был причиной я влез в Illusion, потому что у тебя было душераздирающе медленно (в 4 раза медленнее, насколко я помню). Если бы ты научился думать о внутренних циклах описанным мной образом, м.б. и у тебя вышло бы пошустрее.
Все они примерно по одной схеме работают.
1. Засылаем юзера в сеть, назад он приходит с user id и токеном доступа.
2. Всё, юзера знаем, можем проверить, есть ли такой в нашей системе.
3. Если нет, можем с помощью токена дополучить какую-то инфу и зарегистрировать, сохранив в базу куда-то внешний user id.
У меня есть уже авторизация по FB/G+ в платформе, но пока не обновлен сам проект, это отдельные пара часов работы. В этой ситуации поддержка SceneID — это просто добавление плагина в единую схему.
Напомнило попытки Быстрова выглядеть самым умным и объяснить как работают демоэффекты. Его фраза про столбики для вокселя просто должна попасть в анналы.
Этот топик мне вряд ли что объяснит, например, неясно, как строится табличка для Robocop.
с Moving Shit ясно итак: я попытался повторить похожий эффект в Reality, помог разобраться с работой исходник от пейсишной bbstro:
Нарисуйте спрайт, где колеблется синусная линия. Затем добавьте смешение по горизонтали, смещение определяется как sin(A)+sin(B).
moroz1999 При все к вам уважении на иностранные ресурсы соваться не буду! :-) Будут большие проблемы с общением там да и денежный приз в рублях они вряд ли возьмут! Хотя идея конечно отличная!
Пришлось разбить на два поста, причём неровно. Из-за того, что в движке (или в настройках, не знаю) ограничение:
«Ошибка: Поле Текст слишком длинное (максимально допустимо 65536 символов)».
Надо бы сообщение заменить на «64k достаточно для любого». Чтобы было совсем аутентично :)
1. «Кривуля» чаще всего функция sin. Таблицы — это всё.
2. Храни sin в таблице 256 байт, рассчитай заранее.
3. Загрузи старшую половину регистровой пары чтобы получить адрес таблицы, пусть это будет H
4. Тогда L — будет произвольный аргумент функции.
5. Крути L как угодно — будешь ходить по функции туда-сюда.
6. Читай значения sin как LD reg,(HL)
7. cos это то же самое что sin, но сдвинутый на четверть периода. И наоборот. Четверть периода это регистр L +- 64
8. Удобно вместо значений sin/cos сразу прошить таблицу адресами.
9. Значения таблиц sin можно подготовить на старте.
Интересно как авторы в каждом случае устраивают матрицы этих кривуль, как их лучше хранить
для каждого кадра (при прекалькуляции), или где-то выгодно считать на лету по таблицам того же исходного синуса — тогда
какие используются алгоритмы для быстрых вычислений.
во вторых, часто дело синусом не ограничивается, и идет в ход матан пожощще. А вот авторы
статей про демо эффекты, почему-то стараются всегда этот вопрос обходить стороной.
Но вот со спектрумом всё пошло дальше :)
Твой Moving Shit, насколько я помню, и был причиной я влез в Illusion, потому что у тебя было душераздирающе медленно (в 4 раза медленнее, насколко я помню). Если бы ты научился думать о внутренних циклах описанным мной образом, м.б. и у тебя вышло бы пошустрее.
1. Засылаем юзера в сеть, назад он приходит с user id и токеном доступа.
2. Всё, юзера знаем, можем проверить, есть ли такой в нашей системе.
3. Если нет, можем с помощью токена дополучить какую-то инфу и зарегистрировать, сохранив в базу куда-то внешний user id.
У меня есть уже авторизация по FB/G+ в платформе, но пока не обновлен сам проект, это отдельные пара часов работы. В этой ситуации поддержка SceneID — это просто добавление плагина в единую схему.
Этот топик мне вряд ли что объяснит, например, неясно, как строится табличка для Robocop.
с Moving Shit ясно итак: я попытался повторить похожий эффект в Reality, помог разобраться с работой исходник от пейсишной bbstro:
Нарисуйте спрайт, где колеблется синусная линия. Затем добавьте смешение по горизонтали, смещение определяется как sin(A)+sin(B).
«Ошибка: Поле Текст слишком длинное (максимально допустимо 65536 символов)».
Надо бы сообщение заменить на «64k достаточно для любого». Чтобы было совсем аутентично :)
2. Храни sin в таблице 256 байт, рассчитай заранее.
3. Загрузи старшую половину регистровой пары чтобы получить адрес таблицы, пусть это будет H
4. Тогда L — будет произвольный аргумент функции.
5. Крути L как угодно — будешь ходить по функции туда-сюда.
6. Читай значения sin как LD reg,(HL)
7. cos это то же самое что sin, но сдвинутый на четверть периода. И наоборот. Четверть периода это регистр L +- 64
8. Удобно вместо значений sin/cos сразу прошить таблицу адресами.
9. Значения таблиц sin можно подготовить на старте.