[Габриэль Гамбетта] знает кое-что о трассировщиках лучей, поскольку является автором Tiny Raytracer, трассировщика лучей, написанного всего на 912 байтах JavaScript. Как давно человек страдалец разработанного в Великобритании ZX Spectrum, можно ли объединить эти два любовных романа? Может ли Tiny Raytracer поместиться на ZX Spectrum? В БЕЙСИКЕ? Ответ утвердительный ответ, хотя и со многими ограничениями нашей любимой модели.
История начинается с [Габриэля] Алгоритмы трассировки лучей компьютерной графики с нуля (CGFS) и существующая база кода, которая была перенесена на очень ограниченный диалект BASIC ZX Spectrum с использованием VSCode для редактирования, БАС2ТАП для создания файла изображения ленты (по сути, звуковой дорожки) и выполнения с помощью FUSE. Отсортировав набор инструментов, [Габриэль] добавляет ровно столько кода, чтобы справиться с уравнениями пересечения лучей сферы, и рендерит сцену с тремя сферами в цветное изображение размером 32×22 пикселя, что занимает всего 15 минут работы. Товарищи по несчастью помнят, что спектр имел блочный массив атрибутов (или массив цветов) 32×22 с двумя значениями цвета для пикселей переднего и заднего плана. Каждый блок атрибутов содержит 8×8 пикселей, каждый из которых может быть передним планом (включен) или фоном (выключен). Следующим этапом было расширение кода для обработки пикселей, а также блоков, путем простого расширения трассировки лучей до полных 256 пикселей. Разрешение ×176, и для каждого блока просто определите два наиболее распространенных цвета и используйте их для всего блока. Это вроде как работает в духе спектрального «столкновения атрибутов».
Но теперь время работы составляет 17 часов! Далее, настройка производительности с использованием довольно большого количества хаков Spectrum BASIC и некоторых графических приближений, таких как отбрасывание лучей для каждого углового пикселя блока, и, если они идентичны, окрашивание всех оставшихся 60 пикселей в одинаковую окраску и движение дальше. . Благодаря этим усилиям время работы сократилось до двух часов.
Далее [Габриэль] смело отказывается от плоской модели освещения, моделирует один источник света и извлекает единственный оставшийся трюк в мире монохромного спектра — размывание значений интенсивности для каждого блока, используя простой Упорядоченный шаблон дизеринга 8×8, это выглядит не так уж и плохо, если принять во внимание все обстоятельства. Быстрая остановка на пути к завершению, к добавить тени и время работы вернулось к 17 часам, но оно того стоит. Очевидно, что это оптимизировано для одного типа сцены, в котором преобладают сферы, но принципы существуют, а кубы находятся всего в нескольких строках кода. Есть желающие?
Трассировка лучей — одна из тех забавных, но сложных задач, которые люди просто любят втискивать в неподходящее оборудование. как этот графический калькулятор TI-84Plus CE, и если это немного труднодоступно, вот что-то столь же безумное работает в старом добром Excel.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- PlatoData.Network Вертикальный генеративный ИИ. Расширьте возможности себя. Доступ здесь.
- ПлатонАйСтрим. Интеллект Web3. Расширение знаний. Доступ здесь.
- ПлатонЭСГ. Углерод, чистые технологии, Энергия, Окружающая среда, Солнечная, Управление отходами. Доступ здесь.
- ПлатонЗдоровье. Биотехнологии и клинические исследования. Доступ здесь.
- Источник: https://hackaday.com/2024/01/26/a-zx-spectrum-raytracer-in-basic/
- :является
- :куда
- 1
- 15%
- 17
- 400
- 60
- a
- О нас
- доступ
- Добавляет
- Дела
- Все
- an
- и
- ответ
- любой
- МЫ
- массив
- AS
- аудио
- автор
- прочь
- назад
- фон
- Плохой
- Использование темпера с изогнутым основанием
- основной
- BE
- не являетесь
- возлюбленная
- Немного
- Заблокировать
- Блоки
- но
- by
- литье
- явно
- код
- кодовая база
- Общий
- завершение
- комплекс
- считается
- содержит
- Corner
- может
- сделка
- Определять
- Канавы
- не
- каждый
- редактирование
- усилие
- достаточно
- одинаково
- уравнения
- по существу
- Эфир (ETH)
- выполненный
- существующий
- Расширьте
- расширяющийся
- Фэшн
- Особенность
- человек
- несколько
- Файл
- соответствовать
- плоский
- Что касается
- от
- полный
- fun
- порождать
- графика
- взломы
- было
- обрабатывать
- Жесткий
- Аппаратные средства
- ЧАСЫ
- HTML
- HTTPS
- идентичный
- if
- изображение
- in
- пересечение
- в
- IT
- JavaScript
- всего
- Вид
- знает
- легкий
- Освещение
- Ограниченный
- линий
- посмотреть
- любят
- многих
- макс-ширина
- меров
- минут
- модель
- Модели
- монохромный
- БОЛЕЕ
- самых
- перемещение
- сеть
- следующий
- сейчас
- of
- от
- Старый
- on
- ONE
- только
- Оптимизировано
- or
- наши
- внешний
- Люди
- производительность
- Pixel
- одноцветный
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- преимущественно
- первичный
- Принципы
- Тянет
- САЙТ
- вполне
- RAY
- трассировка лучей
- Цена снижена
- осталось
- помнить
- оказывает
- Постановления
- Run
- то же
- сцена
- поцарапать
- просто
- просто
- одинарной
- некоторые
- удалось
- Источник
- Спектр
- сфера
- Спотовая торговля
- Этап
- начинается
- Stop
- История
- такие
- берущие
- с
- лента
- задачи
- который
- Ассоциация
- The Block
- тогда
- Там.
- Эти
- вещи
- этой
- те
- время
- в
- слишком
- трассировка
- трек
- доводка
- два
- напишите
- через
- Наши ценности
- очень
- законопроект
- Путь..
- ЧТО Ж
- который
- все
- Википедия.
- будете
- работает
- Мир
- стоимость
- письменный
- зефирнет