[גבריאל גמבטה] יודע כמה דברים על מעקבי קרניים, בהיותו המחבר של Tiny Raytracer, מעקב קרינה שנכתב רק ב-912 בתים של JavaScript. בתור תקופה ארוכה בחור הסובל מה-ZX Spectrum שתוכנן בבריטניה, האם ניתן למזג את שני פרשיות האהבה הללו? האם ה-Tyny Raytracer יכול להתאים ל-ZX Spectrum? ב-BASIC? התשובה היא חיובי, אם כי עם מגבלותיו הרבות של המין האהוב שלנו.
הסיפור מתחיל עם זה של [גבריאל] גרפיקת מחשב מאפס (CGFS) אלגוריתמים של raytracer ובסיס קוד קיים שהועבר לדיאלקט ה-BASIC המצומצם מאוד של ה-ZX Spectrum, באמצעות VSCode לעריכה, BAS2TAP כדי ליצור קובץ תמונת קלטת (בעצם רצועת אודיו) ולבצע עם FUSE. כששרשרת הכלים ממוינת, [גבריאל] מוסיף בדיוק מספיק קוד כדי להתמודד עם משוואות חיתוך הקרניים של כדור, ומעבד סצנה של שלוש כדורים לתמונת צבע של 32×22 פיקסלים, תוך זמן ריצה של 15 דקות בלבד. סובלים אחרים יזכרו שלספקטרום היה מערך תכונות (או מערך צבע) בגודל 32×22 בלוקים עם שני ערכי צבע עבור פיקסלים קדמיים ורקע. כל בלוק תכונה מכיל 8×8 פיקסלים, שכל אחד מהם יכול להיות קדמי (מופעל) או רקע (כבוי). השלב הבא היה אז להרחיב את הקוד לטיפול בפיקסלים וגם בלוקים, פשוט על ידי הרחבת מעקב הקרניים ל-256 המלאים. רזולוציה ×176, ולכל בלוק פשוט קבע את שני הצבעים הנפוצים ביותר, והפעל עם אלה עבור הבלוק כולו. זה די עובד, בצורה מאוד מסוג 'התנגשות תכונות' של ספקטרום.
אבל עכשיו זמן הריצה הוא 17 שעות! לאחר מכן, נקודה של כוונון ביצועים, תוך שימוש בלא מעט פריצות BASIC של ספקטרום, וכמה קירובים גרפיים כמו הטלת קרניים עבור כל פיקסל פינתי של הבלוק, ואם הם זהים, צובעים את כל 60 הפיקסלים הנותרים אותו הדבר וממשיך הלאה . מאמץ זה הפחית את זמן הריצה לשעתיים.
בשלב הבא [גבריאל] נוטש באומץ את דגם התאורה השטוחה, מדגמן מקור אור יחיד ומוציא את הטריק היחיד שנותר בעולם הספקטרום המונוכרום, זה של טשטוש ערכי עוצמה עבור כל בלוק, באמצעות שימוש פשוט 8×8 דפוס תנועות מסודר, זה לא נראה נורא, בהתחשב בכל הדברים. עצירה מהירה בדרך להשלמה, ל להוסיף צללים וזמן הריצה חזר ל-17 שעות, אבל זה שווה את זה. ברור שזה מותאם לסוג סצנה בודדת, כזו שבה כדורים מופיעים בעיקר, אבל העקרונות קיימים, והקוביות נמצאות במרחק של עוד כמה שורות קוד. יש מעוניינים?
Raytracing היא אחת המשימות המהנות, אך המורכבות הללו, שאנשים פשוט אוהבים להכניס לחומרה לא מתאימה, כמו מחשבון הגרפים הזה TI-84Plus CE, ואם זה קצת קשה לגישה, הנה משהו מטורף באותה מידה פועל באקסל ישן רגיל.
- הפצת תוכן ויחסי ציבור מופעל על ידי SEO. קבל הגברה היום.
- PlatoData.Network Vertical Generative Ai. העצים את עצמך. גישה כאן.
- PlatoAiStream. Web3 Intelligence. הידע מוגבר. גישה כאן.
- PlatoESG. פחמן, קלינטק, אנרגיה, סביבה, שמש, ניהול פסולת. גישה כאן.
- PlatoHealth. מודיעין ביוטכנולוגיה וניסויים קליניים. גישה כאן.
- מקור: https://hackaday.com/2024/01/26/a-zx-spectrum-raytracer-in-basic/
- :הוא
- :איפה
- 1
- 15%
- 17
- 400
- 60
- a
- אודות
- גישה
- מוסיף
- העניינים
- תעשיות
- an
- ו
- לענות
- כל
- ARE
- מערך
- AS
- אודיו
- מחבר
- רָחוֹק
- בחזרה
- רקע
- רע
- בסיס
- בסיסי
- BE
- להיות
- אָהוּב
- קצת
- לחסום
- אבני
- אבל
- by
- ליהוק
- בבירור
- קוד
- בסיס קוד
- Common
- השלמה
- מורכב
- נחשב
- מכיל
- בפינה
- יכול
- עסקה
- לקבוע
- תעלות
- לא
- כל אחד
- עריכה
- מאמץ
- מספיק
- באותה מידה
- משוואות
- למעשה
- Ether (ETH)
- יצא לפועל
- קיימים
- לְהַרְחִיב
- הרחבת
- אופנה
- מאפיין
- בחור
- מעטים
- שלח
- מתאים
- דירה
- בעד
- החל מ-
- מלא
- כֵּיף
- ליצור
- גרפיקה
- פריצות
- היה
- לטפל
- קשה
- חומרה
- שעות
- HTML
- HTTPS
- זהה
- if
- תמונה
- in
- הִצטַלְבוּת
- אל תוך
- IT
- JavaScript
- רק
- סוג
- יודע
- אוֹר
- תְאוּרָה
- מוגבל
- קווים
- נראה
- אהבה
- רב
- max-width
- סתם
- דקות
- מודל
- מודלים
- מונוכרום
- יותר
- רוב
- נע
- נטו
- הבא
- עַכשָׁיו
- of
- כבוי
- זקן
- on
- ONE
- רק
- מותאם
- or
- שלנו
- הַחוּצָה
- אֲנָשִׁים
- ביצועים
- פיקסל
- מישור
- אפלטון
- מודיעין אפלטון
- אפלטון נתונים
- בעיקר
- יְסוֹדִי
- עקרונות
- מושך
- מָהִיר
- דַי
- RAY
- מעקב אחר קרינה
- מופחת
- נותר
- לזכור
- מעבד
- החלטה
- הפעלה
- אותו
- סצינה
- לגרד
- פָּשׁוּט
- בפשטות
- יחיד
- כמה
- משהו
- מָקוֹר
- ספֵּקטרוּם
- תחום
- מסחרי
- התמחות
- התחלות
- עצור
- סיפור
- כזה
- לוקחים
- נטילת
- סרט הדבקה
- משימות
- זֶה
- השמיים
- הבלוק
- אז
- שם.
- אלה
- דברים
- זֶה
- אלה
- זמן
- ל
- גַם
- מעקב
- לעקוב
- tweaking
- שתיים
- סוג
- באמצעות
- ערכים
- מאוד
- היה
- דֶרֶך..
- טוֹב
- אשר
- כל
- ויקיפדיה
- יצטרך
- עם
- עובד
- עוֹלָם
- ראוי
- כתוב
- זפירנט