Originally posted by Kraiwit
View Post
Announcement
Collapse
No announcement yet.
Vsync กับความคิดแปลกๆ ของผม (อาจไปขัดใจกับใครหลายๆคน ขออภัยนะครับ )
Collapse
X
-
เพิ่มให้อีกนิด หลักการแก้ปัญหาของ Tearing
Back Buffer Surface- จากปัญหาของการเกิด Tearing แนวทางการแก้ปัญหาแทนที่จะทำการส่งข้อมูลของภาพใหม่ไปยังตัวจอแสดงผลโดยตรง Direct3D จะทำการวาดภาพลงบน buffer สำรองเสียก่อน ซึ่งเราจะเรียกว่า secondary buffer หรือ back buffer โดยที่ buffer หลักหรือ front buffer
- เป็นหน่วยความจำที่เก็บข้อมูลในการแสดงผลที่มีขนาดเท่ากับขนาดของ Primary Surface
ดังนั้นเมื่อเราสั่งให้ Direct3D ทำการวาดภาพเราจะวาดลงบน back buffer จากนั้นตัว Direct3D จึงค่อยนำข้อมูลบน back buffer นี้ส่งให้กับ front buffer อีกครั้งหนึ่งเพื่อทับข้อมูลภาพเดิมจากนั้นตัวการ์ดแสดงผลจึงค่อยส่งข้อมูลนี้ไปยังจอแสดงผลดังนั้น Back buffer จะมีลักษณะของข้อมูลจะเหมือนกับ Primary Surface แต่สามารถมีได้มากกว่า 1 ตัวแต่ปรกติใช้เพียง 1 ตัวก็เพียงพอแล้วในการแสดงผล
การสลับ Surface ที่ใช้ในการแสดงผลไปมาเรียกว่า Swapping
Swapping
ใช้ในการแก้ปัญหาการเกิด Tearingเกิดที่การ์ดแสดงผลสร้าง Buffer สำรอง (Back Buffer)
มี Buffer แค่เพียงตัวเดียว (Front Buffer)
หลักการของ Swapping- วาดภาพไปยัง Back Buffer
- คัดลอกข้อมูลจาก Back Buffer ไปยัง Front Buffer (Blitting)
- ส่งข้อมูลจาก Front Buffer ไปยังจอแสดงผล
Swap Chain- ปัญหาของ Tearing ยังคงเกิดขึ้นได้
- จากการส่งข้อมูลของภาพที่จะวาดนั้นยังคงเกิดขึ้นได้อยู่ในช่วงเวลาของ Vertical Blank เนื่องจาก CPU หรือ GPU นั้นทำงานได้เร็วกว่าจอแสดงผล
- แทนที่การคัดลอกข้อมูลโดยตรงของ Buffer โดยการสลับตัวชี้ (Flipping)
พอละเด๋วจะออกทะเลไปมากกว่านี้
Comment
-
Originally posted by bears View Postเพิ่มให้อีกนิด หลักการแก้ปัญหาของ Tearing
Back Buffer Surface- จากปัญหาของการเกิด Tearing แนวทางการแก้ปัญหาแทนที่จะทำการส่งข้อมูลของภาพใหม่ไปยังตัวจอแสดงผลโดยตรง Direct3D จะทำการวาดภาพลงบน buffer สำรองเสียก่อน ซึ่งเราจะเรียกว่า secondary buffer หรือ back buffer โดยที่ buffer หลักหรือ front buffer
- เป็นหน่วยความจำที่เก็บข้อมูลในการแสดงผลที่มีขนาดเท่ากับขนาดของ Primary Surface
ดังนั้นเมื่อเราสั่งให้ Direct3D ทำการวาดภาพเราจะวาดลงบน back buffer จากนั้นตัว Direct3D จึงค่อยนำข้อมูลบน back buffer นี้ส่งให้กับ front buffer อีกครั้งหนึ่งเพื่อทับข้อมูลภาพเดิมจากนั้นตัวการ์ดแสดงผลจึงค่อยส่งข้อมูลนี้ไปยังจอแสดงผลดังนั้น Back buffer จะมีลักษณะของข้อมูลจะเหมือนกับ Primary Surface แต่สามารถมีได้มากกว่า 1 ตัวแต่ปรกติใช้เพียง 1 ตัวก็เพียงพอแล้วในการแสดงผล
การสลับ Surface ที่ใช้ในการแสดงผลไปมาเรียกว่า Swapping
Swapping
ใช้ในการแก้ปัญหาการเกิด Tearingเกิดที่การ์ดแสดงผลสร้าง Buffer สำรอง (Back Buffer)
มี Buffer แค่เพียงตัวเดียว (Front Buffer)
หลักการของ Swapping- วาดภาพไปยัง Back Buffer
- คัดลอกข้อมูลจาก Back Buffer ไปยัง Front Buffer (Blitting)
- ส่งข้อมูลจาก Front Buffer ไปยังจอแสดงผล
Swap Chain- ปัญหาของ Tearing ยังคงเกิดขึ้นได้
- จากการส่งข้อมูลของภาพที่จะวาดนั้นยังคงเกิดขึ้นได้อยู่ในช่วงเวลาของ Vertical Blank เนื่องจาก CPU หรือ GPU นั้นทำงานได้เร็วกว่าจอแสดงผล
- แทนที่การคัดลอกข้อมูลโดยตรงของ Buffer โดยการสลับตัวชี้ (Flipping)
พอละเด๋วจะออกทะเลไปมากกว่านี้
Comment
-
Originally posted by เจ้าพ่อวินนิ่ง View Postคุณเข้าใจถูกแล้ว Vsync มันต้องเปิด
ถ้าไม่เปิด เฟรมมันจะวิ่งมั่ว ทำให้ภาพฉีก
วัตถุประสงค์ของการ์ดจอแรงๆที่เราซื้อมาเล่น ก็เพื่อเล่นเกมส์ที่มันไม่สามารถรัน 60 เฟรมได้จากการ์ดตัวเก่า
vertical sync หรือ การรอสัญญาณแนวตั้งของภาพ
เพราะการเรนเดอร์ในปัจจับัน จากการ์ดจอจะเป็น Horizontal แนวนอน แต่ว่า คราวนี้ จอของเราๆ ท่านๆ มันไปไม่รอด ถ้าเจอ refresh rate จอปกติ เช่น 60 hz แต่การ์ดจอมัน รันไปยาวๆ เป็น 100+
หลักใหญ่จริงๆก็คือ ไอ้ วีซิงค์ เนี่ย มันจะช่วยให้ไม่เกิด "การล้นของเฟรม" (ไอ้ tearing เนี่ยแหละ) ทำให้ได้ภาพที่ดี สบายตา ไม่กระตุก
แต่ว่า การปิด ส่วนใหญ่ก็ปิดแค่อีตอนที่คุณ test bencmark แค่นั้นแหละ เพื่อปั่นคะแนน
กับอีกอันก็คือ เวลาเล่น FPS แข่งกับชาวบ้านเค้า
แต่ นั่นมันสำหรับพวกที่มี ความรู้สึกไวสุดยอด กับ เครื่องที่มีการ์ดจอ รุ่นเล็กๆอยู่ และใช้จอรุ่นเก่าๆ ที่สามารถ ตั้ง rf ไปได้ตั้งแต่ 60 75 85 ยัน 100 ถึง 110 เลย
ซึ่งไอ้กรณีนั้นแหละครับ ที่คนรุ่นเก่าแก่ ปิด vsync ไป เพราะการ์ดจอมันรันไปที่ ความโหดเรทจอ ไม่ได้ขนาดนั้นนั่นเอง
แต่ในปัจจุบันทีอะไรมันดีขึ้น การเปิด vsync กับการ์ดจอรุ่นใหญ่จะช่วยได้เยอะในการเล่นเกมส์ ที่สวยงามมากๆ และลื่น สบายตาครับ
จะมีปัญหาแค่ ไอ้พวก สายตาเหนือมนุษย์ ประสาทสัมผัส ไวเกินคนธรรมดา ที่จะใช้การ "สะบัดมือ" ยิงชาวบ้านในเกมส์ fps เท่านั้นแหละครับ
เพราะพวกนี้ ถ้าเปิด vsync ไป เค้าบอกว่าจะทำให้ยิงไม่แม่น เพราะภาพมันจะหายไปจากความจริง ไม่กี่ มิลลิวินาที (คำอ้างจากคนเหล่านั้นที่เปิด vsync แล้วยิงไม่ปกติ) คิดว่า เค้าคงจะบอกว่า
ในตอนนั้น ถ้าภาพมาไวพอ จะยิงแม่นขึ้น(บ้าดีเนอะ เกิน 30 fps ก็ลื่นมองไม่ออกแล้วเนี่ยนะ)
ดังนั้น สิ่งที่คุณควรจำให้ดีและขึ้นใจ ในการเปิด vsync
1. ถ้าการ์ดคุณไม่แรงพอที่จะเปิด vsync อย่าเสี่ยงครับ หน่วงมาก (นี่คือเหตุผลที่ การ์ดรุ่นเก่า และ เกมเมอร์รุ่นก่อน ไม่เปิดกัน) โดยเฉพาะ เกมส์ FPS ลองเปิดกับ crysis ดูสิครับ สนุกสนานมากมาย
(Nvidia มีตัวบังคับเปิดนะครับ Force On ได้เลย แล้วจะเฮฮา)
2. ห้ามเปิด ขณะเทสต์ Benchmark บางคนเซ็ตค่าเปิดตลอด ลืมไป เทสต์มา ตกใจ คะแนน ห่วยโคตรๆ เฮ้ย เฟรมตก (ฮา)
3. อย่าลืมเด็ดขาดเปิด triple Buffering ไว้ด้วยเพราะนี่คือสิ่งที่จะทำให้ Vsync สวยสมบูรณ์แบบ (มันจะ เรนเดอร์ 3 ส่วน แล้วรวมเป็นจังหวะ เดียวกัน ก่อนจะส่งออกมา(ก็ที่พี่เค้าเอามาให้ดู เรื่อง Back Buffer แหละ เพราะไม่งั้น อาจจะมีภาพหด ยืดได้อีก ถ้าไม่เปิด กินสเป็คอีกหน่อย แต่แจ๋วกว่า)
4. Vsync ไม่มีค่อยมีให้ปรับในเกมส์ในออนไลน์ ดังนั้น อย่าไปปรับ บังคับเปิด เลือกที่ application control ครับ เพราะ เกมส์ ออนไลน์ เฟรมล้นก็จริง แต่เวลาที่เล่นกันบนเกมส์ที่ไม่มีให้เปิดเนี่ย เวลายิง มันไม่แม่นจริงๆครับถ้ากดตามสัญชาตญาณเดิม(ผมโดนมาแล้ว แปลกใจว่า ปกติต้องโดน ไหงมันไม่โดนวะ) ถ้าคุณไป On ไว้ตลอดเวลา เวลาเล่น FPS ต้องลดจังหวะลงมา นิดนึงก่อนยิง(กรณีเน็ตดีนะ) แต่ถ้าเป็น Offline และ AVG เฟรม หลังจาก Bench แล้ว เกิน 65+ สบายใจได้ครับ เปิดไปเหอะ เพราะมันจะล้อคไว้ได้
5. อย่าลืม ดู Rf จอก่อน เพราะจอรุ่นไหม่ๆ สามารถปั่นไปได้ถึง 85 Hz(ไม่นับ crt นะ) ถ้า จอคุณไปไกลมากเท่าไร ภาพก็สบายตามากเท่านั้น แต่ถ้าเปิด Vsync มันก็เหมือนนรกของการ์ดจอ ที่ต้องเรนเดอร์ เกมส์ หรือ ภาพ ให้ได้ 85 ตลอดเวลา
6. อย่าลืมดูสเป็คเกมส์ด้วย Vsync ไม่แน่ว่าจะดี เสมอไป ถ้าคุณ เปิดไปแล้ว Frame การ์ดรันไม่ถึง อยากรู้ ไปลองดูเองครับ แต่ผมบอกได้แค่ว่า Crysis น่ะลงๆ ทิ้งไว้ในเครื่องเถอะครับ ผมว่า ภาพมันไม่สวยเลยนะ แต่ว่า มันใช้เทสต์สเป็คดีครับผม
7. ฉากบางฉาก พอเปิด Vsync แล้วมีการกระตุกนิดๆ ทั้งๆที่ การ์ดรันได้ พอดีกับสเป็คจอ นั่นเพราะว่า ในฉากนั้นๆ มันต้องการ ความเร็ว frame เพื่อต่อฉากต่อๆไป มากเกินกว่า รีเฟรชจอ นั่นเอง (ลองเล่น Prototype แล้วลากให้ คน+ ท่อน + ทหาร +ผู้ติดเชื้อ + อยู่ที่คนเยอะๆ มารุมดูครับ แล้ว ทำให้ ระเบิดเอย เกิด อะไรก็ตาม เรียกว่า กินสเป็คจอให้มากที่สุดแล้วรีบโดด หันมุมไปมา วูบๆเลย จะเกิดอาการนี้ครับ ) แต่ถ้าจอเรามีรีเฟรช มากพอ และการ์ดเรา รันได้เกิน รีเฟรชจอ สบายๆ จะไม่มีอาการนี้ให้เห็นเลย (85 Hz คือจุดที่ดีที่สุดที่สายตามนุษย์ไม่สามารถแยกแยะได้แล้ว)
8. มันช่วยเซฟการ์ดจอมั้ย ไม่แน่เสมอไปครับ แต่ถ้า บางเกมส์เครื่อง+การ์ดจอคุณแรงจัดมาก จนมันสร้างเฟรมมาล้นเลย(แบบ 150+ เงี้ย) การเปิด Vsync จะช่วยเซฟการ์ดจอได้จริงๆครับ แต่ถ้าในบางเกมส์ เครื่อง+การ์ดจอคุณ ไม่สามารถสร้างเฟรมได้เกินกว่ารีเฟรชเรทจอ อันนั้นจะสร้างภาระให้การ์ดจอแทนครับผม
ดังนั้น ง่ายๆคือ
จะเปิด Vsync เนี่ย ดู ความสามารถของ AVG frame ก่อน ว่า มันมากพอที่จะอัดกับจอคุณมั้ย
เปิด Triple Buffering ด้วย เพราะนี่คือสิ่งที่ทำให้ภาพ สวย สมบูรณ์ที่สุด
ไม่จริงเสมอไปที่ว่าเซฟการ์ดจอ เพราะ ในกรณีที่ เฟรมเรทคุณไม่ถึงจุดรีเฟรชของจอ vsync เนี่ยแหละ คือนรกสำหรับการ์ดจอเลย เพราะจะต้องลากเฟรมให้ทัน ผลที่ได้คือ ภาพหน่วงไปเลย
ดังนั้น Vsync ปิดซะถ้าเล่นเกมส์ที่การ์ดจอไม่สามารถ สร้างเฟรมเฉลี่ยเกิน รีเฟรชจอได้ ไม่คุ้มที่จะมาลากการ์ดจอ และการเทสต์ก็ปิดด้วย เพราะไม่งั้นจะตกใจจนเอาการ์ดไปเคลมเพราะเฟรมลด อิอิ
ถ้าเล่นเกม์ที่ต้องใช้ความชัวร์แบบสุดๆ คือ ไม่ได้มองภาพเลยนะ หันไปแล้ว ตูมๆ ("พวกสะบัดมือยิง" มองไม่ทันครับ) แบบห้ามช้าแม้แต่ millisec ก็ปิดไปครับ
แต่ปัจจุบันนี้ ที่การ์ดเราแรงพอ มันไม่รู้สึกแล้วครับ ไม่หน่วงเลย เพราะ เกมส์ FPS ออนไลน์ ไงๆ เฟรม การ์ดจอเราไม่ต้องลากก็เกิน 120+ ครับ
ก็แค่นี้แหละ ที่เป็นเหตุผลให้เกิดการ SLI CF เพราะหลักใหญ่ที่แท้จริง อย่างที่ เจ้าพ่อวินนิ่ง บอกนั่นแหละครับ
การ์ดรุ่นไหม่ๆ สูงๆ แพงๆ มันสามารถ รันให้ เร็วกว่า รีเฟรชจอได้แล้ว ดังนั้น Vsync จะไม่มีอาการหน่วง เหมือนกับการใช้การ์ดจอรุ่นเล็กๆ แต่เกมส์บางเกมส์ ฉากบางฉาก เฟรมมันไม่ถึง !!! นี่แหละ จะหารุ่นใหญ่กว่านี้มา ก็ไม่มี ทำไงดี (สมมุติว่าใหญ่สุด ณ ตอนนั้นแล้ว) ก้ต้อง SLI ไม่ก็ CF นั่นเองครับเพื่อเพิ่ม FPS ขึ้นมาให้รับกับจอได้
ก็นี่แหละ น่าจะกระจ่างกับ ความรู้สึกคนที่ยังแอนตี้การเปิด Vsync ครับ เพราะผมเปิดกับเกมส์ที่เปิดได้ครับ และ เกมส์ไหนไม่มีให้เปิด ก็ไม่บังคับเปิดLast edited by KAYAZUDA; 7 Oct 2010, 07:05:37.
Comment
-
ไม่จริงเสมอไปที่ว่าเซฟการ์ดจอ เพราะ ในกรณีที่ เฟรมเรทคุณไม่ถึงจุดรีเฟรชของจอ vsync เนี่ยแหละ คือนรกสำหรับการ์ดจอเลย เพราะจะต้องลากเฟรมให้ทัน ผลที่ได้คือ ภาพหน่วงไปเลย
ดังนั้น Vsync ปิดซะถ้าเล่นเกมส์ที่การ์ดจอไม่สามารถ สร้างเฟรมเฉลี่ยเกิน รีเฟรชจอได้ ไม่คุ้มที่จะมาลากการ์ดจอ และการเทสต์ก็ปิดด้วย เพราะไม่งั้นจะตกใจจนเอาการ์ดไปเคลมเพราะเฟรมลด อิอิ
จะมีปัญหาแค่ ไอ้พวก สายตาเหนือมนุษย์ ประสาทสัมผัส ไวเกินคนธรรมดา ที่จะใช้การ "สะบัดมือ" ยิงชาวบ้านในเกมส์ fps เท่านั้นแหละครับ
เพราะพวกนี้ ถ้าเปิด vsync ไป เค้าบอกว่าจะทำให้ยิงไม่แม่น เพราะภาพมันจะหายไปจากความจริง ไม่กี่ มิลลิวินาที (คำอ้างจากคนเหล่านั้นที่เปิด vsync แล้วยิงไม่ปกติ) คิดว่า เค้าคงจะบอกว่า
ในตอนนั้น ถ้าภาพมาไวพอ จะยิงแม่นขึ้น(บ้าดีเนอะ เกิน 30 fps ก็ลื่นมองไม่ออกแล้วเนี่ยนะ)
ถ้า RTS 30กำลังดียอมรับ
แต่ส่วนตัวรู้นานแล้วไม่มีใครบอกด้วย สำหรับผมใครเล่นเกมส์PC เกิน3ปีไม่รู้จัก V-sync เนี่ยแปลกนะ
Comment
-
vsync เปิดแล้วไม่เป็นคลื่นสวยงดงาม
แต่กับเกมที่สเปคอื่นของเครื่องเราไม่ถึงการปิด vsync มันเหมือนหลอกตาว่ามันไม่กระตุกรึป่าวครับ เพราะความมันไม่สมูธทำให้ตาเรามองว่ามันกระตุกน้อยลง
อย่าง fifa2011 ตามสเปคผม e7200@3GHz RAM6GB 460 1GB พอตั้งทุกอย่าง high หน้าจอ 1600x900 มันกลับมีอาการกระตุก
แต่พอ 1440x900 มันกลับไม่กระตุก แต่พอปิด vsync ที่หน้าจอ 1600x900 รู้สึกว่ามันไม่กระตุกเท่าไหร่เพราะตาเรามองว่ามันไม่สมูธตลอดรึป่าวครับเลยดูเหมือนกระตุกน้อยลง
Comment
-
เมื่อกี้ลองดูคร่าวๆกับ MW2 ปรากฏว่าอุณหภูมิลดลงจริงๆครับ ลดลงประมาณ 3-4 องศาเซลเซียสได้เลย
โดยปกติเกมส์นี้ การ์ดผมรัน FPS เฉลี่ย ได้ 100+ อยู่แล้ว
แต่หลังจากที่เปิดแล้ว จังหวะการหันเม้าส์ ผมว่ามันไม่เหมือนเดิมอ่ะ หวังว่าคงไม่อุปทานไปเองนะ -*-
เดี้ยวเย็นๆจะไปลองดูอีกที หรือต้องเซตความไวเม้าส์ใหม่
โดยรวมแล้ว อุณหภูมิลดลงมามาก ถูกใจจริงๆ
แต่ก็ควรเปิดเฉพาะกับเกมส์ที่การ์ดสามารถรีด Average FPS เกิน 60+
Comment
-
เจ้าของกระทู้มีความตั้งใจในการสื่อสารจากประสบการณ์ของตัวเองให้ผู้อื่นได้รับทราบ
และเพื่อเป็นแลกเปลี่ยนความรู้และข้อเสนอแนะจากผู้อื่นเป็นเรื่องที่ดีมากๆครับ ^ ^
เท่าที่ผมอ่านๆมา ประสบการณ์ของตัวผมเองจากการลองผิดลองถูก และได้เสริซหาข้อมูลประกอบ
ผมมีความคิดเห็นเหมือนท่าน KAYAZUDA rep#40 ทุกประการครับ
โดยสรุปคือการจะ ปิด/เปิด Vertical Sync เพื่อให้ได้อรรถรสสูงสุดจากการเล่นเกมส์ ขึ้นกับระบบที่ใช้เป็นหลักครับ ^ ^
Comment
Comment