原文地址:https://blog.csdn.net/weixin_42825810/article/details/102750390

本人翻译修改过的代码:

Shader "Unlit/ToonLearn"
{Properties{_MainTex ("我是贴图鸭", 2D) = "white" {}_RampThreshold("斜面值鸭",Range(0,1))=0.5_RampSmooth("平滑度鸭",Range(0,1))=0.1_Color("我是颜色鸭",Color)=(1,1,1,1)_HColor ("Highlight Color鸭", Color) = (0.8, 0.8, 0.8, 1.0)_SColor ("阴影颜色鸭", Color) = (0.2, 0.2, 0.2, 1.0)_SpecularColor ("高光颜色鸭", Color) = (0.5, 0.5, 0.5, 1)_SpecThreshold ("高光大小鸭", Range(0, 1)) = 0.5_SpecSmooth ("高光平滑度鸭", Range(0, 1)) = 0.1_Shininess ("高光亮度鸭", Range(0.001, 10)) = 0.2_RimColor ("边缘光颜色鸭", Color) = (0.8, 0.8, 0.8, 0.6)_RimThreshold ("边缘光强度鸭", Range(0, 1)) = 0.5_RimSmooth ("边缘光滑度鸭", Range(0, 1)) = 0.1}SubShader{Tags { "RenderType"="Opaque" }LOD 100Pass{Tags {"LightMode"="ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"#include "Lighting.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;float3 normal:NORMAL;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;float3 normal:TEXCOORD1;};sampler2D _MainTex;float4 _MainTex_ST;float4 _Color;float4 _SColor;float4 _HColor;float _RampThreshold;float _RampSmooth;float4 _SpecularColor;float _SpecThreshold;float _SpecSmooth;float _Shininess;float4 _RimColor;float _RimThreshold;float _RimSmooth;v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = TRANSFORM_TEX(v.uv, _MainTex);o.normal=mul(v.normal,(float3x3)unity_WorldToObject);return o;}fixed4 frag (v2f i) : SV_Target{fixed3 lightDir=normalize(_WorldSpaceLightPos0.xyz);fixed3 viewDir=normalize(_WorldSpaceCameraPos.xyz);fixed3 halfDir=normalize(lightDir+viewDir);float3 normal=normalize(i.normal);float NdotL=saturate(dot(normal,lightDir));float NdotH=saturate(dot(normal,halfDir));float NdotV=saturate(dot(normal,viewDir));fixed3 ramp=smoothstep(_RampThreshold-_RampSmooth*0.5,_RampThreshold+_RampSmooth*0.5,NdotL);fixed4 albedo = tex2D(_MainTex, i.uv)*_Color;_SColor=lerp(_HColor,_SColor,_SColor.a);float3 rampColor=lerp(_SColor.rgb,_HColor.rgb,ramp);fixed3 diffuse= albedo.rgb*_LightColor0.rgb*rampColor;float gloss=albedo.a;float spec=pow(NdotH,_Shininess*222)*gloss;spec=smoothstep(_SpecThreshold-_SpecSmooth*0.5,_SpecThreshold+_SpecSmooth*0.5,spec);fixed3 specular=_SpecularColor.rgb*_LightColor0.rgb*spec;float rim=(1-NdotV)*NdotL;rim=smoothstep(_RimThreshold-_RimSmooth*0.5,_RimThreshold+_RimSmooth*0.5,rim);fixed3 rimColor=_RimColor.rgb*_LightColor0.rgb*_RimColor.a*rim;float4 finalColor=float4(diffuse+specular+rimColor,1);return finalColor;}ENDCG}}
}

效果图:

参数设置:

2.加了描边功能的Shader

Shader代码如下:

Shader "Unlit/ToonLearn2"
{Properties{_MainTex ("我是贴图鸭", 2D) = "white" {}_RampThreshold("斜面值鸭",Range(0,1))=0.5_RampSmooth("平滑度鸭",Range(0,1))=0.1_Color("我是颜色鸭",Color)=(1,1,1,1)_HColor ("Highlight Color鸭", Color) = (0.8, 0.8, 0.8, 1.0)_SColor ("阴影颜色鸭", Color) = (0.2, 0.2, 0.2, 1.0)_SpecularColor ("高光颜色鸭", Color) = (0.5, 0.5, 0.5, 1)_SpecThreshold ("高光大小鸭", Range(0, 1)) = 0.5_SpecSmooth ("高光平滑度鸭", Range(0, 1)) = 0.1_Shininess ("高光亮度鸭", Range(0.001, 10)) = 0.2_RimColor ("边缘光颜色鸭", Color) = (0.8, 0.8, 0.8, 0.6)_RimThreshold ("边缘光强度鸭", Range(0, 1)) = 0.5_RimSmooth ("边缘光滑度鸭", Range(0, 1)) = 0.1// _Diffuse("_Diffuse", Color) = (1,1,1,1)_OutlineColor("边缘描边颜色", Color) =(0,0,0,0)_Outline("边缘描边鸭", Range(0,0.2)) = 0.1//边缘光// _RimColor("亮度颜色鸭", Color) =(1,0.5,1,1)// _RimPower("物体亮度鸭", Range(0,4)) = 2}SubShader{Tags { "RenderType"="Opaque" }LOD 100Pass{Tags {"LightMode"="ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"#include "Lighting.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;float3 normal:NORMAL;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;float3 normal:TEXCOORD1;};sampler2D _MainTex;float4 _MainTex_ST;float4 _Color;float4 _SColor;float4 _HColor;float _RampThreshold;float _RampSmooth;float4 _SpecularColor;float _SpecThreshold;float _SpecSmooth;float _Shininess;float4 _RimColor;float _RimThreshold;float _RimSmooth;v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = TRANSFORM_TEX(v.uv, _MainTex);o.normal=mul(v.normal,(float3x3)unity_WorldToObject);return o;}fixed4 frag (v2f i) : SV_Target{fixed3 lightDir=normalize(_WorldSpaceLightPos0.xyz);fixed3 viewDir=normalize(_WorldSpaceCameraPos.xyz);fixed3 halfDir=normalize(lightDir+viewDir);float3 normal=normalize(i.normal);float NdotL=saturate(dot(normal,lightDir));float NdotH=saturate(dot(normal,halfDir));float NdotV=saturate(dot(normal,viewDir));fixed3 ramp=smoothstep(_RampThreshold-_RampSmooth*0.5,_RampThreshold+_RampSmooth*0.5,NdotL);fixed4 albedo = tex2D(_MainTex, i.uv)*_Color;_SColor=lerp(_HColor,_SColor,_SColor.a);float3 rampColor=lerp(_SColor.rgb,_HColor.rgb,ramp);fixed3 diffuse= albedo.rgb*_LightColor0.rgb*rampColor;float gloss=albedo.a;float spec=pow(NdotH,_Shininess*222)*gloss;spec=smoothstep(_SpecThreshold-_SpecSmooth*0.5,_SpecThreshold+_SpecSmooth*0.5,spec);fixed3 specular=_SpecularColor.rgb*_LightColor0.rgb*spec;float rim=(1-NdotV)*NdotL;rim=smoothstep(_RimThreshold-_RimSmooth*0.5,_RimThreshold+_RimSmooth*0.5,rim);fixed3 rimColor=_RimColor.rgb*_LightColor0.rgb*_RimColor.a*rim;float4 finalColor=float4(diffuse+specular+rimColor,1);return finalColor;}ENDCG}Pass{Name "Outline"Cull FrontCGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"float _Outline;fixed4 _OutlineColor;struct v2f{float4 vertex :SV_POSITION;};v2f vert (appdata_base v){v2f o;//物体空间法线外拓//v.vertex.xyz += v.normal * _Outline;//o.vertex = UnityObjectToClipPos(v.vertex);//视角空间法线外拓//float4 pos = mul(UNITY_MATRIX_V, mul(unity_ObjectToWorld, v.vertex));//float3 normal = normalize(mul((float3x3)UNITY_MATRIX_IT_MV,v.normal));//pos = pos + float4(normal,0) * _Outline;//o.vertex =  mul(UNITY_MATRIX_P, pos);//裁剪空间法线外拓o.vertex = UnityObjectToClipPos(v.vertex);float3 normal = normalize(mul((float3x3)UNITY_MATRIX_IT_MV,v.normal));float2 viewNoraml = TransformViewToProjection(normal.xy);o.vertex.xy += viewNoraml * _Outline;return o;}float4 frag(v2f i):SV_Target{return _OutlineColor;}ENDCG}}FallBack "Diffuse"
}

效果图:

参数设置:

Unity_Shader_卡通动画效果相关推荐

  1. 分享92个JS特效动画效果,总有一款适合您

    分享92个JS特效动画效果,总有一款适合您 92个JS特效动画效果下载链接:https://pan.baidu.com/s/1C_b7PM8E8WUpNMethPGtbQ?pwd=r3f8  提取码: ...

  2. 纯CSS3制作卡通场景汽车动画效果

    前言 今天分享一下我昨晚做的CSS3动画效果--卡通场景汽车动画.在接触CSS3动画之前,我之前实现一些简单的动画效果都是使用flash完成的.但是自从CSS3横空出世,在移动端对CSS3动画的运用越 ...

  3. 图像处理(二十一)基于数据驱动的人脸卡通动画生成-Siggraph Asia 2014

    在现实生活中,我们经常会去评价一个人,长得是否漂亮.是不是帅哥美女,然而如何用五官的数据去评价一个人是否长得五官比例协调,我们却很难说出来,也就是你为什么觉得某个人长得漂亮?是因为她眼睛大,嘴巴小,还 ...

  4. 分享112个JS特效动画效果,总有一款适合您

    分享112个JS特效动画效果,总有一款适合您 112个JS特效动画效果下载链接:https://pan.baidu.com/s/1uC61pccye_oYqBnUugIuig?pwd=u21z  提取 ...

  5. ppt高级动画效果如何循环起来?

    ppt模板制作自带的动画效果有很多,怎么做出高级的ppt模板动画效果?ppt家园就来介绍一下动画之间循环播放的操作方法. 彩色简约微信社群营销推广活动策划方案PPT模板 1.插入-形状-矩形,插入3个 ...

  6. html将图片动画效果,8款精美的HTML5图片动画分享

    原标题:8款精美的HTML5图片动画分享 HTML5结合jQuery可以让网页图片变得更加绚丽多彩,比如实现一些图片3D切换.CSS3动画绘制以及各种图片效果的渲染.本文将分享8款精美的HTML5图片 ...

  7. 分享113个JS特效动画效果,总有一款适合您

    分享113个JS特效动画效果,总有一款适合您 113个JS特效动画效果下载链接:https://pan.baidu.com/s/1k0fyflcyTKQM9pYEif2f9g?pwd=hpa8  提取 ...

  8. ppt模板动画效果怎么合并?

    好看的ppt模板 都会有动画效果来增加模板的可观性,如何利用ppt模板制作自带的动画效果做合并的动画效果呢?今天ppt家园再来给大家介绍一个ppt模板动画效果的制作方法. 卡通手绘小学生暑假生活计划总 ...

  9. 动效设计原理:从卡通动画到UI动效

    UI是基于静态页面来设计的,页面之间通过跳转切换.在设计过程中,设计师很重视单页的视觉效果,却经常忽略了对界面跳转的处理.这些未经处理的跳 转由于没有提供足够的预期,所以用户在使用时经常会觉得困惑.与 ...

最新文章

  1. ORA-00845 : MEMORY_TARGET not supported on this system(调大数据库内存无法启动)
  2. 一天搞定CSS:初识css--01
  3. LeadTools Android 入门教学——运行第一个Android Demo
  4. Codeforces Round #669 (Div. 2)
  5. java asm jndi_GitHub - Q1ngShan/JNDI: JNDI 注入利用工具
  6. jsp之建立一个九九乘法表
  7. Advanced clustering methods (Cure, Chameleon, Rock, Jarvis-Petrich)
  8. 基于Yolov5目标检测的物体分类识别及定位(三) -- 训练、测试
  9. ***工具XSCAN V3.3 GUI的使用
  10. web前端----------网易云音乐播放器简单的实现(素材自行下载)
  11. r library car_医学统计与R语言:双因素重复测量方差分析(Twoway repeated measures ANOVA)...
  12. 小米 无线 linux 鼠标,便捷好用的小米无线鼠标,据说用完一键退回就离不开了...
  13. 《带您走进西藏》网课章节测验及答案
  14. 如何将自己做的网页发布到网站让别人可以看到
  15. STM32开发笔记108:将STM32CubeIDE设置为中文
  16. 私厨菜谱app的设计与实现(三)
  17. 拼多多校招内推编程题2 大整数乘法
  18. 「 科研经验 」思考“工程解决方案”的思维
  19. java 并发框架源码_Java并发编程高阶技术-高性能并发框架源码解析与实战
  20. java实现求最小公倍数_使用Java代码进行因数分解和求最小公倍数的示例

热门文章

  1. Revit在明细表中添加取整公式及导出明细表
  2. 姿态解算基础知识(一)
  3. android手机卡怎么办,安卓手机卡慢怎么办 安卓手机卡慢解决方案【详解】
  4. 京东店铺的所有商品API接口(item_search_shop-获得店铺的所有商品API接口),整店商品API接口
  5. 打游戏的蓝牙耳机推荐哪一款?打游戏比较好的蓝牙耳机推荐
  6. mysql bin-log作用_MySQL中的binlog的作用是什么?
  7. Linux查看进程id
  8. java comparator接口类_常见的接口与类 -- Comparator
  9. Spring中自定义注解支持SpEl表达式(仅限在AOP中使用)
  10. 微信小程序控制三轮全向排爆小车