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会忽略 管线 ...
随机推荐
- 玩转spring boot——properties配置
前言 在以往的java开发中,程序员最怕大量的配置,是因为配置一多就不好统一管理,经常出现找不到配置的情况.而项目中,从开发测试环境到生产环境,往往需要切换不同的配置,如测试数据库连接换成生产数据库连 ...
- 受限玻尔兹曼机(RBM)学习笔记(二)网络结构
去年 6 月份写的博文<Yusuke Sugomori 的 C 语言 Deep Learning 程序解读>是囫囵吞枣地读完一个关于 DBN 算法的开源代码后的笔记,当时对其中涉及的算 ...
- 20个精美的免费 PSD 界面设计素材【免费下载】
在这篇文章中,我们给大家收集了20个最新出炉的 UI 设计素材.这些来自优秀设计师的 PSD 源文件素材让其它的设计师们在设计用户界面原型的时候能够非常便利.些界面素材让他们使用快速和有效的方式完成用 ...
- suricata学习笔记1--初步认识
1.前言 最近工作需要对网站的关键字进行检测,找出敏感词.这个过程需要对报文进行收集.解码.检测和记录日志.当前只是简单实现功能,根据关键字进行简单的匹配,而没有进行关键字的语义分析.导致的结果就是 ...
- JAVA jdbc(数据库连接池)学习笔记(二) SQL注入
PS:今天偶然间发现了SQL的注入...所以就简单的脑补了一下,都是一些简单的例子...这篇写的不怎么样...由于自己没有进行很深的研究... 学习内容: 1.SQL注入的概念... 所谓SQL注 ...
- HT全矢量化的图形组件设计
HT一直被客户称道的就是其全矢量化的设计特色,矢量相比传统图片好处太多了: 矢量可无级缩放,界面不失真不模糊 描述矢量的文本内容远比图片小得多 目前各种window.devicePixelRatio不 ...
- “康园圈--互联网+校园平台“项目之sprint1总结
一.团队成员 梁植淋,官郅豪,纪焓,詹耀海 二.目前进度 在全体组员的努力下,目前完成了项目的<设计方案书>.<功能需求书>.框架搭建.项目部署文档. 并成 ...
- 小巧方便的MVC后端验证码,供大家学习借鉴
调用: public ActionResult Vcode()//验证码 { string code = ValidateCode.CreateRandomCode(4); ValidateCode. ...
- 重新想象 Windows 8 Store Apps (63) - 通信: WebSocket
[源码下载] 重新想象 Windows 8 Store Apps (63) - 通信: WebSocket 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 通信 So ...
- JavaMail入门第四篇 接收邮件
上一篇JavaMail入门第三篇 发送邮件中,我们学会了如何用JavaMail API提供的Transport类发送邮件,同样,JavaMail API中也提供了一些专门的类来对邮件的接收进行相关的操 ...