实现卡通效果的shader

一、效果图

网上随便找的一张图,大家可以去网上搜一下资源


卡通效果.png

二、代码部分

下面的实现代码使用表面着色器书写的

Shader "Custom/ExtrusionShader" {
    Properties {
        //主贴图、法线贴图、人物变形范围属性
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _BumpTex("BumpTex",2D)=""{}
        _Power("power",Range(0,0.2))=0.1
    }
    SubShader {
        Tags { "RenderType"="Opaque" }
        LOD 200
        
        CGPROGRAM
        // Physically based Standard lighting model, and enable shadows on all light types
        #pragma surface surf Standard fullforwardshadows Vertex:Vert
        //将贴图储存在sampler2D中
        sampler2D _MainTex;
        sampler2D _BumpTex;
        //定义_Power
        fixed _Power;

        //输入结构2个贴图的uv坐标
        struct Input {
            float2 uv_MainTex;
            float2 uv_BumpTex;
        };
        //实现人物变形的方法,将顶点的坐标值加上顶点的法线坐标,再乘上变形范围
        void Vert(inout appdata_full v)
        {
            v.vertex.xyz += v.normal * _Power;
        }
        void surf (Input IN, inout SurfaceOutputStandard o) {
            // Albedo comes from a texture tinted by color
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex) ;
            o.Albedo=c.rgb;
            o.Normal = UnpackNormal(tex2D(_BumpTex,IN.uv_BumpTex));

        }
        ENDCG
    }
    FallBack "Diffuse"
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容