关于shader的学习

Posted 糯米团子滚呀滚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于shader的学习相关的知识,希望对你有一定的参考价值。

教程地址:https://onevcat.com/2013/07/shader-tutorial-1

因为想做一些特效,所以想稍微了解一下shader的代码,一下是一些笔记

 1 // Upgrade NOTE: replaced ‘mul(UNITY_MATRIX_MVP,*)‘ with ‘UnityObjectToClipPos(*)‘
 2 
 3 Shader "Custom/Edge"  
 4 {  
 5     Properties  
 6     {  
 7     //name ("客户端显示名字",可调节的值)=默认值
 8         _Edge ("Edge", Range(0, 0.2)) = 0.043  
 9         _EdgeColor ("EdgeColor", Color) = (1, 1, 1, 1)  
10         _MainTex ("MainTex", 2D) = "white" {}  
11     }  
12     SubShader  
13     {  
14         Pass  
15         {  
16         //开始标记,表明这里开始是一段CG程序,与之匹配是下面的ENDCG
17             CGPROGRAM 
18             //编译指令 声明我们要写个啥样的着色器 着色器的名字
19             #pragma vertex vert  
20             #pragma fragment frag  
21             #include "UnityCG.cginc"  
22   
23   //链接上面的_声明 ,因为这是一段CG程序,和上面是两个独立的块
24             fixed _Edge;  
25             fixed4 _EdgeColor; 
26             sampler2D _MainTex;  
27   
28             struct appdata  
29             {  
30                 float4 vertex : POSITION;  
31                 fixed2 uv : TEXCOORD0;  
32             };  
33   
34             struct v2f  
35             {  
36                 float4 vertex : SV_POSITION;  
37                 float4 objVertex : TEXCOORD0;  
38                 fixed2 uv : TEXCOORD1;  
39             };  
40   
41             v2f vert (appdata v)  
42             {  
43                 v2f o;  
44                 o.vertex = UnityObjectToClipPos(v.vertex);  
45                 o.objVertex = v.vertex;  
46                 o.uv = v.uv;  
47   
48                 return o;  
49             }  
50               
51             fixed4 frag (v2f i) : SV_Target  
52             {     
53                 fixed x = i.uv.x;  
54                 fixed y = i.uv.y;  
55                       
56                 if((x < _Edge) || (abs(1 - x) < _Edge) || (y < _Edge) || (abs(1 - y) < _Edge))   
57                 {  
58                     return _EdgeColor * abs(cos(_Time.y));  
59                 }  
60                 else   
61                 {  
62                     fixed4 color = tex2D(_MainTex, i.uv);  
63                     return color;  
64                 }  
65   
66                 //return i.objVertex;  
67                 //return fixed4(i.uv, 0, 1);  
68             }  
69             ENDCG  
70         }  
71     }  
72 }  

 

以上是关于关于shader的学习的主要内容,如果未能解决你的问题,请参考以下文章

U3D 自定义shader创建Editor扩展

Unity Shader入门精要文章目录

Unity Shader-后处理:简单的颜色调整(亮度,饱和度,对比度)

[小明学Shader]15.基于Grid的地形混合shader

Unity Shader入门精要学习笔记 - 第11章 让画面动起来

关于Unity中Shader的使用