ขนาดพื้นผิวที่ดีที่สุดคืออะไร?


12

ฉันเพิ่งเพิ่มตัวจัดรูปแบบพื้นผิวให้กับโครงการของฉันซึ่งจะบรรจุพื้นผิวจำนวนหนึ่งไว้ในอันเดียวเช่นนี้

อัดแน่นเนื้อ

ตัวอย่างเช่นอันนี้มีขนาด 582x1023 พิกเซล เป้าหมายของการเพิ่มพื้นผิวที่อัดแน่นเหล่านี้คือการปรับปรุงประสิทธิภาพดังนั้นฉันจึงต้องการค้นหาขนาดพื้นผิวที่เหมาะสมที่สุดสำหรับพื้นผิว OpenGL (โดยใช้ LWJGL) สิ่งที่ผมพบว่าพบว่ามีขนาดพื้นผิวสูงสุดการสนับสนุนอย่างกว้างขวางน่าจะเป็น 1024x1024 ตามนี้ตัวอย่างเช่น สิ่งนี้ทำให้ฉันประหลาดเพราะเห็นได้ชัดว่าพื้นผิวเพียงอย่างเดียวจะใหญ่กว่านั้นดังนั้นจะเกิดอะไรขึ้นกับสิ่งเหล่านั้น ฉันค่อนข้างมั่นใจว่าการ์ดกราฟิกส่วนใหญ่สนับสนุนพื้นผิวที่ใหญ่กว่านั้น ฉันสามารถคาดหวังให้การ์ดกราฟิกส่วนใหญ่รองรับเช่นพื้นผิว 4096x4096 (หรืออาจใหญ่กว่านั้นได้หรือไม่)

มาถึงจุดที่สองของฉัน (ฉันหวังว่านี่ยังนับเป็นหนึ่งคำถาม แต่โดยพื้นฐานแล้วมันจะต้องเดือดร้อนในประเด็นเดียวกัน): พื้นผิวควรมีขนาดเท่ากับกำลัง 2 (256x256, 512x512, 1024x1024, 2048x2048, .. ) และควร ฉันอัดแผ่นพื้นผิวที่เล็กกว่านั้นไปสู่พลังต่อไปของ 2? ตามคำถามนี้จาก 2011 มันไม่จำเป็นต้อง แต่สามารถปรับปรุงประสิทธิภาพการทำงานและหลีกเลี่ยงข้อบกพร่องเล็ก ๆ น้อย ๆ และคนนี้จาก 2012 บอกว่าคุณแน่นอนควรพื้นผิวแผ่น ดังนั้นฉันจึงรู้ว่าคำถามเหล่านี้เคยถูกถามมาก่อน แต่คำถามเหล่านั้นลงวันที่อย่างสมเหตุสมผลเพื่อให้คำตอบเปลี่ยนไปและพวกเขาแต่ละคนตอบคำถามของฉันเพียงบางส่วน โครงการอื่น ๆ / จัดการกับสิ่งนี้ได้อย่างไร

TL; DR:ขนาดพื้นผิวใดที่ฉันสามารถคาดหวังให้การ์ดกราฟิกส่วนใหญ่จัดการได้ ขนาดพื้นผิวที่เหมาะสมที่สุด (หรือมี) คืออะไร? ฉันควรรองความกว้างของพื้นผิวให้เท่ากับกำลังสองต่อไปหรือไม่


4
GPU เกี่ยวข้องเฉพาะกับพลังของ 2 เท่านั้นหากคุณไม่ได้ทำการปูพื้นผิวด้วยตนเอง GPU ของคุณ (หรือเอ็นจิ้นเกมที่คุณเลือก) จะทำสิ่งนี้ให้คุณซึ่งจะทำให้เกิดความล่าช้าเล็กน้อยต่อรันไทม์ต่อพื้นผิว แต่ฉันไม่สามารถให้ความช่วยเหลือเกี่ยวกับขนาดพื้นผิวสูงสุด / สูงสุด
ketura

@ketura อ่าเข้าใจแล้วขอบคุณ สมมติว่าฉันได้ภาพที่ 513x10 จะเร็วกว่าที่จะแปะที่ 1024x1024 แล้วถ่ายโอนพิกเซลที่ว่างเปล่าเหล่านี้ทั้งหมดหรือปล่อยให้ GPU ทำเช่นนั้น?
flotothemoon

4
คุณไม่ต้องไปสูงขนาดนั้น 1024 x 16 จะทำงานได้; ไม่จำเป็นต้องเป็น SQUARE เพียงพลังของ 2 ในแต่ละทิศทาง แม้ว่าในกรณีนี้ฉันจะพิจารณาอย่างจริงจังหากฉันไม่สามารถสำรองพิกเซลและลดขนาดเป็น 512x16 ได้ฮ่า ๆ
ketura

คำตอบ:


6

ฉันจะรับแทงที่ตอบคำถามนี้แม้ว่า YMMV ฉันใช้การสำรวจฮาร์ดแวร์ของ Steam ( http://store.steampowered.com/hwsurvey?platform=pc ) เพื่อพิจารณาว่าวิดีโอ RAM (VRAM) มีให้บริการในคอมพิวเตอร์ส่วนใหญ่อย่างไร ดูผลลัพธ์ ณ วันที่ 2015-10-13 (วันนี้) เกือบ 85% ของคนมี 1024 MB VRAM

คำถามของคุณกว้างมากเนื่องจากไม่ได้ระบุฮาร์ดแวร์เป้าหมาย (คอนโซล, พีซี, มือถือ, อุปกรณ์พกพา) ฉันจะพูดถึงพีซีและคุณสามารถคาดการณ์สำหรับแพลตฟอร์มอื่น ๆ ตามข้อกำหนดของฮาร์ดแวร์

สมมติว่ามี 32 บิตของสี + อัลฟาต่อพิกเซลเช่น 4 ไบต์ต่อพิกเซล VRAM 1 GB สามารถเก็บได้สูงสุด 256 ล้านพิกเซล นี่เท่ากับพื้นผิว 256 1K คูณ 1K สิ่งนี้ถือว่า (ไม่ถูกต้อง) ว่าคุณต้องการเก็บพื้นผิวใน VRAM ของคุณเท่านั้นในขณะที่จะมีสิ่งอื่นอีกมากมาย (เช่นข้อมูลตาข่ายหากคุณทำงานในแบบ 3 มิติ) ที่คุณต้องเว้นที่ว่างไว้ คุณอาจต้องการอนุญาตให้มีพื้นที่มากขึ้นสำหรับการทำแผนที่ mip ของพื้นผิวซึ่งโดยปกติแล้วจะทำงานได้ดีที่สุดหากพื้นผิวของคุณเป็นสองกำลัง

คอนโซลสมัยใหม่ (XBOX One และ PS4) มี RAM รวม 4-8 GB อุปกรณ์พกพาและอุปกรณ์พกพาส่วนใหญ่มี RAM รวม 1 - 2 GB พร้อมข้อ จำกัด ว่าคุณสามารถจัดสรรเป็น VRAM ได้เท่าใด

ฉันมักจะสร้างพื้นผิว 2K เพื่อให้สามารถทำงานกับพีซีส่วนใหญ่ได้ทำให้สามารถเลือกที่จะลดขนาดสำหรับอุปกรณ์ระดับล่างได้ หากคุณกำลังเขียนเกม 2D และต้องการกำหนดเป้าหมายการแสดงผลความละเอียดสูง (4K, retina iPad และอื่น ๆ ) คุณสามารถใช้พื้นผิว 4K สำหรับพื้นหลังได้ แต่สำหรับส่วนอื่น ๆ ส่วนใหญ่อาจจะเกินขีด

หวังว่าสิ่งนี้จะช่วยได้และไม่ทำให้น้ำขุ่น


ขอบคุณสำหรับคำตอบช่วยได้แน่นอน ในแง่ของความกว้างขออภัยเกี่ยวกับเรื่องนี้ลืมที่จะรวมถึงรายละเอียดบางอย่าง: ฉันกำลังพัฒนาสำหรับพีซีในแบบ 2D จะเกิดอะไรขึ้นถ้าคุณใช้พื้นผิวที่ใหญ่กว่าขนาดพื้นผิวสูงสุดที่รองรับ มันไม่ทำงานเลยหรือช้าลง?
flotothemoon

1
ดูเหมือนว่าคำตอบของฉันคือจุดที่ การตรวจสอบโพสต์ในฟอรัมอื่น ๆ ของไซต์พื้นผิว 2k เป็นสิ่งที่คุณควรสนับสนุนให้เกมของคุณทำงานบนอุปกรณ์ส่วนใหญ่ ขีด จำกัด ขนาดของพื้นผิวขึ้นอยู่กับฮาร์ดแวร์เฉพาะและรุ่น OpenGL-ES โดยเฉพาะ ฉันไม่แน่ใจว่าข้อความแสดงข้อผิดพลาดเฉพาะนั้นเป็นอย่างไร แต่จะมาจาก OpenGL-ES เมื่อคุณพยายามโหลดพื้นผิว การเชื่อมโยงที่มีประโยชน์: answers.unity3d.com/questions/563094/... , forum.unity3d.com/threads/texture-sizes-and-videocards.281422และfeedback.wildfiregames.com/report/opengl/feature/...
วีเจย์ Varadan

เมื่อฉันพยายามโหลดหรือพยายามผูกพื้นผิว? หรือว่าเป็นสิ่งเดียวกันที่นี่
flotothemoon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.