Shader学习之路——初识着色器

#pragma vertex vert
#pragma fragment frag
告诉unity shadeer哪个函数包含了顶点着色器代码 哪个包含了片元着色器代码

//POSITION、NORMAL、TEXCOORD0等这样的数据是由使用该材质的MeshRender组件提供
//顶点数据包含:顶点位置、法线、切线、纹理坐标、顶点颜色等模型数据
通过 Type Name:Semantic;这种写法可以从顶点着色器中访问这写模型数据;

顶点着色器是逐顶点调用的,片元着色器是逐片元调用的。

unity给我们提供了一些内置文件,需要在使用之前引入他们,使用方式:
CGPROGRAM

#include “UnityCG.cginc”

ENDCG

Tags详解:
例:Tags { “Queue” = “Geometry” “RenderType” = “Opaque” }
//Queue:
//Background:这个队列被最先渲染。它被用于skyboxes等
//Geometry:这是默认的渲染队列。它被用于绝大多数对象。不透明几何体使用该队列。
//AlphaTest:对于在所有立体物体绘制后渲染的通道检查的对象,它更有效。
//Transparent:任何通道混合的(也就是说,那些不写入深度缓存的Shaders)对象使用该队列,例如玻璃和粒子效果。
//Overlay:该渲染队列是为覆盖物效果服务的。任何最后被渲染的对象使用该队列,例如镜头光晕。

//RenderType: 这些RenderType的类型名称实际上是一种约定,用来区别这个Shader要渲染的对象,当然你也可以改成自定义的名称,只不过需要自己区别场景中不同渲染对象使用的Shader的RenderType的类型名称不同,也就是说RenderType类型名称使用自定义的名称并不会对该Shader的使用和着色效果产生影响。
//Opaque: 用于大多数着色器(法线着色器、自发光着色器、反射着色器以及地形的着色器)。
//Transparent:用于半透明着色器(透明着色器、粒子着色器、字体着色器、地形额外通道的着色器)。
//TransparentCutout : 蒙皮透明着色器(Transparent Cutout,两个通道的植被着色器)。
//Background : Skybox shaders.天空盒着色器。
//Overlay : GUITexture, Halo, Flare shaders.光晕着色器、闪光着色器。
//TreeOpaque : terrain engine tree bark.地形引擎中的树皮。
//TreeTransparentCutout : terrain engine tree leaves.地形引擎中的树叶。
//TreeBillboard : terrain engine billboarded trees.地形引擎中的广告牌树。
//Grass : terrain engine grass.地形引擎中的草。
//GrassBillboard : terrain engine billboarded grass.地形引擎何中的广告牌草。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值