2D HLSL World position I'm trying to get world position from my vertex shader to my pixel shader so that I can disable the shader once a preset X coordinate has been passed (no shading once I'm over X). Getting the screen position is not a problem so far but despite my best efforts to look after it and implement examples the calculations just don't return the preferred world positions I'm looking for. Update So got it to somewhat work, after compiling the shaders the output changes to such Could anyone explain why this happens? I should mention that I'm really new to HLSL, been only scripting so far. Edit Added matrices. world Matrix.Identity view Matrix.CreateScale(new Vector3(1, 0.75f, 0)) Matrix.CreateTranslation( playerpos.X, playerpos.Y, 1) projection Matrix.CreateOrthographicOffCenter(0, view.Width, view.Height, 0, 0, 1) Matrix halfPixelOffset Matrix.CreateTranslation( 0.5f, 0.5f, 0) projection halfPixelOffset projection lt code texture lightMask sampler mainSampler register(s0) sampler lightSampler sampler state Texture lightMask float4x4 World float4x4 View float4x4 Projection struct vs2ps float4 Pos POSITION0 float4 TexCd TEXCOORD0 float3 PosW TEXCOORD1 vs2ps VS(float4 Pos POSITION0,float4 TexCd TEXCOORD0) vs2ps Out Out.Pos mul(Pos, World View Projection) Out.TexCd TexCd Out.PosW mul(Pos, World) return Out float4 PixelShaderFunction(vs2ps input) COLOR0 float2 texCoord input.TexCd float4 screenPosition (input.PosW,1.0f) float4 lightColor tex2D(lightSampler, texCoord) float4 mainColor tex2D(mainSampler, texCoord) if(screenPosition.x lt 3500) return (mainColor lightColor) else return mainColor