在上一篇教程中,Shader小白入门基础教程之固定管线(上)我们初步接触了固定管线,并了解了Properties、Material以及Lighting的相关知识。固定管线的功能很局限,但是代码较为简洁、速度也较快,这是FFshader的特点。今天这篇教程,我们主要了解固定管线最重要的一部分内容:Settexture。
Settexture,赋予贴图(贴图采样)。在这里我于网上随便找了两张方图01、02,两张都是石头纹理的。

Settexture十分重要,相对Properties、Material以及Lighting命令格式也稍显复杂。这里,要让一个shader可以被赋予材质,需要如下添加Settexture命令。两部分,一部分在Properties声称一张贴图MainTex,并在Pass中加入命令语句块。

这里我们需要注意,在Settexture语句块中要使用combine命令,如下

回到界面,为了教程需要,我复制了一个球出来,并赋予一个新的材质02(代码为ff1的代码复制即可)。这时我们发现,在球上,就有了一个可以放置贴图的位置。

这时我们将一张贴图拖拽到对应位置上,我们看到这个球就有纹理材质了

但是,使用贴图之后,原先具有高光、暗部变化甚至自发光的效果都没有了。这是为什么呢?Combine命令是合并的意思,这里texture指的就是默认的一张贴。这里就要将贴图乘上以前已经计算好的顶点光照,即primary。这样两个值相乘就会得到一个混合新值,代码如下

这时,保存返回界面看效果。原来的效果和贴图效果就同时显示了

有的时候,由于计算机硬件问题。混合效果可能会偏暗,这时我们可以在命令后面再加上个double,双倍强度显示。

返回界面我们看到小球的亮度明显提高(提高了两倍)。

有的时候,对待一个物体,我们不只需要一张贴图,需要两张或以上贴图进行混合。这里记住,一个Settexture块只能控制一张贴图,也就是说再加一张贴图需要再写一个Settexture块。代码如下

回到界面中,我们看到有两个贴图块,但是并没有显示有贴图。这时我将第二张贴图放上去,有纹理了,但是两张贴图并没有混合显示,这时为甚呢?


关键在于Combine命令上。Combine命令总是用当前的贴图去乘以顶点光照的颜色,所以读取的是第二个块的贴图。这里我们要将第一个贴图也乘上去怎么办,这里就要用到previous了。代码如下

我们再返回界面,看到的确两张图进行了乘法混合

这里要注意,混合贴图数量是有上线的,这个上限是由你显卡硬件条件决定的。你的显卡能混合多少贴图,可以去unity文档去找
在unity中,我将花球放在默认球前方,并想将前方的球半透明显示。要实现透明,就要使用alpha值以及一个重要的命令Blending,我要在通道里打上这样一段代码


在这段代码之前,我已经将原来shader上的几个参数调低,混合1减去当前这个alpha值,将天光等都透过来。


回到界面,我们看到了透过去的球。但是如果我们换个角度,就看不到后面的球了。这涉及到一个渲染次序问题。就需要Tags命令了,来改变渲染队列。
这时我们就看到后面透过来的小球了。

作者:kinglary
来源:Thepoly
热门课程
专业讲师指导 快速摆脱技能困惑相关文章
多种教程 总有一个适合自己专业问题咨询
你担心的问题,火星帮你解答为给新片造势,迪士尼这次豁出去了,拿出压箱底的一众经典IP,开启了梦幻联动朱迪和尼克奉命潜入偏远地带卧底调查 截至11月24日......
此前Q2问答环节,邹涛曾将《解限机》首发失利归结于“商业化保守”和“灰产猖獗”,导致预想设计与实际游玩效果偏差大,且表示该游戏......
2025 Google Play年度游戏颁奖:洞察移动游戏新趋势
玩家无需四处收集实体卡,轻点屏幕就能开启惊喜开包之旅,享受收集与对战乐趣库洛游戏的《鸣潮》斩获“最佳持续运营游戏”大奖,这不仅......
说明:文中所有的配图均来源于网络 在人们的常规认知里,游戏引擎领域的两大巨头似乎更倾向于在各自赛道上激烈竞争,然而,只要时间足......
在行政服务优化层面,办法提出压缩国产网络游戏审核周期,在朝阳、海淀等重点区将审批纳入综合窗口;完善版权服务机制,将游戏素材著作......
未毕业先就业、组团入职、扎堆拿offer...这种好事,再多来一打!
众所周知,火星有完善的就业推荐服务图为火星校园招聘会现场对火星同学们来说,金三银四、金九银十并不是找工作的唯一良机火星时代教育......
同学您好!