签到

07月13日
尚未签到

共有回帖数 0

    懂得生活的人

    等级:
    我之前在Unity4里写了三个shader,平滑滤波、锐化滤波和高斯模糊,在4里同时施加在Main Camera里是正常的,但是到了Unity5里图像就颠倒了。
    平滑滤波的Shader:
    Shader "Custom/Smooth" {
    Properties {
    _MainTex ("Base (RGB)", 2D) = "white" {}
    }
    SubShader
    {
    Tags{"Queue"="Transparent"}

    pass
    {
    Cull off
    CGPROGRAM
    #pragma vertex vert
    #pragma fragment frag

    #include "UnityCG.cginc"
    sampler2D _MainTex;
    float4 _MainTex_ST;
    float uvOffsetx;
    float uvOffsety;
    uniform float width;
    uniform float height;
    struct v2f {
    float4 pos : SV_POSITION;
    float2 uv : TEXCOORD0;
    } ;


    v2f vert (appdata_base v)
    {
    v2f o;
    o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
    o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);
    return o;
    }
    float4 frag (v2f i) : COLOR
    {
    uvOffsetx=i.uv.x/width;
    uvOffsety=i.uv.y/height;
    float4 s1 = tex2D(_MainTex,i.uv + float2(uvOffsetx,0.00));//右
    float4 s2 = tex2D(_MainTex,i.uv + float2(-uvOffsetx,0.00));//左
    float4 s3 = tex2D(_MainTex,i.uv + float2(0.00,uvOffsety));//上
    float4 s4 = tex2D(_MainTex,i.uv + float2(0.00,-uvOffsety));//下
    float4 s5=tex2D(_MainTex,i.uv + float2(uvOffsetx,uvOffsety));//右上
    float4 s6=tex2D(_MainTex,i.uv + float2(-uvOffsetx,uvOffsety));//左上
    float4 s7=tex2D(_MainTex,i.uv + float2(uvOffsetx,-uvOffsety));//右下
    float4 s8=tex2D(_MainTex,i.uv + float2(-uvOffsetx,-uvOffsety));//左下

    float4 texCol = tex2D(_MainTex,i.uv);
    float4 outp;

    float pct1=0.007164f;//pct:权
    float pct2=0.033120f;
    outp=(s5+s6+s7+s8)*pct1+(s1+s2+s3+s4)*pct2+texCol*0.838866;
    //outp = pct*(s1+s2+s3+s4+s5+s6+s7+s8+texCol)/9.0f;//中值滤波
    return outp;
    }
    ENDCG
    }
    }
    }
    锐化滤波的Shader:
    Shader "Custom/Sharpen" {
    Properties {
    _MainTex ("Base (RGB)", 2D) = "white" {}
    }
    SubShader
    {
    Tags{"Queue"="Transparent"}

    pass
    {
    CGPROGRAM
    #pragma vertex vert
    #pragma fragment frag

    #include "UnityCG.cginc"
    sampler2D _MainTex;
    float4 _MainTex_ST;
    float uvOffsetx;
    float uvOffsety;
    uniform float width;
    uniform float height;
    struct v2f {
    float4 pos : SV_POSITION;
    float2 uv : TEXCOORD0;
    } ;


    v2f vert (appdata_base v)
    {
    v2f o;
    o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
    o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);
    return o;
    }
    float4 frag (v2f i) : COLOR
    {
    uvOffsetx=i.uv.x/width;
    uvOffsety=i.uv.y/height;
    float4 s1 = tex2D(_MainTex,i.uv + float2(uvOffsetx,0.00));//右
    float4 s2 = tex2D(_MainTex,i.uv + float2(-uvOffsetx,0.00));//左
    float4 s3 = tex2D(_MainTex,i.uv + float2(0.00,uvOffsety));//上
    float4 s4 = tex2D(_MainTex,i.uv + float2(0.00,-uvOffsety));//下
    float4 texCol = tex2D(_MainTex,i.uv);
    float4 outp;
    outp = 5*texCol-s1-s2-s3-s4;
    return outp;
    }
    ENDCG
    }
    }
    }
    高斯模糊滤波的Shader:
    Shader "Custom/Gaus" {
    Properties {
    _MainTex ("Base (RGB)", 2D) = "white" {}
    }
    SubShader
    {
    Tags{"Queue"="Transparent"}

    pass
    {
    Cull off
    CGPROGRAM
    #pragma vertex vert
    #pragma fragment frag

    #include "UnityCG.cginc"
    sampler2D _MainTex;
    float4 _MainTex_ST;
    float uvOffset;
    struct v2f {
    float4 pos : SV_POSITION;
    float2 uv : TEXCOORD0;
    } ;


    v2f vert (appdata_base v)
    {
    v2f o;
    o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
    o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);
    return o;
    }
    float4 frag (v2f i) : COLOR
    {
    uvOffset=0.003f;
    float4 s1 = tex2D(_MainTex,i.uv + float2(uvOffset,0.00));
    float4 s2 = tex2D(_MainTex,i.uv + float2(-uvOffset,0.00));
    float4 s3 = tex2D(_MainTex,i.uv + float2(0.00,uvOffset));
    float4 s4 = tex2D(_MainTex,i.uv + float2(0.00,-uvOffset));

    float4 texCol = tex2D(_MainTex,i.uv);
    float4 outp;

    float pct=0.2;//pct:权
    outp = texCol* (1- pct*4) + s1* pct + s2* pct+ s3* pct + s4* pct;
    return outp;
    }
    ENDCG
    }
    }
    }
    同时应用于Unity5的效果:

    请问大神这是为什么……以及如何解决……

    楼主 2015-05-28 23:51 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知