SwiftShader 是一款用於在 CPU 上進行高性能圖形渲染的軟件庫。Google 已經在很多產品中使用該內容庫,包括 Chrome、Android 開發工具和雲服務。Swiftshader 從今天開始完全開放源碼,擴展了其應用范圍。
自 2009 年起,Chrome 就開始使用 SwiftShader 在不完全支持硬件加速渲染的系統上進行 3D 渲染。雖然為 GPU 寫入了 WebGL 等 3D 內容,但有些用戶的設備沒有可執行此內容的圖形硬件。其他設備可能包含存在嚴重錯誤的驅動程序,導致 3D 渲染不可靠,或甚至不可實現。Chrome 在這些系統上使用 SwiftShader,以確保 3D 網頁內容對所有用戶可用。
▲ 在 GPU 不合適(左圖)的設備上不使用 SwiftShader 的 Chrome 無法運行 WebGL Globe 實驗。在同一設備上,啟用 SwiftShader 后(右圖)則完全可以對內容進行渲染。
SwiftShader 實現 Chrome 和 Android 使用的相同的 OpenGL ES 圖形 API。SwiftShader 開放源碼將促使其他瀏覽器供應商普遍支持 3D 內容,從而使網站平台作為一個整體向前發展。具體而言,無條件的 WebGL 支持將允許網站開發人員創建更具吸引力的內容,例如休閑游戲、教育應用、合作內容創作軟件、產品展示和虛擬游覽等。SwiftShader 在雲服務領域也有應用,實現了在無 GPU 系統上的渲染。
為了向用戶提供最佳性能,SwiftShader 使用多種方法高效地在 CPU 上執行圖形計算。動態代碼生成使在運行時針對現有任務自定義代碼成為可能,與更常見的編譯時優化完全不同。通過使用 Reactor 簡化這種復雜的方法,Reactor 是一種自定義 C++ 嵌入式語言,具有直觀的命令式語法。SwiftShader 還可以單指令多線程 (SIMT) 方式使用向量運算,並結合使用多線程技術來提高 CPU 可用內核和矢量單元之間的並行性。這樣可實現實時渲染,其用途包括在 Android 上進行應用串流等。
開發者可從其 Git 存儲庫訪問 SwiftShader 源代碼。注冊郵件列表,了解最新的開發資訊,並與開源社區的其他 SwiftShader 開發者展開合作。
開源地址:https://github.com/google/swiftshader
預編譯的文件下載:https://goo.gl/5MOcdb