Прежде всего, я новичок в XNA и HLSL, поэтому мои знания очень ограничены.
Я пишу небольшое приложение для отображения цифровой модели рельефа, состоящей из 16-битных значений в 2D, с использованием разных цветов.для разной высоты.Отображение цветов выполняется 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;
}
Спасибо за вашу помощь и счастливого нового года :))