ShaderLab学习小结(二)通过Shader变换物体形状-创新互联

运行环境:
Win10 x64
Unity 5.5.4

目的:在场景中建立plane平板,通过shader使平板在y坐标上有突起,且随y值定义不同的颜色
先看下效果:
ShaderLab学习小结(二)通过Shader变换物体形状

专注于为中小企业提供做网站、网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业瑶海免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

Shader代码如下:

Shader "Custom/ChangeShapeY" {
    Properties{                 //定义变量,这些可在物体Inspector面板中进行调整
        _R("R", range(0,5)) = 2 //半径
        _Center("Center",range(-5,5)) = 0   //中心点
        _Scale("Scale", range(1,5)) = 1     //缩放尺度
    }
    SubShader {
        pass {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "unitycg.cginc"
            float _R;           //上面在Properties里定义的变量必须在这里声明,底下的程序才能用
            float _Center;
            float _Scale;
            struct v2f {
                float4 pos:POSITION;
                float4 vpos:TEXCOORD0;  //记录变化后的物体坐标(物体坐标系)
            };
            v2f vert(appdata_base v)
            {
                v2f o;
                o.vpos = v.vertex;
                //计算物体在xz平面上点与所定义的中心点 float2(_Center,_Center) 的距离
                float dist = distance(o.vpos.xz, float2(_Center,_Center));
                //用定义的半径减去上面求得的距离
                float factor = _R - dist;
                factor = factor < 0 ? 0 : factor;//判断如果小于0则等于0
                o.vpos.y = factor*_Scale;        //以这个值作为物体的y坐标
                o.pos = mul(UNITY_MATRIX_MVP, o.vpos);//变换至投影空间
                return o;
            }
            fixed4 frag(v2f IN):COLOR
            {
                //以物体y坐标来决定物体颜色的三个分量
                float y = saturate(IN.vpos.y);  //saturate取0到1之间的数
                return fixed4(y, y, y, 1);
            }
            ENDCG
        }
    }
}

如图,定义了一个xz平面上的中心点float2(_Center,_Center),在中心点y坐标高,距中心点为_R的地方y坐标降至0。且y为0时,颜色是黑,y从0到1之间为从黑到白的渐变,高于1则始终为纯白。
改变y坐标还是在物体坐标系下改变,改好后依然用UNITY_MATRIX_MVP变换到投影坐标系。
最终效果是形成如图中的这样一个圆锥体。

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:ShaderLab学习小结(二)通过Shader变换物体形状-创新互联
网站URL:http://hbruida.cn/article/shsdd.html