Shader GrabPass应用实例——实现扭曲效果

本文介绍了Unity中的GrabPass技术,用于获取并处理帧缓冲区的图像,实现屏幕后处理特效,如扭曲。通过Shader Forge,我们可以创建自定义Shader,结合Normal Map和屏幕深度信息来调整扭曲效果。同时,文章提到了使用GrabPass时需要注意的Queue设置,以及获取屏幕深度的方法。
摘要由CSDN通过智能技术生成

GrabPass简介

所谓GrabPass,可以在渲染所在对象之前,获取当前FrameBuffer中的图像,以供在后续Pass中进行处理,有这它就可以实现一些只能通过屏幕后处理进行操作,比如高斯Blur等。下面两篇文章写的不错。

https://docs.unity3d.com/Manual/SL-GrabPass.html

https://zhuanlan.zhihu.com/p/29378964(里面内容比较不错)

首先,先介绍在Shader Forge中如何进行使用,ShaderForge中是可以支持直接使用的,其中SceneColor就是对应的GrabTexture

以下对应ShaderForge生成的代码:

            VertexOutput vert (VertexInput v) {
                VertexOutput o = (VertexOutput)0;
                o.pos = UnityObjectToClipPos( v.vertex );
                o.projPos = ComputeScreenPos (o.pos);
                COMPUTE_EYEDEPTH(o.projPos.z);
                return o;
            }
            float4 frag(VertexOutput i) : COLOR {
                float2 sceneUVs = (i.projPos.xy / i.projPos.w);
                float4 sceneColor = tex2D(_GrabTexture, sceneUVs);
// Lighting:
// Emissive:
                float3 emissive = tex2D( _GrabTexture, (sceneUVs * 2 - 1).rg).rgb;
                float3 finalColor = emissive;
                return fixed4(finalColor,1);
            }

其中可以看有两个Pass,其中一个是GrabPass,后面的代码可以通过_GrabTexture获取

GrabPass { }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值