UE4 CustomDepthMobile流程小记

原生UE opaque材质中获取CustomDepth/CustomStencil会报错

在其Compile中调用的函数中没有看到报错逻辑

材质节点的逻辑都没有什么问题,所以看一下报错

在HLSLMaterialTranslator::Translate中

修改之后 mobile流程的不透明材质可以直接获取SceneTexture::customdepth节点结果

但是PC流程会崩

材质编译的时候mobile和PC流程都会走 ,deffered流程CustomDepth是在BasePass之后走的,所以拿不到,会报uniformbuffer的错。改官方引擎的话,为了防止报错材质里需要加feature switch。PC这个流程改CustomDepth的渲染顺序改动太大,不如自己新开一个自定义的深度pass。

(以下讨论的都是Mobile流程在opaque材质中用customdepth,非后处理材质的情况)

到这里,Mobile流程的Opaque材质中用节点获取customdepth是可用的,但马上又遇到了下一个问题,在customnode中直接写采样CustomDepthTexture的结果是不对的

截帧查看,场景中物件勾上RenderCustomDepthPass的开关,材质中不用customdepth节点的时候,或者用自定义的custom节点中直接拿采样结果的时候,CustomDepth pass都是没有的。

那就可以确认一点,材质的SceneTexture节点一定有一些引擎相关flag/uniformbuffer相关的配置设置,是否渲CustomDepth pass不只是由模型勾选是否渲自定义深度决定的,材质的compile结果中一定有一些配置相关逻辑。

过一下流程,可以根据Template采样结果定位uniformbuffer,看和后面的分析对不对得上

再看看SceneTexture的Compile中做了哪些操作

在MobileSceneRenderer::InitViews中判断

该buffer包含了PC和Mobile

uniformbuffer的传参是对应上的

到这一步为止,如果我需要写一个循环采样customdepth的结果,是没法直接在材质的customnode中写采样CustomDepthTexture的。需要单独加一个自定义节点,Compile中实现SceneTexture节点配置部分相同的逻辑,然后在Template中添加自定义函数自定义采样逻辑才行。

但是,如果说我就是不想反复改代码,就想要在材质customnode里写呢。

其实是可以的,比如是否可以如下修改

这样修改后,原本是场景物体要勾RenderCustomDepthPass开关,并且材质节点SceneTexture走Complie逻辑后beShouldRenderCustomDepth才为true。而修改后是场景中物体只要勾了RenderCustomDepthPass开关,beShouldRenderCustomDepth就会true。这样改的好处是材质customnode中就可以直接写采样MobileSceneTextures的结果了,但是坏处是这样改不太符合管线设计的逻辑,比如这样场景中物件只要打了勾,后面材质没有到自定义深度信息,customdepthpass也是一直走的,不安全。总结就是能用,但最合理的方案还是单加上述的材质自定义节点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/247440.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

六、Kotlin 类型进阶

1. 类的构造器 & init 代码块 1.1 主构造器 & 副构造器在使用时的注意事项 & 注解 JvmOverloads 推荐在类定义时为类提供一个主构造器; 在为类提供了主构造器的情况下,当再定义其他的副构造器时,要求副构造器必须调用到主构造器…

核对表:使用条件语句CHECKLIST:Using Conditionals

核对表&#xff1a;使用条件语句CHECKLIST&#xff1a;Using Conditionals if-then语句 代码的正常路径清晰吗&#xff1f; if-then 测试对等量分支的处理方式正确吗? 确保不要用“>”代替“>”或用“<”代替“<”。 使用了else子句并加以说明吗&#xff1f; els…

【C++】输入输出、缺省参数、函数重载

目录 C的输入和输出 缺省参数 概念 缺省参数的分类 全缺省参数 半缺省参数 函数重载 概念 C支持函数重载的原理--名字修饰 C的输入和输出 #include<iostream> // std是C标准库的命名空间名&#xff0c;C将标准库的定义实现都放到这个命名空间中 using namespace …

Pandas--安装(2)

安装 pandas 需要基础环境是 Python&#xff0c;Pandas 是一个基于 Python 的库&#xff0c;因此你需要先安装 Python&#xff0c;然后再通过 Python 的包管理工具 pip 安装 Pandas。 使用 pip 安装 pandas: pip install pandas安装成功后&#xff0c;我们就可以导入 pandas …

2023年方便食品行业市场数据分析(电商数据查询):整体销售下滑,但也有品牌逆袭

2023年是疫情全面放开的一年&#xff0c;后疫情时代&#xff0c;人们在生活方式上也有了明显的转变&#xff0c;体现在消费市场中&#xff0c;人们对于特定品类的喜好也发生转变。其中&#xff0c;方便食品市场消费走势的变化便能比较直观的呈现出这一点。 作为疫情期间居家消…

【机器学习300问】15、什么是逻辑回归模型?

一、逻辑回归模型是为了解决什么问题&#xff1f; 逻辑回归&#xff08;Logistic Regression&#xff09;是一种广义线性回归分析模型&#xff0c;尤其适用于解决二分类问题&#xff08;输出为两个类别&#xff09;。 &#xff08;1&#xff09;二分类举例 邮件过滤&#xff…

Caused by: com.mongodb.MongoTimeoutException: Timed out after 30000 ms

报错 Caused by: com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {typeUNKNOWN, servers[{addressmangodb-m.cc.com:3717, typeUNKNOWN, stateCONNECTING, exception{com.mongodb.MongoSocketReadE…

基于springboot游戏分享网站源码和论文

网络的广泛应用给生活带来了十分的便利。所以把游戏分享管理与现在网络相结合&#xff0c;利用java技术建设游戏分享网站&#xff0c;实现游戏分享的信息化。则对于进一步提高游戏分享管理发展&#xff0c;丰富游戏分享管理经验能起到不少的促进作用。 游戏分享网站能够通过互…

C++笔记之RTTI、RAII、MVC、MVVM、SOLID在C++中的表现

C++笔记之RTTI、RAII、MVC、MVVM、SOLID在C++中的表现 —— 杭州 2024-01-28 code review! 文章目录 C++笔记之RTTI、RAII、MVC、MVVM、SOLID在C++中的表现1.RTTI、RAII、MVC、MVVM、SOLID简述2.RAII (Resource Acquisition Is Initialization)3.RTTI (Run-Time Type Informat…

2023-2024年重庆职业院校技能大赛“信息安全管理与评估”比赛样题

2023 年重庆职业院校技能大赛&#xff08;高等职业教育&#xff09; “信息安全管理与评估”样题任务书 第一阶段&#xff1a;任务 1 网络平台搭建&#xff08;50 分&#xff09;任务 2 网络安全设备配置与防护&#xff08;250 分&#xff09; 第二阶段&#xff1a;第一部分 网…

基于springboo校园社团信息管理系统

摘要 随着高校规模的扩大和学生社团活动的日益丰富多彩&#xff0c;校园社团信息管理成为一个备受关注的问题。为了更有效地组织、管理和推动校园社团的发展&#xff0c;本文设计并实现了一套基于Spring Boot的校园社团信息管理系统。本系统以实现社团信息的集中管理和高效运营…

HTML+CSS:全景轮播

效果演示 实现了一个简单的网页布局&#xff0c;其中包含了五个不同的盒子&#xff0c;每个盒子都有一个不同的背景图片&#xff0c;并且它们之间有一些间距。当鼠标悬停在某个盒子上时&#xff0c;它的背景图片会变暗&#xff0c;并且文字会变成白色。这些盒子和按钮都被放在一…

Nginx实现反向代理负载均衡实验

实验环境&#xff1a; VM REdhat虚拟机&#xff08;192.168.87.5&#xff09;一台、VM Redhat虚拟机&#xff08;192.168.87.3&#xff09;一台、阿里云服务器&#xff08;47.93.79.92&#xff09;一台 实验要求&#xff1a;通过windows浏览器访问192.168.87.5&#xff08;虚…

使用npm安装插件时报权限问题解决方法

使用npm安装插件时报权限问题解决方法 使用npm安装yarn时总报这个错误&#xff0c;显示权限问题&#xff0c;之前安装其它插件包的时候也有遇到过&#xff0c;总是潦草解决&#xff0c;今天仔细查了一下&#xff0c;是我没有管理端权限&#xff0c;应该是之前安装npm的时候没有…

从零学习Linux操作系统 第二十部分 mariadb数据库的管理

一、对于数据库的基本介绍 1.什么是数据库 数据库就是个高级的表格软件 2.常见数据库 Mysql Oracle mongodb db2 sqlite sqlserver … 3.Mysql (SUN -----> Oracle) 4.mariadb (Mysql的一种&#xff09; 数据库中的常用名词 1.字段 &#xff1a;表格中的表头 2.表 &…

企业为何对数据可视化越发看重?

数据可视化&#xff0c;作为信息时代的一项重要技术&#xff0c;正在企业中崭露头角&#xff0c;逐渐成为业务决策和运营管理的得力助手。企业之所以对数据可视化如此重视&#xff0c;是因为它为企业带来了诸多实际利益和战略优势。 首先&#xff0c;数据可视化为企业提供了更…

HiveSQL题——排序函数(row_number/rank/dense_rank)

一、窗口函数的知识点 1.1 窗户函数的定义 窗口函数可以拆分为【窗口函数】。窗口函数官网指路&#xff1a; LanguageManual WindowingAndAnalytics - Apache Hive - Apache Software Foundationhttps://cwiki.apache.org/confluence/display/Hive/LanguageManual%20Windowin…

盛最多水的容器[中等]

一、题目 给定一个长度为n的整数数组height。有n条垂线&#xff0c;第i条线的两个端点是(i, 0)和(i, height[i])。找出其中的两条线&#xff0c;使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。也就是求x轴与y轴的面积。 说明&#xff1a;你不能倾…

HCIE之BGP正则表达式(四)

BGP 一、AS-Path正则表达式数字| 等同于或的关系[]和.$ 一个字符串的结束_代表任意^一个字符串的开始()括号包围的是一个组合\ 转义字符* 零个或多个&#xff1f;零个或一个一个或多个 二、BGP对等体组三、BGP安全性 一、AS-Path正则表达式 正则表达式是按照一定模版匹配字符串…

解决 Required Integer parameter ‘uid‘ is not present

1.原因分析 后端没接收到uid可能是前端没传递uid也可能是前端传递了uid&#xff0c;但是传递方式与后端接收方式不匹配&#xff0c;导致没接收到更大的可能是因为后端请求方式错了。比如&#xff1a; 2.解决方案 先确定前端传参方式与后端请求方式是匹配的后端get请求的话…