You didn't supplied correct matrix on Irrlicht side and didn't define in shader. Put these changes:
...
core::matrix4 worldViewProj;
core::matrix4 world;
worldViewProj = driver->getTransform(video::ETS_PROJECTION);
worldViewProj *= driver->getTransform(video::ETS_VIEW);
worldViewProj *= driver->getTransform(video::ETS_WORLD);
world = driver->getTransform(video::ETS_WORLD);
if (UseHighLevelShaders){
services->setVertexShaderConstant("matViewProjection", worldViewProj.pointer(), 16);
services->setVertexShaderConstant("World", world.pointer(), 16);
....
float4x4 matViewProjection : register( c0 );
float4x4 World : register( c4 );
float3 camPos : register( c8 );
// This should be your mesh vertex elements
// so this is questionable
struct VS_INPUT
{
float4 Position : POSITION0;
float2 alphamap : TEXCOORD0;
float2 tex : TEXCOORD1;
};
struct VS_OUTPUT
{
float4 Position : POSITION0;
float4 WorldPos : TEXCOORD0; // you cannot have 2 POSITION0!!!
float2 alphamap : TEXCOORD1;
float2 tex : TEXCOORD2;
};
PS_OUTPUT ps_main(in VS_OUTPUT input)
{
...
float Depth = distance( camPos, input.WorldPos.xyz );
...
}
and uncomment relevant stuff in shader