<cite id="ffb66"></cite><cite id="ffb66"><track id="ffb66"></track></cite>
      <legend id="ffb66"><li id="ffb66"></li></legend>
      色婷婷久,激情色播,久久久无码专区,亚洲中文字幕av,国产成人A片,av无码免费,精品久久国产,99视频精品3
      網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

      Unreal Engine Shader 開發(fā)技巧

      0
      分享至


      【USparkle專欄】如果你深懷絕技,愛“搞點(diǎn)研究”,樂于分享也博采眾長,我們期待你的加入,讓智慧的火花碰撞交織,讓知識的傳遞生生不息!

      這是侑虎科技第1800篇文章,感謝作者徐門子美供稿。歡迎轉(zhuǎn)發(fā)分享,未經(jīng)作者授權(quán)請勿轉(zhuǎn)載。如果您有任何獨(dú)到的見解或者發(fā)現(xiàn)也歡迎聯(lián)系我們,一起探討。(QQ群:793972859)

      作者主頁:

      https://www.zhihu.com/people/BloodyGuys

      每次稍微改一下引擎的Shader源碼,隨便修改一行USH文件,引擎都要十幾分鐘編譯Shader,非常影響開發(fā)效率,后來開始嘗試在RenderDoc里開發(fā)Shader,任何USH文件都是秒編譯,修改馬上就能看到,確實(shí)很方便,只恨之前不早早養(yǎng)成這個(gè)習(xí)慣。

      而且Unreal Engine即使不使用引擎源碼,也可以直接打開引擎的ShaderDebug功能,直接修改Shader源碼。

      一、打開Shader調(diào)試

      修改源碼中的配置文件以調(diào)試著色器源碼ConsoleVariables.ini。

      打開ShaderDevelopmentMode時(shí),Shader編譯報(bào)錯(cuò)不會直接Crash引擎,改一改還能重新編譯:

      r.ShaderDevelopmentMode=1

      打開Shaders.Optimize和Shaders.Symbols可以在Debugger中顯示Shader源碼:

      r.Shaders.Optimize=0 r.Shaders.Symbols=1

      更加硬核一點(diǎn),如果需要使用類似GLSLC命令行來手動編譯Shader,那么加上“-g”就可以保留Shader源碼:

      glslc -g base.frag -o base_frag.spv

      在UE5.2之后,可以在[Platform]Engine.ini定義配置,詳情見:

      《Shader Debugging Workflows》


      https://dev.epicgames.com/documentation/en-us/unreal-engine/shader-debugging-workflows-unreal-engine?application_version=5.2

      比如:

      ;DefaultEngine.ini [ShaderCompiler] r.Shaders.Symbols=1 r.Shaders.GenerateSymbols=1 [ShaderCompiler_BuildMachine] r.Shaders.WriteSymbols=1 r.Shaders.WriteSymbols.Zip=1

      二、Shader開發(fā)流程

      在引擎里搭一個(gè)簡單測試場景,然后RenderDoc截一幀,記得先打開RenderDoc插件:


      命令行:renderdoc.CaptureFrame

      如果需要開發(fā)和調(diào)試GlobalShader或者ComputerShader,這個(gè)Shader不是每幀都會被調(diào)用或者正常的Capture都無法捕獲到,那么就需要在代碼里手動捕獲:

      #include "RenderCaptureInterface.h" ... // 在GameThread中創(chuàng)建FScopedCapture然后持續(xù)監(jiān)聽叫“Xk-MyDrawCallName”的Event, // 一旦RenderThread開始繪制,就會捕獲到這個(gè)DrawCall。 RenderCaptureInterface::FScopedCapture RenderCapture(true, TEXT("Xk-MyDrawCallName")); ENQUEUE_RENDER_COMMAND(MyCustomGlobalShader)([](FRHICommandListImmediate& RHICmdList) {     TRACE_CPUPROFILER_EVENT_SCOPE(MyCustomGlobalShader_Render);     FRDGBuilder GraphBuilder(RHICmdList, RDG_EVENT_NAME("Xk-MyDrawCallName"));     // Do something...     GraphBuilder.Execute(); }); ...

      這里創(chuàng)建的RenderCaptureInterface::FScopedCapture,第一個(gè)參數(shù)是是否開啟Capture,第二個(gè)參數(shù)是需要捕獲的DrawCall的EventName,一旦這個(gè)DrawCall開始繪制,就會自動被RenderDoc截幀并打開軟件。

      找到要渲染的物體,我想直接改它的Shader源碼,需要先定位到這個(gè)DrawCall:


      Find the DrawCall

      然后去Pipeline State這個(gè)窗口,選擇需要修改的Shader類型,這里想要修改Vertex Shader,點(diǎn)擊Edit。注意,在Vertex Shader Edit窗口,修改Pixel Shader的文件,是不生效的:


      然后找到你要修改的文件,比如LocalVertexFactory.ush,直接在RenderDoc寫代碼,修改完點(diǎn)擊Apply changes,修改就直接應(yīng)用到Shader上了,注意Errors窗口的編譯報(bào)錯(cuò):


      Shader修改了,Apply changes之后,在Texture Viewer里可以直接查看結(jié)果:


      Texture Viewer

      因?yàn)槲腋牧薞ertex Shader,所以改變的是頂點(diǎn)的數(shù)值,直接去Mesh Viewer中查看下變化,鼠標(biāo)右鍵可以直接選擇頂點(diǎn),挨個(gè)檢查數(shù)值:


      Mesh Viewer

      當(dāng)渲染都正確之后,把RenderDoc里修改的代碼部分,拷貝到引擎的Shader源碼里,再重新編譯一下引擎檢查一下結(jié)果:


      Unreal Engine Viewport

      三、截取其他應(yīng)用程序

      1. 在Tools->Settings里開啟Global Process Hook:


      Tools-Settings

      2. 指定應(yīng)用程序啟動路徑,開啟Global Hook:


      Enable Global Hook

      3. 手動啟動應(yīng)用程序,在File->Attach to Running Instance里重新掛載程序:


      File-Attach to Running Instance

      4. From now on,應(yīng)該可以正常截幀了:


      Capture Frame

      5. 如果你發(fā)現(xiàn)RenderDoc無法正常掛載需要截獲的程序,那么有可能是你的電腦開啟了安全啟動(Secure Boot),你需要重啟電腦,進(jìn)入BIOS/UEFI設(shè)置:在計(jì)算機(jī)啟動時(shí),你通常需要按下某個(gè)特定的鍵(如F2、F10、F12、Delete或Esc)來進(jìn)入BIOS/UEFI設(shè)置。在BIOS/UEFI設(shè)置中,找到“安全啟動”或“Secure Boot”選項(xiàng)。這個(gè)選項(xiàng)通常位于“啟動”、“安全”或“高級”菜單下,然后禁用它。

      四、小記

      實(shí)際使用RenderDoc開發(fā)Shader后,發(fā)現(xiàn)真的香,之前寫Shader需要一遍一遍的編譯引擎,非常痛苦,尤其是去修改那幾個(gè)通用的USH文件,還是在RenderDoc一次寫完,然后把代碼寫回引擎更快。唯一的問題就是RenderDoc的IDE非常簡陋。

      快捷鍵【Ctrl+Shift+,】,打開GPU Visualizer,渲染管線的RenderPass,去找源碼中對應(yīng)的代碼:


      引擎基本架構(gòu)方便理解引擎代碼層級:

      工具層(Tool Layer)

      地形Landscape工具、植被Foliage工具等

      功能層(Function Layer)

      多線程,GameThread Tick,RenderThread Submit,RHIThread Submit等

      資源層(Resource Layer)

      UObject、UStaticMesh、UTexture、USound等

      核心層(Core Layer)

      數(shù)學(xué)庫FMath,數(shù)據(jù)結(jié)構(gòu),內(nèi)存管理,引擎基礎(chǔ)

      平臺層(Platform/RHI Layer)

      操作系統(tǒng)、GraphicsAPI、硬件架構(gòu)

      主要渲染管線入口

      Console & PC Renderer入口:

      void FDeferredShadingSceneRenderer::Render(FRDGBuilder& GraphBuilder) { }

      Mobile Renderer入口:

      void FMobileSceneRenderer::Render(FRDGBuilder& GraphBuilder) {         //...     if (bDeferredShading)     {         RenderDeferred(GraphBuilder, SortedLightSet, ViewFamilyTexture, SceneTextures);     }     else     {         RenderForward(GraphBuilder, ViewFamilyTexture, SceneTextures);     }         //... }

      Mobile Forward Shading入口:

      void FMobileSceneRenderer::RenderForward(FRDGBuilder& GraphBuilder, FRDGTextureRef ViewFamilyTexture, FSceneTextures& SceneTextures) { }

      Mobile Deferred Shading入口:

      void FMobileSceneRenderer::RenderDeferred(FRDGBuilder& GraphBuilder, const FSortedLightSetSceneInfo& SortedLightSet, FRDGTextureRef ViewFamilyTexture, FSceneTextures& SceneTextures) { }

      文末,再次感謝徐門子美 的分享, 作者主頁: https://www.zhihu.com/people/BloodyGuys, 如果您有任何獨(dú)到的見解或者發(fā)現(xiàn)也歡迎聯(lián)系我們,一起探討。(QQ群: 793972859 )。

      近期精彩回顧


      特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關(guān)推薦
      熱點(diǎn)推薦
      科學(xué)家最終確定:仙女座正在撞向銀河系,速度高達(dá)每秒300公里

      科學(xué)家最終確定:仙女座正在撞向銀河系,速度高達(dá)每秒300公里

      觀察宇宙
      2025-12-19 21:59:03
      中國“好”媒體,反復(fù)炒作負(fù)面議題帶節(jié)奏,標(biāo)榜“清醒”吃人血饅頭

      中國“好”媒體,反復(fù)炒作負(fù)面議題帶節(jié)奏,標(biāo)榜“清醒”吃人血饅頭

      不掉線電波
      2025-12-21 20:47:15
      彭珮云同志逝世

      彭珮云同志逝世

      新華社
      2025-12-21 17:03:03
      南京博物院的事,炸出了一個(gè)去年的視頻

      南京博物院的事,炸出了一個(gè)去年的視頻

      麥杰遜
      2025-12-21 12:17:15
      “難怪口感怪怪的……”必勝客門店被查!羅永浩發(fā)聲

      “難怪口感怪怪的……”必勝客門店被查!羅永浩發(fā)聲

      都市快報(bào)橙柿互動
      2025-12-20 11:32:06
      東契奇重傷!詹姆斯36分破紀(jì)錄,湖人慘敗快船!一戰(zhàn)認(rèn)清5個(gè)事實(shí)

      東契奇重傷!詹姆斯36分破紀(jì)錄,湖人慘敗快船!一戰(zhàn)認(rèn)清5個(gè)事實(shí)

      籃球掃地僧
      2025-12-21 18:11:13
      羅永浩稱收入超99%中國人

      羅永浩稱收入超99%中國人

      超角度
      2025-12-21 12:35:06
      300萬人連夜注銷攜程!平臺推柬埔寨旅游惹眾怒,至今未道歉

      300萬人連夜注銷攜程!平臺推柬埔寨旅游惹眾怒,至今未道歉

      胡嚴(yán)亂語
      2025-12-21 14:49:26
      柬泰兩國,公布戰(zhàn)況

      柬泰兩國,公布戰(zhàn)況

      新京報(bào)政事兒
      2025-12-21 21:11:23
      中央安全生產(chǎn)考核巡查組在廣東發(fā)現(xiàn):一幼兒園存多處嚴(yán)重風(fēng)險(xiǎn)隱患,鐵柵欄封窗、消防栓不出水

      中央安全生產(chǎn)考核巡查組在廣東發(fā)現(xiàn):一幼兒園存多處嚴(yán)重風(fēng)險(xiǎn)隱患,鐵柵欄封窗、消防栓不出水

      紅星新聞
      2025-12-18 19:56:24
      南京博物院提供給新華社的這組《江南春》手續(xù)和票據(jù),有五大疑點(diǎn)!

      南京博物院提供給新華社的這組《江南春》手續(xù)和票據(jù),有五大疑點(diǎn)!

      常識群
      2025-12-21 00:12:51
      順豐退出抖音電商退貨業(yè)務(wù)!原因很簡單:退貨率賊高,錢少事兒多

      順豐退出抖音電商退貨業(yè)務(wù)!原因很簡單:退貨率賊高,錢少事兒多

      風(fēng)向觀察
      2025-12-21 13:11:03
      2026年再上漲!農(nóng)民人均養(yǎng)老金246元,官媒建議加大上漲力度

      2026年再上漲!農(nóng)民人均養(yǎng)老金246元,官媒建議加大上漲力度

      財(cái)話連篇
      2025-12-20 23:22:54
      耗資33億,首日票房僅5000萬,卡梅隆懵了:中國觀眾憑啥不買賬?

      耗資33億,首日票房僅5000萬,卡梅隆懵了:中國觀眾憑啥不買賬?

      八卦南風(fēng)
      2025-12-19 14:40:36
      北斗、GPS同時(shí)被干擾!栗正杰:殺敵一千自損八千

      北斗、GPS同時(shí)被干擾!栗正杰:殺敵一千自損八千

      看看新聞Knews
      2025-12-21 20:41:10
      新加坡對中國最瘋狂的豪賭,開始了!

      新加坡對中國最瘋狂的豪賭,開始了!

      戎評
      2025-12-21 12:29:09
      罵了十年騷擾電話,罵了個(gè)寂寞,美國一句話就治住了他們

      罵了十年騷擾電話,罵了個(gè)寂寞,美國一句話就治住了他們

      扶蘇聊歷史
      2025-12-21 11:05:03
      16GB+1TB!新機(jī)官宣:12月26日,全新上市

      16GB+1TB!新機(jī)官宣:12月26日,全新上市

      科技堡壘
      2025-12-21 11:37:47
      全球反詐會議在曼谷舉行,58國到場、柬埔寨缺席

      全球反詐會議在曼谷舉行,58國到場、柬埔寨缺席

      犀利辣椒
      2025-12-21 06:43:58
      近30年評分最高的10部電視劇,《漫長的季節(jié)》第6,第1實(shí)至名歸

      近30年評分最高的10部電視劇,《漫長的季節(jié)》第6,第1實(shí)至名歸

      皮皮電影
      2025-12-19 10:47:48
      2025-12-22 01:11:00
      侑虎科技UWA incentive-icons
      侑虎科技UWA
      游戲/VR性能優(yōu)化平臺
      1529文章數(shù) 985關(guān)注度
      往期回顧 全部

      科技要聞

      生態(tài)適配已超95% 鴻蒙下一關(guān):十萬個(gè)應(yīng)用

      頭條要聞

      必勝客牛排口感奇怪遭質(zhì)疑"到底用的什么肉" 官方介入

      頭條要聞

      必勝客牛排口感奇怪遭質(zhì)疑"到底用的什么肉" 官方介入

      體育要聞

      勇士火箭贏球:王牌之外的答案?

      娛樂要聞

      星光大賞太尷尬!搶話擋鏡頭,場地還小

      財(cái)經(jīng)要聞

      老房子“強(qiáng)制體檢”,政府出手了

      汽車要聞

      -30℃,標(biāo)致508L&凡爾賽C5 X冰雪"大考"

      態(tài)度原創(chuàng)

      時(shí)尚
      手機(jī)
      家居
      公開課
      軍事航空

      紅色不流行了?今年最火的穿搭居然是它

      手機(jī)要聞

      曝折疊屏iPhone嘗試 UFG 玻璃,明年九月發(fā)

      家居要聞

      高端私宅 理想隱居圣地

      公開課

      李玫瑾:為什么性格比能力更重要?

      軍事要聞

      石破茂:擁核絕不會給日本帶來正面影響

      無障礙瀏覽 進(jìn)入關(guān)懷版 主站蜘蛛池模板: 麻豆精品久久久久久久99蜜桃| 亚洲中文人妻无码| 亚洲红杏AV无码专区首页| 亚洲国产欧美在线成人| 3p露脸在线播放| 亚洲人成人77777网站| 999久久久国产精品消防器材| 人操人人| 又粗又黄又硬又爽的免费视频| 好吊视频一区二区三区 | 桓仁| 厨房与子乱在线观看| 一边添奶一边添p好爽视频| 国产三级网| 免费看婬乱a欧美大片| 老熟妇仑乱一区二区视頻| 专干老熟女A片| 牛牛在线视频| 一区二区三区无效卡| 小鸡入水蜜桃免费观看电视剧| 亚洲乱码中文字幕综合| 538AV| 一个色的导航| 午夜不卡久久精品无码免费| 熟女福利导航| 亚洲欧美成人久久综合中文网| 国产精品久久精品三级| 无码人妻丰满熟妇a片护士| 日本中文字幕a√在线| 91精品国产综合久久久蜜臀酒店| 国产免费无遮挡吸乳视频在线观看| 免费无码又黄又爽又刺激| 精品一区二区三区波多野结衣| 91探花在线播放| 久久波多野结衣av| 天堂资源中文| 亚洲高清国产拍精品网络战| 人妻A?V在线| 久草青春| 人妻在线中文字幕| 欧美日韩一卡2卡三卡4卡 乱码欧美孕交|