赞
踩
本文所有内容来自
unity5shader着色器入门教程
Mesh filter组件:存储一个Mesh(网格。模型由哪些三角面组成,组成正方形还是圆形还是什么)
Mesh Renderer组件:渲染一个模型的外观
Material贴图(可以没有,可以是一个单纯的颜色)
shader(反光程度、光滑程度)
图像应用编程接口,用来进行渲染的。
应用程序会把shader和渲染命令传递给openGL或DX进行解析,然后控制GPU进行渲染。
GLSL是OpenGL的shader语言
HLSL是DirectX的shader语言(微软)
CG是跨平台的语言,在上面两种平台上都可以运行(nvidia)
在unity中对CG进行了一层封装,使用的是ShaderLab。
shader 和 meterial都是可以自己创建的
双击自己创建的shader就可以为其编写代码
shader基本结构如下
Shader "lhy/MyShader"{//这里指定shader的名字 不一定和文件名保持一致 Properties{ //属性(对标C#上的int、float之类 _Color("_Color",Color)=(1,1,1,1)//第二个参数是属性的类型,是必须这么写的 前面带_的则是我们自定义的名称 } SubShader{ //子shader可以有很多个 用来控制效果的 用来在不同的显卡上运行 显卡会运行它能找到的第一个支持的效果 Pass{//至少有一个pass块 (类似于C#中的方法 CGPROGRAM//也可能是HLSLPROGRAM //使用CG语言编写shader代码 ENDCG } } Fallback "VertexLit"//当上面的效果都不支持的时候,会使用这个默认效果 直接指定名字就可以了 }
Properties{ //属性(对标C#上的int、float之类 //color类型 //一个小point:capsule使用的是fallback效果时,当你把下面这个东西命名为_Color的时候,会发现你修改这个颜色,capsule的颜色也会跟着变,这是因为VertexLit里也用了一样的名称 _Color("_Color",Color)=(1,1,1,1)//第一个参数是会在unity里面显示的名称 第二个参数是属性的类型,是必须这么写的 前面带_的则是我们自定义的名称 //向量类型 _Vector("Vector",Vector)=(1,2,3,4) //整数类型 _Int("Int",Int)=32432 //小数类型 _Float("Float",Float)=2.4 //range类型 _Range("Range",Range(1,11))=6 //图片类型 _2D("Texture",2D)="white"{}//不指定图片的情况下是白色的图片 //cube类型 (天空是一个立方体,六面上可以贴图 _Cube("Cube",Cube) = "white"{} //3D纹理 _3D("Texture",3D)="black"{} }
SubShader{ //子shader可以有很多个 用来控制效果的 用来在不同的显卡上运行 显卡会运行它能找到的第一个支持的效果 Pass{//至少有一个pass块 (类似于C#中的方法 CGPROGRAM//也可能是HLSLPROGRAM //使用CG语言编写shader代码 float4 _Color;//要在这里使用上面的properties时,需要重新定义,名字要对应(subshader里面的color对应的是float4属性 它会自动获得上面的默认值 float4 _Vector; float _Int; float _Float; float _Range; samplerCube _Cube; sampler2D _2D; sampler3D _3D; ENDCG } }
float和half和fixed的区别:都是小数,float是32位,half是16位(-6万到6万),fixed是11位(-2万到2万)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。