Unity Shader学习笔记(二)简单的漫反射
2016-12-21 11:19
459 查看
// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld' // Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld' Shader "Lesson/SimpleDiffuse" { Properties { _Diffuse("DiffuseColor",Color) = (1,1,1,1) } SubShader { Tags{"LightMode" = "ForwardBase"} Pass { CGPROGRAM #pragma vertex vert //定义顶点管线函数 #pragma fragment frag //定义片段管线函数 #include"Lighting.cginc" fixed4 _Diffuse; //float 32位 , half 16bit , fixed 11bit struct a2v //应用到顶点 { float4 vertex : POSITION; //POSITION 语义 GPU在哪里存取数据 float3 normal : NORMAL; }; struct v2f //顶点到片段 { float4 Pos : SV_POSITION; // SV_POSITION( 可以用POSITION来代替) SV_TARGET(可以用COLOR来代替) 都是DX11新出的语义 fixed3 color : COLOR; }; v2f vert(a2v v) { v2f o; o.Pos = mul(UNITY_MATRIX_MVP,v.vertex) ;//从模型空间变化到裁剪空间 float3 nDir =normalize( mul((float3x3)unity_ObjectToWorld,v.normal)); //顶点法线 从模型空间变换到世界空间 float3 lDir = normalize(_WorldSpaceLightPos0.xyz); //用于平行光 fixed diffuse = _LightColor0 * _Diffuse * saturate( dot(nDir,lDir)); //数值保证在0~1之间 fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz; //在unity引擎里直接得到环境光 o.color = ambient + diffuse; //ambient 指的是环境光 颜色相加 return o; } fixed4 frag(v2f IN):SV_TARGET { return fixed4(IN.color,1.0); } ENDCG } } }
相关文章推荐
- 简单顶点漫反射
- 简单像素漫反射(书里的)
- J2EE技术简单介绍
- 不使用ATL向导,创建一个简单的ATL对话框程序.
- MySql实现简单的注册登录(易语言)
- PHP面向对象的使用教程 简单数据库连接
- 网页设计之5种简单的XHTML网页表单
- Dephi 程序输入法自动切换最简单最好用的实现方法(被程序员杂志采纳,重新详细整理)
- 一个简单的计数器程序
- 一个简单的投票程序
- 初学者看过来:简单谈谈 C/C++ 递归的思想,实现,以及和循环的关系。
- 简单的留言板,解决了长英文字符的问题哦,不过汉字又出问题了:)希望大家一起来解决
- 邮件客户端程序的简单开发
- 在 VB 中简单使用 HTMLHELP (*.chm) 帮助
- 简单的Winsock例程
- 教学项目之-通过Python实现简单的计算器
- 用pascal写的最简单的winsock程序
- 一个简单的Proxy代理服务器的源代码!
- 简单模板概念
- 关于fvwm2的简单配置