یک ردیاب پرتوهای طیف ZX، در بیسیک

یک ردیاب پرتوهای طیف ZX، در بیسیک

گره منبع: 3085593

[گابریل گامبتا] چند چیز در مورد ردیاب‌های پرتو می‌داند، زیرا نویسنده Tiny Raytracer است، یک ردیاب پرتو که تنها در ۹۱۲ بایت جاوا اسکریپت نوشته شده است. به عنوان یک مدت طولانی همکار مبتلا به ZX Spectrum طراحی شده در انگلستان، آیا می توان این دو رابطه عاشقانه را با هم ادغام کرد؟ آیا Tiny Raytracer می تواند روی ZX Spectrum قرار بگیرد؟ در بیسیک؟ پاسخ این است مثبت، البته با محدودیت های فراوان گونه محبوب ما.

<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- medium” 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 800 وات اینچ اندازه =” (حداکثر عرض: 400 پیکسل) 100 ولت وات، 400 پیکسل”>

ردیابی اشعه تنها با 15 رنگ اصلی

داستان با [جبرئیل] شروع می شود الگوریتم‌های raytracer گرافیک کامپیوتری از ابتدا (CGFS). و یک پایه کد موجود که با استفاده از VSCode برای ویرایش به گویش بسیار محدود BASIC ZX Spectrum منتقل شده است. BAS2TAP برای تولید یک فایل تصویر نواری (در اصل یک آهنگ صوتی) و اجرا با FUSE. با مرتب‌سازی زنجیره ابزار، [گابریل] کد کافی برای مقابله با معادلات تقاطع پرتوهای یک کره را اضافه می‌کند و یک صحنه سه کره را به یک تصویر رنگی 32×22 پیکسل تبدیل می‌کند که تنها 15 دقیقه زمان اجرا می‌گیرد. هموطنان مبتلا به یاد خواهند داشت که طیف دارای یک آرایه مشخصه بلوک 32×22 (یا آرایه رنگی) با دو مقدار رنگ برای پیکسل های پیش زمینه و پس زمینه بود. هر بلوک مشخصه حاوی 8×8 پیکسل است که هر کدام می‌توانند پیش‌زمینه (روشن) یا پس‌زمینه (خاموش) باشند. مرحله بعدی گسترش کد برای کنترل پیکسل‌ها و همچنین بلوک‌ها بود، به سادگی با گسترش raytracing به 256 کامل. وضوح 176 ×، و برای هر بلوک به سادگی دو رنگ رایج را تعیین کنید و با رنگ‌های کل بلوک اجرا کنید. این یک جورهایی کار می‌کند، به شکلی کاملاً طیفی که «برخورد ویژگی‌ها» است.

اما اکنون زمان اجرا 17 ساعت است! در مرحله بعد، یک نقطه تغییر عملکرد، با استفاده از چند هک BASIC طیفی، و برخی تقریب‌های گرافیکی مانند ریختن پرتوها برای هر پیکسل گوشه بلوک، و اگر یکسان هستند، همه 60 پیکسل باقیمانده را یکسان رنگ‌کرده کنید و ادامه دهید. . این تلاش زمان اجرا را به دو ساعت کاهش داد.

سپس [گابریل] شجاعانه مدل نورپردازی مسطح را کنار می‌گذارد، یک منبع نور را مدل می‌کند و تنها ترفند باقی‌مانده در دنیای طیف تک رنگ، یعنی تغییر مقادیر شدت برای هر بلوک، را با استفاده از یک روش ساده بیرون می‌کشد. الگوی دیدر 8×8، این خیلی بد به نظر نمی رسد، همه چیز در نظر گرفته شود. توقفی سریع در راه تکمیل، به سایه ها را اضافه کنید و زمان اجرا به 17 ساعت برگشته است، اما ارزشش را دارد. واضح است که این برای یک نوع صحنه بهینه شده است، صحنه‌ای که در آن کره‌ها عمدتاً مشخص می‌شوند، اما اصول وجود دارد، و مکعب‌ها فقط چند خط کد بیشتر با شما فاصله دارند. هر گیرنده ای؟

Raytracing یکی از آن کارهای سرگرم کننده اما پیچیده است که مردم دوست دارند آن را در سخت افزار نامناسب قرار دهند. مانند این ماشین حساب نموداری TI-84Plus CEو اگر دسترسی به آن کمی سخت است، اینجا چیزی به همان اندازه دیوانه کننده است در حال اجرا در اکسل قدیمی.

تمبر زمان:

بیشتر از هک یک روز