下面是shader的代码:

Shader "Forzen/FrozenEffect_myself"
{Properties{[Header(Main infos)]_MainTex ("Albedo", 2D) = "white" {}_SpeculatTint("specular color",Color) = (0.5,0.5,0.5)_Smoothness("smoothness",Range(0,1)) = 0.1_Metallic("metallic",Range(0,1)) = 0_BumpMap("Normal map",2D) = "bump"{}[HDR]_Emission("emission",color)= (0,0,0,0)_Occlusion("_Occlusion",Range(0,1)) = 1_FrozenProgress("_FrozenProgress",Range(0,1)) = 1_ForzenRegionSize("_ForzenRegionSize",Range(0,1))= 0.3_ForzenDir("_ForzenDir ",vector) = (0,1,0,0)_PosMinMax("_PosMinMax",vector) = (0,1,0,0)[Header(Ice Colors)][NoScaleOffset] _IceTex(" iceTexture",2D) = "white"{}[NoScaleOffset]_IceNormal("ice normal",2D) = "bump"{}_IceTiling(" ice tiling  ",Range(0,10)) = 1_IceSpecularSmoothness("ice specular smoothness",vector) =(0.3,0.3,0.3,0.8) _IceColorFactor("ice color factor",Range(0,1))=1_IceDesaturate(" ice desaturate ",Range(0,1))=1[Header(Fresnal)]_FresnalPower ("fresnal power",Range(1,30)) = 1_FresnalScaler ("fresnal Scaler",Range(0,1)) = 1[HDR]_FresnalColor("fresnal color",color) = (0,0,0,0)}SubShader{Pass{Tags{ "RenderType"="Opaque" "LightMode"="ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag#pragma target 3.0           #define _FORWADR_BASE#pragma multi_compile_fwdbase#pragma multi_compile_fog#include "UnityCG.cginc"#include "UnityPBSLighting.cginc" // PBS#include "AutoLight.cginc"sampler2D _MainTex;float4 _MainTex_ST;sampler2D _BumpMap;float _Smoothness;float _Metallic;float4 _SpeculatTint;sampler2D _IceTex;sampler2D _IceNormal;float4 _IceSpecularSmoothness;float _IceColorFactor;float _IceDesaturate;float _IceTiling;float _FresnalPower;float _FresnalScaler;float4 _FresnalColor;float _FrozenProgress;float _ForzenRegionSize;float4 _ForzenDir;float4 _PosMinMax;struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;float4 tangent : TANGENT;float3 normal : NORMAL;};  struct v2f{float4 pos : SV_POSITION;float2 uv : TEXCOORD0;float3 normal : TEXCOORD1;float4 worldPos : TEXCOORD2;float3 T2WRow0 : TEXCOORD3;float3 T2WRow1 : TEXCOORD4;float3 T2WRow2 : TEXCOORD5;};float Remap(float oa,float ob,float na,float nb,float val){return (val-oa)/(ob-oa) * (nb-na) + na;}v2f vert(appdata v){v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.uv = TRANSFORM_TEX(v.uv,_MainTex);o.worldPos = mul(unity_ObjectToWorld,v.vertex);float3 normal = UnityObjectToWorldNormal(v.normal);o.normal  = normal;float3 worldTangent = UnityObjectToWorldDir(v.tangent.xyz);float3 worldBionT = cross(worldTangent,normal) * v.tangent.w *  unity_WorldTransformParams.w;o.T2WRow0 = float3(worldTangent.x,worldBionT.x,normal.x);o.T2WRow1 = float3(worldTangent.y,worldBionT.y,normal.y);o.T2WRow2 = float3(worldTangent.z,worldBionT.z,normal.z);return o;} fixed4 frag(v2f i) : SV_Target{float3 worldPos = i.worldPos;// main normalfixed3 mainNormal = UnpackNormal(tex2D(_BumpMap,i.uv)).xyz;float3 mainWorldNormal = fixed3(dot(mainNormal,i.T2WRow0),dot(mainNormal,i.T2WRow1),dot(mainNormal,i.T2WRow2));// ice normalfloat2 iceUV = i.uv * _IceTiling;         fixed3 iceNormal = UnpackNormal(tex2D(_IceNormal,iceUV)).xyz;float3 IceWorldNormal = fixed3(dot(iceNormal,i.T2WRow0),dot(iceNormal,i.T2WRow1),dot(iceNormal,i.T2WRow2));// 混合后的法线float3 worldNormal = BlendNormals(mainWorldNormal,IceWorldNormal * 5);float progress = _FrozenProgress;float3 rootPos = mul(unity_ObjectToWorld,float4(0,0,0,1)).xyz;float3 diffPos = worldPos - rootPos;float  pdDir = dot(diffPos,_ForzenDir);// Remap映射函数 将0,2  映射到 0,1 的范围内float forzenModelProgress = Remap(_PosMinMax.x,_PosMinMax.y,0,1,pdDir);progress = smoothstep(forzenModelProgress - _ForzenRegionSize,forzenModelProgress,_FrozenProgress);float smoothness = lerp(_Smoothness,_IceSpecularSmoothness.a,progress);float3 specularTint = lerp(_SpeculatTint.rgb,_IceSpecularSmoothness.rgb,progress);float3 viewDir = UnityWorldSpaceViewDir(worldPos);float3 lightDir = UnityWorldSpaceLightDir(worldPos);// diffusefloat3 diffTerm = saturate(dot(worldNormal,lightDir)) * _LightColor0.rgb;// specularfloat3 halfDir = normalize(viewDir + lightDir);float3 specTerm = saturate(pow(dot(worldNormal,halfDir),smoothness));//float4 albedo = tex2D(_MainTex,i.uv);float oneMinusReflectivity;albedo.rgb = DiffuseAndSpecularFromMetallic(albedo,_Metallic,specularTint,oneMinusReflectivity);float3 directColor = albedo.rgb * diffTerm + specTerm*specularTint;// fresnal  在用法线计算的时候,dot的时候,结果可能为负数,一定要限制在(0,1)之间float3 fresnalColor =   pow(1 -saturate(dot(worldNormal,viewDir)), _FresnalPower) * _FresnalScaler * _FresnalColor.rgb;// Ice color                       float3 iceColor = tex2D(_IceTex,iceUV).rbg;// 将颜色提纯float3 iceDesaturateColor = dot(iceColor,float3(0.299,0.587,0.114));iceColor = lerp(iceColor,iceDesaturateColor,_IceDesaturate) * _IceColorFactor;float3 emissionColor = lerp(float3(0,0,0),iceColor + fresnalColor,progress);//return float4(emissionColor+ directColor,1);}ENDCG  }}
}

用到的函数:
(1)Remap函数
(2)SmoothStep函数
上面有些属性定义了,但是没有使用,后面再慢慢补充吧。。。
(3)冰冻的起始方向可以调整,有兴趣的自己慢慢试吧,主要就是Remap的参数
最近有点飘,动力不足,不多说了,好好干,结果不会陪你演戏!
打算把pbr流程整理一遍,加油吧。。。。。

百度云链接
链接: https://pan.baidu.com/s/1NZmuZBv2NRtmP2wUS-x_MQ 提取码: bjg7

shader冰冻效果相关推荐

  1. Android关于绘图中Shader 的效果(中级)

    Android关于绘图中Shader 的效果(中级) 关于绘图中Shader 的效果 本人对API中Shaser的参数理解不够深刻 所以只能测试来看 效果一下就看出来了 Shader mShade=n ...

  2. shader镜子效果错误

    shader镜子效果错误 今天实现了下Unity shader的镜子效果,但是离谱的是跟着书上敲出来的代码,放在书上提供的场景中效果是正常的,我自己搭的场景就出现了左右都会映射,而且一层接一层.可能解 ...

  3. [Unity Shader]凌波微步效果

    [Unity Shader]凌波微步效果 相信很多人都看过天龙八部,里面的段誉有一个技能就是凌波微步:移动的时候人先到,衣角跟随其后.说白了就是移动时有一个残影跟着他.下面先看下最终效果 下面我们看如 ...

  4. 冰冻效果Shader案例

    老规矩先上图 最近我在设计一个星球题材的独立游戏,其中一个特色是让怪物逐渐被冰冻,并在其下方生成冰柱的特效.在这里,我想和大家分享一下我的设计过程. 文章目录 一.贴合冰面 二.冰冻起始点 三.连贯性 ...

  5. 冰shader_MatCap冰冻效果Shader

    Python的高级特性4:函数式编程 函数式编程的核心就是把函数当成对象来进行编程. 有两个常用到的方法:map/reduce,filter,其中map和filter是内建方法,而reduce不是,所 ...

  6. 【Unity Shader 消融效果_案例分享】

    1.实现逻辑 消融效果主要是利用了Shader中的clip()函数,也就是透明测试功能,在ASE中叫"Opacity Mask". 消融效果是基于一张"Noise&quo ...

  7. Shader玉石效果

    (1)效果图如下: (2)效果分析: 1.边缘 :"高亮" "通透"效果 . 2.非边缘的"厚重"效果 3.光滑的反射"环境&qu ...

  8. 【Unity Shader 描边效果_案例分享】

    1.实现逻辑 描边效果Shader有多种实现方式,可以通过后处理和MatCap实现. 这次主要想展示的是通过两个Pass实现. 当Shader中有多个Pass时,渲染流程会安装顺序依次执行,于是后面的 ...

  9. Shader——自发光效果

    Shader "Custom/OutLightting" {// 属性Properties{_MainTex("Texture(RGB)", 2D) = &qu ...

最新文章

  1. (0026)iOS 开发之模块化封装初步实践
  2. Spring整合Quartz定时发送邮件
  3. Sklearn 损失函数如何应用到_Sklearn全复习(下)(持续更新)
  4. 51单片机学习笔记(郭天祥版)(3)——引脚讲解、数码管静态显示、中断系统(外部中断,定时器中断)...
  5. 制造业实施大数据战略面临哪些挑战
  6. 对 /etc/rc.d/init.d 目录的一点理解
  7. 苹果cmsV10简约白色风格自适应模板
  8. 原材料涨价引发全LED显示屏全产业链价格上浮!
  9. android 隐藏应用程序,免ROOT隐藏应用图标软件
  10. 2019全球最强100家AI公司名单出炉,6家中国公司上榜
  11. SuSE Linux 9.1 Pro + 永中Office2004简单评测
  12. 〖全域运营实战白宝书 - 高转化文案速成篇④〗- 如何撰写摘要型文案?
  13. 关于SpringOpenSessionInViewFilter的配置及处理方案
  14. Zeppelin Job monitor打开
  15. 2.4. Prompting
  16. 如何找到可靠的软件开发公司
  17. 【机器学习】缺失值的处理方法总结
  18. 网页视频播放php拉伸代码,网页在线播放mp4/flv等格式视频方法,CuPlayer(酷播)详细使用方法(附源代码)...
  19. 基于引擎开发HTML5游戏实战(一)---游戏引擎
  20. [置顶] 我奋斗了18年才和你坐在一起喝咖啡

热门文章

  1. Camera摄像头成像方向和LCD刷屏方向
  2. Nightwatch的配置--基于vue前端的自动化测试(一)
  3. Linux基础(3)/用户及文件权限管理
  4. ​ 重启潘多拉星球,海信电视携手《阿凡达2》呈现视觉盛宴
  5. 华为鸿蒙填申请表,鸿蒙申请,这里填什么吗?
  6. android自定义照相机改变焦距,Android4.4自定义拍照,回调方法很慢怎么回
  7. DIN11系列频率信号转电压或电流信号隔离变送器
  8. functools模块之update_wrapper、wraps功能
  9. Express框架详解
  10. CCNP的考试是中文还是英文?