Hardware Displacement Mapping – שיטת הדור הבא בכל מה שקשות ל- BumpMapping. ה- BumpMapping היא בעצם שיטה לייצירת אפקט של עומק על טקסטורה דו ממדית (שקע שנוצר מפגיעת כדור רובה בקיר הוא למעשה אפקט בלבד). לעומתה, ה- Displacement Mapping פועלת בצורה דומה לזאת של משטח מסמרים: כאשר מצמידים גוף כלשהו לצד אחד של המשטח, בצדו השני מופיע הבלט של אותו גוף, פנים לדוגמא.
הבסיס הוא משטח כלשהו המורכב ממספר מסויים של משולשים, בעת התהליך גדל מספר המשולשים באלפי אחוזים (עד פי 40), לאחר מכן "מורכבת" תמונה דו מימדית בשחור לבן, של השטח שאותו הוא אמור להציג. ההבדל הוא, שבמקום שכל פיקסל יכיל מידע על הצבע שלו, הוא מכיל מידע על הגובה שלו ביחס למשטח הישר. שיטה זו מאפשרת ליצור צורות תלת ממדיות בדיוק מהמם שנראות ריאליסטיות הרבה יותר ממה שאנו הכרנו עד כה.
תמונת הגובה (בשחור-לבן) מולבשת על משטח המשולשים הגדול וכך מתקבל הפרצוף שבתמונה.
ייתרונותיה של שיטת ה- Displacement Mapping עצומים – ניתן להשתמש בה לייצירת שטחים ענקיים (שלב שלם ב- Serious Sam לדוגמא) לעומת שימוש קטן הרבה יותר שניתן לעשות עם BumpMapping – לגרום לכדור כדורגל להראות ריאליסטי יותר על ידי הבלטה לכאורה של תפרי הכדור ומחומשי העור שממנו הוא בנוי.
אחד הייתרונות הגדולים של Displacement Mapping הוא החיסכון העצום ברוחב פס כאשר רוצים להציג שטח מפורט מאוד, תחשבו על זה ככה, במקם להעביר מיידע ענקי שכולל אלפי משולשים ומיידע על על אחד מהם אפשר להעביר פשוט את כמות קטנה הרבה יותר ולהוסיף לה טקסטורה אחת בלבד שכוללת את מיקום העומק של המשולשים, התוצאה היא עבודה רבה יותר למעבד הגראפי וחיסכון בכמות התעבודה בזיכרון. שילוב שני הדברים הללו ביחד מאפשר בעצם לייצר סצנות תלת ממדיות מפורטות מאוד מבחינה מבנית ולהוסיף להן טקסטורות ברזולוציה גבוה מאוד (החיסכון בתעבורה בזיכרון מאפשרת למפתחי המשחקים להפנות את המשאב היקר הזה להעברת טקסטורות גדולות מאוד מבחינת משקל.
זה ברור שבבים אשר לא תומכים ב- DX9 לא יכולים לבצע את שיטת ה- Displacement Mapping מכיון שהם פשוט לא תומכים ב- Tesselation (החלק בתהליך ה- Displacement Mapping אשר אחראי על הגדלת מספר המשולשים), שבבי העבר שלא תומכים ב- DX9 חייבים לחשב מראש את כל המשולשים עבור טקסטורה מסויימת מראש והם לא יכולים להגדיל את כמותם לאותה הטקסטורה עד הצגתה הסופית על המסך.
הדור הבא – Vertex & Pixel Shaders – זוג המצללים מתחלקים לשנים שמטרתם הסופית היא הצגת החלק הויזואלי על המסך:
- Vervex Shader – מטרתו של חלק זה המונע על ידי תוכניות קטנות שנכתבות לו היא להציב מחדש את הטקסטורה לאחר שינוי שבוצע על ידי התוכניות הקטנות שמשנות את ערכי המקום (X ,Y ,Z), הצבע, תאורה ועוד…
על ידי שימוש בתוכניות ניתן לבצע שינוים באובייקטים שונים כמו שינוי צורה וסיבוב וכמו כן ביצוע אפקטי תאורה שונים ומשונים ועוד. גרסה 2.0 של מצלל זה תכלול אפשרויות תיכנות מתקדמות אשר יאפשרו ביצוע אפקטים חדשים ומשוגעים… - Pixel Shader – לאחר שהמעבד הגראפי ביצע את מיקום המשולשים הוא ניגש לעבוד על הפיקסלים (היחידה הקטנה ביותר בסצנה התלת-ממדית, ובכלל בכל הקשור לגראפיקה), כל פיקסל כולל מספר נתונים על מיקומו (X ,Y ,Z) צבע ועוד. הפיקסל נוצר לאחר עיבוד כל הנתונים (מיקום המשולשים, טקסטורות ותאורה).
כמו במצלל השני, גם פה ישנן תוכניות קטנות שתפקידן הוא לקבוע את נתוניהם של הפיקלסים השונים.
אז מה בעצם החידוש פה עם חלק זה…? ובכן, ב- DX9 תופיע הגרסה החדשה של ה- Pixel Shader שמספרה הוא 0.2 וחידושה הוא שיפור והוספת פקודות חדשות למצלל זה וניסיון להגיע ליותר חלקים בתהליך העיבוד אשר ניתן לשנותם על ידי תוכניות אלו.
עוד חידוש הנמצא ב- API החדש שלנו הוא היכולת להפרדת צבעים ברמת דיוק של 10Bit (לעומת רמת דיות של "רק" 12Bit ב- DX8), עוד תוכלו לקרוא על מאפיינים אלו בכתבתו של דן מרחסין על ה- Matrox Parhelia .