首先,我是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;
}
感谢您的帮助和新年快乐:)