zoukankan      html  css  js  c++  java
  • [小明学Shader]12.技能冷却

    1.效果

    2.原理

    uv所对应的atan2(x,y)表示反正切(x/y)的值,在区间[-π,π]中.我们设定图片中心为原点,则所有的点所对应的角度都是可以通过反正切计算出来的.通过与设定的_Angle值比较,大于部分不变化,乘以的是1,另外一部分乘以0.3*0.5+0.5,达到变暗的目的.

    3.代码

     1 Shader "Custom/Mask" {
     2     Properties {
     3         _MainTex ("Base (RGB)", 2D) = "white" {}
     4         _Angle("Angle",range(-1,1))=0.5
     5     }
     6     SubShader {
     7         Tags { "RenderType"="Opaque" }
     8         LOD 200
     9         
    10         CGPROGRAM
    11         #pragma surface surf Lambert
    12 
    13         sampler2D _MainTex;
    14         float _Angle;
    15 
    16         struct Input {
    17             float2 uv_MainTex;
    18         };
    19 
    20         void surf (Input IN, inout SurfaceOutput o) {
    21             half4 c = tex2D (_MainTex, IN.uv_MainTex);
    22             o.Albedo = c.rgb;
    23             o.Alpha = c.a;
    24             //更改中心
    25             float2 uv=IN.uv_MainTex-0.5;
    26             _Angle*=3.14;
    27             //判断与设定值的大小变化
    28             float b=_Angle-atan2(uv.x,uv.y);
    29             float hui=(2-sign(b))/3;
    30             //借鉴了half Lambert
    31             o.Albedo*=hui*0.5+0.5;
    32         }
    33         ENDCG
    34     } 
    35     FallBack "Diffuse"
    36 }
  • 相关阅读:
    C++命名法则
    腾讯附加题---递归
    决策树
    ubuntu16.04安装后干的事
    node
    iview datetime日期时间限制
    GitLab CI/CD
    本地项目上传到github
    npm--配置私服
    gitlab添加yml文件.gitlab-ci.yml
  • 原文地址:https://www.cnblogs.com/WongSiuming/p/5054563.html
Copyright © 2011-2022 走看看