国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

自制游戲引擎之shader預(yù)編譯

這篇具有很好參考價(jià)值的文章主要介紹了自制游戲引擎之shader預(yù)編譯。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

shader預(yù)編譯為二進(jìn)制,在程序運(yùn)行時(shí)候加載,可以提升性能,節(jié)省啟動(dòng)時(shí)間.

1. 采用google shaderc預(yù)編譯與加載shader

1.1 下載代碼 https://github.com/google/shaderc

自制游戲引擎之shader預(yù)編譯,游戲設(shè)計(jì),游戲引擎
third_party文件里需要放依賴(lài)的第三方
因?yàn)殡娔X訪問(wèn)google的問(wèn)題,無(wú)法通過(guò)shaderc-2023.4\utils\git-sync-deps腳本自動(dòng)下載第三方,手動(dòng)下載
https://codeload.github.com/KhronosGroup/SPIRV-Tools/zip/refs/tags/v2023.3.rc1
https://codeload.github.com/KhronosGroup/SPIRV-Headers/zip/refs/tags/sdk-1.3.250.1
https://codeload.github.com/KhronosGroup/glslang/zip/refs/tags/sdk-1.3.250.1
自制游戲引擎之shader預(yù)編譯,游戲設(shè)計(jì),游戲引擎

1.2 配置

用CMake (cmake-gui)構(gòu)建shaderc,生成vs工程
別忘了配置第三方庫(kù)目錄
自制游戲引擎之shader預(yù)編譯,游戲設(shè)計(jì),游戲引擎

1.3 編譯

vs編譯shaderc,得到頭文件和庫(kù)
自制游戲引擎之shader預(yù)編譯,游戲設(shè)計(jì),游戲引擎
自制游戲引擎之shader預(yù)編譯,游戲設(shè)計(jì),游戲引擎
所有的庫(kù)都是MDD的動(dòng)態(tài)庫(kù)
自制游戲引擎之shader預(yù)編譯,游戲設(shè)計(jì),游戲引擎

2. 在引擎里引入shaderc

2.1 在CmakeLists.txt增加頭文件和庫(kù)

自制游戲引擎之shader預(yù)編譯,游戲設(shè)計(jì),游戲引擎
自制游戲引擎之shader預(yù)編譯,游戲設(shè)計(jì),游戲引擎
shaderc提供了兩種方式引用,

  • 直接用libshaderc_combined,這是一個(gè)靜態(tài)庫(kù)
  • 用glslang, OSDependent, OGLCompiler,shaderc_util, SPIRV, HLSL, SPIRV-Tools, and SPIRV-Tools-opt.

2.2 源碼修改

openGLShader.cppCompileOrGetOpenGLBinaries會(huì)判斷是否有cache文件,沒(méi)有就生成shader bin文件,有就加載bin文件.
自制游戲引擎之shader預(yù)編譯,游戲設(shè)計(jì),游戲引擎

shaderc::SpvCompilationResult module = compiler.CompileGlslToSpv(source_text, Utils::GLShaderStageToShaderC(stage), m_FilePath.c_str(), options);

CreateProgram會(huì)根據(jù)bin文件創(chuàng)建shader,跳過(guò)了編譯的過(guò)程.

glShaderBinary(1, &shaderID, GL_SHADER_BINARY_FORMAT_SPIR_V, spirv.data(), spirv.size() * sizeof(uint32_t));
glSpecializeShader(shaderID, "main", 0, nullptr, nullptr);
glAttachShader(program, shaderID);

自制游戲引擎之shader預(yù)編譯,游戲設(shè)計(jì),游戲引擎文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-536353.html

3. 性能

  • 直接編譯shader代碼的方式,每個(gè)shader消耗20ms
  • 初次編譯shader生成bin文件的方式,每個(gè)shader消耗2000ms
  • 直接加載shader bin文件的方式,每個(gè)shader消耗5ms
    自制游戲引擎之shader預(yù)編譯,游戲設(shè)計(jì),游戲引擎

到了這里,關(guān)于自制游戲引擎之shader預(yù)編譯的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Overload游戲引擎細(xì)節(jié)分析】PBR材質(zhì)Shader---完結(jié)篇

    【Overload游戲引擎細(xì)節(jié)分析】PBR材質(zhì)Shader---完結(jié)篇

    PBR基于物理的渲染可以實(shí)現(xiàn)更加真實(shí)的效果,其Shader值得分析一下。但PBR需要較多的基礎(chǔ)知識(shí),不適合不會(huì)OpenGL的朋友。 一、PBR理論 PBR指基于物理的渲染,其理論較多,需要的基礎(chǔ)知識(shí)也較多,我在這就不再寫(xiě)一遍了,具體可以參看: LearnOpenGL PBR理論-英文 或者 LearnOpenGL

    2024年02月08日
    瀏覽(32)
  • 游戲引擎的cpu/gpu粒子系統(tǒng)設(shè)計(jì)思想

    游戲引擎的cpu/gpu粒子系統(tǒng)設(shè)計(jì)思想

    網(wǎng)上有很多篇粒子系統(tǒng)源碼解析,但是只是簡(jiǎn)單的接口羅列,沒(méi)有從最原理出發(fā)去講清楚粒子系統(tǒng)的來(lái)龍去脈,我將從粒子系統(tǒng)的本質(zhì)去講清楚它的設(shè)計(jì)理念,當(dāng)理解了它的理念以后,很多粒子遇到的問(wèn)題就會(huì)迎刃解決了,這篇文章主講粒子的實(shí)現(xiàn)和一些框架級(jí)的優(yōu)化方式,

    2024年02月12日
    瀏覽(18)
  • pygame自制小游戲

    pygame自制小游戲

    pygame——游戲視頻 簡(jiǎn)單的來(lái)寫(xiě)一個(gè)pygame小游戲,我的畫(huà)面比較卡哇伊各位可以自己換圖片哈。 就是一個(gè)最基本的pygame小游戲,可以控制人物,攻擊敵人,打到敵人使敵人消失,如果敵人到達(dá)邊緣仍然沒(méi)有被消滅,游戲就會(huì)失敗。 1.鼠標(biāo)移動(dòng)人物跟隨移動(dòng),播放背景音樂(lè),可以摁下

    2024年02月11日
    瀏覽(45)
  • 【Unity自制手冊(cè)】游戲基礎(chǔ)API大全

    【Unity自制手冊(cè)】游戲基礎(chǔ)API大全

    ?????個(gè)人主頁(yè) :@元宇宙-秩沅 ????? hallo 歡迎 點(diǎn)贊?? 收藏? 留言?? 加關(guān)注?! ????? 本文由 秩沅 原創(chuàng) ????? 收錄于專(zhuān)欄 :UnityUI篇實(shí)戰(zhàn) 相關(guān)專(zhuān)欄: ?【軟件設(shè)計(jì)師高頻考點(diǎn)暴擊】 ####???????1,MathF類(lèi)的靜態(tài)變量 ? Math和MathF的區(qū)別 : mathf是unity封裝的類(lèi)它

    2024年02月09日
    瀏覽(24)
  • 【畢業(yè)論文】| 基于Unity3D引擎的冒險(xiǎn)游戲的設(shè)計(jì)與實(shí)現(xiàn)

    【畢業(yè)論文】| 基于Unity3D引擎的冒險(xiǎn)游戲的設(shè)計(jì)與實(shí)現(xiàn)

    ??博客主頁(yè):肩匣與橘 ??歡迎點(diǎn)贊 ?? 收藏 ?留言 ?? 如有錯(cuò)誤敬請(qǐng)指正! ??本文由 肩匣與橘 編寫(xiě),首發(fā)于 CSDN ?? ??生活依舊是美好而又溫柔的,你也是?? 基于Unity3D引擎的冒險(xiǎn)游戲的設(shè)計(jì)與實(shí)現(xiàn) ??前言 摘要 Abstract 1 緒論 1.1 選題背景 1.2 研究目的及意義 2 開(kāi)發(fā)工具

    2024年02月05日
    瀏覽(34)
  • Python pyglet 自制3D引擎入門(mén)(二) -- 繪制立體心形,動(dòng)畫(huà)和相機(jī)控制

    Python pyglet 自制3D引擎入門(mén)(二) -- 繪制立體心形,動(dòng)畫(huà)和相機(jī)控制

    Python作為目前較廣泛的編程語(yǔ)言, 用于制作3D游戲可謂得心應(yīng)手。本文講解使用Python pyglet庫(kù)自制簡(jiǎn)易3D引擎的方法技巧。 上篇:Python pyglet 自制3D引擎入門(mén)(一) – 繪制幾何體、創(chuàng)建3D場(chǎng)景 先放效果圖: pyglet.window 部分用于實(shí)現(xiàn)窗口操作, pyglet.gl 以及 pyglet.gl.glu 模塊包含了OpenGL的

    2024年02月10日
    瀏覽(28)
  • Python自制“超級(jí)馬里奧”小游戲

    Python自制“超級(jí)馬里奧”小游戲

    ?作者簡(jiǎn)介:華為開(kāi)發(fā)者聯(lián)盟優(yōu)質(zhì)內(nèi)容創(chuàng)作者、CSDN內(nèi)容合伙人、GitHub專(zhuān)業(yè)技術(shù)人員?? ??個(gè)人主頁(yè):北雨·寒冰~?的CSDN博客 ??系列專(zhuān)欄:PyGame ??個(gè)人格言:書(shū)山有路勤為徑,學(xué)海無(wú)涯苦作舟 ? 前言 看效果 1.基礎(chǔ)設(shè)置(tools部分) 2.設(shè)置背景音樂(lè)以及場(chǎng)景中的文字(setup部

    2024年01月25日
    瀏覽(20)
  • OnlyOffice驗(yàn)證(三)OnlyOffice編譯結(jié)果自制Docker鏡像

    OnlyOffice驗(yàn)證(三)OnlyOffice編譯結(jié)果自制Docker鏡像

    ?? 之前驗(yàn)證了OnlyOffice驗(yàn)證(二)在Centos7上部署OnlyOffice編譯結(jié)果,由于現(xiàn)在普遍都是容器化部署,所以還是驗(yàn)證下Docker鏡像打包是否可行,因?yàn)樽罱K部署還是會(huì)上到K8S,所以這步必須要驗(yàn)證一下。 ?? 提前安裝好 docker 和 docker-compose ,安裝 docker-compose 是為了簡(jiǎn)化容器啟動(dòng)

    2023年04月20日
    瀏覽(24)
  • 設(shè)計(jì)模式學(xué)習(xí)筆記 - 設(shè)計(jì)模式與范式 -行為型:8.狀態(tài)模式:游戲、工作流引擎中常用的狀態(tài)機(jī)是如何實(shí)現(xiàn)的?

    設(shè)計(jì)模式學(xué)習(xí)筆記 - 設(shè)計(jì)模式與范式 -行為型:8.狀態(tài)模式:游戲、工作流引擎中常用的狀態(tài)機(jī)是如何實(shí)現(xiàn)的?

    本章學(xué)習(xí)狀態(tài)模式。在實(shí)際的開(kāi)發(fā)中,狀態(tài)模式并不是很常用,但是在能夠用到的場(chǎng)景里,它可以發(fā)揮很大的作用。從這一點(diǎn)上看,它有點(diǎn)像我們之前講到的組合模式。 狀態(tài)模式一般用來(lái)實(shí)現(xiàn)狀態(tài)機(jī),而狀態(tài)機(jī)常用在游戲、工作流引擎等系統(tǒng)開(kāi)發(fā)中。不過(guò),狀態(tài)機(jī)的實(shí)現(xiàn)方式

    2024年04月10日
    瀏覽(29)
  • 【Cocos 3d】從零開(kāi)始自制3d出租車(chē)小游戲

    【Cocos 3d】從零開(kāi)始自制3d出租車(chē)小游戲

    本文很長(zhǎng),建議收藏食用。 課程來(lái)源: 游戲開(kāi)發(fā)教程 | 零基礎(chǔ)也可以用18堂課自制一款3D小游戲 | Cocos Creator 3D 中文教程(合集)p1~p6 簡(jiǎn)介: 資源下載:https://github.com/cocos-creator/tutorial-taxi-game 適合學(xué)習(xí)人群:本教程假定你對(duì)編程有一定的了解,ts,js 學(xué)習(xí)過(guò)其中之一。 如果不

    2024年02月02日
    瀏覽(54)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包