Shader之学习笔记五
2017-02-16 19:59
211 查看
Shader "Unity Shaders Book/Chapter 5/PickUpColor"{ Properties{ //声明一个属性 _Color("Color Tint",Color) = (1.0,1.0,1.0,1.0) } SubShader{ Pass{ CGPROGRAM //表示vert函数包含了顶点着色器代码 #pragma vertex vert //表示frag函数包含了片园着色器代码 #pragma fragment frag //在CG代码中,我们需要定义一个与属性名称和类型都匹配的变量 fixed4 _Color; //使用一个结构体来定义顶点着色器的输入 struct a2v{ //POSITION语意告诉Unity,用模型空间的顶点坐标填充vertex变量 float4 vertex:POSITION; //NORMAL语意告诉Unity,用模型空间的法线方向填充normal变量 float3 normal:NORMAL; //TEXCOORD0语意告诉Unity,用模型的第一套纹理坐标填充texcoord变量 float4 texcoord:TEXCOORD0; }; //使用一个结构体来定义顶点着色器的输出 struct v2f{ //SV_POSITION语意告诉Unity,pos里包含了顶点在裁剪空间中的位置信息 float4 pos:SV_POSITION; //COLOR0语意告诉Unity,color可以用于存储颜色信息 fixed3 color:COLOR0; }; v2f vert(a2v v){ //声明输出结构 v2f o; //得到裁剪空间的坐标 o.pos=mul(UNITY_MATRIX_MVP,v.vertex); //v.normal包含了顶点的法线方向 其分量范围在[-1.0,1.0] //下面的代码把分量范围映射到[0.0,1.0] //存储到o.color中传递给片元着色器 o.color = v.normal*0.5+fixed3(0.5,0.5,0.5); return o; } fixed4 frag(v2f i):SV_Target{ fixed3 c = i.color; //使用_Color熟悉来控制输出颜色 c *=_Color.rgb; //将插值后的c显示到屏幕上 return fixed4(c,1.0); } ENDCG } } }
相关文章推荐
- 六、访问CGI变量
- “CG for tomorow”小团队的大梦想
- 3D 数学概念的代码表现 -- 平面(Plane)
- AET在多边形扫描转换中的使用 Scan conversion polygon and fill red color inside
- CG基础01-原理->数据类型
- 梯度法(SGD)、拟牛顿法(LBFGS)与共轭梯度法(CG)
- some good resources
- CG语言(C for Graphic)的数据类型
- OpenGL环境配置(VS2012)
- Unity下的CG编程
- unityCG库
- 数位板怎么用?刚开始使用数位板要从什么开始练习
- 什么是数位板? 数位板,又名绘图板、绘画板、手绘板等等,是计算机输入设备的一种,通常是由一块板子和一支压感笔组成,它和手写板等作为非常规的输入产品相类似,都针对一定的使用群体。 与手写板所不同的是
- 【Unity Shader】4.Unity Shader基本知识学习(混合 Blending )
- unityShader笔记 1 之 边缘色
- [Unity3D]降低向Shader中传值的开销
- 与Intel的古老显卡的战斗----Ward光照模型的高光部分的Unity Shader的编写
- NGUI相关----UITexture图片边缘流光效果
- U3D各向异性Shader
- 世界空间中的着色器(关于 uniforms)