#!Start #0. def !!ARBvp1.0 PARAM Mvp[4] = { state.matrix.mvp }; PARAM Mv[4] = { state.matrix.modelview }; PARAM EtcConsts = { 1.0, 0.0, 0.5, 0.0 }; PARAM LocalParam[10] = { program.local[0..9] }; PARAM EnvParam[196] = { program.env[0..195] }; TEMP RST_NORMAL, FINAL_VERTEX, Temp, Temp1, Temp2, Temp3; ADDRESS Addr; OUTPUT RST_POS = result.position; OUTPUT RST_COLOR = result.color.primary; OUTPUT RST_TEXTURE = result.texcoord; ATTRIB IPT_POS = vertex.attrib[0]; ATTRIB IPT_NORM = vertex.attrib[1]; ATTRIB IPT_TEX = vertex.attrib[2]; ARL Addr.x, IPT_TEX.w; DP4 FINAL_VERTEX.x, IPT_POS, EnvParam[Addr.x]; DP4 FINAL_VERTEX.y, IPT_POS, EnvParam[Addr.x+1]; DP4 FINAL_VERTEX.z, IPT_POS, EnvParam[Addr.x+2]; MOV FINAL_VERTEX.w, EtcConsts.x; DP4 RST_POS.x, FINAL_VERTEX, Mvp[0]; DP4 RST_POS.y, FINAL_VERTEX, Mvp[1]; DP4 RST_POS.z, FINAL_VERTEX, Mvp[2]; DP4 RST_POS.w, FINAL_VERTEX, Mvp[3]; DP3 RST_NORMAL.x, IPT_NORM, EnvParam[Addr.x]; DP3 RST_NORMAL.y, IPT_NORM, EnvParam[Addr.x+1]; DP3 RST_NORMAL.z, IPT_NORM, EnvParam[Addr.x+2]; DP3 Temp3.x, RST_NORMAL, RST_NORMAL; RSQ Temp3.x, Temp3.x; MUL RST_NORMAL, RST_NORMAL, Temp3.x; MOV RST_COLOR, LocalParam[0]; #!End ##################################################################################### #!Start #1. 2 - texture !!ARBvp1.0 PARAM Mvp[4] = { state.matrix.mvp }; PARAM Mv[4] = { state.matrix.modelview }; PARAM EtcConsts = { 1.0, 0.0, 0.5, 0.0 }; PARAM LocalParam[10] = { program.local[0..9] }; PARAM EnvParam[196] = { program.env[0..195] }; TEMP RST_NORMAL, FINAL_VERTEX, Temp, Temp1, Temp2, Temp3; ADDRESS Addr; OUTPUT RST_POS = result.position; OUTPUT RST_COLOR = result.color.primary; OUTPUT RST_TEXTURE = result.texcoord; ATTRIB IPT_POS = vertex.attrib[0]; ATTRIB IPT_NORM = vertex.attrib[1]; ATTRIB IPT_TEX = vertex.attrib[2]; ARL Addr.x, IPT_TEX.w; DP4 FINAL_VERTEX.x, IPT_POS, EnvParam[Addr.x]; DP4 FINAL_VERTEX.y, IPT_POS, EnvParam[Addr.x+1]; DP4 FINAL_VERTEX.z, IPT_POS, EnvParam[Addr.x+2]; MOV FINAL_VERTEX.w, EtcConsts.x; DP4 RST_POS.x, FINAL_VERTEX, Mvp[0]; DP4 RST_POS.y, FINAL_VERTEX, Mvp[1]; DP4 RST_POS.z, FINAL_VERTEX, Mvp[2]; DP4 RST_POS.w, FINAL_VERTEX, Mvp[3]; DP3 RST_NORMAL.x, IPT_NORM, EnvParam[Addr.x]; DP3 RST_NORMAL.y, IPT_NORM, EnvParam[Addr.x+1]; DP3 RST_NORMAL.z, IPT_NORM, EnvParam[Addr.x+2]; DP3 Temp3.x, RST_NORMAL, RST_NORMAL; RSQ Temp3.x, Temp3.x; MUL RST_NORMAL, RST_NORMAL, Temp3.x; DP3 Temp1.x, RST_NORMAL, LocalParam[5]; MAD Temp1.x, Temp1.x, 0.8, 0.4; MAX Temp1.x, Temp1.x, 0.2; MUL RST_COLOR.xyz, LocalParam[0], Temp1.x; MOV RST_COLOR.w, LocalParam[0].w; #!End ##################################################################################### #!Start #2. 3 - shadow !!ARBvp1.0 PARAM Mvp[4] = { state.matrix.mvp }; PARAM Mv[4] = { state.matrix.modelview }; PARAM EtcConsts = { 1.0, 0.0, 0.5, 0.0 }; PARAM Consts = { 4000, 5, -4000, 0.0 }; PARAM LocalParam[10] = { program.local[0..9] }; PARAM EnvParam[196] = { program.env[0..195] }; TEMP RST_NORMAL, FINAL_VERTEX, Temp, Temp1, Temp2, Temp3; ADDRESS Addr; OUTPUT RST_POS = result.position; OUTPUT RST_COLOR = result.color.primary; OUTPUT RST_TEXTURE = result.texcoord; ATTRIB IPT_POS = vertex.attrib[0]; ATTRIB IPT_NORM = vertex.attrib[1]; ATTRIB IPT_TEX = vertex.attrib[2]; ARL Addr.x, IPT_TEX.w; DP4 FINAL_VERTEX.x, IPT_POS, EnvParam[Addr.x]; DP4 FINAL_VERTEX.y, IPT_POS, EnvParam[Addr.x+1]; DP4 FINAL_VERTEX.z, IPT_POS, EnvParam[Addr.x+2]; MOV FINAL_VERTEX.w, EtcConsts.x; SUB FINAL_VERTEX, FINAL_VERTEX, LocalParam[5]; ADD Temp2, FINAL_VERTEX, Consts; RCP Temp2.z, Temp2.z; MUL Temp2.w, Temp2.x, Temp2.z; MAD FINAL_VERTEX.x, FINAL_VERTEX.z, Temp2.w, FINAL_VERTEX.x; MOV FINAL_VERTEX.z, Consts.y; ADD FINAL_VERTEX, FINAL_VERTEX, LocalParam[5]; DP4 RST_POS.x, FINAL_VERTEX, Mvp[0]; DP4 RST_POS.y, FINAL_VERTEX, Mvp[1]; DP4 RST_POS.z, FINAL_VERTEX, Mvp[2]; DP4 RST_POS.w, FINAL_VERTEX, Mvp[3]; MOV RST_COLOR, LocalParam[0]; #!End #####################################################################################