UNITY3D shader学习心得<三> Vertex and Fragment Shader
来源:互联网 发布:下周重要经济数据 编辑:程序博客网 时间:2024/05/21 07:12
Vertex and Fragment Shader:
Pass
{
Name "MyPass" //Pass名称
Tags {"LightMode"="Always"} //光照模式
CGPROGRAM //CG程序开始,嵌入CG程序
#pragma vertex vert //预编译指令 指定顶点函数的名字 必须实现 渲染管线自动调用 vertex要小写
#pragma vragment frag //预编译指令 指定片段函数的名字 必须实现 渲染管线自动调用 vragment要小写
#pragma Target 3.0 //shader模式版本3.0 默认是2.0
#include "UnityCG.cginc" //包含"UnityCG.cginc"文件 路径在:\Editor\Data\CGIncludes
sampler2D _MainTex; //声明贴图 要和根Shader里的Properties的变量名对应。
float4 _Color; //声明颜色
//vertex函数输出结构体,也是fragment函数输入结构体
struct v2f{
float4 pos:SV_POSITION; // :SV_POSITION 指明语义,顶点位置 语义都是大写
float4 texcoord:TEXCOORD0; // 纹理坐标
} ; //结构体后面要加 ; 号
//vertex函数实现 appdate_base是UnityCG.cginc里定义的结构体
v2f vert(appdate_base v){
v2f o;
o.pos=mul(UNITY_MATRIX_MVP,v.vertex); //使用HLSL中的mul函数 将顶点位置转化为投影坐标系位置。
o.texcoord=v.vertex;
return o;
}
//fragment函数实现
half4 frag(v2f i):COLOR{ //指明函数返回的是COLOR,输出颜色
half4 col= _Color*tex2D(_MainTex,i.texcoord.xy); //使用tex2D函数 将位置信息和贴图相乘。得到每个点贴图纹理。
return col;
}
ENDCG //CG程序结束
}
!!!!! 颜色取值范围是0-1 颜色四个值用XYZW表示 UV是0到1 normal是-1到1
LightMode 的可选值:
- Always: 总是渲染。没有光照应用。
- ForwardBase: 用于正向渲染,环境主要方向灯和定点光/SH 等的应用
- ForwardAdd: 用于正向渲染,附加的像素光被应用,每个光照一个pass
- PrepassBase: 用于延迟光照,渲染法线/镜面指数。
- PrepassFinal: 用于延迟光照,通过结合纹理,光照和自发光渲染最终颜色
- Vertex: 用于顶点光照渲染,当物体没有光照映射时,所有顶点光照被应用
- VertexLMRGBM: 用于顶点光照渲染,当物体有光照映射的时候使用顶点光照渲染。在平台上光照映射是RGBM 编码
- VertexLM: 用于顶点光照渲染,当物体有光照映射的时候使用顶点光照渲染。在平台上光照映射是double-LDR 编码(移动平台,及老式台式CPU)
- ShadowCaster: 将物体当做阴影产生者来渲染
- ShadowCollector: 为了正向渲染对象的路径,将对象的阴影收集到屏幕空间缓冲区中。
- UNITY3D shader学习心得<三> Vertex and Fragment Shader
- Vertex and Fragment Shader
- vertex and fragment shader
- Vertex and fragment shader examples
- LIGHTING IN VERTEX AND FRAGMENT SHADER
- Shader 基础使用(三) ----- vertex & fragment
- Shader Learing(Surface and Vertex&Fragment Shader篇)
- Vertex & Fragment Shader入门
- Shader第三讲 Vertex&Fragment Shader
- Vertex and Fragment Shader(可编程渲染管线)
- 图形处理之Unity3DShader(一)Vertex and Fragment Shader
- Unity3d 镜面反射 vertex and frag Shader源码
- Unity3d 镜面折射 vertex and frag Shader源码
- Unity3D Shader_vertex and fragment shader实例(一)
- Unity Shader 顶点和片段着色器(Vertex and Fragment Shader)
- Vertex Shader
- Vertex Shader
- Vertex Shader
- 【bzoj3035】【codevs2490】导弹防御塔 二分+匈牙利 || 二分+dinic
- 《Linux目录知识介绍》
- Provider使用遇到错误
- WEB开发框架配置文件和各层注解(SpringMVC + Spring + Hibernate)
- 关于正规方程求解线性回规问题中的最终的值θ
- UNITY3D shader学习心得<三> Vertex and Fragment Shader
- 加载js 简单获取get传递参数
- 二叉树递归遍历中的return
- iOS开发之JS数据交互
- Activity的启动模式
- hdu 1231 最大连续子序列
- px4: actuators control, control group 和 mixer科普
- 一个有趣的问题:怎么在JS的数组中去除重复元素?(JAVA实现吧..)
- Java并发编程:线程池的使用