עבור לתוכן

דיון מרוכז- קריעת תמונה, V-Sync ונפילות FPS

Featured Replies

פורסם

תודה. ההגדרות הרגילות היו מבוטלות לMPC הרגיל ולא לגירסת הX64

  • תגובות 284
  • צפיות 160.7k
  • נוצר
  • תגובה אחרונה
פורסם

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

הכי פשוט תנסה רק triple buffer ותראה אם יש לך קריעת תמונה שמפריעה לך לשחק (כי אולי יש אבל פחות קריטי מאשר עם דאבל באפר?).

אם יש וזה מפריע - תפעיל גם vsync, שמור על prerender limit 2 ושכח את כל מה שקראת באננדטק

There are only a handful of games that include triple buffering as a built in option, and NVIDIA and AMD drivers currently only allow forcing triple buffering in OpenGL games
.

אם שמת טריפל באפר ואתה רואה קריעות- המשחק לא תומך בטריפל באפר.

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

הכתבה של אננדטק עודכנה בסוף להסביר את הקטע הזה

פורסם
  • מחבר

אם הכרחתי triple buffer עם 3d3overrider (כשהמשחק "לא תומך"), והמוניטור של rivatuner מאשר שאכן triple buffer הושם,

וכאמור זה פתר לי את בעיית נעילות ה-FPS (של חלוקת קצב רענון במס' שלמים) כש-vsync פעיל ... ?

מה הטענה שלך בעצם ? ש-triple buffer לבדו תמיד מונע קריעת תמונה (בלי צורך ב-vsync) גם כשה-FPS גבוה מקצב הרענון ?

ואני לא מתייחס ל-render ahead כ-triple buffer, אלא ממליץ על שילוב של השניים

(בהורדת ערך ה-render ahead ל-"2" או "1" ע"מ לשפר input lag). כל טכניקה והייתרונות שלה.

פורסם

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

פורסם
  • מחבר

אז מדוע כשאני מכבה vsync ומפעיל triple buffer - עדיין יש קריעות תמונה ?

triple buffer בלי vsync לא נותן שום דבר מהנסיון שלי לפחות.

פורסם

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

פורסם

אז teatime מה אתה חושב על vsync+triple buffering+pre render 2?

לי למשל זה עובד יפה מאוד ויותר כיף לשחק ככה התמונה זזה חלק יותר והFPS גבוה והפרה רנדר מוריד את הלאג

יש גם שמועה באינטרנט שpre render 3 ומעלה לא יתנו כלום חוץ מלאג דפוק אם אין לכם יותר משתי ליבות

פורסם
  • מחבר

אוקיי קח לדוגמא את L4D, ל-Vsync יש 3 אופציות:

enabled - triple buffer

enabled - double buffer

disabled

בלי שום תוכנה צד שלישי. אני בוחר enabled - triple buffer ואז מכבה את ה-vsync בדריבר. יש tearing.

לא נתקלתי בשום משחק שלא נותן tearing כש-vsync כבוי, פשוט לא.

ועובדה היא שכאשר אני מכריח TB עם תוכנה צד שלישי, בשילוב עם vsync ה-FPS משתנה בחופשיות לעומת בלי triple buffer

פורסם
Some game developers implement a short render ahead queue and call it triple buffering (because it uses three total buffers).

אני מניח שזו הסיבה

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

פורסם
  • מחבר

אוקי, אם אתה אומר שתוכנה צד שלישי ל-TB לא באמת משפיעה, אז תמצא לי משחק שמשתמש ב-triple buffer native בלי vsync ?

מה הטעם ב-triple buffer בלי vsync אם אין שום משחק כזה ואם אי אפשר להכריח TB בתוכנה צד שלישי (לפי דבריך) ?

ומה בעצם יש לך לומר על d3doverrider ? "סתם \ לא עובד" ?

פורסם

גם אם הוא לא מונע טירינג לפחות הוא מחזיר את הFPS האבוד בצורה יפה מאוד, לפחות עד שהמסך שלי ידע לעשות 120hz

פורסם

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

מה שd3doverrider עושה זה או רנדר אהד (וקורא לזה טריפל באפרינג) או מנסה לחקות טריפל באפרינג בצורה מסוימת שלא תמיד עובדת

פורסם

רגע render ahead זה לא pre render?

אתה רוצה להגיד שמה שהתוכנה הזאת עושה זה לעלות את הערך?

פורסם

במונח pre render בדר"כ משתמשים לתיאור רינדור שלא בזמן אמת.

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

פורסם
  • מחבר

ל-rivatuner יש הגדרה משלה ל-pre render limit / render ahead או איך שתקרא לזה. ב-ATT זה נקרא flip queue size

3d3overrider היא TOOL נוסף ל-rivatuner, ואם מה שהוא היה עושה זה לשנות pre render limit לא היתה שום סיבה לשחרר אותו.

בנוסף היו נותנים לנו לקבוע את הערך והיו קוראים לחיה בשמה. אבל לא, 3d3overrider בפירוש מכריח Triple buffer, זה כל היעוד שלו.

אתה אומר ש-triple buffer בלי vsync מונע קריעת תמונה. אין לך שום הוכחה מעשית לזה.

אפילו ב OpenGL, שאפשר להכריח לו triple buffer דרך הדריבר, מראה קריעת תמונה מבדיקה שעשיתי עכשיו עם quake 3 arena ללא vsync.

בגלל זה הכתבה של אננדטק לא מעניינת אותי. אולי מעניינת בתיאוריה אבל מעשית - "גורנישט מיט גורנישט"

אני בדקתי מעשית, והמסקנה היא ש triple buffer + vsync מונע את נעילות ה-FPS בהשוואה ל- double buffer + vsync,

בלי קשר לערך ה-prerender. אז מאחר ואילוץ TB עובד בוודאות\מנסיון, כל הקטע ש triple buffer ללא vsync מונע tearing נשמע לי מפגר,

במיוחד שאין שום הוכחה מעשית לכך.

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

אומנם ישנם משחקים שאם תפעיל vsync ה-FPS עדיין ינוע בחופשיות - מסקנה - הם כנראה כבר משתמשים ב-triple buffer.

אבל תכבה vsync ותקבל קריעות תמונה, אני מבטיח.

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

אבל כשהוא עובד - אז הוא עובד, ואני משתמש בו רק על משחקים שנועלים את ה-FPS ל-60\30 וכו' בשילוב vsync.

ובנוסף אני מוריד את ערך ה-prerender אחרת יש input-lag מוגבר עקב השימוש ב-TB+vsync

* כשאני מדבר על prerender אני מתכוון כמובן ל-pre-render limit או render ahead, ולא לסרטון שרנדרו מראש :)

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים