u3d shader着色器学习笔记(一)

基础知识:MeshFilter 存储一个mesh(网格,模型网格,模型由哪些三角面组成,组成什么样子的模型,三角面的一些顶点信息)

MeshRender 根据MeshFilter 存储的三角面顶点信息 用来渲染一个模型的外观,就是样子,按照Mesh  ,Material给他颜色和皮肤,控制模型渲染的样子。

Material是由 :

                   贴图 (可以没有,可以是由纯色组成)

                   shader 

Opengl 和 DirectX :shader可以认为是一只渲染命令,由opengl和dx进行解析,来控制渲染丰富多彩的图形

GLSL shader语言用于 Opengl 

HLSL shader语言用于 DX

CG语言(跨平台)

Unity Shader 得分类:

使用Shaderlab编写unity中的shader;

1.表面着色器surface shader;

2.顶点/片元着色器 Vertex/Fragment shader

3.固定函数着色器(已弃用);

基本代码架构:

Shader "myshader"{//这里指定shader的名字,不要求跟文件名保持一致
	Properties{
		//属性(编程时使用) 显示类型(面板上显示) 类型(系统默认不可以写错)  = 默认值
		//属性中不用分号
			_Color("Color",Color) = (1,1,1,1)//对应float4
			_Vector("Vector",Vector) = (1,2,3,4)//对应float4
			_Int("Int",Int) = 234//对应float
		        _Float("Float",Float)=0.12//对应float
			_Range("Range",Range(1,11))=6//对应float
			//对应sampler2D
			_2D("Texture",2D) = "white"{}//没有选择图片 默认选择第一个纯色
			//对应samplerCube
			_Cube("Cube",Cube) = "white"{}//立方体贴图
			//对应sampler3D
			_3D("3D Texture",3D) = "white"{}//3d纹理贴图
	}
		SubShader{
		//SubShader可以写多个 显卡运行效果的时候,从第一个SubShader开始,如果第一个sub的效果都可以实现,就用第一个,如果发现这里面某些效果实现不了他会自动去运行一下个
		//至少有一个Pass
		Pass{
		//在这里编写shader代码
			CGPROGRAM
			//使用CG语言编写代码 
			float4 _Color;//用到的 值 需要重新定义
			float4 _Vector;//可以用 half4 fixed4 代替
			float _Int;
			float _Float;
			float _Range;
			sampler2D _2D;
			samplerCube _Cube;
			sampler3D _3D;
			//float 32位来存储
			//half 16位来存储 
			//fixed 11位来存储 -2到 +2 一般颜色都进行fixed来存储
			ENDCG
		}
	}
	Fallback "VertexLit"//以上的sub都用不了的时候 给显卡指定一个能用的
}

一些基础属性:

                        _Color("Color",Color) = (1,1,1,1)//颜色
			_Vector("Vector",Vector) = (1,2,3,4) //向量
			_Int("Int",Int) = 234//整型
		        _Float("Float",Float)=0.12//浮点数
			_Range("Range",Range(1,11))=6//滑动栏
			_2D("Texture",2D) = "white"{}//没有选择图片 默认选择第一个纯色
			_Cube("Cube",Cube) = "white"{}//立方体贴图
			_3D("3D Texture",3D) = "white"{}//3d纹理贴图

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值