今天给出一个纹理混合的像素着色器的例子,算是对以前的东西的一点运用吧,好久没更新了,太懒了。。。。有点对不起大家的说。。。。正题:
首先是纹理混合的原理,原理就是一个简单的数学公式,
color=sampler1.color×scalar+sampler2.color×(1-scalar)
仔细看就明白是一个线性插值公式,最后的颜色由两个样本的颜色和比例因子决定,下面看程序如何实现
接下来是介绍一个纹理采样器(texture sampler)的概念,采样器(sample)和纹理(texture)也是HLSL语言的一种数据类型,HLSL使用sample对texture进行采样,采样的结果直观的说是颜色 ,具体到HLSL里头就是向量,有采样器有很多种,有1D,2D,3D,CUBE....在以后会陆续用例子程序给介绍,这个例子中用的就是一个2D的sampler.下面是一般的使用方法:
texture g_texture;
//
声明一个纹理变量
// 定义采样器
sampler g_sampler =
sampler_state
... {
Texture = <g_texture>; //关联到纹理
//设置采样器状态,均采用线性采样方式
MipFilter = LINEAR;
MinFilter
// 定义采样器
sampler g_sampler =
sampler_state
... {
Texture = <g_texture>; //关联到纹理
//设置采样器状态,均采用线性采样方式
MipFilter = LINEAR;
MinFilter