Пиксельный поиск с HLSL и XNA - PullRequest
       6

Пиксельный поиск с HLSL и XNA

1 голос
/ 29 декабря 2011

Прежде всего, я новичок в 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;
}

Спасибо за вашу помощь и счастливого нового года :))

...