Unreal|UDN精选(第一期)

文摘   2024-09-26 20:04   广东  



Hello,大家好

今天开始给大家分享来自UDN的精选问题




1
Niagara Fluid打包出现噪点


Q: 用Niagara Fluid的Grid 3D Gas Simulation Caching的时候,打包会产生很多噪点

还原过程如下:
1.在空白项目中,在空白项目中,按照以下步骤在Sequence中执行Niagara Simulation Caching
Using Niagara Caches | Epic Developer Community (epicgames.com)
2.将创建的sequence放在map里面
3.Platform>Windows>Package Project

A: 这似乎是源于实验性的SVT的问题,编辑器中输入命令:Fx. Niagara.RenderTargetVolume.SimCacheDataStorageMode 0,同时DefaultEngine.ini中也设置

[ConsoleVariables]fx.Niagara.RenderTargetVolume.SimCacheDataStorageMode=0

如此就可以关闭掉SVT的缓存,然后重新生成一下缓存。


2
UE5.4中SpriteParticle会绘制在Niagara Fluid前面


Q:当使用 NiagaraFluid 的体积材质 Fluid 和 Niagara 创建的 Translucent 材质(Lit)的 SpriteParticle 放置在相同的位置时,它看起来总是像 SpriteParticle 是在前景中绘制的。如果将 Fluid 的位置移近摄像机,情况也是如此。
你也可以在同一个 Niagara 系统中使用 Fluid 和 SpriteParticle,并使用“Sort Order Hint”函数来获得相同的结果。
有没有办法更改 NiagaraFluid 和 SpriteParticle 的绘制顺序?

A:这是因为 SpriteParticle 材质设置为 After DOF (景深之后),所以它是在 NiagaraFluid 之后使用 Separate Translucency 合成的。
通过将 SpriteParticle 材质的 半透明通道(Translucency Pass) 更改为 DOF 之前或类似内容,绘制顺序将与 NiagaraFluid 相同。
但是,请务必注意,DOF 的绘制顺序实际上会发生变化。
如果要在 AfterDOF 中渲染流体,可以通过启用“Composite with Translucency”来更改流体侧的设置。

此处内部设置的 CVar 如下所示。

static TAutoConsoleVariable<int32> CVarHeterogeneousVolumesComposition(TEXT("r.HeterogeneousVolumes.Composition"),0,TEXT("Change the order of Heterogeneous Volumes composition (Default = 0)\n")TEXT("0: Before Translucency\n")TEXT("1: After Translucency\n")TEXT("Requires enabling Heterogeneous Volumes Project Setting: 'Composite with Translucency'"),ECVF_RenderThreadSafe);

3
Landscape Component Draw Call的问题


Q查看UE关于Landscape的文档的时候,有这样的表述,每个Landscape component 是一个GPU处理,每个Section是一个Draw Call(Each component has a render-thread CPU processing cost and each section is a draw call),但是实际测试的话,一个component 有2*2个Section,但是实际只有一个Draw Call,所以文档这句表述到底怎么理解呢,还是说文档表述有误...

A:这部分文档过时了,当前DC恶化LOC都以Component为单位

Q:那请问Component之间会有instance机制么,之前测试发现有两个Component公用一张Heightmap的情况,是为了instance考虑么

A:如果是指移动端的话,多个Component应该没有Instancing的机制,不过单个Component可以拆分成4x4大小的tile,然后再GPU上做Tile的Culling,所以实际近处的Component有可能部分顶点被裁剪掉了。
文档中提到的每个Section一个Draw Call是以前的实现,因为以前每个Seciton可以单独变换LOD,但是新版本中,LOD应该是以component为单位了,所以就是一个Drawcall了。
Tile Culling这个功能5.4开始全平台除了开启了Landscape Nanite和Lumen,VSM的情况下,别的都是默认开启的。以及Tile Culling仅对LOD0的component起效(因为视点附近的culling占比最高最有效)

4
更改SeparateTranslucency的分辨率时,CustomStancil的位置未对齐


Q:降低半透明缓冲区 r 的分辨率。我更改了 SeparateTranslucencyScreenPercentage 的值,但是如果我在此状态下引用半透明材质中的 CustomStencil,则位置将发生偏移。

类似的下面好像也是这个问题
https://issues.unrealengine.com/issue/UE-138179
这在 5.1.1 中没有发生,但似乎从 5.2 开始再次出现。
能告诉我有没有办法处理它吗?

A: 我们调查时发现,从 SceneTexture 获取时似乎不支持分辨率更改,预计可以通过以下修改来处理。

.\Engine\Shaders\Private\MaterialTemplate.ush(2976行)//const uint2 PixelPos = uint2(UV * View.BufferSizeAndInvSize.xy);const uint2 PixelPos = uint2(UV * View.BufferSizeAndInvSize.xy * View.BufferToSceneTextureScale.xy);


我们已将此事记录为以下问题,一旦正式回复有进展,我们将立即与你联系。
UE-222592 使用 r.SeparateTranslucencyScreenPercentage 在 Scene Texture 节点中获取自定义模板无法正常工作。


Q我们根据你所提出的方法解决了 CustomStencil 的错位问题。
我还想再问一个问题,除了半透明分辨率更改×CustomStencil 引用的组合之外,SceneTexture 的引用目标的这种问题是否有可能未对齐?
例如,想知道它是否只有我这种设置才会出现问题,如果它发生在 CustomStencil 以外的 SceneTextures 中,或者设置 r.ScreenPercentage 的分辨率时,是否还会出现问题。

A当我检查周围的区域时,在函数的实现中,只有 Custom Stencil 被指定为 PixelPos,其他值是考虑了 Screenpercentage 等的 UV 规范,因此预计其他 SceneTexture 不会出现此问题。
我没有确认任何其他类似的报错,所以看起来基本没有问题,但如果你再次发现这样的问题,请联系我们。





- End -




   

ABOUT US

 
关于我们



微信群

公众号

知识店铺



喜欢Thepoly的可以通过三种方式与我们建立联系。分别是公众号、微信群以及QQ群。公众号是我们最为官方的窗口,更多内容都必须关注公众号后才能获取。另外现已开通网站:www.thepoly.cn更多精彩请关注我们。




Thepoly
关注我。为大家提供更多CG行业动态和资讯,分享CG大拿制作经验,和大家一起学习进步。立志通过这个公共号让大家能得到更大的提升。
 最新文章