.. | .. |
---|
15115 | 15115 | gl.glFlush(); |
---|
15116 | 15116 | |
---|
15117 | 15117 | /**/ |
---|
15118 | | - gl.glReadPixels(0, 0, OCCLUSION_SIZE, OCCLUSION_SIZE, GL.GL_BGRA, GL.GL_UNSIGNED_INT_8_8_8_8_REV, occlusionsizebuffer); |
---|
| 15118 | + gl.glReadPixels(0, 0, OCCLUSION_SIZE, OCCLUSION_SIZE, GL.GL_DEPTH_COMPONENT, GL.GL_FLOAT, occlusionsizebuffer); |
---|
15119 | 15119 | |
---|
15120 | | - int[] pixels = occlusionsizebuffer.array(); |
---|
| 15120 | + float[] pixels = occlusionsizebuffer.array(); |
---|
15121 | 15121 | |
---|
15122 | 15122 | double r = 0, g = 0, b = 0; |
---|
15123 | 15123 | |
---|
15124 | 15124 | double count = 0; |
---|
| 15125 | + |
---|
| 15126 | + gl.glGetDoublev(gl.GL_PROJECTION_MATRIX, tempmat2, 0); |
---|
| 15127 | + |
---|
| 15128 | + float mindepth = 1; |
---|
| 15129 | + |
---|
| 15130 | + double FACTOR = 1; |
---|
15125 | 15131 | |
---|
15126 | 15132 | for (int i = 0; i < pixels.length; i++) |
---|
15127 | 15133 | { |
---|
.. | .. |
---|
15206 | 15212 | |
---|
15207 | 15213 | double scale = ray.z; // 1; // cos |
---|
15208 | 15214 | |
---|
15209 | | - int p = pixels[newindex]; |
---|
| 15215 | + float depth = pixels[newindex]; |
---|
15210 | 15216 | |
---|
15211 | 15217 | /* |
---|
15212 | 15218 | int newindex2 = (x + 1) * OCCLUSION_SIZE + y; |
---|
.. | .. |
---|
15230 | 15236 | scale = (1 - modu) * modv; |
---|
15231 | 15237 | */ |
---|
15232 | 15238 | |
---|
15233 | | - r += ((p >> 16) & 0xFF) * scale / 255; |
---|
15234 | | - g += ((p >> 8) & 0xFF) * scale / 255; |
---|
15235 | | - b += (p & 0xFF) * scale / 255; |
---|
| 15239 | + //r += ((p >> 16) & 0xFF) * scale / 255; |
---|
| 15240 | + //g += ((p >> 8) & 0xFF) * scale / 255; |
---|
| 15241 | + //b += (p & 0xFF) * scale / 255; |
---|
| 15242 | + |
---|
| 15243 | + if (mindepth > depth) |
---|
| 15244 | + { |
---|
| 15245 | + mindepth = depth; |
---|
| 15246 | + } |
---|
15236 | 15247 | |
---|
| 15248 | + double z_eye = tempmat2[3*4 + 2] / (depth * -2.0 + 1.0 - tempmat2[2*4 + 2]); |
---|
| 15249 | + |
---|
| 15250 | + double factor = 1 - Math.exp(-z_eye * z_eye / FACTOR); |
---|
| 15251 | + |
---|
| 15252 | + r += factor * scale; |
---|
| 15253 | + g += factor * scale; |
---|
| 15254 | + b += factor * scale; |
---|
| 15255 | + |
---|
15237 | 15256 | count += scale; |
---|
15238 | 15257 | } |
---|
15239 | 15258 | |
---|
.. | .. |
---|
15407 | 15426 | static IntBuffer texturesizebuffer = IntBuffer.allocate(TEX_SIZE * TEX_SIZE); |
---|
15408 | 15427 | static IntBuffer selectsizebuffer = IntBuffer.allocate(SELECT_SIZE * SELECT_SIZE); |
---|
15409 | 15428 | static java.nio.FloatBuffer pointselectsizebuffer = java.nio.FloatBuffer.allocate(SELECT_SIZE * SELECT_SIZE); |
---|
15410 | | - static IntBuffer occlusionsizebuffer = IntBuffer.allocate(OCCLUSION_SIZE * OCCLUSION_SIZE); |
---|
| 15429 | + //static IntBuffer occlusionsizebuffer = IntBuffer.allocate(OCCLUSION_SIZE * OCCLUSION_SIZE); |
---|
| 15430 | + static java.nio.FloatBuffer occlusionsizebuffer = java.nio.FloatBuffer.allocate(OCCLUSION_SIZE * OCCLUSION_SIZE); |
---|
15411 | 15431 | static BufferedImage bufimage = new BufferedImage(TEX_SIZE, TEX_SIZE, BufferedImage.TYPE_INT_RGB); |
---|
15412 | 15432 | static BufferedImage textest = new cBufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB); |
---|
15413 | 15433 | static java.util.Vector<BufferedImage> billboards = new java.util.Vector<BufferedImage>(); |
---|