91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

自動Shader優化器glsl_optimizer的編譯與使用

發布時間:2020-06-30 21:02:13 來源:網絡 閱讀:8586 作者:老G 欄目:開發技術

glsl_optimizer是一個免費開源的glsl優化器。可以生成GPU無關的shader優化代碼。可以進行非常多的優化項目,比如函數內連,死代碼刪除,常量折疊,常量傳遞,數學優化等等。

GitHub地址為:
https://github.com/aras-p/glsl-optimizer

我們首先需要編譯命令行工具。該工具同時支持VS和XCode工程。但是打開工程我們發現 

自動Shader優化器glsl_optimizer的編譯與使用


工具作者只提供了一個測試用例和lib的編譯target,沒有提供命令行工具的target。

好在SIO2作者提供了一套命令行工具代碼。我從SDK中扒出來,放到項目里即可。這樣我們就能用上最新版本的glsl_optimizer了。

首先復制名為glsl_optimizer_tests的target,并重命名為glsl_optimizer_bin。

自動Shader優化器glsl_optimizer的編譯與使用


然后在當前target中,打入代碼文件main.cpp(文件已上傳到附件),并移除代碼文件glsl_optimizer_tests.cpp的引用。


然后我們要在main.cpp中設置一下要優化的glsl版本。 

//TODO 請填寫你要優化的glsl版本
ctx = glslopt_initialize( kGlslTargetOpenGLES20 );


支持如下參數:

// Optimizer target language
enum glslopt_target {
    kGlslTargetOpenGL = 0,
    kGlslTargetOpenGLES20 = 1,
    kGlslTargetOpenGLES30 = 2
};


然后我們就可以編譯了。

編譯完成后,我們找到生成的二進制程序。將其和待優化的glsl腳本復制到合適位置。

然后使用命令行: 

./glsl_optimizer_bin -in vertex.glsl -out vertex.glsl -profile GL_VERTEX_SHADER
 
./glsl_optimizer_bin -in fragment.glsl -out fragment.glsl -profile GL_FRAGMENT_SHADER


來調用工具優化shader,該命令非常好懂,不再贅述。

優化之后的控制臺顯示為: 

自動Shader優化器glsl_optimizer的編譯與使用

然后將優化后的腳本復制回項目。編譯運行即可看到FPS有一定程度的提升。項目越大shader腳本越多,越復雜,優化效果越明顯。

我簡單測試一下繪制200個四千多面模型,在iPad mini2上

優化前的效果: 

自動Shader優化器glsl_optimizer的編譯與使用

優化后的效果:

自動Shader優化器glsl_optimizer的編譯與使用

附件:http://down.51cto.com/data/2364780
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

北宁市| 二手房| 台中县| 盐山县| 通榆县| 崇文区| 江油市| 忻城县| 陈巴尔虎旗| 盐山县| 昆山市| 稻城县| 永吉县| 文水县| 阜平县| 卢氏县| 开江县| 澄城县| 紫阳县| 青海省| 疏附县| 桐乡市| 依安县| 汽车| 万源市| 茂名市| 漳浦县| 宝兴县| 鹰潭市| 庆阳市| 奇台县| 清流县| 陇南市| 宜黄县| 措美县| 肇东市| 镇沅| 临夏市| 陵川县| 韩城市| 微博|