编写PostEffect后期的shader

如果之前在OnRenderImage写后期,经常会用cg去写后期。但是代码放到PostEffect中发现,就只有一个莫名其妙的三角。是因为,PostEffect中的uv计算,和pos计算与我们平时使用的方式不同。还有关于_Main
Tex的使用。

_MainTex在后期中的使用

OnRenderImage中,如果我们不在Properties中声明_MainTex属性时,是无法获取当前的RT的图的,必须要指定后才能获取,声明了属性时是可以获取到当前RT值,不需要特别指定。
但是在PostEffect中没有这个问题。

顶点和UV计算

//OnRenderImage中
o.pos = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
//-------POSTEffect中
o.pos = float4(v.vertex.xy, 0.0, 1.0);
o.uv = (v.vertex.xy + 1.0) * 0.5;
#if UNITY_UV_STARTS_AT_TOP
		o.uv = o.uv * float2(1.0, -1.0) + float2(0.0, 1.0);
#endif

猜你喜欢

转载自blog.csdn.net/u010778229/article/details/125810903