shader回顾02 --- 固定管线编程基础
2016-04-29 05:36
337 查看
固定管线编程是很老的一种shader编程,约束性比较高,但是还是必须要了解的,因为很多功能shader说真的不需要重头到尾部编写,但是必须要看得懂,可以修改。好不多说上代码。
//fix function shader,逐步添加
Shader "myShader/fixShader" {
//3.属性
properties{
//3.外部颜色
_Color02("Color02" , color) = (1,1,0,1)
// 5.漫反射
_diffuseColor("diffuse",color) = (1,0,1,1)
//6.环境光
_Ambient("Ambient",color) = (1,0,1,1)
//7.高光
_Specular("Specular",color) = (0,1,1,1)
//8.条件高光的范围
_SpecularRang("SpecularRang",range(0,1)) = 0.5
//9.自发光
_Emission("Emission",color) = (0,1,1,1)
//10.贴图
_MainTex("MainTex",2d) = ""
}
SubShader {
//4.没有立体感,必须打开光照 on/off 但是此时没有环境光全黑
lighting on
//7. 使用高光必须打开separatespecular
separatespecular on
//12.渲染顺序
Tags{"Queue" = "Transparent"}
//1.至少一个pass通道
pass{
//11.透明度
Blend SrcAlpha OneMinusSrcAlpha
//2.第一个颜色值
//color(1,1,0,1)
//3.外部颜色,注意就是参数在fix function 里面使用[]
//color[_Color02]
//5.材质块
material{
//5.漫反射其实可以理解为自己的颜色
//diffuse(1,1,0,1)
diffuse[_diffuseColor]
Ambient[_Ambient]
Specular[_Specular]
shininess[_SpecularRang]
emission[_Emission]
}
//10.贴图
setTexture[_MainTex]
{
//透明度有关
constantColor(1,1,1,0.4)
//combine 命令 texture代表就是当前的纹理贴图 primary使用上之前的顶点数据 double 就是两倍因为纹理相乘之后更加小了都是float
combine texture * primary double,texture*constant
}
//多张贴图 previous
setTexture[_MainTex]
{
//透明度有关
constantColor(1,1,1,0.4)
//combine 命令 texture代表就是当前的纹理贴图 previous 使用之前所有计算包括贴图过后的数据
combine texture * previous double,texture*constant
}
}
}
}
//fix function shader,逐步添加
Shader "myShader/fixShader" {
//3.属性
properties{
//3.外部颜色
_Color02("Color02" , color) = (1,1,0,1)
// 5.漫反射
_diffuseColor("diffuse",color) = (1,0,1,1)
//6.环境光
_Ambient("Ambient",color) = (1,0,1,1)
//7.高光
_Specular("Specular",color) = (0,1,1,1)
//8.条件高光的范围
_SpecularRang("SpecularRang",range(0,1)) = 0.5
//9.自发光
_Emission("Emission",color) = (0,1,1,1)
//10.贴图
_MainTex("MainTex",2d) = ""
}
SubShader {
//4.没有立体感,必须打开光照 on/off 但是此时没有环境光全黑
lighting on
//7. 使用高光必须打开separatespecular
separatespecular on
//12.渲染顺序
Tags{"Queue" = "Transparent"}
//1.至少一个pass通道
pass{
//11.透明度
Blend SrcAlpha OneMinusSrcAlpha
//2.第一个颜色值
//color(1,1,0,1)
//3.外部颜色,注意就是参数在fix function 里面使用[]
//color[_Color02]
//5.材质块
material{
//5.漫反射其实可以理解为自己的颜色
//diffuse(1,1,0,1)
diffuse[_diffuseColor]
Ambient[_Ambient]
Specular[_Specular]
shininess[_SpecularRang]
emission[_Emission]
}
//10.贴图
setTexture[_MainTex]
{
//透明度有关
constantColor(1,1,1,0.4)
//combine 命令 texture代表就是当前的纹理贴图 primary使用上之前的顶点数据 double 就是两倍因为纹理相乘之后更加小了都是float
combine texture * primary double,texture*constant
}
//多张贴图 previous
setTexture[_MainTex]
{
//透明度有关
constantColor(1,1,1,0.4)
//combine 命令 texture代表就是当前的纹理贴图 previous 使用之前所有计算包括贴图过后的数据
combine texture * previous double,texture*constant
}
}
}
}
相关文章推荐
- 用Base64加解密时发现的问题(其实时java基础问题byte[]转String)
- 3-Java控制语句、循环、函数
- python字符串相关操作
- Ruby入门之一(Ruby简介)
- spring的bean的作用域
- 重试C语言之C语言变量
- 三、SpringBoot JPA 配置Hibernate
- 使用AspectJ提供的注解方式实现aop
- Django 文档自翻自用中文版(2.1-2.1.3)
- Python set集合
- java基础 -- 六哥
- springMVC中使用注解@ResponseBody,@RequestBody传递json数据
- Qt实战经验
- C语言标准库之<float.h>
- [python]gevent的安装
- 重试C语言之C语言数据类型
- Java8:读取文件到一个字符串
- Vtk图像处理
- 学习Python遇到的那些坑
- 20145314郑凯杰 《Java程序设计》第9周学习总结 积极主动敲代码