Log in

View Full Version : Player that supports shifting colour components to correct display registration?


ShiftyChrom
17th July 2016, 12:24
I have a 3LCD projector that has poor registration. As time goes on it seems to get worse. The element is about three pixels to the left of where it should be and the red element is about 2 pixels to the right of where it should be. There is no configuration in the projector hardware to correct for this.

Is there any software player that supports shifting each component by a predefined number of pixels so that I can correct for this? I've been looking at the likes of MPC and VLC, but I can not find anything that supports what in theory should be a fairly straight forward transformation.

Also, is there any player that supports any kind of enhanced resolution that can be calibrated to take advantage of the pixels not being where they should be in a Cleartype style? The native resolution of the projector is 1024x768. If I could take advantage of it I think I actually have component pixels falling in areas that would equate to a resolution nearer to 3000x1500, albeit with only one component available for each pixel.

In theory in both scenarios for user friendliness you could use a calibration stage where you line up components to form a line of solid colour on both axis in order to work out the best way to distribute the pixels.

Any guidance gratefully received.

vivan
17th July 2016, 16:39
Dunno about solutions with GUI, but MPC-HC could do this with shaders.

Create .hlsl file (e.g. RGB shift.hlsl) in MPC-HC\Shaders folder, paste there this code:
sampler s0 : register(s0);
float4 p1 : register(c1);

#define dx (p1[0])
#define dy (p1[1])
#define RShift -2.0
#define GShift 3.0
#define BShift 0.0

float4 main(float2 tex : TEXCOORD0) : COLOR
{
return float4(
tex2D(s0, float2(tex.x + dx * RShift, tex.y)).r,
tex2D(s0, float2(tex.x + dx * GShift, tex.y)).g,
tex2D(s0, float2(tex.x + dx * BShift, tex.y)).b,
0.0);
}

In MPC-HC go into Options, Playback, Shaders. Select your new shader from the list and click "Add to post-resize".

You can edit shader file to change shift values and MPC-HC will update image as soon as you save the file, so you can tweak it in real time. You can use non-integer shift values too.

ShiftyChrom
18th July 2016, 20:31
Thank you very much for this Vivan! I will test this tonight. Your assistance and code is very much appreciated.

leeperry
18th July 2016, 21:47
There's another version that cuts the picture in 9 different zones, pretty handy as misconvergence is hardly ever linear. It was posted on HCFR a while back.

ShiftyChrom
19th July 2016, 22:09
Thanks Lee, I will see if I can find that. I am beginning to think that the misalignment may actually be down to a component going wonky as they seem to be almost exactly one pixel out of line either way, and it seems fairly consistent across the screen.

I would love to exploit the potential increase resolution that could be gained from a Cleartype style of resolution boosting. I would expect that would not be possible with a standard shader.

leeperry
20th July 2016, 00:10
np, depending on the exact model sometimes you can get into the pj service menu and fix convergences up there ;)