查找Pixelshader与HLSL& XNA

时间:2011-12-29 11:02:48

标签: xna hlsl

首先,我是XNA和HLSL的新手,所以我的知识非常有限。

我正在编写一个小应用程序来显示数字高程模型,该模型由2D中的16Bit值组成,使用不同高度的不同颜色。 彩色图像由Pixelshader通过查找纹理完成。 目前,我将值设置为红色的texture2D的绿色组件,并将它们映射到256x256纹理中的颜色。 由于着色是离散的/不连续的,我将minfilter / magfilter设置为指向放大时会导致块状外观的东西。 有没有办法在查找后恢复线性过滤?或者有人知道更好的映射方法吗?

着色器:

sampler2D tex1 : register(s0) = sampler_state
{
MinFilter = Point;
MagFilter = Point;
MipFilter = linear; 
}; 

texture2D lookupTex;
sampler2D lookup = sampler_state
{
Texture = <lookupTex>; 

MinFilter = Point;
MagFilter = Point;
MipFilter = Point; 
};

float4 PixelShaderLookup(float4 incol : COLOR, float2 UV : TEXCOORD0) : COLOR0
{
float4 inCol = tex2D(tex1, UV);

half3 scale = (256 - 1.0) / 256;
half3 offset = 1.0 / (2.0 * 256);

float4 outCol = tex2D(lookup, scale * inCol.gr + offset);

return outCol;
}

感谢您的帮助和新年快乐:)

0 个答案:

没有答案