Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- !!ARBvp1.0
- PARAM MVP1 = program.local[1];
- PARAM MVP2 = program.local[2];
- PARAM MVP3 = program.local[3];
- PARAM MVP4 = program.local[4];
- TEMP vertexClip;
- DP4 vertexClip.x, MVP1, vertex.position;
- DP4 vertexClip.y, MVP2, vertex.position;
- DP4 vertexClip.z, MVP3, vertex.position;
- DP4 vertexClip.w, MVP4, vertex.position;
- MOV result.position, vertexClip;
- MOV result.color, vertex.color;
- MOV result.texcoord[0], vertex.texcoord;
- MOV result.texcoord[1].x, vertex.position.x;
- MOV result.texcoord[1].y, vertex.position.y;
- MOV result.texcoord[2].x, vertex.position.z;
- END
- !!ARBfp1.0
- PARAM LIGHT_POS = program.local[0];
- PARAM LIGHT_COLOR = program.local[1];
- PARAM LIGHT_RADIUS = program.local[2];
- TEMP INTENSITY;
- TEMP DISTANCE;
- TEMP DSTa;
- TEMP A;
- TEMP B;
- MOV A, LIGHT_POS;
- MOV B.x, fragment.texcoord[1].x;
- MOV B.y, fragment.texcoord[1].y;
- MOV B.z, fragment.texcoord[2].x;
- SUB DISTANCE.x, A.x, B.x;
- SUB DISTANCE.y, A.y, B.y;
- SUB DISTANCE.z, A.z, B.z;
- MUL DISTANCE.x, DISTANCE.x, DISTANCE.x;
- MUL DISTANCE.y, DISTANCE.y, DISTANCE.y;
- MUL DISTANCE.z, DISTANCE.z, DISTANCE.z;
- ADD DSTa.x, DISTANCE.x, DISTANCE.y;
- ADD DSTa.x, DSTa.x, DISTANCE.z;
- RSQ DSTa.x, DSTa.x;
- RCP DSTa.x, DSTa.x;
- #now we have distance from light pos to fragment/vertex
- #intenstiy equation looks like: 1.0 - (dst / radius)
- TEMP R;
- MOV R.x, LIGHT_RADIUS.x;
- RCP R.x, R.x;
- MUL R.y, R.x, DSTa.x;
- SUB R.z, 1.0, R.y;
- MAX R.z, R.z, 0.0;
- TEMP COL;
- MOV COL, LIGHT_COLOR;
- MUL COL.x, COL.x, R.z;
- MUL COL.y, COL.y, R.z;
- MUL COL.z, COL.z, R.z;
- MOV COL.w, 1.0;
- MOV result.color, COL;
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement