DCSIMG
November 2010 - Posts - הבלוג של צביקה פאר

הבלוג של צביקה פאר

בבלוג זה אני אנסה לשתף את הקוראים בחקירת מגוון טכנולוגיות נפוצות פחות או יותר

November 2010 - Posts

Mirrors in 3D scene Part 1

קיבלתי את השאלה הזו באיימיל :

לצבי שלום

אנו כותבים אפליקצית תלת מימד ב directx 11 ומעונינים להוסיף ל scene שלנו מראות .

איך אפשר לעשות את זה באופן פשוט ?

ובכן יש מספר שיטות להוספת מראות ל scene .

בדרך כלל אנו מקבלים מהגרפיקאי הגדרות של מיקום המראות בנוסף להגדרות shading  של האוביקטים שצוירו במראה .

(הShading של התמונה במראה נועדה למנוע תחושה של השתקפות של 100% כמו מראה מושלמת אלא לבצע אפקטים שישנו את הדמות המשתקפת )

תפקידנו כתכנתים לדאוג להפיח חיים במראה כלומר לדאוג שלתהליך ההשתקפות הדינמי שכאשר דמות עוברת ליד המראה המראה תשקף אותה .

השיטה שאני אציג כאן מורכבת משלושה תהליכים מרכזים :

השלב הראשון הינו רינדור שטח המראה לתוך ה stencil buffer כלומר יצירת שטח ב stensil buffer אשר מיצג את שטח המראה .

השלב השני רינודר הscene מנקודת מבט של המראה .

השלב השלישי סידור הz – buffer  וה Setnecil buffer של ה Scene כך שפעולות הציור הבאות התור לא ישנו דברים בדמות שצוירה במראה .

מכיוון שאנו עובדים עם Direct3d11 התהליך יכול להתבצע בdeffred context על מנת למקבל את תהליך הרינדור כמו כן יש לזכור שתהליך רינדור כל

ה scene בשביל ההשתקפות במראה הינו תהליך יקר מבחינת ביצועים בדרך כלל המראה יחסית למסך קטנה ויש מקום להרבה אפילו הרבה מאוד אופטימיזציות .

חשוב לא לרנדר מראות שלא מופיעות בscene ברגע נתון לעבוד עם back buffer culling נכון ועוד .

בדמו MultithreadedRendering11 אשר נמצא בsdk  יש דוגמא לרנדור מראות בשיטה הזו .

Mirror1

 

הרינדור של המראות בDemo הזה מתבצע בפונקציה :RenderMirror אשר מקבלת את ה ID3D11DeviceContext

שעליו צריכים לצייר את המראות .

 

התרשים זרימה של הפונקציה הזו הינה :

mirror2

 

בפוסטים הבאים אני אנסה לתאר לעומק את כל אחד משהלבים הן מבחינת Direct3d api והן מבחינה מתמטית של הscene

 

 

 

 

 

 

הטעות של מיקרוסופט לפי דעתי עם מנגנון ההפצה של אפליקציות לסלולאר

מיקרוסופט נכנסה לתחום של סלולאר בעמדה נחותה .בשוק ישנם כבר כמה שחקנים ראשים :אפל ואנדרואיד

שכשהם מסתכלים אחורנית הם לא רואים את מיקרוסופט בתחום .

הנקודה המאוד חזקה ואולי היחידה של מיקרוסופט לפי דעתי הינה כלי הפיתוח .

תכנת יכול בחינם להוריד את2010  Visual studio express  מאוד בקלות להתקין את התוספים לצורך פיתוח ב Windows phone 7  התכנות בsilver light הינו קל פשוט תוך פרק זמן מינימלי אפשר להרים אפליקציה בינונית. וגם אפליקציה מורכבת זה לא דבר מסובך.

הטעות הפטאלית שלצערי מיקרוסופט עושה זה שהיא מונעת בכל מחיר את הקשר הישיר בין המפתח לצרכן על ידי זה שהיא מחייבת שכל אפליקציה שמפותחת לwindows phone 7 תימכר לצרכן דרך Windows Phone Marketplace שלה תוך כדי שהיא גוזרת קופון . ומכתיבה תנאים לתוכן האפליקציה וכד .

הקשר הישיר בין המפתח לצרכן לפי דעתי זה מה שבנה את מיקרוסופט ללא המודל הזה ,אם על כל אתר אינטרנט שנכתב או כל אפליקציה שנכתבה לwindows היה המפתח מחויב למכור אותו דרך מיקרוסופט ,מיקרוסופט לא היתה מגיע לאן שהיא הגיע .

אומנם אפל עובדת באותה שיטה והיא מצליחה אבל מיקרוסופט צריכה להביא את הadd in value שלה על מנת להאבק בנחיתות החומרתית ובמספר האפליקציות שהמתחרים מציגים .

אם לי יש סוכנות של מוצר צריכה עם 4 עובדים משווקים ואני יכולתי לרכוש עבורם מכשיר נייד ולהשקיע מינימום שבמינימום בפיתוח אפליקציה שרובה hard coded ופעם בשנה לבצע עדכונים זה היה פותח שוק גדול בפני מיקרוסופט לפי דעתי .

לפי דעתי מפתחים ויזמים לא אוהבים את הרעיון שמישהו יפלטר אותם ויכתיב להם תנאים והגבלות הן לאפליקציה והן למודל העסקי .