   z value equal w value ?
  I write a little shader in DX9 HLSL. I use VS.NET 2003&DX Shader Debug to debug the shader. The render result is right(Color). But i find the vertex position's z and w component is equal. what is the problem?It's the Vertex shader codestruct VS_INPUT {float3 pos : POSITION;float2 tex : TEXCOORD;};struct VS_OUTPUT{float4 pos : POSITION;float2 tex : TEXCOORD;};VS_OUTPUT vs_main(VS_INPUT vs_in){VS_OUTPUT vs_out = (VS_OUTPUT)0;vs_out.pos = mul(float4(vs_in.pos, 1.0f), matWVP);vs_out.tex = vs_in.tex;return vs_out;}The matWVP below: D3DXMATRIX matWVP = m_matWorld * (*fpc.GetViewMatrix()) * (*fpc.GetProjMatrix());hr = m_lpEffect->SetMatrix("matWVP", &matWVP);------------The m_matWorld is identity matrix, fpc is CFirstPersonCamera   
  No, z is the depth. While w (Im not sure what is it but) is something related with homogeneous coordinates.In homogeneous coordinates, a coordinate is represented by v = (x, y, z, w), a vector is represented by v = (x, y, z, 0) and a point is represented by v = (x, y, z, 1);So z != w:)But in some cases Z VALUE CAN BE THE SAME AS W VALUE   ;  Is this, formula D3DXMATRIX matWVP = m_matWorld * (*fpc.GetViewMatrix()) * (*fpc.GetProjMatrix());each matrix as follows：m_matWorld is identity matrix。(*fpc.GetViewMatrix()) matrix is this: 1.0000000|0.00000000|0.00000000|0.000000000.0000000|0.94868100|-0.3162346|0.000000000.0000000|0.31623462|0.94868100|0.000000000.0000000|0.00228119|316.227780|1.00000000(*fpc.GetProjMatrix()) matrix as follows：1.8106600|0.00000000|0.00000000|0.000000000.0000000|2.41421340|0.00000000|0.000000000.0000000|0.00000000|1.00003340|1.000000000.0000000|0.00000000|-0.1000033|0.00000000The view, projection matrix above are set by CFirstPersonCamera's SetViewParams,SetProjParamsvFrom = D3DXVECTOR3(0.0f, 100.0f, -300.0f);vTo = D3DXVECTOR3(0.0f, 0.0f, 0.0f);g_fpcMain.SetViewParams(&vFrom, &vTo);g_fpcMain.SetProjParams(D3DX_PI/4, pBackBufferSurfaceDesc->Width/(float)pBackBufferSurfaceDesc->Height, 0.1f, 3000.0f);====================================================In short，the result matWVP(the matrix be passed into vertex shader) is:1.8106600|0.00000000|0.00000000|0.000000000.0000000|2.29031850|-0.3162451|-0.316234620.0000000|0.76345783|0.94871265|0.948681000.0000000|0.00550728|316.138340|316.22778============================================================================================After passed into vertex shader, the matrix as below:[0]{ x=1.81066, y=0, z=0, w=0 } float4[1]{ x=0, y=2.29032, z=0.763458, w=0.00550728 } float4[2]{ x=0, y=-0.316245, z=0.948713, w=316.138 } float4[3]{ x=0, y=-0.316235, z=0.948681, w=316.228 } float4-----------------------------------------------The key is, if input a vertex iPos = {-100, 0, 100, 1}Operational Results that use mul operator are oPos = { -181.066, 76.3513, 411.01, 411.096 }. That is: input vertex DotProduct Each line of the matWVP matrix.-------------If we only calculate z and w component of output vertex, is this:new_z = old_x*0 + old_y*-0.316245 + old_z*0.948713 + old_w*316.138  new_w = old_x*0 + old_y*-0.316235 + old_z*0.948681 + old_w*316.228We find that the last two lines of matWVP matrix are so alike, so , regardless input vertex value, the output vertex' z and w componentare same！I really don't know what's the error. Although the render result is correct.but the z and w value are same. Please help me, thank you......I can speak english a litte......please don't mind....... ;  Wait, 411.01 isn't the same as 411.096... It's close, but not equal.Quote:the render result is correctSo... what is the problem you're trying to solve?   ;  After applying the projection matrix, the computed depth value of a point is pos.z / pos.w. The range of these values is typically 0 to 1, where 0 is close to the near clipping plane and 1 close to the far clipping plane. Because of the nature of the projection space, and because people often choose to set their near clipping plane very nearby, this value tends to be close to 1 a lot, in other words, far away. If it is almost 1, then pos.z / pos.w is close to 1, so the z component must be almost as large as the w component.   ;Quote:Original post by HodgmanWait, 411.01 isn't the same as 411.096... It's close, but not equal.Quote:the render result is correctSo... what is the problem you're trying to solve?...if i want to do some application(for example shadow map), i worried the z/w value is not correct. because all pixel's z/w near to 1......   ;Quote:Original post by Ignifexwhere 0 is close to the near clipping plane and 1 close to the far clipping plane.thank you...but my far clipping plane is 3000.0f. the vertex coordinate is only 100.0f........the distance may be large...   