1. Shader "Custom/Snow" {
  2. Properties {
  3. _MainTex ("Base (RGB)", 2D) = "white" {}
  4. _RimColor("Rim Color", Color) = (,,,)
  5. _SnowPower ("Snow Power",range(,)) = 0.2//边缘强度
  6. _SnowRang("Snow Range",range(,)) = 0.1
  7. }
  8.  
  9. SubShader {
  10.  
  11. Pass
  12. {
  13.  
  14. CGPROGRAM
  15.  
  16. #include "UnityCG.cginc"
  17.  
  18. struct v2f
  19. {
  20. float4 vertex:POSITION;
  21. float2 uv:TEXCOORD0;
  22. float3 normal:TEXCOORD1;
  23. float rim:COLOR;
  24. };
  25.  
  26. sampler2D _MainTex;
  27. float4 _RimColor;
  28. float _SnowPower;
  29. float _SnowRang;
  30.  
  31. v2f vert(appdata_base v)
  32. {
  33. v2f o;
  34.  
  35. o.uv = v.texcoord;
  36.  
  37. float3 sn = mul((float3x3)_World2Object, float3(,,));
  38.  
  39. o.normal = normalize(mul((float3x3)_Object2World,v.normal));
  40. float diff = saturate(dot(v.normal,sn));
  41. if( -diff<_SnowRang)
  42. {
  43. v.vertex.xyz+=normalize(diff*sn+(-diff)*v.normal)*_SnowPower;
  44. }
  45.  
  46. o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
  47. return o;
  48. }
  49.  
  50. fixed4 frag (v2f IN):COLOR
  51. {
  52. fixed4 c = tex2D(_MainTex, IN.uv);
  53. float diff = saturate(dot(float3(,,),IN.normal));
  54.  
  55. if(-diff<_SnowRang)
  56. {
  57. float range = (diff/0.8)*(diff/0.8);
  58. //c.rgb = _RimColor.rgb*range+c.rgb*(1-range);
  59. c.rgb = _RimColor.rgb;
  60. }
  61.  
  62. return c;
  63. }
  64.  
  65. #pragma vertex vert
  66. #pragma fragment frag
  67.  
  68. ENDCG
  69. }
  70. }
  71. FallBack "Diffuse"
  72. }

Unity3D Shader落雪效果的更多相关文章

  1. Unity3D Shader水波效果

    水波效果 Shader "Custom/WaterWave" { Properties { _MainTex ("Base (RGB)", 2D) = &quo ...

  2. Unity3D Shader描边效果

    Shader "Custom/RimColor" { Properties { _MainTex ("Base (RGB)", 2D) = "whit ...

  3. 【译】Unity3D Shader 新手教程(3/6) —— 更加真实的积雪

    本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 如果你满足以下条件,我建议你阅读这篇教程: 你想知道如何在表面着色器中进行混色(blend colour) 你想实 ...

  4. 【译】Unity3D Shader 新手教程(2/6) —— 积雪Shader

    本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 如果你是一个shader编程的新手,并且你想学到下面这些酷炫的技术,我觉得你可以看看这篇教程: 实现一个积雪效果的 ...

  5. 【译】Unity3D Shader 新手教程(1/6)

    本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 刚开始接触Unity3D Shader编程时,你会发现有关shader的文档相当散,这也造成初学者对Unity3D ...

  6. Unity3D shader简介

    Unity3D shader简介 可以肯定的说Unity3D使得很多开发者开发游戏更容易.毫无疑问,shader(着色器)编码,仍有很长的路要走.shader是一个专门运行在GPU的程序,经常被神秘包 ...

  7. 【浅墨Unity3D Shader编程】之一 夏威夷篇:游戏场景的创建 & 第一个Shader的书写

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40723789 作者:毛星云(浅墨)  ...

  8. 转 猫都能学会的Unity3D Shader入门指南(二)

    猫都能学会的Unity3D Shader入门指南(二) 关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己 ...

  9. Unity3D Shader入门指南(二)

    关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己也是Shader初学者,因此可能会存在错误或者疏漏,如果 ...

随机推荐

  1. touch事件的分发和消费机制

    Android 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev).onInterceptTouchEvent(MotionEvent ev). ...

  2. VS2012:升级Update2和Update3均告损坏,重装方法

    My steps (after backing up everything before deleting it): 1. Uninstalled VS2012 Pro from Windows 8 ...

  3. mac osx voice over的使用

    mac下的filezilla是一个很奇葩的应用,奇葩在哪?有一次我不知道怎么操作的,把filezilla搬到到了窗体顶部,结果被mac的菜单栏挡住了标题栏,然后再也无法移动窗体了,以下是我为了移动它做 ...

  4. flashfxp v3.7 注册码

    -------- FlashFXP Registration Data START --------FLASHFXPvwBW1S4QvwAAAAC5W5MNJwXnsl73i3CxcVAAvAyagF ...

  5. QT运行出错:QObject::connect: Parentheses expected以及QObject::connect: No such slot ***

    我在QGraphicsScene子类中添加了item的弹出菜单,并连接Action到槽函数,结果槽函数不起作用,输出:QObject::connect: No such slot ***  C++ C ...

  6. phpcms 字符截取str_cut的使用

    PHPCMS中截取字符串用的是 str_cut 系统函数,通常在输出标题或者是内容摘要的时候使用来限制字符串的字符,这样就可以防止因字符串而变成的页面变形等问题. 我们来看一下这个函数,在PHPCMS ...

  7. CentOS6.8手动安装MySQL5.6

    众所周知,mysql5.7推出后有很多没有填好的坑,对于老的系统和项目兼容性也存在问题,所以现在普遍的web项目还是应该跑在centos6.8+mysql5.6的环境之下,今天主要说一下mysql5. ...

  8. Html5新特性之文档声明和头部信息

    Html5推出的新内容比较多,本文我们来介绍两个重点内容,文档类型声明和头部信息. 无论是Html4.01还是XHtml1.0,所有文档的开头都会有文档声明<!DOCTYPE>标签来声明它 ...

  9. 关于UIGestureRecognizerState

    UIGestureRecognizerState的定义如下 typedef enum { UIGestureRecognizerStatePossible, UIGestureRecognizerSt ...

  10. Java使用ListIterator逆序ArrayList

    对于列表而言,除了Iterator,还提供了一个功能更加强大的ListIterator.它可以实现逆序遍历列表中的元素.本示例将使用其逆序遍历ArrayList. 思路分析:要逆序遍历某个列表,首先要 ...