Unity - BRP - PP后效导致 Camera.targetTexture 被换掉,graphicsFormat 不对问题

2023-10-30


环境

Unity : 国际版2020.3.37f1
Pipeline : BRP
Packages: Post Processing 3.0.3


目的

BRP 虽然是 官方放弃更新的 渲染管线,但是有些项目仍然会使用到,有一些踩过的坑,该记录的还是记录一下,便于 自己、他人 索引


原因

为了保留 HDR 效果,并且为了做性能优化

我们让 FrameBuffer 里面的 Color Buffer 使用格式为 R11G11B10 (注意没有A通道)

在这里插入图片描述

而没有使用 FP16,毕竟 FP16 会比 R11G11B10 大 2 倍 内存


问题

另外

我们在 Camera 渲染到 RT 时,Camera.HDR 设置为 Off 或是 Using Graphics Settings

FrameDebugger 都可以看到渲染使用都是 RT 中制定的 graphicsFormat (这里是设置 R16G16B16A16_SFloat 为例)
在这里插入图片描述

在这里插入图片描述

这时,如果我们使用 Post-process Layer 和 Post-process Volume 组件,就会导致 Camera.TargetTexture 被偷梁换柱,如下图

在这里插入图片描述

这种的话,RT R8G8B8A8_SRGB 渲染出来的话 LDR 色值

无论我们的自己如何设置 RT 的 graphicsFormat 来设置 HDR ,都是,都没有用的

比如下面我这设置的 RT graphicsFormatR16G16B16A16_SFLOAT

(下面是 color format,其实内部API中 color format 的 setter 是对 graphicsFormat 的设置,可以理解为同一个东西)
在这里插入图片描述
在 Frame Debug查看到,绘制使用的是: R8G8B8A8_SRGB

另外,我之前说过的 当前渲染 RT 被 偷梁换柱了,而我们原来的 RT 名字为: TestRT,现在却变成 TempBuffer 2834 720x1280,很明显就是换了另一个 RT
在这里插入图片描述

因此,如果你的项目中,某个 RT 想要拍摄 HDR 效果,并且有使用了 BRP 中的 PP 组件,那么 Camera.HDR == OFF 情况下,也是无法正常使用的 custom RT graphicsFormat 的 (其实这块功能设计就不是很好,难怪官方要放弃 BRP)

另外

  • 如果 ProjectSettings/Graphics/[对应平台]/HDR mode设置为 R11G11B10 的话
  • 并且 Camera.HDR 设置为 using graphics settings

那么你想要渲染到 custom RT 带 A 通道,是不行的

因为 R11G11B19_UFloatPack32 没有A通道,可以使用下面介绍的解决方法来处理


解决方法

RT camera 中不使用 BRP 自带的 PP 组件,自己写一个 PP 组件,可以参考以往我学习 Unity 后效组件来处理 : Unity Shader PostProcessing - 1 - 后处理概念

项目中使用的话,使用的是 MonoBehaviourOnRenderImage,自行优化写法和部分效率问题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity - BRP - PP后效导致 Camera.targetTexture 被换掉,graphicsFormat 不对问题 的相关文章

  • C++Primer Section 2-1

    Section 2 1 Primitive Built in Types Section 2 1 1 Arithmetic Types Differences in Integer Types Differences between cha

随机推荐

  • 如何读懂别人写的vc++代码

    每个人的编程习惯各异规范程度 命名规则 使用习惯也不尽相同 有人爱用Timer 有的人用线程 有的人用PostMessage有的人用SetEvent或回调或直接调用 所以别人的程序也是良莠不齐 所以要求你对编程基础 程序构架 业务规则都要有
  • 95-34-035-Context-HeadContext和TailContext

    文章目录 1 概述 2 继承体系 3 HeadContext 3 1 类签名 4 TailContext 1 概述 HeadContext和TailContext使用继承的方式关联Handler 作为ChannelPipeline双向链表的
  • Sort()函数用法:比较函数写法

    sort 函数 sort函数可以三个参数也可以两个参数 必须包含头文件 include lt algorithm gt using namespace std 它使用的排序方法是类似于快排的方法 时间复杂度为o nlog n Sort函数有
  • 微信开发 "errcode":-1 应该怎么办

    相信不少朋友在微信开发的时候遇到了 string errcode 1 errmsg system error length 38 这个时候并不是你的代码有问题 你只需要将你的PHP文件的编码改成utf 8即可 不知道如何操作的朋友 可以按照
  • Java 前后端分离业务封装 对后端返回值进行封装 PageVO封装

    遇到前后端业务需要不一致时对Controller返回结果进行封装 后端返回结果 前后端分离后 web 端要求结果 counts 2694 pagesize 14 pages 8 page 66 items id 9009384 title
  • qtcpsocket类read函数接收大数据_一篇易懂的CAN 通讯功能实现指南2--READ

    通过一篇易懂的CAN通讯协议指南1 我们知道 CAN总线的2种架构 高速CAN和低速CAN CAN协议帧类型 数据帧 遥控帧 错误帧 过载帧 线与机制 仲裁机制 位定时与同步 以上基础的应用多数体现在硬件处理部分 所以只有少数体现在软件部分
  • Vue-搜索框实现

    热爱生活 热爱技术 热于分享 一 方法分析 1 字符串匹配 BF算法 KMP算法 库函数indexOf均可实现 2 v for循环实时更新元素 3 click 实现点击后页面的跳转同时设置不同id来根据内容的不同来跳转到不同页面 二 代码分
  • 在ESP32的Lvgl8上使用LvglFontTool显示汉字

    这里写目录标题 一 使用LvglFontTool4 0转换字体 二 修改生成的C文件 二 使用字体 用法1 在canvas上绘制 用法2 在label上显示 一 使用LvglFontTool4 0转换字体 这个工具是阿里兄大佬提供的 他的论
  • 对Java中&&和&

    初学java的话可能会对一些预算符不是很理解 什么优先级呀 运算顺序啊 今天就先谈谈 他们的区别 首先 逻辑与 按位与 逻辑或 按位或 比如 if a 2 b 3 说明两者都要满足 如果有一为false 就不会运算输出 if a 2 b 3
  • ffmpeg mkv 转 MP4

    ffmpeg i 源文件名 c v copy c a aac 目标文件名 ffmpeg i 1 mkv c v copy c a aac 1 mp4
  • 【C++】到底什么是链接,它起到了什么作用

    当程序包含了数百万行的代码 以至于人们无法维护这个程序了 于是人们开始寻找新的方法 迫切地希望将程序源代码分散到多个文件中 一个文件一个模块 以便更好地阅读和维护 这个时候 链接器就粉墨登场了 变量名 函数名等仅仅是地址的一种助记符 目的是
  • python里面的pip是什么意思_python中pip是什么

    python中pip是什么 pip是一个以Python计算机程序语言写成的软件包管理系统 他可以安装和管理软件包 另外不少的软件包也可以在 Python软件包索引 英语 Python Package Index 简称PyPI 中找到 命令行
  • 傅里叶描述子欧氏距离_基于旋转轮廓的点云局部浮点型和二值化特征描述(RCS)...

    作者 小毛 Date 2020 05 19 来源 基于旋转轮廓的点云局部浮点型和二值化特征描述 RCS 本次介绍一个发表于Computer Vision and Image Understanding的经典三维点云描述子RCS 论文地址 J
  • 第10节-函数三(高阶函数/匿名函数/闭包/装饰器)

    第10节 函数三 高阶函数 匿名函数 闭包 装饰器 一 高阶函数 二 匿名函数 1 过滤器 2 匿名函数 lambda函数 三 闭包 四 装饰器 一 高阶函数 满足下列特点之一的函数称之为高阶函数 特点1 接收一个或者多个函数作为参数 特点
  • node-formidable源码:原生javascript解析前端传输的FormData

    本系列文章是本人学习相关知识时所积累的笔记 以记录自己的学习历程 也为了方便回顾知识 故文章内容较为随意简练 抱着学习目的来的同学务必转移他处 以免我误人子弟 参考资料 酷勤网 在Koa和Express中 已经通过node formidab
  • css 实现三角形阴影

    平时工作中 设计给出的类似于对话框的样式 基本上都会有阴影 这个时候一般都是有两种方式实现 一是用背景图 二是用代码实现 如图样式 这里只说使用代码来实现
  • kmeans算法实现及获取anchors

    kmeans算法网上资料很多 其原理简单来说就选取k个聚类中心 然后把剩余的点归类到与其相距最近的聚类中心 是一种无监督算法 缺点和不足有两个 第一个是k需要指定 第二个是对于聚类中心种子点的选取很敏感 本文将以yolov4算法使用kmea
  • Python 基础教程——语法

    前言 Python 语言与 Perl C 和 Java 等语言有许多相似之处 但是 也存在一些差异 这次我们将来学习 Python 的基础语法 让你快速学会 Python 编程 第一个 Python 程序 交互式编程 交互式编程不需要创建脚
  • RocketMQ第四节(部署模式、监控面板等)

    1 mq的部署模式 部署方式 RocketMQ 参考官网 单机模式 抗风险能力差 单机挂机没服务 单机硬盘损坏 丢失数据 多机 多master没有Slave副本 多个master采用RAID10磁盘 不会丢失数据 但是某一个master关闭
  • Unity - BRP - PP后效导致 Camera.targetTexture 被换掉,graphicsFormat 不对问题

    文章目录 环境 目的 原因 问题 解决方法 环境 Unity 国际版2020 3 37f1 Pipeline BRP Packages Post Processing 3 0 3 目的 BRP 虽然是 官方放弃更新的 渲染管线 但是有些项目