首页 > 其他 > 详细

[小明学Shader]11.圆角

时间:2015-12-17 15:58:22      阅读:182      评论:0      收藏:0      [点我收藏+]

原文连接:http://blog.csdn.net/mobanchengshuang/article/details/38731035

1.代码

 1 Shader"Custom/圆角"{
 2     properties{
 3         _MainTex("Base(RGB)",2D)="white"{}
 4         _Value("Cut Value",range(0,0.25))=0.1
 5     }
 6     CGINCLUDE
 7     #include "UnityCG.cginc"
 8     
 9             sampler2D _MainTex;
10             float _Value;
11     
12             struct v2f {
13                 float4 pos:SV_POSITION;
14                 float2 uv:TEXCOORD;
15             };
16     
17             v2f vert(appdata_full v){
18                 v2f o;
19                 o.pos=mul(UNITY_MATRIX_MVP,v.vertex);
20                 o.uv=v.texcoord;
21                 return o;
22             }
23     
24             float4 frag(v2f i):COLOR{
25                 float4 c=tex2D(_MainTex,i.uv);
26                 
27                 //计算圆角
28                 float2 uv=i.uv-0.5;
29                 float remain=0.5-_Value;
30                 //计算当前uv是不是在四个边角
31                 float mx=step(remain,abs(uv[0]));
32                 float my=step(remain,abs(uv[1]));
33                 //计算当前uv在四个边角的相对uv
34                 float rx = fmod(uv.x, remain); 
35                 float ry = fmod(uv.y, remain);     
36                 //若在边角,且距离顶点的距离大于value值,则不显示
37                 float fillAlpha=1-mx*my*step(_Value*_Value,rx*rx+ry*ry);
38                 
39                 c.a=fillAlpha;
40                 
41                 return c;
42             }
43     ENDCG
44     
45     subshader{
46         Tags{"Queue"="Transparent"}
47         Blend SrcAlpha OneMinusSrcAlpha
48         pass{
49             CGPROGRAM
50             #pragma vertex vert
51             #pragma fragment frag
52             
53             ENDCG
54         }
55     }
56     
57     FallBack "Diffuse"
58 }

2.效果

技术分享

3.原理

计算出下图所示中紫色区域内点距离两个绿色点的距离,大于目标值的不显示即可.在计算相对于交点的坐标时,通过求莫的方式即可获得(fmod不会改变符号).所以本方法所能画的最大半径是0.25.

技术分享技术分享

[小明学Shader]11.圆角

原文:http://www.cnblogs.com/WongSiuming/p/5054114.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!