Важная информация

User Tag List

Страница 4 из 11 ПерваяПервая 12345678 ... ПоследняяПоследняя
Показано с 31 по 40 из 103

Тема: О рисовании прямых

  1. #31
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,279
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Умножение вектора на матрицу преобразования емнип 16 умножений, 12 сложений с нужной точностью.
    не могу не вмешаться

    9 умножений и 9 сложений на точку. если пренебречь дрожащими вершинами, то точность не важна.

    и единоразово (на всю сцену) рассчёт матрицы - 25 умножений и 6 сложений/вычитаний.

    это в самом общем случае для абсолютно любого объекта.
    гораздо более ресурсоёмкие операции - отсечения заведомо не отрисовыемых частей полигонов.

    ----

    самое быстрое и не пригодное для реальных условий умножение:

    Код:
    ; BC = A * L
    ; A от 0 до 255, L от 0 до 255
    ; DE должно быть == #4000
    
    add a,'MULTBL
    ld h,a
    ld c,(hl)
    add hl,de
    ld b,(hl)
    итого 7+4+7+11+7 = 36 (причём это наиболее быстрое и наименее пригодное в реальной жизни умножение)
    36 * 9 = 324 такта тольно на умножение

    с реальным умножением (пусть оно и умжножает от -128 до 127 по таблице), будет гораздо больше.
    так что ни 200 ни 100 точек за фрейм "честно" не повернуть.

    ----

    с другой стороны в 3D игре важно не насколько оно фреймово, а просто насколько быстро.
    и вот тут есть разница - поворот 2х точек намного быстрее отрисовки линии, как не крути.
    Последний раз редактировалось Sinus; 05.01.2010 в 11:43.
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

  2. #31
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #32
    Activist Аватар для Higgins
    Регистрация
    03.05.2007
    Адрес
    St. Petersburg
    Сообщений
    297
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sinus Посмотреть сообщение
    9 умножений и 9 сложений на точку. если пренебречь дрожащими вершинами, то точность не важна.
    Есть хитрости. Во-первых, координату глубины можно считать, когда и если ее вообще нужно считать, не для каждой вершины, а для всего объекта. То есть три из этих девяти умножений могут быть опущены.

    Во-вторых, если шаг координатной сетки велик (т.е. количество делений на каждой из осей небольшое), можно сначала посчитать проекции радиус-векторов до всех точек осей, а затем получить координаты вершин простыми сложениями.

    Наверное, можно и еще что-нибудь выдумать.
    Higgins ZX Spectrum Emulator 8.10 alpha 3 available
    Please write us to report a bug or request a feature.

  4. #33
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,279
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    это "честный" поворот.

    Во-первых, координату глубины можно считать, когда и если ее вообще нужно считать, не для каждой вершины, а для всего объекта. То есть три из этих девяти умножений могут быть опущены.
    мм. и изомерическая проекция? нафих.

    ----

    а если делать прекальк до для не сложных объектов можно обойтись от 4х до 6ти умножений (про это писалось в каком-то Spectrum Expert). но эти хитрости для демок больше, а тут разговор про игры идёт.
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

  5. #34
    Guru
    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Качаем сорцы The Link и в эффекте с ёжиком смотрим вертелку JTN'а. Оставляем 2 оси из 3, как раз будет около 350 тактов. Есть также аналогичная вертелка Vitamin'а.

  6. #35
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,560
    Спасибо Благодарностей отдано 
    1,223
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от alone Посмотреть сообщение
    Качаем сорцы The Link и в эффекте с ёжиком смотрим вертелку JTN'а. Оставляем 2 оси из 3, как раз будет около 350 тактов. Есть также аналогичная вертелка Vitamin'а.
    Прикольная дема, жаль, практически под абстрактное железо - пентагон 1024кб с 110000 тактами и GS. Вот сделать это же под обычный пентагон 128кб ;-)

  7. #36
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,279
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Оставляем 2 оси из 3
    про что и говорилось изначально (начиная с поста #25).

    в деме можно и 2 оси оставить, и одну, и прекальк сделать, и т.д.
    а в игрушке низзя
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

  8. #37
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,550
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    270
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    178 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    Exclamation поднимаю тему

    Higgins, есть вопросы:

    1) Мерил целиком, или только основной цикл (от первой поставленной точки до последней)?
    2) Точки только ставились, или можно было ксорить заменой нескольких кодов?
    3) Сколько процедурки жрут памяти именно в рабочем состоянии?

    Тут, возможно, скоро будет новый кандидат на тестирование
    13000 на диагональ многовато...
    Прихожу без разрешения, сею смерть и разрушение...

  9. #38
    Activist Аватар для Higgins
    Регистрация
    03.05.2007
    Адрес
    St. Petersburg
    Сообщений
    297
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    1) Мерил целиком, или только основной цикл (от первой поставленной точки до последней)?
    Измерялась разница значений счетчика тактов непосредственно до исполнения инструкции CALL, вызывающей процедуру рисования линии и сразу после возврата управления из этой процедуры.

    Код, устанавливающий значения регистров и все прочие приготовления не учитывались.

    Задержки по памяти и портам не учитывались тоже.

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    ) Точки только ставились, или можно было ксорить заменой нескольких кодов?
    Это определяется реализацией. Понятно, что при использовании SET быстрой ксорки не будет.

    Возможно, для каждой реализации следует делать пометку о том, может ли она ксорить.

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    3) Сколько процедурки жрут памяти именно в рабочем состоянии?
    Ох, надо покопать архив.

    Да, и может быть это тоже следует указывать при сравнении.

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    Тут, возможно, скоро будет новый кандидат на тестирование
    Было бы отлично. Штука-то фундаментальная.

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    13000 на диагональ многовато...
    Higgins ZX Spectrum Emulator 8.10 alpha 3 available
    Please write us to report a bug or request a feature.

  10. #39
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sinus Посмотреть сообщение
    не могу не вмешаться

    самое быстрое и не пригодное для реальных условий умножение:

    Код:
    ; BC = A * L
    ; A от 0 до 255, L от 0 до 255
    ; DE должно быть == #4000
    
    add a,'MULTBL
    ld h,a
    ld c,(hl)
    add hl,de
    ld b,(hl)
    итого 7+4+7+11+7 = 36 (причём это наиболее быстрое и наименее пригодное в реальной жизни умножение)
    36 * 9 = 324 такта тольно на умножение

    с реальным умножением (пусть оно и умжножает от -128 до 127 по таблице), будет гораздо больше.
    так что ни 200 ни 100 точек за фрейм "честно" не повернуть.
    Читаю код... не понимаю... объясни? Если правильно понимаю, то 255*255 = около 65025.
    При умножении 255*255 тебе надо две таблицы - одна с младшим байтом, другая с старшим, количество значений - 65025 на старший и столько же на младший байт, итого 130050 байт. Может где то обманул??? У тебя там вижу всё в основную память падает + смещение по базовому адресу таблицы.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  11. #40
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,802
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    113
    Поблагодарили
    87 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Похоже что на входе А от 0 до 63:
    Тогда да, памяти хватит (16384 байт на старший байт и столько-же на младший ).
    Я такое умножение в DotsElka делал.
    А если А от 0 до 255 то получается что ВСЯ память (включая ПЗУ) занята под табличку (причём только одного полуслова)

Страница 4 из 11 ПерваяПервая 12345678 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •