unityshader固定管线的一些概念理解
2015-08-11 18:01
489 查看
Meterial语句块
最终由Meterial决定的颜色是
即
环境光颜色*渲染设置中的环境光设置+(光颜色*漫反射+光颜色*高光色)+光泽颜色
这是最开始部分
Multiplies src1 and src2 together. The result will be darker than either input.
将源1和源2的元素相乘。结果会比单独输出任何一个都要暗
combine src1 + src2
Adds src1 and src2 together. The result will be lighter than either input.
将将源1和源2的元素相加。结果会比单独输出任何一个都要亮
combine src1 - src2
Subtracts src2 from src1.
源1 减去 源2
combine src1 +- src2
Adds src1 to src2, then subtracts 0.5 (a signed add).
先相加,然后减去0.5(添加了一个符号)
combine src1 lerp (src2) src3
Interpolates between src3 and src1, using the alpha of src2. Note that the interpolation is opposite direction: src1 is used when alpha is one, and src3 is used when alpha is zero.
使用源2的透明度通道值在源3和源1中进行差值,注意差值是反向的:当透明度值是1是使用源1,透明度为0时使用源3
combine src1 * src2 + src3
Multiplies src1 with the alpha component of src2, then adds src3.
源1和源2的透明度相乘,然后加上源3
combine src1 * src2 +- src3
Multiplies src1 with the alpha component of src2, then does a signed add with src3.
源1和源2的透明度相乘,然后和源3做符号加
combine src1 * src2 - src3
Multiplies src1 with the alpha component of src2, then subtracts src3.
源1和源2的透明度相乘,然后和源3相减
Primary 来自光照计算的颜色或是当它绑定时的顶点颜色,个人认为是材质块计算出来的颜色,最开始时候效果和previous是一样的,如SetTexture[_MainTex](combine
primary),如有觉得不对,请高手赐教。
Texture 在SetTexture中被定义的纹理的颜色,就是纹理颜色,这个没什么问题。
Constant被ConstantColor定义的颜色,自定义颜色,这个也很容易
Material { Diffuse [_Color] <span style="white-space:pre"> </span>//漫反射颜色块 Ambient [_Color] <span style="white-space:pre"> </span>//环境光颜色块,通常和漫反射颜色是同一个 Shininess [_Shininess] <span style="white-space:pre"> </span>//光泽度,用来指定光斑(镜面高光照亮的部分)的大小,其值约大,光斑越小,反之则越大,要在SeparateSpecular On时才会有效 Specular [_SpecColor] <span style="white-space:pre"> </span>//镜面高光的颜色,一般只影响光斑部分颜色 Emission [_Emission] <span style="white-space:pre"> </span>//光泽颜色,会影响整个贴图,影响甚至比_Color要大 }
最终由Meterial决定的颜色是
Ambient * RenderSettings ambient setting +(Light Color * Diffuse + Light Color * Specular) + Emission
即
环境光颜色*渲染设置中的环境光设置+(光颜色*漫反射+光颜色*高光色)+光泽颜色
这是最开始部分
接下来是SetTexture
combine src1 * src2Multiplies src1 and src2 together. The result will be darker than either input.
将源1和源2的元素相乘。结果会比单独输出任何一个都要暗
combine src1 + src2
Adds src1 and src2 together. The result will be lighter than either input.
将将源1和源2的元素相加。结果会比单独输出任何一个都要亮
combine src1 - src2
Subtracts src2 from src1.
源1 减去 源2
combine src1 +- src2
Adds src1 to src2, then subtracts 0.5 (a signed add).
先相加,然后减去0.5(添加了一个符号)
combine src1 lerp (src2) src3
Interpolates between src3 and src1, using the alpha of src2. Note that the interpolation is opposite direction: src1 is used when alpha is one, and src3 is used when alpha is zero.
使用源2的透明度通道值在源3和源1中进行差值,注意差值是反向的:当透明度值是1是使用源1,透明度为0时使用源3
combine src1 * src2 + src3
Multiplies src1 with the alpha component of src2, then adds src3.
源1和源2的透明度相乘,然后加上源3
combine src1 * src2 +- src3
Multiplies src1 with the alpha component of src2, then does a signed add with src3.
源1和源2的透明度相乘,然后和源3做符号加
combine src1 * src2 - src3
Multiplies src1 with the alpha component of src2, then subtracts src3.
源1和源2的透明度相乘,然后和源3相减
src属性
previous上一次SetTexture的结果,如果最开始使用就是Meterial材质块计算出来的颜色,如SetTexture[_MainTex](combine previous)Primary 来自光照计算的颜色或是当它绑定时的顶点颜色,个人认为是材质块计算出来的颜色,最开始时候效果和previous是一样的,如SetTexture[_MainTex](combine
primary),如有觉得不对,请高手赐教。
Texture 在SetTexture中被定义的纹理的颜色,就是纹理颜色,这个没什么问题。
Constant被ConstantColor定义的颜色,自定义颜色,这个也很容易
相关文章推荐
- Unity入门游戏太空大战
- Unity中的行为树插件 Behavior Designer
- 如何在unity游戏运行过程中给GameObject添加一个组件
- 关于Unity3D中NavMesh报错问题
- Unity3d5.1简单配置及粒子效果的删除
- Unity入口函数
- GameUnity 2.0 文档(四) 网格+四叉树 最优碰撞检测
- unity canvas text显示及其角色伤害TextMesh显示
- unity中的简单的协程用法。
- uLua学习笔记(三):Unity3D和Lua之间的相互调用
- 【整理】unity3d优化总结篇
- DoTween的小技巧
- 用Sublime Text 2 作IDE开发 Unity3D 项目(VinceLi)
- Unity3D 中 点乘和叉乘的应用
- 简单Unity时间架构设计(克洛诺斯之匙)
- Unity中创建二维码
- UNITY3D学习笔记14
- 【猫猫的Unity Shader之旅】之Vertex&Fragment Shader下的透明
- unity, UGUI Text fadeIn
- Unity2D学习笔记(一):sprite的基础操作