UE4针对特殊的透明物体不应用后期效果
这是之前的做法 https://blog.csdn.net/maxiaosheng521/article/details/121854323
比较简单粗暴,效果是所有的透明材质都不应用后期,这次是通过custom stencil 设置为111 过滤掉指定透明材质的后期渲染流程
代码和思路说明 https://github.com/HeartlessLD/UE4CustomtranslucencyNoPost-
实现对指定透明材质物体不应用后期效果 (在SceneCapture中捕捉的对象也不受效果)
说明 受限于目前对引擎的了解 这种修改方式绝对不是最优的方法
使用说明:
使用ue4.26源码版引擎 大概率4.27也可以 4.25应该是不行
引擎文件拷贝对应的文件进行覆盖
ComposeSeparateTranslucency.usf NoPostProcessCustomStencil.usf放到UnrealEngine\Engine\Shaders\Private中
ConsoleVariables.ini 调试shader 使用 如果不需要调试查看shader可以不用
NoPostProcessCustomStencil.h .cpp 放到UnrealEngine\Engine\Source\Runtime\Renderer\Private
项目设置
Custom Depth-Stencil Pass EnableWithStencil
Separate Translucency enable
将想要设置不受影响的物体 属性 RenderCustomDepthPass enable
customDepth Stencil Value 111 (这里设置111 是针对后期材质中 只针对111 进行处理 非111的透明材质 保持原样)
透明材质要开启 Allow Custom Depth Write
这里面说一下大概思路(可能有错误 仅供参考)
文件中所有///>nopost的地方都是修改的内容,具体的逻辑可以自己看
首先自定义一条Pass 放在后期的最后进行渲染,
这里参考 https://zhuanlan.zhihu.com/p/407093510
///>nopost
PassSequence.SetEnabled(EPass::NoPostProcess, true);
在Post之前对透明物体进行渲染处理时,在合成透明的shader中过滤掉111的透明,
ComposeSeparateTranslucency.usf
uint CustomStencil = CustomStencilTexture.Load(int3(SvPosition.xy, 0)) STENCIL_COMPONENT_SWIZZLE;if(CustomStencil == 111 && SeparateTranslucencySample.a != 1)OutColor.rgb = SceneColorSample.rgb;
elseOutColor.rgb = SceneColorSample.rgb * SeparateTranslucencySample.a * SeparateModulationSample.rgb + SeparateTranslucencySample.rgb;
在最后的自定义Pass中添加上111的透明图片
///>nopostif(PassSequence.IsEnabled(EPass::NoPostProcess)){FNoPostProcessInputs PassInputs;PassSequence.AcceptOverrideIfLastPass(EPass::NoPostProcess, PassInputs.OverrideOutput);PassInputs.SceneColor = SceneColor;PassInputs.SeparateTransluscency = SeparateTranslucency;SceneColor = AddNoPostProcessPass(GraphBuilder, View, PassInputs, SceneColor.Texture, *Inputs.SeparateTranslucencyTextures, (*Inputs.SceneTextures)->CustomStencilTexture);}
NoPostProcessCustomStencil.usf
if(CustomStencil == 111 && SeparateTranslucencySample.a != 1)OutColor.rgb = SceneColorSample.rgb * SeparateTranslucencySample.a * SeparateModulationSample.rgb + SeparateTranslucencySample.rgb;elseOutColor.rgb = SceneColorSample.rgb;
这里提一嘴 SceneCapture2D默认是不会讲透明物体放在SeparateTranslucency单独的纹理中的,需要单独开启一下
SceneCaptureRendering.cpp
///>nopost
SceneRenderer->ViewFamily.EngineShowFlags.SeparateTranslucency = 1;
以上 大体思路就是这样
UE4针对特殊的透明物体不应用后期效果相关推荐
- ue4透明折射无法扭曲背后透明物体问题
主要问题如上面所示 透明物体开了折射后,背后的透明物体实际上不会扭曲,还是以前大小 这个存在很多玻璃的场景 有的时候可以通过勾选项目设置的Separate Translucency解决,但是会引起其他 ...
- 基于Transformer对透明物体进行分割
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 小白导读 论文是学术研究的精华和未来发展的明灯.小白决心每天为大家 ...
- 准确估计透明物体的 3D 姿态:机器人收集 + Keypose 算法
文 / 软件工程师 Kurt Konolige,Google 机器人团队 计算机视觉应用领域的核心问题是 3D 物体的位置与方向的估计,这与对象感知有关(如增强现实和机器人操作).在这类应用中,需要知 ...
- 阿诺德给物体加描边_Arnold(C4DToA)阿诺德渲染教程(116):Arnold 如何抠透明通道?透明物体后期合成方案!...
教程简介 左(渲染图) 右(透明分离) 过去在 Arnold 渲染的图像中,如果包含了透明对象,就非常尬,,,众所周知,被大家诟病的是,Arnold 在后期难以分离透明物体,也就是将透明对象与背景分离 ...
- Three.js 透明物体不能正常显示(闪烁)/渲染顺序的控制问题
Three.js的渲染机制 three的渲染器是基于webGL的.它的渲染机制是根据物体离照相机的距离来控制和进行渲染的.对于透明的物体,则是按照从最远到最近的顺序进行渲染.也就是说,它根据物体的空间 ...
- UE4蓝图基础——蓝图实现物体移动和物体旋转
UE4蓝图基础--蓝图实现物体移动和物体旋转 物体旋转组件 物体旋转蓝图实现 物体移动蓝图实现 actor物体移动或者旋转在游戏或者应用最常用的基本操作方式,在UE4中基础蓝图部分就来学习分享一下具体 ...
- ECCV 2022 | 面向高光和透明物体感知与抓取的域随机化增强的深度仿真与修复
关键词:深度仿真 深度修复 高光透明物体 导 读 本文是计算机视觉顶级会议 ECCV 2022入选论文 Domain Randomization-Enhanced Depth Simulation ...
- 使用VMD中的Tachyon渲染出透明逼真的水盒子效果
1.概述 在本教程中将重点向你展示如何通过VMD中的Tachyon制作一个高质量的可视化图像.本文假设你对vmd有一定了解(最基本的打开载入分子即可).关于vmd制作图像的快速入门中文教程,本例所使用 ...
- html5 mask,HTML5 Canvas渐进填充与透明实现图像的Mask效果
HTML5 Canvas渐进填充与透明实现图像的Mask效果 2020-03-24 19:10:45 字体:大 中 小 来源:转载 供稿:网友 详细解释HTML5 Canvas中渐进填充的参数设置与使 ...
- unity 陀螺仪 物体旋转和移动效果
unity 陀螺仪 物体旋转和移动效果 直接上码 带注释 public class SDKGyroController : MonoBehaviour {//陀螺仪是否存在class GyroGame ...
最新文章
- C++11 智能指针unique_ptr使用 -- 以排序二叉树为例
- HarmonyOS之深入解析编译构建的配置和代码混淆
- 【转载】java读取.properties配置文件的几种方法
- ARP、Tracert、Route 与 NBTStat命令详解
- VSCode 汉化、设置为 中文语言显示 、中文界面
- 共建公安标准体系 | 七牛云与锐安科技达成深度战略合作
- android achart教程,AChartEngine And Android Studio
- mybatis关联查询之一对多,多对一,以及多对多
- matlab练习程序(构造简单多边形)
- 全局系统性地把握客户感知-建立VOC
- 1.1介绍线程和运行(Introducing Thread and Runnable)
- ibatis的ibatorForEclipse的安装与配置和ibator的错误日志查看
- JDK 8 函数式编程入门
- 【LoRa点对点通信与控制】
- 仿支付宝头像外加一个边框的工具类
- javax.el.PropertyNotFoundException: 'newsLine' is an unknown bean property...
- 经典管理定理二十三条点评
- 解决Coursera的课程视频无法观看问题
- 2021级天梯赛 2.1-2.4
- carbondata与mysql_carbondata使用总结