Máy dò tia quang phổ ZX, ở dạng BASIC

Máy dò tia quang phổ ZX, ở dạng BASIC

Nút nguồn: 3085593

[Gabriel Gambetta] biết một số điều về công cụ dò tia, là tác giả của Tiny Raytracer, một công cụ dò tia được viết chỉ bằng 912 byte JavaScript. Như một thời gian dài đồng bào nạn nhân của ZX Spectrum do Anh thiết kế, liệu hai mối tình này có thể hợp nhất được không? Tiny Raytracer có thể phù hợp với ZX Spectrum không? Trong BASIC? Câu trả lời là một lời khẳng định, mặc dù có nhiều hạn chế đối với loài vật yêu quý của chúng ta.

<img decoding="async" data-attachment-id="661085" data-permalink="https://hackaday.com/2024/01/26/a-zx-spectrum-raytracer-in-basic/screenshot-from-2024-01-25-21-02-18/" data-orig-file="https://platoaistream.com/wp-content/uploads/2024/01/a-zx-spectrum-raytracer-in-basic-1.png" data-orig-size="940,648" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="Screenshot from 2024-01-25 21-02-18" data-image-description="

https://gabrielgambetta.com/zx-raytracer.html

” data-image-caption data-medium-file=”https://platoaistream.com/wp-content/uploads/2024/01/a-zx-spectrum-raytracer-in-basic.png” data-large-file =”https://platoaistream.com/wp-content/uploads/2024/01/a-zx-spectrum-raytracer-in-basic-1.png?w=800″ class=”wp-image-661085 size- trung bình” src=”https://platoaistream.com/wp-content/uploads/2024/01/a-zx-spectrum-raytracer-in-basic.png” alt width=”400″ Height=”276″ srcset= ”https://platoaistream.com/wp-content/uploads/2024/01/a-zx-spectrum-raytracer-in-basic-1.png 940w, https://platoaistream.com/wp-content/uploads/ 2024/01/a-zx-spectrum-raytracer-in-basic-1.png?resize=250,172 250w, https://platoaistream.com/wp-content/uploads/2024/01/a-zx-spectrum-raytracer -in-basic-1.png?resize=400,276 400w, https://platoaistream.com/wp-content/uploads/2024/01/a-zx-spectrum-raytracer-in-basic-1.png?resize= 800,551 800w” kích thước=”(độ rộng tối đa: 400px) 100vw, 400px”>

Dò tia chỉ với 15 màu cơ bản

Câu chuyện bắt đầu với [Gabriel] Thuật toán raytracer đồ họa máy tính từ đầu (CGFS) và cơ sở mã hiện có đã được chuyển sang phương ngữ BASIC rất hạn chế của ZX Spectrum, sử dụng VSCode để chỉnh sửa, BAS2TAP để tạo một tệp hình ảnh băng (về cơ bản là một đoạn âm thanh) và được thực thi với FUSE. Với chuỗi công cụ được sắp xếp, [Gabriel] thêm mã vừa đủ để xử lý các phương trình giao nhau tia của hình cầu và hiển thị cảnh ba hình cầu thành hình ảnh màu 32 × 22 pixel, chỉ mất 15 phút thời gian chạy. Những người đau khổ sẽ nhớ quang phổ có mảng thuộc tính khối 32 × 22 (hoặc mảng màu) với hai giá trị màu cho các pixel nền trước và nền sau. Mỗi khối thuộc tính chứa 8 × 8 pixel, mỗi pixel có thể là nền trước (bật) hoặc nền (tắt.). Giai đoạn tiếp theo là mở rộng mã để xử lý pixel cũng như các khối, bằng cách chỉ cần mở rộng dò tia lên toàn bộ 256 Độ phân giải ×176 và đối với mỗi khối, chỉ cần xác định hai màu phổ biến nhất và chạy với các màu đó cho toàn bộ khối. Nó hoạt động theo kiểu 'xung đột thuộc tính' rất phổ biến.

Nhưng bây giờ thời gian chạy là 17 giờ! Tiếp theo, một điểm tinh chỉnh hiệu suất, sử dụng khá nhiều thủ thuật BASIC phổ và một số phép tính gần đúng về đồ họa, chẳng hạn như truyền tia cho từng pixel góc của khối và nếu chúng giống hệt nhau, hãy tô màu tất cả 60 pixel còn lại giống nhau và tiếp tục . Nỗ lực này đã giảm thời gian chạy xuống còn hai giờ.

Tiếp theo [Gabriel] dũng cảm từ bỏ mô hình chiếu sáng phẳng, tạo mô hình một nguồn sáng duy nhất và thực hiện thủ thuật duy nhất còn lại trong thế giới quang phổ đơn sắc, đó là phối màu các giá trị cường độ cho mỗi khối, bằng cách sử dụng một phương pháp đơn giản. mẫu hoà sắc có thứ tự 8×8, điều đó có vẻ không quá tệ, xét trên mọi khía cạnh. Một điểm dừng nhanh trên đường hoàn thành, để thêm bóng và thời gian chạy quay lại 17 giờ, nhưng nó đáng giá. Rõ ràng, điều này được tối ưu hóa cho một loại cảnh duy nhất, loại cảnh có hình cầu chủ yếu, nhưng các nguyên tắc vẫn có sẵn và các hình khối chỉ còn một vài dòng mã nữa. Có người nhận không?

Raytracing là một trong những nhiệm vụ thú vị nhưng phức tạp mà mọi người thích đưa vào phần cứng không phù hợp, như máy tính vẽ đồ thị TI-84Plus CE này, và nếu mục đó hơi khó truy cập thì đây là thứ gì đó điên rồ không kém chạy trong Excel cũ.

Dấu thời gian:

Thêm từ Hack một ngày