UE4/5.1英偉達(dá)焦散 解決不跟隨透明度變化焦散亮度和半透明焦散亮度過亮的問題
英偉達(dá)最近魔改UE源碼魔改出了一個(gè)焦散分支,效果很驚艷,只是很可惜,并沒有將該功能插件化,需要編譯一次源碼,編譯出來的引擎源碼文件大概90個(gè)G,所以想要使用這個(gè)效果還是比較麻煩的,也希望官方能考慮加入正式版。
(隔壁Unity HDRP都開始自帶太陽光光線追蹤顏色陰影了,雖然沒有焦散,但原生的UE到現(xiàn)在都沒有光線追蹤顏色陰影的相關(guān)信息,看來ue的原生光追已經(jīng)不如Unity了。)

解決過亮問題
我們先確保自己的項(xiàng)目啟動(dòng)光線追蹤半透明陰影??!這很重要!
我們?cè)谖覀冺?xiàng)目的config/DefaultEngine.ini文件里面
找到
[/Script/Engine.RendererSettings]
我們?cè)?/p>
[/Script/Engine.RendererSettings]的下一行加入一行配置指令
r.RayTracing.Shadows.SupportTranslucency=True
即可解決過亮問題!
解決焦散亮度不根據(jù)透明度變化和顏色明度越低就越亮的問題
小編好不容易編譯出了焦散分支,卻發(fā)現(xiàn)不透明度為1焦散的亮度還是很亮,沒有變暗,怎么辦呢?

這是英偉達(dá)員工的一個(gè)很大的疏忽導(dǎo)致的,這時(shí)候我們需要修改引擎光線追蹤的shader文件,我們只需要小小的修改。
引擎文件夾/Engine/Shaders/Private/RayTracing/RayTracingMaterialHitShaders.usf

找到
float3 filterClr = Emissive + BaseColor;
修改為
float3 filterClr = BaseColor;
我們不考慮自發(fā)光顏色作為焦散mesh反射顏色,所以刪掉Emissive +?
再找到以下兩行
float filterAvgClr = max(filterClr.r, max(filterClr.g, filterClr.b));
filterClr = filterClr / filterAvgClr;
然后刪除這兩行
再找到
hitData.color=filterClr * hitData.color;
這行代碼修改為
hitData.color*=filterClr * (1-pow(Opacity,2));
然后我們打開引擎等待著色編譯完成后,發(fā)現(xiàn)已經(jīng)解決問題了!



UE4/5.1英偉達(dá)焦散 解決不跟隨透明度變化焦散亮度和半透明焦散亮度過亮的問題的評(píng)論 (共 條)
