יום רביעי, 13 במרץ 2013

רינדור ב-OpenGL עם תמיכה בשקיפות

עבר הרבה זמן מאז הפוסט האחרון....

נשאלתי היום איך מרנדרים ב-OpenGL את הסצנה הנוכחית אבל שומרים על הרקע שקוף.

למה זה טוב?
לפעמים אפשר לקבל תוצאות ממש טובות כשמשתמשים ב-GLSL ולא תמיד צריכים רינדורים מעבר לאיכות הזו (כן, גם זה קורה לפעמים), ועכשיו אפשר גם לאפשר שהרקע יהיה שקוף וליצור תמונות שאפשר בקלות לשלב במסמכים, מצגות וכד'.

היתרון של רינדור ב-GLSL הוא המהירות הגבוהה, ומכאן כמובן היתרון לגבי אנימציות...


אז איך עושים זאת?

למעשה הדבר מאד פשוט, כל מה שצריך זה להגדיר לבלנדר שהרקע יהיה שקוף ולרנדר.
שלב א'

לאחר שהגדרנו שהרקע יהיה שקוף ורינדרנו באמצעות הכפתור שמסומן במס' 2 נקבל את המסך הבא:
שלב ב'
חשוב לציין שההגדרות נמצאות במצב בו בחרנו במנוע של סייקלס ואילו מצב תצוגה של GLSL נגיש רק במצב של רינדור עם המנוע הפנימי. בכל אופן ההגדרות הן גלובליות ואחרי שסידרנו אותן במצב סייקלס אפשר לעבוד רגיל עם המנוע הישן ולהציג את תוכן החלון ב-GLSL, כמובן שאם לא רוצים GLSL אפשר להשאר במצב סייקלס.
הגדרות מתקדמות ל-GLSL

דוגמא:

דוגמא למה המערכת מסוגלת:
Tricycle - OpenGL+GLSL Render

הרינדור הזה הוא בגודל של 5200x6000 (תמונה די גדולה לכל הדעות...), זמן הרינדור לקח בסה"כ כ-10 שניות! (כרטיס מסך Nvidia GTX680m-4GB במחשב נייד)
רינדור רגיל לוקח הרבה יותר זמן (למעשה סביבות השעה וחצי - שעתיים), כל מה שחסר ברינדור הזה למעשה זה BumpMap (חסרים בידיות) וטקסטורות פרוצדורליות (בפדלים) והשתקפויות אמיתיות (בחלקי המתכת).
אז כמו שאפשר לראות אפשר להשיג תוצאות נחמדות בזמן די קצר ובמיוחד אם אין צורך או שימוש בדברים שלא נתמכים (או יותר נכון, בדברים שהתעצלתי לאפשר/לממש...)

עדכון:

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


זו התוצאה המעודכנת:
רינדור מעודכן
תהנו! (מחדש...)