渲染目标纹理

1、渲染目标纹理

渲染目标纹理(Render Target Texture)是一种特殊类型的纹理,一般摄像机的渲染结果会输出到颜色缓冲区中,最终渲染到设备屏幕上,让玩家通过屏幕看见游戏画面,而渲染目标纹理允许我们将渲染结果直接写入到某一张纹理中,我们可以利用这个纹理来处理各种特殊效果,比如:镜子、玻璃、屏幕后处理、阴影映射等等

在Unity中,渲染目标纹理(Render Target Texture)通常和渲染纹理(Render Texture),可以互换使用,指的相同的概念。在实际使用中,我们更常听到的是"渲染纹理"这个术语
渲染纹理就是将渲染结果存储到一个纹理对象中,以便在后续的渲染步骤中使用它的作用体现在:
我们在进行Shader开发时,我们经常会希望某摄像机不要直接将结果渲染到屏幕上,而是可以让我们得到它的渲染结果进行二次处理或利用。

常用方法

(1)渲染纹理(Render Texture)
    Unity引擎中提供的一种专门的纹理类型
    我们可以在Project窗口中右键Create——> Custom Render Texturn创建
    我们只需要把该纹理进行相关的设置,然后关联到摄像机组件的Target Texture中即可
    这样对应摄像机渲染的内容就会直接写入到该纹理中
    我们便可以使用它来进行相关操作
    注意:除了手动创建,我们也可以通过代码创建并关联

(2)GrabPass
    在Unity Shader当中
    我们可以在Pass渲染通道中使用 GrabPass 抓取指令
    捕获当前屏幕内容并将其保存为纹理,以便在后续的渲染过程中使用

(3)OnRenderImage
    在继承了MonoBehaviour的脚本中
    我们可以使用OnRenderImage来获取摄像机渲染完成的图像
    该函数一般用于实现自定义的图像后处理效果
    相当于将摄像机渲染完成的图像进行二次处理

2、镜面效果的使用

2.1 镜面效果的原理

镜面效果的原理就是将摄像机看到的画面渲染到渲染纹理当中,再在Shader中利用该渲染纹理进行翻转渲染即可,即在顶点着色器中,让UV坐标的X轴反向(坐标范围0~1,想要反向直接用 1 - uv.x 即可

Shader "ShaderProj/6/Mirror"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
    }
    SubShader
    {
        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"

            sampler2D _MainTex;
            float4 _MainTex_ST;

            v2f_img vert (appdata_base v)
            {
                v2f_img o;
                o.pos = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.texcoord.xy, _MainTex);
                o.uv.x = 1 - o.uv.x;

                return o;
            }

            fixed4 frag (v2f_img i) : SV_Target
            {
                // sample the texture
                fixed4 col = tex2D(_MainTex, i.uv);
                return col;
            }
            ENDCG
        }
    }
    Fallback "Diffuse"
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值