| .. | .. |
|---|
| 12502 | 12502 | |
|---|
| 12503 | 12503 | // display shadow only (bump == 0) |
|---|
| 12504 | 12504 | "SUB temp.x, half.x, shadow.x;" + |
|---|
| 12505 | | - "MOV temp.y, -params6.x;" + |
|---|
| 12506 | | - "SLT temp.z, temp.y, zero.x;" + |
|---|
| 12505 | + "MOV temp.y, -params5.z;" + // params6.x;" + |
|---|
| 12506 | + "SLT temp.z, temp.y, -one2048th.x;" + |
|---|
| 12507 | 12507 | "SUB temp.y, one.x, temp.z;" + |
|---|
| 12508 | 12508 | "MUL temp.x, temp.x, temp.y;" + |
|---|
| 12509 | 12509 | "KIL temp.x;" + |
|---|
| .. | .. |
|---|
| 12834 | 12834 | //once = true; |
|---|
| 12835 | 12835 | } |
|---|
| 12836 | 12836 | |
|---|
| 12837 | | - System.out.print("Program #" + mode + "; length = " + program.length()); |
|---|
| 12837 | + System.out.print("Program #" + mode + "; instructions = " + program.split(";").length + "; length = " + program.length()); |
|---|
| 12838 | 12838 | System.out.println(" - " + (mode >> 3) + " lights; " + ((mode & 2) == 2 ? "anisoUV " : "") + ((mode & 4) == 4 ? "SoftShadow " : "")); |
|---|
| 12839 | 12839 | loadProgram(gl, GL.GL_FRAGMENT_PROGRAM_ARB, program); |
|---|
| 12840 | 12840 | |
|---|
| .. | .. |
|---|
| 12967 | 12967 | |
|---|
| 12968 | 12968 | "ADD " + depth + ".z, " + depth + ".z, temp.x;" + |
|---|
| 12969 | 12969 | //"SUB " + depth + ".z, " + depth + ".z, temp.x;" + // back face shadowing! |
|---|
| 12970 | + |
|---|
| 12971 | + // Compare fragment depth in light space with shadowmap. |
|---|
| 12970 | 12972 | "SUB temp.x, fragment.texcoord[1].z, " + depth + ".z;" + |
|---|
| 12971 | 12973 | "SGE temp.y, temp.x, zero.x;" + |
|---|
| 12972 | | - "SUB " + shadow + ".y, one.x, temp.y;" + |
|---|
| 12974 | + "SUB " + shadow + ".y, one.x, temp.y;" + // Specular is fully occluded |
|---|
| 12975 | + |
|---|
| 12976 | + // Reverse comparison |
|---|
| 12973 | 12977 | "SUB temp.x, one.x, temp.x;" + |
|---|
| 12974 | 12978 | "MUL " + shadow + ".x, temp.x, temp.y;" + |
|---|
| 12975 | | - "SUB " + shadow + ".x, one.x, " + shadow + ".x;" + // specular is fully occluded |
|---|
| 12979 | + "SUB " + shadow + ".x, one.x, " + shadow + ".x;" + // diffuse |
|---|
| 12976 | 12980 | "POW " + shadow + ".x, " + shadow + ".x, params5.z;" + // fake depth |
|---|
| 12977 | 12981 | |
|---|
| 12978 | 12982 | "SLT " + shadow + ".z, fragment.texcoord[1].z, " + depth + ".z;" + |
|---|
| .. | .. |
|---|
| 12987 | 12991 | "DP3 temp.x, normal, lightd;" + |
|---|
| 12988 | 12992 | "SLT temp.x, temp.x, zero.x;" + // shadoweps |
|---|
| 12989 | 12993 | "LRP " + shadow + ", temp.x, one, " + shadow + ";" + |
|---|
| 12994 | + |
|---|
| 12995 | + // No shadow when out of frustrum |
|---|
| 12996 | + "SGE temp.x, " + depth + ".z, one.z;" + |
|---|
| 12997 | + "LRP " + shadow + ", temp.x, one, " + shadow + ";" + |
|---|
| 12990 | 12998 | ""; |
|---|
| 12991 | 12999 | } |
|---|
| 12992 | 13000 | |
|---|