Its pretty easy to achieve with fragment shader:
float scale;
float offset;
sampler2D baseMap;
struct PS_INPUT
{
float2 Texcoord : TEXCOORD0;
};
float4 ps_main( PS_INPUT Input ) : COLOR0
{
float2 tc = fmod(Input.Texcoord, scale) + float2(offset, offset);
return tex2D( baseMap, tc);
}
This shader is symmetrical so lookup window moves along diagonal. But you can apply own offset and scale to each texture coordinate component separately then window will move totally freely.