URP - 屏幕图像(_CameraOpaqueTexture)
首先需要在unity中开启屏幕图像开关才可以使用该纹理
同样只有不透明对象才能被渲染到屏幕图像中
若想要该对象不被渲染到屏幕图像中,可以将其Shader的渲染队列改为 "Queue" = "Transparent"
如何在Shader中使用_CameraOpaqueTexture?
使用模型的屏幕空间坐标采样屏幕图像的具体方法看前一篇
Shader"unity/GrabTex"
{Properties{}SubShader{Tags{"RenderPipeline"="UniversalPipeline""Queue" = "Transparent"}Pass{HLSLPROGRAM#pragma vertex vert#pragma fragment frag#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"TEXTURE2D(_CameraOpaqueTexture);SAMPLER(sampler_CameraOpaqueTexture);struct Attributes{float4 positionOS : POSITION;float2 uv : TEXCOORD;};struct Varyings{float4 positionCS : SV_POSITION;float2 uv : TEXCOORD;};Varyings vert(Attributes v){Varyings o = (Varyings)0;o.positionCS = TransformObjectToHClip(v.positionOS);o.uv = v.uv;return o;}float4 frag(Varyings i):SV_Target{float2 screenUV = i.positionCS/_ScreenParams.xy;float4 ScreenTex = SAMPLE_TEXTURE2D(_CameraOpaqueTexture,sampler_CameraOpaqueTexture,screenUV);return ScreenTex;}ENDHLSL}}}