UnityShader之固定管线命令Combine纹理混合【Shader资料4】
Combine,纹理混合。
我们先看圣典上给的解释。
纹理在基本的顶点光照被计算后被应用。在着色器中通过SetTexture 命令来完成。
SetTexture 命令在片面程序被使用时不会生效;这种模式下像素操作被完全描述在着色器中。
材质贴图可以用来做老风格的混合器效果。你能在一个通道中使用多个SetTexture 命令 - 所有纹理被顺序的应用,如同绘画程序中的层一样。SetTexture 命令必须放置在通道的末尾
Texture block combine command 纹理块合并命令
- combine src1 * src2
- 将源1和源2的元素相乘。结果会比单独输出任何一个都要暗
- combine src1 + src2
- 将将源1和源2的元素相加。结果会比单独输出任何一个都要亮
- combine src1 - src2
- 源1 减去 源2
- combine src1 +- src2
- 先相加,然后减去0.5(添加了一个符号)
- combine src1 lerp (src2) src3
- 使用源2的透明度通道值在源3和源1中进行差值,注意差值是反向的:当透明度值是1是使用源1,透明度为0时使用源3
- combine src1 * src2 + src3
- 源1和源2的透明度相乘,然后加上源3
- combine src1 * src2 +- src3
- 源1和源2的透明度相乘,然后和源3做符号加
- combine src1 * src2 - src3
- 源1和源2的透明度相乘,然后和源3相减
所有源属性都可以是previous, constant, primary or texture其中的一个。
- Previous is the the result of the previous SetTexture.
上一次SetTexture的结果 - Primary is the color from the lighting calculation or the vertex color if it is bound.
来自光照计算的颜色或是当它绑定时的顶点颜色 - Texture is the color of the texture specified by [_TextureName] in the SetTexture (see above).
在SetTexture中被定义的纹理的颜色 - Constant is the color specified in ConstantColor.
被ConstantColor定义的颜色
Modifiers 解释:
- 上述的公式都均能通过关键字 Double 或是 Quad 将最终颜色调高亮度2倍或4倍。
- 所有的src属性,除了差值参数都能被标记一个-符号来使最终颜色反相。
- 所有src属性能通过跟随 alpha 标签来表示只取用alpha通道。
Texture block constantColor command (纹理块constantColor 命令)
- ConstantColor color
- Defines a constant color that can be used in the combine command.
定义在combine命令中能被使用的不变颜色
Texture block matrix command (纹理块matrix命令)
- matrix [MatrixPropertyName]
- Transforms texture coordinates used in this command with the given matrix.
使用给定矩阵变换纹理坐标 - 这个矩阵纹理坐标,官网没有给明确说明,百度谷歌也没有找到相关的资料,我个人的猜想可能是UV的设置。
- 看到这里,我们大概了解了Combine的用法,它的作用就是将颜色或者纹理相互融合的一个指令。
- 示例如下:
- 示例中的previous 表示上一个SetTexture计算的结果,texture表示当前SetTexture的参数纹理,Primary则是当前光照的颜色。如果你的Shader打开了光照,如若参数中不使用Primary的话也是不会有光照效果的。
-
Shader "Examples/Self-Illumination" {
Properties {
_MainTex ("Base (RGB) Self-Illumination (A)", 2D) = "white" {}
}
SubShader {
Pass {
// Set up basic white vertex lighting
//设置白色顶点光照
Material {
Diffuse (,,,)//漫反射颜色设置
Ambient (,,,)//环境光反射颜色设置
}
Lighting On // Use texture alpha to blend up to white (= full illumination)
// 使用纹理Alpha来混合白色(完全发光)
SetTexture [_MainTex] {
constantColor (,,,) //自定义颜色
combine constant lerp(texture) previous
}
// Multiply in texture
// 和纹理相乘
SetTexture [_MainTex] {
combine previous * texture
}
}
}
}另外,我们也能只针对取透明度进行计算,如下所示:
缺省情况下,混合公式被同时用于计算纹理的RGB通道和透明度。,如下所示:
SetTexture [_MainTex] { combine previous * texture, previous + texture } 逗号后面的previous + texture表示光照和当前图片纹理混合后的透明度,这个时候输出的结果的透明度就不会再是previous * texture的透明度了。
UnityShader之固定管线命令Combine纹理混合【Shader资料4】的更多相关文章
- UnityShader之固定管线Fixed Function Shader【Shader资料3】
Fixed function shader简介: 属于固定渲染管线 Shader, 基本用于高级Shader在老显卡无法显示时的情况.使用的是ShaderLab语言,语法与微软的FX files 或 ...
- Unity3d之Shader编程:子着色器、通道与标签的写法 & 纹理混合
一.子着色器 Unity中的每一个着色器都包含一个subshader的列表,当Unity需要显示一个网格时,它能发现使用的着色器,并提取第一个能运行在当前用户的显示卡上的子着色器. 我们知道,子着色器 ...
- 【浅墨Unity3D Shader编程】之三 光之城堡篇:子着色器、通道与标签的写法 & 纹理混合
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://hpw123.net/a/C__/kongzhitaichengxu/2014/1117/120.html 作者:毛星云 ...
- [Unity] Shader(着色器)之固定管线
在Unity中,固定管线Shader的性能是最好的. 什么是固定管线呢? 固定渲染管线 —— 这是标准的几何&光照(T&L)管线,功能是固定的,它控制着世界.视.投影变换及固定光照控制 ...
- Shader基础(固定管线着色器)
在Shader的编码中,要养成不加空格的习惯,否则会有时候出现一些错误 固定管线着色器: 优点:实现简单 缺点:处理的效果比较差 //设置Shader的路径 Shader "MyFixedS ...
- unity的固定管线shader
最近shader学习中,看的视频. 练习的固定管线的shader如下: ps.在unity5中半透明不好用,其他的还好 //不区分大小写 //这是固定管线的Shader Shader "Sh ...
- Linux管线命令
一.什么是管线命令 bash 命令运行的时候有输出的数据会出现! 那么如果这群数据必需要经过几道手续之后才能得到我们所想要的格式,应该如何来配置? 这就牵涉到管线命令的问题了 (pipe) ,管线命令 ...
- 第十一章、认识与学习 BASH 管线命令 (pipe)
管线命令使用『 | 』界定符号 [root@www ~]# ls -al /etc | less 管线命令『 | 』仅能处理经由前面一个命令传来的正确信息,也就是 standard output 的信 ...
- bash之管线命令
命令的输出需要经过好几道手续才能得到我们想要的格式,需要用到管线(pipe),(|) 管线命令(|)仅能处理stdandard output,对stdandard error output会忽略 管线 ...
随机推荐
- 免费下载:用于原型设计的 iOS 7 线框图
André Revin 使用 Illustrator 创建 iOS7 iPhone 5 的样机原型.这是一个像素完美的线框样机,可以帮助超级轻松的打造你的原型.你可以免费下载源文件,并在工作中使用. ...
- 分享一套精美的现代 UI PSD 工具包【免费下载】
艾库特·耶尔马兹,是土耳其伊斯坦布尔的一位高级艺术总监,他向大家分享了一套美丽的现代 UI 工具包,你可以免费下载.所以,你可以使用这个优秀的素材设计视觉互动和有吸引力的用户界面. 此 UI 套件提供 ...
- CentOS6.5菜鸟之旅:纯转载Linux目录结构
来自:http://www.iteye.com/topic/1125162 使用linux也有一年多时间了 最近也是一直在维护网站系统主机 下面是linux目录结构说明 本人使用的是centos系 ...
- CentOS6.5菜鸟之旅:U盘安装CentOS64位
一.前言 之前下载了个CentOS7 32位版,一下就安装成功了,但由于其目录结构等与之前的CentOS版本有很大的不同,加上教程不多不利于我这种菜鸟学习,于是决定重装CentOS6.5来学习.本篇用 ...
- IOS开发UI基础 UIDatePicker的属性
UIDatePicker • Locale设置DatePicker的地区,即设置DatePicker显示的语言.// 1.跟踪所有可用的地区,取出想要的地区 NSLog(@& ...
- C#设计模式——代理模式(Proxy Pattern)
一.概述在软件开发中,有些对象由于创建成本高.访问时需要与其它进程交互等原因,直接访问会造成系统速度慢.复杂度增大等问题.这时可以使用代理模式,给系统增加一层间接层,通过间接层访问对象,从而达到隐藏系 ...
- CSS 最核心的四个概念
本文将讲述 CSS 中最核心的几个概念,包括:盒模型.position.float等.这些是 CSS 的基础,也是最常用的几个属性,它们之间看似独立却又相辅相成.为了掌握它们,有必要写出来探讨一下,如 ...
- 关于DOM树的常见增删操作
//具体关于DOM的内容可参考我的另外一篇文章"文本对象模型(Document Object Model)". 案例要点: 1.创建并增加元素节点 2.判断是否存在 ...
- 【C#】线程协作式取消
Microsoft .Net Framework 提供了一个标准的取消操作的模式.这个模式是协作式的,意味着你想取消的操作必须显示地支持取消. CLR为我们提供了两个类: System.Threadi ...
- 用C#编程的建议
1.如果可能尽量使用接口来编程 .NET框架包括类和接口,在编写程序的时候,你可能知道正在用.NET的哪个类.然而,在这种情况下如果你用.NET支持的接口而不是它的类来编程时,代码会变得更 ...