עומק השדה הוא השפעה של צילום שנגרמה על ידי צמצם ואורך מוקד. מאמר מעניין מאוד על הנושא הזה כבר פורסם בistockphoto.com. הוא מספק עומק רמז אמין לחומר דו ממדים, מוקרן. במילים אחרות: זה גורם תמונות נראות 3D בזמן שהם עדיין תחזיות 2D.
בדור הנוכחי של חומרת גרפיקה, זה אפשרי כדי להבהיר הרבה אפקטים מהודרים שלאחר עיבוד - כ צללים מלבד רכים וטשטוש התנועה, עומק השדה (עומק שדה) עשוי להיות על ההשפעה משמשת לרוב כדי לשפר את איכות ראייה. יש כיסוי נרחב בטכניקות שונות ביצירת אפקטי עומק שדה נעים - פשוט בגוגל "עומק Shader השדה" נתן לי על 74.000 להיטים. להדגמה שאני רוצה לכתוב, החלטתי להשתמש בגישה פשוטה, המבוססת על אלפא הערוץ כי זה פשוט, מהיר ונראה נחמד.
הרעיון הוא פשוט: אם כבר יש לך Shader שעושה דברים כמו לכל פיקסל, תאורה, פשוט לשים את המידע לעומק ערוץ אלפא של הצבע שנוצר. כל מה שיש לעשות בגבהה השנייה: להבהיר את התמונה שוב ולטשטש את התמונה עם הקרנל מתאים. כמו גרעין, אני בחרתי פואסון-Disc-מסנן עם נתונים CPU-precomputed - זה פחות "jaggy" מאשר באמצעות הקרנל ריבועית פשוט, נותן איכות ראייה טובה יותר על ידי פחות דגימות. כדי למנוע הילות מגעילות מסביב לקצוות של אזורים בעלי מעמיקים הבדלים גבוהים, התוצאה היא לא רק תמונה מטושטשת, אבל אורך מוקד, שולט גם כמה נתוני תמונה מטושטשים להיכנס לתוצאה הסופית.
vec4 vColor = texture2D (sceneMap, gl_TexCoord [0] XY.); לצוף fBlurAmount = ABS (vColor.a * 2.0-1.0); לצוף fTexel = 16.0/mapSize; vec4 vResult; עבור (אני int = 0; אני <16; + + אני) { vResult + = texture2D (blurMap, gl_TexCoord [0] + XY fBlurAmount * fTexel * Poisson [i] XY * Poisson [i] z...); } vResult / = 16.0; gl_FragColor = תמהיל (vColor, vResult, fBlurAmount);
אני מודע לכך שגישה זו היא מוגבלת למדי - ברגע שיש צורך בערוץ אלפא להשפעות אחרות (כמו זוהר עוקף או מהירות), זה לא יכול להיות בשימוש כזה. אבל בכל מקרה, אני מרוצה מהתוצאות. ![]()
| |

















































