簡體   English   中英

可以想象使用移動設備的GPU來加速運行時圖像壓縮嗎?

[英]Is it conceivable to use a mobile device's GPU to accelerate runtime image compression?

我並不一定要尋求即時的實際解決方案,但對是否已將現有技術限制在實際范圍內感到好奇。

我了解低級GPU編程是一門妖術,只有少數人已經掌握,並且很好奇是否可以將移動設備的GPU用於此類常規處理任務,這一切都讓我感到頭疼。 (我記得有消息說,由於有可能使用3D游戲機進行超級計算機功率計算,因此禁止向某些國家出口3D游戲機)

如果有Flash本機擴展可以將動態生成的圖像快速壓縮為GPU紋理圖格式,那就太好了。 我猜測有些技巧,例如可能需要在壓縮過程中使用GPU才能在可接受的時間內完成它。 我的特定矢量藝術項目可以忍受像PVRTC4這樣的簡單調色板減少技術,這可能是嗎? 在AS3中可行。

我正在開發一個項目,該項目使用Starling(允許凡人通過stage3D使用GPU的工具)在運行時從Flash向量動態生成大型背景紋理貼圖,這在項目中將是一大優勢。占用較少GPU內存的貼圖,似乎最小化貼圖貼圖內存大小的唯一當前解決方案是使用預壓縮的外部圖像,例如Adobe ATF容器。 盡管Flash可能已經超出了其預期的使用壽命,但是我仍然可以使用Flash向量代替任何Alpha通道位圖壓縮方法來使分發文件小10倍。

Adobe已添加了“ Flash Player 11.4和AIR 3.4支持運行時紋理壓縮”功能(但事實證明,該功能目前僅適用於台式機系統)

在本文中提到了這一點: http : //help.adobe.com/zh_CN/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7d5b.html

要訪問該功能,請執行以下操作:“通過調用Context3D.createTexture()方法並傳遞flash.display3D.Context3DTextureFormat.COMPRESSED創建紋理對象”

在這里提出了這個主題:stackoverflow.com/questions/18070813/how-to-implementation-the-runtime-compression-of-texture

Starling的制造商致力於整合Adobe運行時圖像壓縮工具,只是從Adobe得知它目前不適用於移動設備。 https://github.com/PrimaryFeather/Starling-Framework/issues/153

我認為對於某些人來說,創建代碼以根據設備壓縮PVRTC,ETC1或DXT5格式將是一個巨大的挑戰,僅支持動態生成少量位圖。

這是一個可能相關的“實時轉碼” C ++庫:

code.google.com/p/crunch/

和javascript翻譯:www-cs-students.stanford.edu/~eparker/files/crunch/more_info.html

我希望有實際經驗的人能回答這個問題。

“低級GPU編程”並不是一件黑手藝。 您正在用C的方言編寫着色器。您可以進行位掩碼和整數移位以及浮點數學運算。 最困難的部分是圍繞GPU如何進行並行處理以及如何將數據輸入到着色器中來。 OpenGL SuperBible應該是您的起點。

以我有限的經驗,GPU着色器非常擅長解壓縮圖像,例如,我使用着色器將Bayer RGGB數碼相機像素形式轉換為RGB。 它們不擅長壓縮圖像,因為壓縮的輸出是可變長度的數據流,而不是圖像。 如果要嘗試,我會編寫一個頂點着色器,將未壓縮的圖像作為紋理輸入,然后將輸出輸出到變換反饋緩沖區中。 但是我不確定轉換反饋在許多移動設備上是否可用。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM