ฉันควรกระจายเฉดสีในรูปแบบที่คอมไพล์หรือเป็นข้อความธรรมดาหรือไม่?


13

หากมีแอปพลิเคชันที่ใช้ตัวแปลงแสงที่เขียนไว้ใน GLSL กลยุทธ์ที่ดีที่สุดสำหรับการเผยแพร่ในโลกแห่งความเป็นจริงคืออะไรและสำหรับเดสก์ท็อปและมือถือ

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

คำตอบ:


15

เหตุผลหลักสำหรับการใช้งานไบนารีแชดเดอร์คือการรวบรวมข้อความที่มีขนาดใหญ่เกินไปสำหรับอุปกรณ์เป้าหมายของคุณ Binary GLSL shaders ไม่มีรูปแบบที่เป็นมาตรฐานดังนั้นคุณต้องมีรูปแบบที่แตกต่างกันสำหรับ GPU / ไดรเวอร์แต่ละตัวที่คุณวางแผนจะให้การสนับสนุน ฉันขอแนะนำให้คุณกระจายเฉดสีในรูปแบบแหล่งที่มาและจากนั้นในการเรียกใช้แคชครั้งแรกในรูปแบบไบนารีแล้วโหลดจากที่นั่น จากนั้นอีกครั้งฉันจะทดสอบก่อนว่าคุณมีปัญหาคอขวดในการแสดงถึงการใช้ไบนารีหรือไม่

สิ่งหนึ่งที่ควรพิจารณาคือตัวเพิ่มประสิทธิภาพข้อความออฟไลน์ที่สามารถมีผลดีกับคอมไพเลอร์ shader มือถือ


ฉันจะแปลกใจจริงๆถ้าคุณสามารถหาอุปกรณ์ใด ๆ ที่การรวบรวม shader เป็นคอขวด จำนวนของรหัสแม้แต่ใน shaders ขนาดใหญ่เป็นจำนวนเล็กน้อยของรหัสในแง่ของการรวบรวม
edA-qa mort-ora-y

1
เอ็นจิ้นใหญ่มักจะมีการรวบรวมเฉดสีออฟไลน์และ / หรือแคชพวกเขาในการเรียกใช้ครั้งแรกตามที่ Tapio แนะนำ อาจจะมีจำนวนเล็กน้อยของรหัสต่อ Shader แต่คุณสามารถมีจำนวนมากของพวกเขา
Laurent Couvidou

ดังนั้นฉันต้องซื้อวิดีโอ ATI แบบสุ่มและอีกหนึ่งแบบสุ่มจาก Nvidia รวบรวม shaders ของฉันและแจกจ่ายเฉพาะรุ่นที่คอมไพล์แล้วหรือไม่ ฉันจะตรวจสอบรันไทม์ของการ์ดวิดีโอเป้าหมายได้อย่างไร มีบางอย่างน่าเชื่อถือใช่ไหม
user827992

1
@ user827992 รูปแบบไบนารีอาจแตกต่างกันไปสำหรับ GPU / ไดรเวอร์รุ่นต่าง ๆ แม้ว่าผู้ขายจะเหมือนกัน และอย่าลืมว่ามี GPU ของ Intel อยู่มากมายที่นั่นปล่อยให้มือถือทุกตัวเช่น Qualcomm และ PowerVR ดังนั้นอีกครั้ง: ฉันขอแนะนำให้คุณไม่แจกจ่าย shaders ที่คอมไพล์ แต่ให้แคชพวกเขาในการทำงานครั้งแรกบนอุปกรณ์ของผู้ใช้ เกี่ยวกับการตรวจจับ GPU คุณสามารถลองแยกสตริง GL_VENDOR, GL_VERSION และ GL_RENDERER ในรูปแบบ glGetString () แต่รูปแบบของไฟล์นั้นจะแตกต่างกันไปตามผู้ผลิตแต่ละราย
Tapio
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.