เหมือนกับสิ่งส่วนใหญ่ในการพัฒนาเกมและโดยเฉพาะอย่างยิ่งในกราฟิกเกมคำตอบคือ "มันขึ้นอยู่กับ"
ขนาดพื้นผิว
ความละเอียดของพื้นผิวของคุณอาจมีผลต่อความเร็วในการแสดงผล ยิ่งมีพิกเซลมากเท่าไหร่ข้อมูลดิบก็ยิ่งมีมากขึ้นเท่านั้นที่จะอัปโหลดไปยัง GPU และพื้นผิวที่เราสามารถใส่ในแคชได้น้อยลงในแต่ละครั้งดังนั้น shader อาจหยุดทำงานชั่วคราวมากขึ้นในขณะที่รอส่วนที่ถูกต้องของพื้นผิว เพื่อดึงเข้าสู่แคช
การใช้การทำแผนที่สามารถลดผลกระทบของสิ่งนี้ ด้วย mipmaps เราจัดเก็บพื้นผิวที่มีขนาดเล็กลงซึ่งในตอนแรกฟังดูเหมือนหน่วยความจำมากขึ้นที่จะคลี่คลาย แต่มันช่วยให้เราอ่านได้จากเวอร์ชั่นที่เล็กกว่าเมื่อมีการแสดงพื้นผิวที่ขนาดเล็กบนหน้าจอ (เช่นวัตถุที่อยู่ไกลออกไปในมุมมอง) ดังนั้นตัวอย่างของเราใช้ประโยชน์จากแคชของพื้นผิวได้ดีกว่า สิ่งนี้จะลดนามแฝง
รายละเอียดพื้นผิว
เนื้อหาของพื้นผิวของคุณไม่มีผลต่อประสิทธิภาพการแสดงผลส่วนใหญ่
สีเป็นเพียงตัวเลขจำนวนหนึ่งเท่าที่เกี่ยวข้องกับ GPU ดังนั้นจึงไม่ได้สนใจว่าตัวเลขเหล่านั้นคืออะไรมันแค่ทำให้พวกเขาผ่านคณิตศาสตร์ในแบบเดียวกัน มันไม่ได้ทำอะไรแฟนซีอย่างที่จำได้ "โอ้ฉันเคยเห็นพิกเซลในสีเขียวนี้มาก่อนฉันจะใช้เอาต์พุตเดิมอีกครั้งที่ฉันคำนวณครั้งล่าสุดที่ฉันเห็นอินพุตนี้" ดังนั้นพื้นผิวของคุณจะเป็นสีเดียวหรือไม่ หรือประกายสุ่ม GPU ของคุณทำงานเหมือนเดิม
ซึ่งแตกต่างจากรูปแบบเช่น PNG & JPG ซึ่งบีบอัดได้อย่างมีประสิทธิภาพมากขึ้นในพื้นที่ที่คาดการณ์ของภาพและกินบิตเพิ่มเติมในภูมิภาคที่ซับซ้อนรูปแบบพื้นผิวของ GPU เช่น BTC ETC PVRTC หรือแม้แต่ RGBA ดิบใช้จำนวนบิตต่อบล็อกคงที่ พิกเซล ดังนั้นการทำให้พื้นผิวของคุณมีรายละเอียดมากขึ้นหรือน้อยลงในขณะที่รักษารูปแบบการบีบอัดข้อมูลเดียวกันจะไม่เปลี่ยนขนาดข้อมูลหรือส่งผลกระทบต่อการถ่ายโอนข้อมูลและประสิทธิภาพที่เกี่ยวข้องกับแคช
แต่ถ้าคุณใช้รายละเอียดบางอย่างที่การบีบอัดก่อนหน้าของคุณไม่ได้รับการรักษาอย่างดีคุณอาจถูกบังคับให้เปลี่ยนภาพทั้งหมดเพื่อใช้รูปแบบที่แตกต่างกันซึ่งอาจเปลี่ยนขนาดของข้อมูลได้อีกครั้ง
Shader Branching & Indirection
นี่คือเครื่องหมายดอกจันที่ใหญ่ที่สุดในสถานการณ์: คุณอาจใช้อินพุตสีพื้นผิวเพื่อทำการตัดสินใจเช่นเดียวกับif()
สาขา ที่นี่รายละเอียดสำคัญสำหรับความเร็ว
หน่วยการแรเงา GPU ทำงานบนบล็อกพิกเซลเป็นชุดทำงานคำแนะนำเดียวกันขนานกับสตรีมข้อมูลจำนวนมาก ดังนั้นเมื่อพิกเซลบางอันในบล็อกรับหนึ่งสาขาif
และพิกเซลอื่น ๆ นำมารวมกันแบตช์ทั้งหมดจะต้องผ่านทั้งสองสาขา (ปิดบังผลลัพธ์ที่ไม่ได้ใช้กับชุดพิกเซลหนึ่งชุดหรืออื่น ๆ )
หากการป้อนข้อมูลของคุณเปลี่ยนไปอย่างราบรื่น / คาดเดาได้คุณอาจมีบล็อกจำนวนมากที่จำเป็นต้องใช้สาขาเดียวและกรณีทั้งสองสาขานี้จะถูก จำกัด เฉพาะวงแคบ ๆ ที่อยู่รอบ ๆ ช่วงการเปลี่ยนภาพ แต่หากการป้อนข้อมูลของคุณเป็นแบบสุ่มเราคาดว่าบล็อกส่วนใหญ่จะใช้ทั้งสองสาขาและทำให้การแสดงผลช้าลง
สิ่งนี้อาจเกิดขึ้นได้หากคุณใช้พื้นผิวหนึ่งเพื่อควบคุมการค้นหาลงในพื้นผิวที่สองเช่นแผนที่ที่ผิดเพี้ยนหรือดัชนี หากพื้นผิวแรกกระโดดไปรอบ ๆ แบบสุ่มเราจะสุ่มตัวอย่างจากจุดที่มีการกระจายแบบสุ่ม - ไอของพื้นผิวที่สองโดยใช้แคชเนื้อของเราที่สอดคล้องกันน้อยลงและรออีกต่อไปเพื่อให้ได้ข้อมูลที่เราต้องการโดยเฉลี่ย
ดังนั้นโดยรวม: ไม่เนื้อหาของพื้นผิวไม่มีผลต่อความเร็วในการเรนเดอร์ยกเว้นกรณีที่เกิดขึ้น ;)