Unity----Shader①初步使用

1.Mesh Filter:存储一个Mesh(网格,模型由那些三角面组成,组成的样子,三角面的一些顶点信息)
Mesh Renderer:用来渲染模型的外观,相当于外表贴图,如果Texture没有就是一个纯色的贴图

2.Shader编写
创建一个空的Shader
①给Shader一个名字
Shader “Shader/MyShader”{

}

文件夹名字/Shader名字
②创建Shader中的属性,关键字为Properties{}

Properties中的属性可以为_Color,_Vector,_Int,_Float,_Range,_2D,_3D
Shader "Shader/MyShader"{
    Properties
	{
		_Color("Color",Color)=(1,1,1,1)//float4
		_Vector("Vector",Vector)=(1,1,1,1)//float4
		_Int("Int",Int)=54545//float4
		_Float("Float",Float)=4.5//float4
		_Range("Range",Range(1,10))=6//float
		_2D("texture",2D)="red"{}//sampler2D
		_3D("texture",3D)="black"{}//sampler3d
		_Cube("Cube",Cube)="white"{}//samplerCube,天空盒子支持不是很好,一般不用
	
	}
}

属性中的结尾是不带“;” 的,另外 _ 是告诉编译器,这是一个属性定义的开头(“属性的名字”,属性),=后面为值
Property定义之后

③显卡的显示效果,Shader可以认为是一种渲染命令,由opengl或者dx(显卡的驱动)进行解析,
开发者能控制的着色器有顶点/片元 Vertex/Fragment Shader两块
关键字为SubShader,每一个SubShader中至少有一个pass,pass中的代码可以使用GLSL,HSSL,和CG,因为CG是通用的跨平台的,所以比较常用CG代码。
告诉编译器要开始写CG代码 CGPROGRAM 结束CG代码ENDCG
先声明要使用到的属性
然后使用
#pragma 声明要使用的方法
其中可以使用SV_这种语义声明的方法,获得值

SubShader
    {
	//至少得有一个pass
       pass
		{
			CGPROGRAM
				float4 _Color;
				float4 _Vector;
				float _Int;
				float _Float;
				sampler2D _2D;
				sampler3D _3D;
#pragma vertex vert
		float4 vert(float4 v:POSITION):SV_POSITION //通过语义告诉系统,这个参数v是顶点坐标
			{
				float4 pos=	UnityObjectToClipPos(v);
				return pos;
			}
#pragma fragment fragm
		fixed4 fragm():SV_Target
		{
			return _Vector;
		}
			ENDCG
		}
	
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值