[Габріель Гамбетта] знає дещо про трасувальники променів, будучи автором Tiny Raytracer, трасувальника променів, написаного лише на 912 байтах JavaScript. Як давно fellow страждає від ZX Spectrum, розробленого Великобританією, чи можна об’єднати ці дві любовні справи? Чи підійде Tiny Raytracer до ZX Spectrum? У BASIC? Відповідь така ствердно, хоча і з урахуванням багатьох обмежень нашої улюбленої види.
Історія починається з [Габріеля]. Алгоритми трасування променів комп’ютерної графіки з нуля (CGFS). і існуюча база коду, яка була перенесена на дуже обмежений діалект BASIC ZX Spectrum, використовуючи VSCode для редагування, BAS2TAP для створення файлу зображення стрічки (по суті звукової доріжки) і виконання за допомогою FUSE. Коли ланцюжок інструментів відсортовано, [Ґебріель] додає достатньо коду для роботи з рівняннями перетину променів сфери та рендерить сцену з трьома сферами до кольорового зображення 32 × 22 пікселя, займаючи лише 15 хвилин виконання. Люди, які страждають, пам’ятають, що спектр мав масив атрибутів блоків 32×22 (або масив кольорів) із двома значеннями кольорів для пікселів переднього плану та фону. Кожен блок атрибутів містить 8×8 пікселів, кожен з яких може бути переднім планом (увімкнено) або фоном (вимкнено). Наступним етапом було розширити код для обробки пікселів, а також блоків, просто розширивши трасування променів до повних 256 ×176, і для кожного блоку просто визначте два найпоширеніші кольори та запустіть їх для всього блоку. Це начебто працює, у дуже схожому на спектрі стилі «зіткнення атрибутів».
Але тепер час роботи становить 17 годин! Далі — крапка налаштування продуктивності, використовуючи чимало базових прийомів спектру та деякі графічні наближення, як-от відкидання променів для кожного кутового пікселя блоку, а якщо вони ідентичні, фарбування всіх 60 пікселів, що залишилися, однаковим кольором і рух далі . Це зусилля скоротило час роботи до двох годин.
Далі [Ґабріель] сміливо відмовляється від моделі плоского освітлення, моделює одне джерело світла та витягує єдиний трюк, що залишився у світі монохромного спектру, а саме змішування значень інтенсивності для кожного блоку за допомогою простого 8×8 впорядкована схема дизерінгу, з огляду на все це виглядає непогано. Швидка зупинка на шляху до завершення, до додати тіні і час роботи повернувся до 17 годин, але воно того варте. Зрозуміло, що це оптимізовано для одного типу сцени, де переважно представлені сфери, але принципи є, а куби – лише кілька рядків коду. Хтось бере?
Трасування променів — одне з тих веселих, але складних завдань, які люди просто люблять вклиняти в невідповідне обладнання, як цей графічний калькулятор TI-84Plus CE, і якщо це трохи важко отримати доступ, ось щось не менш божевільне працює в звичайному старому Excel.
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoData.Network Vertical Generative Ai. Додайте собі сили. Доступ тут.
- PlatoAiStream. Web3 Intelligence. Розширення знань. Доступ тут.
- ПлатонЕСГ. вуглець, CleanTech, Енергія, Навколишнє середовище, Сонячна, Поводження з відходами. Доступ тут.
- PlatoHealth. Розвідка про біотехнології та клінічні випробування. Доступ тут.
- джерело: https://hackaday.com/2024/01/26/a-zx-spectrum-raytracer-in-basic/
- :є
- :де
- 1
- 15%
- 17
- 400
- 60
- a
- МЕНЮ
- доступ
- Додає
- Справи
- ВСІ
- an
- та
- відповідь
- будь-який
- ЕСТЬ
- масив
- AS
- аудіо
- автор
- геть
- назад
- фон
- поганий
- база
- основний
- BE
- буття
- улюблений
- Біт
- Блокувати
- блоки
- але
- by
- лиття
- очевидно
- код
- кодова база
- загальний
- завершення
- комплекс
- вважається
- містить
- Кут
- може
- угода
- Визначати
- Котловани
- Ні
- кожен
- редагування
- зусилля
- досить
- однаково
- рівняння
- по суті
- Ефір (ETH)
- виконано
- існуючий
- Розширювати
- розширюється
- мода
- особливість
- fellow
- кілька
- філе
- відповідати
- плоский
- для
- від
- Повний
- веселощі
- породжувати
- графіка
- хакі
- було
- обробляти
- Жорсткий
- апаратні засоби
- ГОДИННИК
- HTML
- HTTPS
- однаковий
- if
- зображення
- in
- перетин
- в
- IT
- JavaScript
- просто
- Дитина
- знає
- світло
- Освітлення
- обмеженою
- ліній
- подивитися
- любов
- багато
- макс-ширина
- меров
- протокол
- модель
- Моделі
- монохромний
- більше
- найбільш
- переміщення
- мережу
- наступний
- зараз
- of
- від
- Старий
- on
- ONE
- тільки
- Оптимізовано
- or
- наші
- з
- Люди
- продуктивність
- піксель
- одноколірний
- plato
- Інформація про дані Платона
- PlatoData
- переважно
- первинний
- Принципи
- Тягне
- Швидко
- досить
- RAY
- проміння
- Знижений
- решті
- запам'ятати
- надає
- дозвіл
- прогін
- то ж
- сцена
- подряпати
- простий
- просто
- один
- деякі
- що в сім'ї щось
- Source
- спектр
- сфера
- Spot
- Стажування
- починається
- Стоп
- Історія
- такі
- приймачі
- взяття
- стрічка
- завдання
- Що
- Команда
- Блок
- потім
- Там.
- Ці
- речі
- це
- ті
- час
- до
- занадто
- Простеження
- трек
- налаштування
- два
- тип
- використання
- Цінності
- дуже
- було
- шлях..
- ДОБРЕ
- який
- всі
- Вікіпедія
- волі
- з
- працює
- світ
- вартість
- письмовий
- зефірнет