赞
踩
回顾我们之前写过的基础纹理贴图,我们设置了一个固定的“BaseColor”来控制材质球的基底颜色。那有没有一种可能,让我们的材质球,根据不同阴影部分或者顶点信息,来改变我们的基地颜色呢?——答案是渐变纹理
。
渐变纹理最早出现在Gooch等人在1998年发表的一片著名的论文《A Non-Photorealistic Lighting Model For Automatic Technical illustration》提出,作者提出了一种给予冷到暖色调(Cool-To-Warm Tones)的着色技术,来营造一种插画风格的渲染效果。
可以看出,上面三图是分别对于各自的渐变纹理进行的效果展示。最右侧的便是卡通风格的渐变纹理——该渐变纹理中的色点是突变的,且没有平滑的颜色过渡,以此来模拟卡通中的阴影色块。
对于纹理的选择,我们这里并不是单纯的使用三个颜色来直接更改我们的颜色过渡。而是使用纹理的形式(将在后面使用颜色调整来实现)。而我们也知道,图片纹理的类型Wrap Type可以分为如下几种:
对于我们的渐变纹理,这里建议使用Clamp,而不是Repeat。
因为在接下来的代码,我们会使用fixed2(halfLambert,halfLambert)
来对渐变纹理进行采样,但是使用Repeat将会超出[0,1]的范围,比如采样取值为1.0001后,经过[0,1]截取,就会变成0.0001,但是使用0.0001的值,将会得到纹理最左侧的颜色。而使用Clamp却不会发生这种事情。
Properties{
_Color("Base Color",Color) = (1,1,1,1)
_RampTex("Ramp Tex",2D) = "white"{
}
_Specular("Specular",Color) = (1,1,1,1)
_Gloss("Gloss",Range(8.0,256)) = 20
}
其中RampTex就是用来存放我们的渐变纹理的,原理与基础纹理是类似的。
SubShader{
Pass{
Tags{
"LightMode"="ForwardBase"}
#pragma vertex vert
#pragma fragment frag
#include "Lighting.cginc"
fixed4 _Color;
sampler2D _RampTex
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。