This worked for me on low settings: worldspacecamera matches the coordinates in localplayer +A8 +140

*****bit buggy on foot perfect in a vehicle*****

credits:NtKid,nvidia




Code:
       pDevice->GetVertexShaderConstantF(156,TviewProjection,4);
		
      

	D3DXMatrixTranspose(&viewProjection,&TviewProjection);

        D3DXVec4Transform(&Vector4D,&D3DXVECTOR4(-236,164,141,1),&viewProjection);// us base to the left 
						
							
							
	float recp = 1.0f/Vector4D.w;
  
	  
	 Vector2D.x = (1 +  (Vector4D.x*recp))  * vp.Width  /2;
	 Vector2D.y = (1 -  (Vector4D.y*recp))  * vp.Height /2;
				       
                        
	if(Vector4D.z > 0  ){

Dump of StartRegister 0 & vec4fcount 168

Code:
//
// Generated by Microsoft (R) D3DX9 Shader Compiler 9.11.519.0000
//
// Parameters:
//
//   float4 FogColor;
//   float4 FogRange;
//   float4x3 GeomBones[52];
//   
//   struct
//   {
//       float3 pos;
//       float3 dir;
//       float4 color;
//       float4 specularColor;
//       float attenuation;
//
//   } Lights;
//   
//   float2 NormalUnpack;
//   float4 PosUnpack;
//   float TexUnpack;
//   float4x4 ViewProjection;
//   float4 WorldSpaceCamPos;  localplayer +A8 +140
//
//
// Registers:
//
//   Name             Reg   Size
//   ---------------- ----- ----
//   GeomBones        c0     156
//   ViewProjection   c156     4
//   Lights           c160     2
//   FogRange         c162     1
//   FogColor         c163     1
//   WorldSpaceCamPos c164     1
//   PosUnpack        c165     1
//   TexUnpack        c166     1
//   NormalUnpack     c167     1
//
//
// Default values:
//
//   GeomBones
//     c0   = { 0, 0, 0, 0 };
//     c1   = { 0, 0, 0, 0 };
//     c2   = { 0, 0, 0, 0 };
//     c3   = { 0, 0, 0, 0 };
//     c4   = { 0, 0, 0, 0 };
//     c5   = { 0, 0, 0, 0 };
//     c6   = { 0, 0, 0, 0 };
//     c7   = { 0, 0, 0, 0 };
//     c8   = { 0, 0, 0, 0 };
//     c9   = { 0, 0, 0, 0 };
//     c10  = { 0, 0, 0, 0 };
//     c11  = { 0, 0, 0, 0 };
//     c12  = { 0, 0, 0, 0 };
//     c13  = { 0, 0, 0, 0 };
//     c14  = { 0, 0, 0, 0 };
//     c15  = { 0, 0, 0, 0 };
//     c16  = { 0, 0, 0, 0 };
//     c17  = { 0, 0, 0, 0 };
//     c18  = { 0, 0, 0, 0 };
//     c19  = { 0, 0, 0, 0 };
//     c20  = { 0, 0, 0, 0 };
//     c21  = { 0, 0, 0, 0 };
//     c22  = { 0, 0, 0, 0 };
//     c23  = { 0, 0, 0, 0 };
//     c24  = { 0, 0, 0, 0 };
//     c25  = { 0, 0, 0, 0 };
//     c26  = { 0, 0, 0, 0 };
//     c27  = { 0, 0, 0, 0 };
//     c28  = { 0, 0, 0, 0 };
//     c29  = { 0, 0, 0, 0 };
//     c30  = { 0, 0, 0, 0 };
//     c31  = { 0, 0, 0, 0 };
//     c32  = { 0, 0, 0, 0 };
//     c33  = { 0, 0, 0, 0 };
//     c34  = { 0, 0, 0, 0 };
//     c35  = { 0, 0, 0, 0 };
//     c36  = { 0, 0, 0, 0 };
//     c37  = { 0, 0, 0, 0 };
//     c38  = { 0, 0, 0, 0 };
//     c39  = { 0, 0, 0, 0 };
//     c40  = { 0, 0, 0, 0 };
//     c41  = { 0, 0, 0, 0 };
//     c42  = { 0, 0, 0, 0 };
//     c43  = { 0, 0, 0, 0 };
//     c44  = { 0, 0, 0, 0 };
//     c45  = { 0, 0, 0, 0 };
//     c46  = { 0, 0, 0, 0 };
//     c47  = { 0, 0, 0, 0 };
//     c48  = { 0, 0, 0, 0 };
//     c49  = { 0, 0, 0, 0 };
//     c50  = { 0, 0, 0, 0 };
//     c51  = { 0, 0, 0, 0 };
//     c52  = { 0, 0, 0, 0 };
//     c53  = { 0, 0, 0, 0 };
//     c54  = { 0, 0, 0, 0 };
//     c55  = { 0, 0, 0, 0 };
//     c56  = { 0, 0, 0, 0 };
//     c57  = { 0, 0, 0, 0 };
//     c58  = { 0, 0, 0, 0 };
//     c59  = { 0, 0, 0, 0 };
//     c60  = { 0, 0, 0, 0 };
//     c61  = { 0, 0, 0, 0 };
//     c62  = { 0, 0, 0, 0 };
//     c63  = { 0, 0, 0, 0 };
//     c64  = { 0, 0, 0, 0 };
//     c65  = { 0, 0, 0, 0 };
//     c66  = { 0, 0, 0, 0 };
//     c67  = { 0, 0, 0, 0 };
//     c68  = { 0, 0, 0, 0 };
//     c69  = { 0, 0, 0, 0 };
//     c70  = { 0, 0, 0, 0 };
//     c71  = { 0, 0, 0, 0 };
//     c72  = { 0, 0, 0, 0 };
//     c73  = { 0, 0, 0, 0 };
//     c74  = { 0, 0, 0, 0 };
//     c75  = { 0, 0, 0, 0 };
//     c76  = { 0, 0, 0, 0 };
//     c77  = { 0, 0, 0, 0 };
//     c78  = { 0, 0, 0, 0 };
//     c79  = { 0, 0, 0, 0 };
//     c80  = { 0, 0, 0, 0 };
//     c81  = { 0, 0, 0, 0 };
//     c82  = { 0, 0, 0, 0 };
//     c83  = { 0, 0, 0, 0 };
//     c84  = { 0, 0, 0, 0 };
//     c85  = { 0, 0, 0, 0 };
//     c86  = { 0, 0, 0, 0 };
//     c87  = { 0, 0, 0, 0 };
//     c88  = { 0, 0, 0, 0 };
//     c89  = { 0, 0, 0, 0 };
//     c90  = { 0, 0, 0, 0 };
//     c91  = { 0, 0, 0, 0 };
//     c92  = { 0, 0, 0, 0 };
//     c93  = { 0, 0, 0, 0 };
//     c94  = { 0, 0, 0, 0 };
//     c95  = { 0, 0, 0, 0 };
//     c96  = { 0, 0, 0, 0 };
//     c97  = { 0, 0, 0, 0 };
//     c98  = { 0, 0, 0, 0 };
//     c99  = { 0, 0, 0, 0 };
//     c100 = { 0, 0, 0, 0 };
//     c101 = { 0, 0, 0, 0 };
//     c102 = { 0, 0, 0, 0 };
//     c103 = { 0, 0, 0, 0 };
//     c104 = { 0, 0, 0, 0 };
//     c105 = { 0, 0, 0, 0 };
//     c106 = { 0, 0, 0, 0 };
//     c107 = { 0, 0, 0, 0 };
//     c108 = { 0, 0, 0, 0 };
//     c109 = { 0, 0, 0, 0 };
//     c110 = { 0, 0, 0, 0 };
//     c111 = { 0, 0, 0, 0 };
//     c112 = { 0, 0, 0, 0 };
//     c113 = { 0, 0, 0, 0 };
//     c114 = { 0, 0, 0, 0 };
//     c115 = { 0, 0, 0, 0 };
//     c116 = { 0, 0, 0, 0 };
//     c117 = { 0, 0, 0, 0 };
//     c118 = { 0, 0, 0, 0 };
//     c119 = { 0, 0, 0, 0 };
//     c120 = { 0, 0, 0, 0 };
//     c121 = { 0, 0, 0, 0 };
//     c122 = { 0, 0, 0, 0 };
//     c123 = { 0, 0, 0, 0 };
//     c124 = { 0, 0, 0, 0 };
//     c125 = { 0, 0, 0, 0 };
//     c126 = { 0, 0, 0, 0 };
//     c127 = { 0, 0, 0, 0 };
//     c128 = { 0, 0, 0, 0 };
//     c129 = { 0, 0, 0, 0 };
//     c130 = { 0, 0, 0, 0 };
//     c131 = { 0, 0, 0, 0 };
//     c132 = { 0, 0, 0, 0 };
//     c133 = { 0, 0, 0, 0 };
//     c134 = { 0, 0, 0, 0 };
//     c135 = { 0, 0, 0, 0 };
//     c136 = { 0, 0, 0, 0 };
//     c137 = { 0, 0, 0, 0 };
//     c138 = { 0, 0, 0, 0 };
//     c139 = { 0, 0, 0, 0 };
//     c140 = { 0, 0, 0, 0 };
//     c141 = { 0, 0, 0, 0 };
//     c142 = { 0, 0, 0, 0 };
//     c143 = { 0, 0, 0, 0 };
//     c144 = { 0, 0, 0, 0 };
//     c145 = { 0, 0, 0, 0 };
//     c146 = { 0, 0, 0, 0 };
//     c147 = { 0, 0, 0, 0 };
//     c148 = { 0, 0, 0, 0 };
//     c149 = { 0, 0, 0, 0 };
//     c150 = { 0, 0, 0, 0 };
//     c151 = { 0, 0, 0, 0 };
//     c152 = { 0, 0, 0, 0 };
//     c153 = { 0, 0, 0, 0 };
//     c154 = { 0, 0, 0, 0 };
//     c155 = { 0, 0, 0, 0 };
//
//   ViewProjection
//     c156 = { 0, 0, 0, 0 };
//     c157 = { 0, 0, 0, 0 };
//     c158 = { 0, 0, 0, 0 };
//     c159 = { 0, 0, 0, 0 };
//
//   Lights
//     c160 = { 0, 0, 0, 0 };
//     c161 = { 0, 0, 0, 0 };
//
//   FogRange
//     c162 = { 0, 0, 0, 0 };
//
//   FogColor
//     c163 = { 0, 0, 0, 0 };
//
//   WorldSpaceCamPos
//     c164 = { 0, 0, 0, 0 };
//
//   PosUnpack
//     c165 = { 0, 0, 0, 0 };
//
//   TexUnpack
//     c166 = { 0, 0, 0, 0 };
//
//   NormalUnpack
//     c167 = { 0, 0, 0, 0 };
//

    vs_1_1
    def c168, 765.005859, 1, -1, 0
    dcl_position v0
    dcl_normal v1
    dcl_blendindices v2
    dcl_texcoord v3
    mul r0, v0, c165
    mul r2.w, v2.z, c168.x
    mov r1.w, c168.y
    mov a0.x, r2.w
    dp4 r1.x, r0, c0[a0.x]
    dp4 r1.y, r0, c1[a0.x]
    dp4 r1.z, r0, c2[a0.x]
    dp4 oPos.x, r1, c156
    dp4 oPos.y, r1, c157
    dp4 oPos.z, r1, c158
    mov r0.xyz, -r1
    mov r0.w, c168.z
    dp4 r3.x, r1, c159
    add r0, r0, c164
    mul oT0.xy, v3, c166.x
    dp4 r0.w, r0, r0
    rsq r0.w, r0.w
    mad r2.xyz, v1, c167.x, c167.y
    mad r1.xyz, r0, r0.w, -c161
    dp3 r0.x, r2, c0[a0.x]
    dp3 r0.y, r2, c1[a0.x]
    dp3 r0.z, r2, c2[a0.x]
    dp3 r4.x, r1, r1
    dp3 r2.x, r0, r0
    rsq r1.w, r4.x
    rsq r0.w, r2.x
    mul oT2.xyz, r1, r1.w
    mul oT3.xyz, r0, r0.w
    mad r0.xy, r3.x, c162, c162.zwzw
    mov oPos.w, r3.x
    max r1.w, r0.y, c163.w
    mul r0.w, r0.x, r0.x
    mad oFog, r0.x, -r0.w, r1.w
    mov r0.zw, c168
    mul oT1, r0.zzzw, c161.xyzx
    mov oT2.w, c168.w
    mov oT3.w, c168.w

// approximately 37 instruction slots used