UE4 Forward平面反射小记

Forward的Mobile的平面反射流程小记

主要相关的几个文件

 首先截帧看,如果场景中有planarReflection组件,那后面不管有没有用到。这张反射的RT都会渲

 

如果是Deffered的流程,则会先走一次SceneColor的BilinearFiltering,然后再在FDeferredShadingSceneRenderer::RenderDeferredPlanarReflections中走PlanarReflectionShaders.usf中的PlanarReflectionPS并将ComputePlanarReflections的结果存在ReflectionsOutputTexture中返回。

 然后再将结果存到ScreenSpaceReflectionsTexture中给到后面的ReflectionEnvironmentPixelShader中的反射计算用。

如果是Forward的流程,则在MobileBasePassPixelShader中就会调用ComputePlanarReflections

 所以可以知道反射贴图的采样逻辑主要在ComputePlanarReflections中,如MobileForward下的Unlit材质可以直接在CustomNode中用,或者直接采样PlanarReflectionTexture来获得反射信息。但要注意得在MaterialTemplate中include一下不然获取不到。

OK知道了以上采样反射结果后的流程,接下来我们更关注的是创建和赋值PlanarReflectionTexture的过程

 

 

 

 

可以看到最后传进来的RT就是平面反射组件的RT

所以平面反射主要的设置就在FScene::UpdatePlanarReflectionContents中,我们来看看他的流程

首先会根据平面反射组件的ScreenPercentage参数创建设置相应大小的RT。也就是平面反射组件这里这个参数

 

 之后的设置引擎的注释都很明确,到下面的矩阵计算设置

 https://blog.csdn.net/puppet_master/article/details/80808486?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166246238216782248577259%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=166246238216782248577259&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-80808486-null-null.nonecase&utm_term=%E5%8F%8D%E5%B0%84&spm=1018.2226.3001.4450

我们知道镜面反射的基本逻辑是根据反射平面的反射矩阵,在MV后加入反射变换最后再P

可以在MirrorMatrix的构造函数中看到UE的反射矩阵

 

BulidProjectionMatrix()和SetupViewFamilyForSceneCapture()的具体实现可以在SceneCaptureRendering中看到

同时在里面我们也能看到其他类型的SceneCapture的更新函数

这里只关心平面反射的内容,继续回到UpdatePlanarReflectionContents,可看到在View相关设置后,创建了SceneRenderer,CreateSceneRenderer函数在创建时就已经判断好了类型。

 

 所以之后传入UpdatePlanarReflectionContents_RenderThread后会在里面调Render主渲染函数。这样就会在prefilterPlanarReflection前先画一遍反射的场景了

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值