パラボロイドシャドウマップを実装しているのですが
シャドウマップの生成がうまくいきません。何か間違っているのでしょうか…。

!!ARBvp1.0

PARAM nfz = program.local[0];
PARAM half = { 0.5, 0.5, 0.5, 0.5 };
PARAM light = program.local[1];
PARAM d0 = program.local[2];

TEMP p, n, inv, lenp, L, i;

ADD p, vertex.position, -light;
RCP inv.x, p.w;
MUL p, p, inv.x;
ADD result.color.w, -p.z, half.x;
DP3 lenp, p, p;
RSQ inv.x, lenp.x;
MUL p, p, inv.x;
RCP lenp, inv.x;
ADD p, p, d0;
RCP inv.z, p.z;
MUL p.x, p.x, inv.z;
MUL p.y, p.y, inv.z;
ADD p.z, lenp, -nfz.x;
MAD p.z, p.z, nfz.z, nfz.w;
MOV p.w, d0.w;
MOV result.position, p;

END