【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现景深透视万花筒_Cave】

简介: 【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现景深透视万花筒_Cave】

完整代码


Shader"ShaderToy/Cave"
{
    Properties
    {
    }
    SubShader
    {
        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };
            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
                float4 screenCoord : TEXCOORD1;
            };
            v2f vert(appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = v.uv;
                o.screenCoord.xy = ComputeScreenPos(o.vertex);
                return o;
            }
            fixed4 frag(v2f i) : SV_Target
            {
                //输入UV坐标
                fixed2 p = (-1 + 2.0*i.uv)/1;
                //每个像素到屏幕中心的距离。
                fixed a = atan2(p.x,p.y);
                // 修改距离的变量,可以理解为深度的mask。
                fixed r = pow( pow(p.x*p.x,4.0) + pow(p.y*p.y,4.0), 1.0/8.0 );
                // 动画
                fixed2 uv = fixed2( 1.0/r + 0.2*_Time.y, a );
                //于弦,UV的X和Y分别相乘
                fixed f = cos(12.0*uv.x)*cos(6.0*uv.y);
                //加上颜色
                fixed3 col = 0.5 + 0.5 * sin( 3.1416*f + fixed3(0.0,0.5,1.0) );
                // 中间的部分暗下去。
                col = col*r;
                return fixed4( col, 1.0 );
            }
            ENDCG
        }
    }
}
                fixed2 p = (-1 + 2.0*i.uv)/1;

fixed a = atan2(p.x,p.y);

                    fixed r = pow( pow(p.x*p.x,4.0) + pow(p.y*p.y,4.0), 1.0/8.0 );

fixed f = cos(12.0*uv.x)*cos(6.0*uv.y);

          cos(12.0*uv.x)

cos(6.0*uv.y)

                fixed3 col = 0.5 + 0.5*sin( 3.1416*f + fixed3(0.0,0.5,1.0) );


最终效果:


相关文章
|
5月前
|
XML 搜索推荐 Java
Android App开发之自定义图形中位图与图形互转、剪裁图形内部区域、给图形添加部件的讲解及实战(附源码 简单易懂)
Android App开发之自定义图形中位图与图形互转、剪裁图形内部区域、给图形添加部件的讲解及实战(附源码 简单易懂)
34 0
|
13天前
|
图形学 异构计算 Windows
【ShaderToy中图形效果转译到UnityShaderlab系列案例分享】
【ShaderToy中图形效果转译到UnityShaderlab系列案例分享】
|
13天前
|
图形学
【ShaderToy中图形效果转译到UnityShaderlab案例分享_Hexagon】
【ShaderToy中图形效果转译到UnityShaderlab案例分享_Hexagon】
|
13天前
|
图形学
【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现万花筒变异_Kaleidoscope】
【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现万花筒变异_Kaleidoscope】
|
13天前
|
图形学
【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现三原色型变效果_Chromatic Aberration】
【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现三原色型变效果_Chromatic Aberration】
|
13天前
【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现粒子场_ParticleField】
【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现粒子场_ParticleField】
|
13天前
|
图形学
【ShaderToy中图形效果转译到UnityShaderlab案例分享,代码实现渐变火焰扰动_Flame】
【ShaderToy中图形效果转译到UnityShaderlab案例分享,代码实现渐变火焰扰动_Flame】
|
13天前
|
图形学
【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现七彩动画光圈_ColorfulCircle】
【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现七彩动画光圈_ColorfulCircle】
|
13天前
【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现图形太阳_Sun】
【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现图形太阳_Sun】
|
13天前
【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现圆形图像变异_Animation】
【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现圆形图像变异_Animation】