[Unity3D]URP中,除了主摄像机的PIPELINE,其他PIPELINE无法获得默认的ScreenColor

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Unity3D]URP中,除了主摄像机的PIPELINE,其他PIPELINE无法获得默认的ScreenColor相关的知识,希望对你有一定的参考价值。

参考技术A 记录一个我认为是比较缺陷的设计,ScreenColor当前不是全局的参数。官方文档说无法兼顾所有情况,所以不做全局,其他PIPELINE需求的,自己要针对性去实现。我是觉得这样的设计还不如直接不做,让开发者自己去定义实现,不然这种每个地方都有的有,有的没有。如果不是很熟悉文档,你得先怀疑自己是不是哪里错了,找几个小时没找到问题,用起来莫名其妙,最后幸运找到了对应说明,靠,原来如此。十分弟弟。

1.设置
m_ColorHandle = UnityEngine.Rendering.Universal.RenderTargetHandle.CameraTarget;
cmd.GetTemporaryRT(m_ColorHandle.id, cameraTextureDescriptor, FilterMode.Bilinear);

2.Blitting到_GrabTexture2
int screenCopyID = Shader.PropertyToID("_ScreenCopyTexture");
buf.GetTemporaryRT(screenCopyID, m_OpaqueDesc, FilterMode.Bilinear);
buf.Blit(m_ColorHandle.Identifier(), screenCopyID);
buf.SetGlobalTexture("_GrabTexture2", screenCopyID);

3.使用上述获得全局的GrabTexture2作为原本SceneColor
ShaderGraph中Sample GraTexture2 ,注意,这个地方的UV需要用ScenePosition.

这几天研究了一下URP,感觉到UNITY的满满恶意。这玩意全网都找不到个像样能说明白的教程,零零散散而且不明不白。

官方文档:
https://docs.unity3d.com/Packages/com.unity.shadergraph@8.2/manual/Scene-Color-Node.html

unity传摄像机数据到另外一个摄像机

unity传摄像机数据到另外一个摄像机的方法就是先把摄像机保存然后关机,取掉储存卡,然后再电脑上复制到另一张空的储存卡,把这个卡插到需要数据的摄像机上面就可以了。 参考技术A Unity可以使用RenderTexture和Camera.targetTexture属性来实现将一个摄像机的视图传递到另一个摄像机中。以下步骤可以帮助你实现从一个摄像机传递数据到另一个摄像机:
1、在Unity中创建两个摄像机,分别命名为“SourceCam”和“TargetCam”。
2、为SourceCam创建一个RenderTexture对象,命名为“TargetTex”。
3、将TargetTex设置为SourceCam的Camera.targetTexture属性。
4、为TargetCam设置Camera.targetTexture属性为TargetTex。
5、让TargetCam使用TargetTex作为其视图渲染来源。

以上是关于[Unity3D]URP中,除了主摄像机的PIPELINE,其他PIPELINE无法获得默认的ScreenColor的主要内容,如果未能解决你的问题,请参考以下文章

【Unity3D】URP下的GrabPass方案

unity3d中如何设置2个摄像机,使游戏画面中同时出现2个场景,一个主场景,一个缩略图??

【Unity3D】URP中的打包资源加载

Unity3D URP中使用Render Feature实现后处理效果

Unity-URP

Unity3D 旋转天空盒的方法