unity shader用渲染纹理实现镜子效果

实现原理:

  • 设置一个额外的摄像机用于捕捉镜子所包括的场景,并将捕捉到的画面渲染到渲染纹理中存储起来,用于镜子的渲染。
  • 给镜子编写shader利用渲染纹理。

实现效果:

场景:
在这里插入图片描述

镜子:
在这里插入图片描述

实现代码:

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "Custom/Chapter10-Mirror"
{
    Properties
    {
    //摄像机渲染到的渲染纹理
    _MainTex("Main Tex",2D)="white"{}
    }
    SubShader
    {
    Tags { "RenderType"="Opaque" "Queue"="Geometry"}
    Pass{

    CGPROGRAM

    
    #pragma vertex vert
    #pragma fragment frag

    sampler2D _MainTex;
    struct a2v{
    float4 vertex:POSITION;
    float3 texcoord:TEXCOORD0;
    };

    struct v2f{
    float2 uv:TEXCOORD0;
    float4 pos:SV_POSITION;
    };

    v2f vert(a2v i){
    v2f o;
    o.uv=i.texcoord;
    o.pos=UnityObjectToClipPos(i.vertex);
    o.uv.y=1-o.uv.y;
    return o;
    }
    fixed4 frag(v2f i):SV_Target{
    return tex2D(_MainTex,i.uv);
    }
    ENDCG
    }
    }
    FallBack Off
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值