GPU编程--hlsl--05--效果(effect)基础
来源:百度文库 编辑:神马文学网 时间:2024/04/29 09:24:51
首先是纹理混合的原理,原理就是一个简单的数学公式,
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 =
//设置采样器状态,均采用线性采样方式
MipFilter = LINEAR;
MinFilter = LINEAR;
MagFilter = LINEAR;
}
vector color = tex2D(g_sampler,uvCoords); //调用tex2D()对纹理采样,得到颜色值,供接下来成程序使用
一个纹理是由UV值决定的,也就是纹理的寻址方式。。。这个不用说了吧,不懂只能随便找本图形学方面的书或者说directx的书都能找到的吧。。。
下面就来看像素着色器:
//首先定义全局变量//比例因子用一个2D向量存储,x=s,y=1-s
vector scalar;
//两个纹理
texture tex0,tex1;
//两个采样器
//定义采样器
sampler sampler0=
sampler_state
...{
Texture =
//设置采样器状态,均采用线性采样方式
MipFilter = LINEAR;
MinFilter = LINEAR;
MagFilter = LINEAR;
};
//定义采样器
sampler sampler1=
sampler_state
...{
Texture =
//设置采样器状态,均采用线性采样方式
MipFilter = LINEAR;
MinFilter = LINEAR;
MagFilter = LINEAR;
};
//输入结构,输入两个样本的纹理坐标
struct Input
...{
float2 uvCoord0:TEXCOORD0;
float2 uvCoord0:TEXCOORD1;
};
//输出结构,输出像素颜色即可
struct Output
...{
float4 color:COLOR0;
};
//入口函数
Output main(Input input)
...{
Output output = (Output)0;
//本程序的核心代码,分别取样后混合
output.color=tex2D(sampler0,input.uvCoord0)*Scalar.x+tex2D(sampler1,input.uvCoord1)*Scalar.y;
return output;
}
GPU编程--hlsl--05--效果(effect)基础
GPU编程--hlsl--06--效果(effect)基础2
GPU编程--hlsl--04--基础纹理混合
GPU编程--hlsl--01
GPU编程--hlsl--02
《网络编程基础》(转载)
全新PGI 9.0编译器简化x64+GPU编程
转 scriptaculous的Effect效果对象 - 疯猫 - CSDNBlog
网络编程基础
网络编程基础11
VB编程基础
多线程编程——基础篇 (一)
GDI 编程基础(一)GDI Vs GDI
学习计算机编程的基础
Shell编程基础 - Ubuntu中文
羊群效应理论(The Effect of Sheep Flock)
Excel图表编程应用2图表编程基础
测量测绘专业网-工程测量员-注册测绘师 - 编程基础(Visual Basic) [GPS...
面向接口编程详解(一)——思想基础 - EricZhang's Tech Blog - 博...
VBS基础编程教程 (第1篇)
mt4编程→简明教程+速成基础
influence effect power
财务函数EFFECT
网络通讯编程基础——TCP/UDP/IP Multicast