Shader之学习笔记七
2017-02-20 19:17
489 查看
//获取Unity引擎源代码:加群580392083 Shader "Unity Shaders Book/Chapter 6/DiffuseVertexLevel"{ Properties{ _Diffuse("Diffuse",Color)=(1,1,1,1) } SubShader{ Pass{ Tags{"LightMode"= "ForwardBase"} //LightMode:用于定义该pass在Unity光照流水线中的角色,只有定义了正确的LightMode,我们才能够得到一些Uniytn内置的光照 CGPROGRAM #pragma vertex vert//vert:顶点着色器的名字 #pragma fragment frag//frag:片元着色器的名字 #include "Lighting.cginc" //为了使用Properties中定义的_Diffuse变量 需要定义一个和该属性类型相匹配的变量 fixed4 _Diffuse; //顶点着色器的输出或者说是片元着色器的输入 struct a2v { float4 vertex:POSITION; float3 normal:NORMAL;//NORMAL:告诉Unity要把模型顶点的法线信息存储到normal变量中 }; //定义一个片元着色器的输入 struct v2f { float4 pos:SV_POSITION; fixed3 color:Color; }; //顶点着色器 v2f vert(a2v v){ v2f o; o.pos = mul(UNITY_MATRIX_MVP,v.vertex); //顶点模型坐标转换为裁剪坐标 fixed3 ambients = UNITY_LIGHTMODEL_AMBIENT.xyz; //获取环境光 fixed3 wroldNormal = normalize(mul(v.normal,(float3x3)_World2Object));//Page129 把模型的法线转换为世界坐标的法线 最后进行归一化 fixed3 worldLight = normalize(_WorldSpaceLightPos0.xyz); //获取世界坐标中光的方向 fixed3 diffuses = _LightColor0.rgb*_Diffuse.rgb*saturate(dot(wroldNormal,worldLight));//计算漫反射光 o.color = ambients + diffuses; return o; } //片元着色器 fixed4 frag(v2f i):SV_TARGET{ return fixed4(i.color,1.0); } ENDCG } } FallBack "DIFFUSE" }
相关文章推荐
- Shader 学习笔记 ---Depth of Field 介绍
- Directx9.0 a shader approach 学习笔记1---初始化D3D
- Unity Shader 学习笔记 (七) 根据切线和法线方向设置模型颜色shader
- Shader 学习笔记 20151103
- Shader 学习笔记 20151102
- Shader 学习笔记 20151031
- Shader 学习笔记 ---Depth of Field 介绍
- Unity Shader 学习笔记 (五) 积雪效果Shader
- [Shader学习笔记]一些向量的几何知识
- 环境烘培与shader初步,学习笔记一
- Unity3D Shaderlab实战学习笔记 一 (《shaders for game programmers and artists》实践)
- NVIDIA cg语言编写shader的学习笔记
- OpenGL Shader 学习笔记(一)
- Unity Shader 学习笔记 (一) 创建Shader自带代码解读
- unity3d shader 学习笔记1
- Shader 学习笔记 (1)
- Unity ShaderLab 学习笔记(一)
- Shader 学习笔记 ---Z-Buffering or W-Buffering
- Shader 学习笔记 20151105
- Unity Shader 学习笔记 (八) 语义词与语义绑定