Material:你是谁;
shader:我是着色器,也许还是一段代码;
Material:你在我身上干啥;
shader:帮你渲染模型的颜色,贴图等等啊;
那么,如何去创建一个可以看出来的shader呢。
- 在视图中创建一个Cube或者其他什么奇怪的东西
- 创建一个Material作为shader的载体
- 将Material拖拽到创建的物体身上
- 再创建一个shader,这里命名为testshader
- 在Material的属性面板可以把shader绑定到Material上
这时候,我们可以打开我们创建的testshader文件
Shader "Custom/textshader" {
Properties {
_Color ("Color", Color) = (0,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "black" {}
_Glossiness ("Smoothness", Range(0,1)) = 0.5
_Metallic ("Metallic", Range(0,1)) = 0.0
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Standard fullforwardshadows
#pragma target 3.0
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
};
half _Glossiness;
half _Metallic;
fixed4 _Color;
UNITY_INSTANCING_CBUFFER_START(Props)
UNITY_INSTANCING_CBUFFER_END
void surf (Input IN, inout SurfaceOutputStandard o) {
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
o.Albedo = c.rgb;
o.Metallic = _Metallic;
o.Smoothness = _Glossiness;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
会发现我们根本看不懂,hhhh
但是从整体上,我们可以看到shader的整体框架
shader "Custom/textshader"{ //shader shader的路径
Properties{} //shader的一些基本设置,将会显示在以UI的形式显示在面板上
SubShader{} //主要的内容,一个shader里可以有很多个subshader,会选择一个合适的来使用,如果都可以,将会从上到下选择
FallBack "Diffuse" //如果都不行,则会执行这个,类似default语句的作用
}
在Properties模块里
_Color ("Color", Color) = (0,1,1,1)=》变量名 (面板显示的名字,类型)=默认值
总的来说Properties里共有如下属性
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}//2D贴图纹理
_Color("Color Type", Color) = (1, 1, 1, 1)//颜色
_Float("Float Value", Float) = 0.5//浮点数
_Range("Range Value", Range(0.1, 10)) = 1.0//带范围的浮点数
_Cube("Cube Map", Cube) = ""{}//立方体贴图纹理,可用做天空盒
_Rect("Rect Type", Rect) = ""{}//非2的幂次方的纹理
_Vector("Vector Value", Vector) = (1, 2, 3, 4)//四维向量
}
1.对于范围 (Range) 和 浮点 (Float) 属性,默认值只是一个数字。
2.对于颜色 (Color) 和向量 (Vector) 属性来说,默认值为圆括号中的四个数字。
3.对纹理(二维 (2D)、矩形 (Rect)、立方体 (Cube))来说,默认值可以是一个空字符串或者是以下内置默认纹理中的一种:”白色”、“黑色”、“灰色”或“凹凸贴图”。
随后在着色器中,通过使用方括号内的属性名称访问属性值:[name],例如[_Color]
当shader里的属性写完后,我们后续就可以来写subshader里的内容了.
结束语:
我在刚学shader看了不少的教程,感觉如果没有一些了解的话,看起来会有些费劲,就结合一些不错的书籍与博客试着写一下shader的入门教程,希望可以给初学者带来帮助