.. | .. |
---|
228 | 228 | void PushMatrix(double[][] matrix, int count) |
---|
229 | 229 | { |
---|
230 | 230 | matrixdepth++; |
---|
231 | | - // GraphreeD.tracein(matrix); |
---|
| 231 | + // GrafreeD.tracein(matrix); |
---|
232 | 232 | if (matrix == null) |
---|
233 | 233 | return; // Identity |
---|
234 | 234 | |
---|
.. | .. |
---|
253 | 253 | |
---|
254 | 254 | void PushMatrix(double[][] matrix) |
---|
255 | 255 | { |
---|
256 | | - // GraphreeD.tracein(matrix); |
---|
| 256 | + // GrafreeD.tracein(matrix); |
---|
257 | 257 | PushMatrix(matrix,1); |
---|
258 | 258 | } |
---|
259 | 259 | |
---|
260 | 260 | void PushMatrix() |
---|
261 | 261 | { |
---|
262 | | - // GraphreeD.tracein(null); |
---|
| 262 | + // GrafreeD.tracein(null); |
---|
263 | 263 | if (matrixdepth++ < MAXSTACK - 1) |
---|
264 | 264 | { |
---|
265 | 265 | currentGL.glPushMatrix(); |
---|
.. | .. |
---|
274 | 274 | { |
---|
275 | 275 | --matrixdepth; |
---|
276 | 276 | |
---|
277 | | - // GraphreeD.traceout(inverse); |
---|
| 277 | + // GrafreeD.traceout(inverse); |
---|
278 | 278 | if (inverse == null) |
---|
279 | 279 | return; // Identity |
---|
280 | 280 | |
---|
.. | .. |
---|
292 | 292 | |
---|
293 | 293 | void PopMatrix() |
---|
294 | 294 | { |
---|
295 | | - // GraphreeD.traceout(null); |
---|
| 295 | + // GrafreeD.traceout(null); |
---|
296 | 296 | // inverse == null?? |
---|
297 | 297 | if (--matrixdepth < MAXSTACK - 1) |
---|
298 | 298 | { |
---|
.. | .. |
---|
491 | 491 | System.err.println("LIVE = " + isLIVE()); |
---|
492 | 492 | |
---|
493 | 493 | if (!isLIVE()) // save sound |
---|
494 | | - GraphreeD.savesound = true; // wav.save(); |
---|
| 494 | + GrafreeD.savesound = true; // wav.save(); |
---|
495 | 495 | // else |
---|
496 | 496 | repaint(); // start loop // may 2013 |
---|
497 | 497 | } |
---|
.. | .. |
---|
2000 | 2000 | */ |
---|
2001 | 2001 | TextureData ReduceTexture(TextureData texturedata, int resolution) // String name) |
---|
2002 | 2002 | { |
---|
| 2003 | + int pixelformat = texturedata.getPixelFormat(); |
---|
| 2004 | + |
---|
2003 | 2005 | int stride = 1; |
---|
2004 | | - if (texturedata.getPixelFormat() == GetGL().GL_RGB || texturedata.getPixelFormat() == GetGL().GL_BGR) // || texturedata.getPixelFormat() == GL.GL_LUMINANCE) |
---|
| 2006 | + if (pixelformat == GetGL().GL_RGB || pixelformat == GetGL().GL_BGR) // || texturedata.getPixelFormat() == GL.GL_LUMINANCE) |
---|
2005 | 2007 | stride = 3; |
---|
2006 | | - if (texturedata.getPixelFormat() == GetGL().GL_RGBA || texturedata.getPixelFormat() == GetGL().GL_BGRA) // || texturedata.getPixelFormat() == GL.GL_LUMINANCE_ALPHA) |
---|
| 2008 | + if (pixelformat == GetGL().GL_RGBA || pixelformat == GetGL().GL_BGRA) // || texturedata.getPixelFormat() == GL.GL_LUMINANCE_ALPHA) |
---|
2007 | 2009 | stride = 4; |
---|
2008 | 2010 | |
---|
2009 | 2011 | int width = texturedata.getWidth(); |
---|
.. | .. |
---|
6333 | 6335 | { |
---|
6334 | 6336 | bumpdepth--; |
---|
6335 | 6337 | |
---|
6336 | | - // GraphreeD.trace("POP " + tex + "(" + pigmentdepth + ")" + " : " + pigmentstack[pigmentdepth] + " vs " + texture); |
---|
| 6338 | + // GrafreeD.trace("POP " + tex + "(" + pigmentdepth + ")" + " : " + pigmentstack[pigmentdepth] + " vs " + texture); |
---|
6337 | 6339 | if (bumpstack[bumpdepth] != (texture!=null?texture.texture:null)) |
---|
6338 | 6340 | { |
---|
6339 | 6341 | // assert (bumpstack[bumpdepth] == texture); |
---|
.. | .. |
---|
6363 | 6365 | { |
---|
6364 | 6366 | pigmentdepth--; |
---|
6365 | 6367 | |
---|
6366 | | - // GraphreeD.trace("POP " + tex + "(" + pigmentdepth + ")" + " : " + pigmentstack[pigmentdepth] + " vs " + texture); |
---|
| 6368 | + // GrafreeD.trace("POP " + tex + "(" + pigmentdepth + ")" + " : " + pigmentstack[pigmentdepth] + " vs " + texture); |
---|
6367 | 6369 | if (pigmentstack[pigmentdepth] != (texture!=null?texture.texture:null)) |
---|
6368 | 6370 | { |
---|
6369 | 6371 | // assert (pigmentstack[pigmentdepth] == texture); |
---|
.. | .. |
---|
6694 | 6696 | |
---|
6695 | 6697 | if (bump) |
---|
6696 | 6698 | { |
---|
6697 | | - // GraphreeD.trace("PUSH BUMP " + tex + "(" + bumpdepth + ")" + " : " + texture); |
---|
| 6699 | + // GrafreeD.trace("PUSH BUMP " + tex + "(" + bumpdepth + ")" + " : " + texture); |
---|
6698 | 6700 | bumpstack[bumpdepth++] = texture!=null?texture.texture:null; |
---|
6699 | 6701 | } |
---|
6700 | 6702 | else |
---|
6701 | 6703 | { |
---|
6702 | | - // GraphreeD.trace("PUSH PIGMENT " + tex + "(" + pigmentdepth + ")" + " : " + texture); |
---|
| 6704 | + // GrafreeD.trace("PUSH PIGMENT " + tex + "(" + pigmentdepth + ")" + " : " + texture); |
---|
6703 | 6705 | pigmentstack[pigmentdepth++] = texture!=null?texture.texture:null; |
---|
6704 | 6706 | } |
---|
6705 | 6707 | |
---|
.. | .. |
---|
7442 | 7444 | //gl.glFrustum(-0.5*scale, 0.5*scale, -0.5*scale, 0.5*scale, 1, 100); |
---|
7443 | 7445 | //glu.gluPerspective(lightshaper_fovy, 1, lightshaper_zNear, lightshaper_zFar); |
---|
7444 | 7446 | double scale = lightCamera.SCALE / lightCamera.Distance(); |
---|
| 7447 | +// PATCH FILLE AUX JEANS |
---|
| 7448 | + //scale *= lightCamera.shaper_fovy / 25; |
---|
7445 | 7449 | gl.glScaled(2 * scale, 2 * scale, -scale); |
---|
7446 | 7450 | gl.glTranslated(0, 0, lightCamera.DECAL); |
---|
7447 | 7451 | |
---|
.. | .. |
---|
7590 | 7594 | |
---|
7591 | 7595 | float[] options1 = new float[]{1000, 0.00001f, 20, 0, 0}; // focus, aperture, Shadow blur, aniso, anisoV |
---|
7592 | 7596 | float[] options2 = new float[]{0, 1, 0, 0}; // fog density, intensity, elevation |
---|
7593 | | - float[] options3 = new float[]{1, 1, 1, 1}; // fog color. image intensity |
---|
| 7597 | + float[] options3 = new float[]{1, 1, 1, 0}; // fog color |
---|
| 7598 | + float[] options4 = new float[]{1, 0, 1, 0}; // image intensity, subsurface, lightsheen |
---|
7594 | 7599 | |
---|
7595 | 7600 | static int imagecount = 0; // movie generation |
---|
7596 | 7601 | |
---|
.. | .. |
---|
7628 | 7633 | |
---|
7629 | 7634 | //System.out.println("start frame"); |
---|
7630 | 7635 | gl.glClear(gl.GL_ACCUM_BUFFER_BIT); |
---|
7631 | | - for (jitter = 0; jitter < ACSIZE; jitter++) //, GraphreeD.wav.cursor += LIVE ? 735 : 0) |
---|
| 7636 | + for (jitter = 0; jitter < ACSIZE; jitter++) //, GrafreeD.wav.cursor += LIVE ? 735 : 0) |
---|
7632 | 7637 | { |
---|
7633 | 7638 | framecount++; |
---|
7634 | 7639 | |
---|
7635 | 7640 | if (CameraPane.tickcount > 0) |
---|
7636 | 7641 | CameraPane.tickcount--; |
---|
7637 | 7642 | |
---|
7638 | | -// GraphreeD.wav.cursor += 735; // 44100 Hz / 120 Hz * 2 (for 16 bits) |
---|
| 7643 | +// GrafreeD.wav.cursor += 735; // 44100 Hz / 120 Hz * 2 (for 16 bits) |
---|
7639 | 7644 | // restartframe = true; |
---|
7640 | 7645 | if (options1[2] > 100 && (jitter%2==0)) |
---|
7641 | 7646 | { |
---|
.. | .. |
---|
7690 | 7695 | |
---|
7691 | 7696 | if (renderCamera != lightCamera) |
---|
7692 | 7697 | for (int count = parentcam.GetTransformCount(); --count>=0;) |
---|
7693 | | - LA.matConcat(parentcam.toParent, matrix, matrix); |
---|
| 7698 | + LA.matConcat(matrix, parentcam.toParent, matrix); |
---|
7694 | 7699 | |
---|
7695 | 7700 | // LA.matConcat(renderCamera.toScreen, renderCamera.toParent, matrix); |
---|
7696 | 7701 | |
---|
.. | .. |
---|
7706 | 7711 | |
---|
7707 | 7712 | if (renderCamera != lightCamera) |
---|
7708 | 7713 | for (int count = parentcam.GetTransformCount(); --count>=0;) |
---|
7709 | | - LA.matConcat(matrix, parentcam.fromParent, matrix); |
---|
| 7714 | + LA.matConcat(parentcam.fromParent, matrix, matrix); |
---|
7710 | 7715 | |
---|
7711 | 7716 | // LA.matConcat(renderCamera.fromParent, renderCamera.fromScreen, matrix); |
---|
7712 | 7717 | |
---|
.. | .. |
---|
7923 | 7928 | |
---|
7924 | 7929 | if (!BOXMODE) |
---|
7925 | 7930 | { |
---|
7926 | | - System.out.println("image: " + fullname + " (" + (GraphreeD.wav.cursor / 735 / 4) + ")"); |
---|
| 7931 | + System.out.println("image: " + fullname + " (wav cursor=" + (GrafreeD.wav.cursor / 735 / 4) + ")"); |
---|
7927 | 7932 | } |
---|
7928 | 7933 | |
---|
7929 | 7934 | if (!BOXMODE) |
---|
.. | .. |
---|
7951 | 7956 | { |
---|
7952 | 7957 | if (ACSIZE > 1) |
---|
7953 | 7958 | { |
---|
7954 | | - // System.err.println("image #" + (GraphreeD.wav.cursor / 735 / 4)); |
---|
| 7959 | + // System.err.println("image #" + (GrafreeD.wav.cursor / 735 / 4)); |
---|
7955 | 7960 | } |
---|
7956 | 7961 | } |
---|
7957 | 7962 | |
---|
.. | .. |
---|
7961 | 7966 | ABORTED = false; |
---|
7962 | 7967 | } |
---|
7963 | 7968 | else |
---|
7964 | | - GraphreeD.wav.cursor += 735 * ACSIZE; |
---|
| 7969 | + GrafreeD.wav.cursor += 735 * ACSIZE; |
---|
7965 | 7970 | |
---|
7966 | 7971 | if (false) |
---|
7967 | 7972 | { |
---|
.. | .. |
---|
8631 | 8636 | |
---|
8632 | 8637 | public void display(GLAutoDrawable drawable) |
---|
8633 | 8638 | { |
---|
8634 | | - if (GraphreeD.savesound && GraphreeD.hassound) |
---|
| 8639 | + if (GrafreeD.savesound && GrafreeD.hassound) |
---|
8635 | 8640 | { |
---|
8636 | | - GraphreeD.wav.save(); |
---|
8637 | | - GraphreeD.savesound = false; |
---|
8638 | | - GraphreeD.hassound = false; |
---|
| 8641 | + GrafreeD.wav.save(); |
---|
| 8642 | + GrafreeD.savesound = false; |
---|
| 8643 | + GrafreeD.hassound = false; |
---|
8639 | 8644 | } |
---|
8640 | 8645 | // if (DEBUG_SELECTION) |
---|
8641 | 8646 | // { |
---|
.. | .. |
---|
8765 | 8770 | Object3D theobject = object; |
---|
8766 | 8771 | Object3D theparent = object.parent; |
---|
8767 | 8772 | object.parent = null; |
---|
8768 | | - object = (Object3D)GraphreeD.clone(object); |
---|
| 8773 | + object = (Object3D)GrafreeD.clone(object); |
---|
8769 | 8774 | object.Stripify(); |
---|
8770 | 8775 | if (theobject.selection == null || theobject.selection.Size() == 0) |
---|
8771 | 8776 | theobject.PreprocessOcclusion(this); |
---|
.. | .. |
---|
8784 | 8789 | if (!IsFrozen()) |
---|
8785 | 8790 | { |
---|
8786 | 8791 | // dec 2012 |
---|
8787 | | - if (!(!flash && !lightMode && drawMode == DEFAULT && ANTIALIAS > 0)) |
---|
| 8792 | + if (!ambientOcclusion && !(!flash && !lightMode && drawMode == DEFAULT && ANTIALIAS > 0)) |
---|
8788 | 8793 | { |
---|
8789 | 8794 | framecount++; |
---|
8790 | 8795 | shadowbuffer.display(); |
---|
.. | .. |
---|
8912 | 8917 | // if (parentcam != renderCamera) // not a light |
---|
8913 | 8918 | if (cam != lightCamera) |
---|
8914 | 8919 | for (int count = parentcam.GetTransformCount(); --count>=0;) |
---|
8915 | | - LA.matConcat(parentcam.toParent, matrix, matrix); |
---|
| 8920 | + LA.matConcat(matrix, parentcam.toParent, matrix); |
---|
8916 | 8921 | |
---|
8917 | 8922 | for (int j = 0; j < 4; j++) |
---|
8918 | 8923 | { |
---|
.. | .. |
---|
8927 | 8932 | // if (parentcam != renderCamera) // not a light |
---|
8928 | 8933 | if (cam != lightCamera) |
---|
8929 | 8934 | for (int count = parentcam.GetTransformCount(); --count>=0;) |
---|
8930 | | - LA.matConcat(matrix, parentcam.fromParent, matrix); |
---|
| 8935 | + LA.matConcat(parentcam.fromParent, matrix, matrix); |
---|
8931 | 8936 | |
---|
8932 | 8937 | //LA.matConcat(cam.fromScreen, parentcam.fromParent, matrix); |
---|
8933 | 8938 | |
---|
.. | .. |
---|
9089 | 9094 | //gl.glFrustum(-0.5*scale, 0.5*scale, -0.5*scale, 0.5*scale, 1, 100); |
---|
9090 | 9095 | //glu.gluPerspective(lightshaper_fovy, 1, lightshaper_zNear, lightshaper_zFar); |
---|
9091 | 9096 | double scale = lightCamera.SCALE / lightCamera.Distance(); |
---|
| 9097 | +// PATCH FILLE AUX JEANS |
---|
| 9098 | + //scale *= lightCamera.shaper_fovy / 25; |
---|
9092 | 9099 | gl.glScaled(2 * scale, 2 * scale, -scale); |
---|
9093 | 9100 | gl.glTranslated(0, 0, lightCamera.DECAL); |
---|
9094 | 9101 | |
---|
.. | .. |
---|
9228 | 9235 | { |
---|
9229 | 9236 | //glu.gluPerspective(lightshaper_fovy, 1, lightshaper_zNear, lightshaper_zFar); |
---|
9230 | 9237 | double scale = lightCamera.SCALE / lightCamera.Distance(); |
---|
| 9238 | +// PATCH FILLE AUX JEANS |
---|
| 9239 | + //scale *= lightCamera.shaper_fovy / 25; |
---|
9231 | 9240 | gl.glScaled(2 * scale, 2 * scale, -scale); |
---|
9232 | 9241 | gl.glTranslated(0, 0, lightCamera.DECAL); |
---|
9233 | 9242 | //System.out.println("DECAL = " + LIGHTDECAL + "; SCALE = " + LIGHTSCALE); |
---|
.. | .. |
---|
9379 | 9388 | |
---|
9380 | 9389 | gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 63, options2, 0); |
---|
9381 | 9390 | gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 62, options3, 0); |
---|
| 9391 | + gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 61, options4, 0); |
---|
9382 | 9392 | |
---|
9383 | 9393 | options2[0] *= renderCamera.Distance(); |
---|
9384 | 9394 | |
---|
.. | .. |
---|
9660 | 9670 | e.printStackTrace(); |
---|
9661 | 9671 | } |
---|
9662 | 9672 | |
---|
9663 | | - if (GraphreeD.RENDERME > 0) |
---|
9664 | | - GraphreeD.RENDERME--; // mechante magouille |
---|
| 9673 | + if (GrafreeD.RENDERME > 0) |
---|
| 9674 | + GrafreeD.RENDERME--; // mechante magouille |
---|
9665 | 9675 | |
---|
9666 | 9676 | ONESTEP = false; |
---|
9667 | 9677 | } |
---|
.. | .. |
---|
9734 | 9744 | BindTextures(DEFAULT_TEXTURES, 2); |
---|
9735 | 9745 | } |
---|
9736 | 9746 | //System.out.println("--> " + stackdepth); |
---|
9737 | | -// GraphreeD.traceon(); |
---|
| 9747 | +// GrafreeD.traceon(); |
---|
9738 | 9748 | |
---|
9739 | 9749 | // DRAW |
---|
9740 | 9750 | object.draw(this, /*(Composite)*/ object, false, false); |
---|
.. | .. |
---|
9750 | 9760 | selectedpoint.radius = radius; |
---|
9751 | 9761 | selectedpoint.recalculate(); |
---|
9752 | 9762 | selectedpoint.material = new cMaterial(); |
---|
9753 | | - selectedpoint.material.color = 0.25f; |
---|
| 9763 | + selectedpoint.material.color = 0.15f; // Yellow |
---|
9754 | 9764 | selectedpoint.material.modulation = 0.75f; |
---|
9755 | 9765 | |
---|
9756 | | - debugpoint.radius = radius; |
---|
9757 | | - debugpoint.recalculate(); |
---|
9758 | | - debugpoint.material = new cMaterial(); |
---|
9759 | | - debugpoint.material.color = 0.25f; |
---|
9760 | | - debugpoint.material.modulation = 0.75f; |
---|
| 9766 | + debugpointG.radius = radius; |
---|
| 9767 | + debugpointG.recalculate(); |
---|
| 9768 | + debugpointG.material = new cMaterial(); |
---|
| 9769 | + debugpointG.material.color = 0.25f; // Green |
---|
| 9770 | + debugpointG.material.modulation = 0.75f; |
---|
9761 | 9771 | |
---|
9762 | | - debugpoint2.radius = radius; |
---|
9763 | | - debugpoint2.recalculate(); |
---|
9764 | | - debugpoint2.material = new cMaterial(); |
---|
9765 | | - debugpoint2.material.color = 0.75f; |
---|
9766 | | - debugpoint2.material.modulation = 0.75f; |
---|
| 9772 | + debugpointP.radius = radius; |
---|
| 9773 | + debugpointP.recalculate(); |
---|
| 9774 | + debugpointP.material = new cMaterial(); |
---|
| 9775 | + debugpointP.material.color = 0.75f; // Purple |
---|
| 9776 | + debugpointP.material.modulation = 0.75f; |
---|
| 9777 | + |
---|
| 9778 | + debugpointC.radius = radius; |
---|
| 9779 | + debugpointC.recalculate(); |
---|
| 9780 | + debugpointC.material = new cMaterial(); |
---|
| 9781 | + debugpointC.material.color = 0.5f; // Cyan |
---|
| 9782 | + debugpointC.material.modulation = 0.75f; |
---|
| 9783 | + |
---|
| 9784 | + debugpointR.radius = radius; |
---|
| 9785 | + debugpointR.recalculate(); |
---|
| 9786 | + debugpointR.material = new cMaterial(); |
---|
| 9787 | + debugpointR.material.color = 0f; // Red |
---|
| 9788 | + debugpointR.material.modulation = 0.75f; |
---|
9767 | 9789 | |
---|
9768 | 9790 | InitPoints(radius); |
---|
9769 | 9791 | } |
---|
9770 | 9792 | selectedpoint.draw(this, /*(Composite)*/ null, false, false); |
---|
9771 | | - //debugpoint.draw(this, /*(Composite)*/ null, false); |
---|
9772 | | - //debugpoint2.draw(this, /*(Composite)*/ null, false); |
---|
9773 | | - DrawPoints(this); |
---|
| 9793 | + debugpointG.draw(this, /*(Composite)*/ null, false,false); |
---|
| 9794 | + debugpointP.draw(this, /*(Composite)*/ null, false,false); |
---|
| 9795 | + debugpointC.draw(this, /*(Composite)*/ null, false,false); |
---|
| 9796 | + debugpointR.draw(this, /*(Composite)*/ null, false,false); |
---|
| 9797 | + // DrawPoints(this); |
---|
9774 | 9798 | } |
---|
9775 | 9799 | |
---|
9776 | 9800 | // debugstuff.draw(this, /*(Composite)*/ null, false); |
---|
9777 | 9801 | } |
---|
9778 | | -// GraphreeD.traceoff(); |
---|
| 9802 | +// GrafreeD.traceoff(); |
---|
9779 | 9803 | //System.out.println(stackdepth); |
---|
9780 | 9804 | if (drawMode == 0) |
---|
9781 | 9805 | { |
---|
.. | .. |
---|
9807 | 9831 | |
---|
9808 | 9832 | if (checker != null && drawMode == DEFAULT) |
---|
9809 | 9833 | { |
---|
9810 | | - // BindTexture(IMMORTAL_TEXTURE); |
---|
| 9834 | + //BindTexture(IMMORTAL_TEXTURE); |
---|
| 9835 | + BindTextures(checker.GetTextures(), checker.texres); |
---|
9811 | 9836 | // NEAREST |
---|
9812 | 9837 | GetGL().glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); // GL.GL_LINEAR); |
---|
9813 | 9838 | DrawChecker(gl); |
---|
9814 | 9839 | //checker.Draw(this, null, false); |
---|
9815 | 9840 | // ReleaseTexture(IMMORTAL_TEXTURE); |
---|
| 9841 | + ReleaseTextures(checker.GetTextures()); |
---|
9816 | 9842 | } |
---|
9817 | 9843 | |
---|
9818 | 9844 | if (object.parent != null) |
---|
.. | .. |
---|
10343 | 10369 | "PARAM params6 = program.env[6];" + // bump, noise, borderfade, fog punchthrough |
---|
10344 | 10370 | "PARAM params7 = program.env[7];" + // noise power, opacity power |
---|
10345 | 10371 | "PARAM options0 = program.env[63];" + // fog density, intensity, elevation |
---|
10346 | | - "PARAM options1 = program.env[62];" + // fog rgb color, image intensity |
---|
| 10372 | + "PARAM options1 = program.env[62];" + // fog rgb color |
---|
| 10373 | + "PARAM options2 = program.env[61];" + // image intensity, subsurface, lightsheen |
---|
10347 | 10374 | "PARAM pointlight = program.env[127];" + // ... |
---|
10348 | 10375 | "PARAM zero = { 0.0, 0.0, 0.0, 0.0 };" + |
---|
10349 | 10376 | "PARAM halfhalf = { 0.25, 0.25, 0.25, 1.0 };" + |
---|
10350 | 10377 | "PARAM half = { 0.5, 0.5, 0.5, 1.0 };" + |
---|
| 10378 | + "PARAM threequarter = { 0.75, 0.75, 0.75, 1.0 };" + |
---|
10351 | 10379 | "PARAM two = { 2.0, 2.0, 2.0, 1.0 };" + |
---|
10352 | 10380 | "PARAM ten = { 10, 10, 10, 1.0 };" + |
---|
10353 | 10381 | "PARAM one3rd = { 0.5, 0.33333333333, 0.333333333, 1.0 };" + |
---|
.. | .. |
---|
10368 | 10396 | "PARAM lodbias = { 10,10,10,10 };" + // 20, -2, -20, 1.0 };" + |
---|
10369 | 10397 | "PARAM infinity = { 100000000, 100000000, 100000000, 1.0 };" + |
---|
10370 | 10398 | "PARAM one2048th = { 0.00048828125, 0.00048828125, 0.00048828125, 1.0 };" + |
---|
| 10399 | + "PARAM ninetenth = { 0.9, 0.9, 0.9, 1.0 };" + |
---|
10371 | 10400 | "PARAM almostone = { 0.999, 0.999, 0.999, 1.0 };" + |
---|
10372 | 10401 | "PARAM c256 = { 256, 256, 256, 1.0 };" + |
---|
10373 | 10402 | "PARAM c256i = { 0.00390625, 0.00390625, 0.00390625, 1.0 };" + |
---|
.. | .. |
---|
10408 | 10437 | "TEMP R1;" + |
---|
10409 | 10438 | "TEMP R2;" + |
---|
10410 | 10439 | "TEMP R3;" + |
---|
| 10440 | + "TEMP min;" + |
---|
| 10441 | + "TEMP max;" + |
---|
| 10442 | + "TEMP average;" + |
---|
| 10443 | + "TEMP saturation;" + |
---|
10411 | 10444 | "TEMP keep1;" + |
---|
10412 | 10445 | "TEMP keep2;" + |
---|
10413 | 10446 | "TEMP keep3;" + |
---|
.. | .. |
---|
10938 | 10971 | |
---|
10939 | 10972 | // skin? |
---|
10940 | 10973 | // Saturation for skin |
---|
10941 | | - /**/ // c'est ici |
---|
10942 | | - (Skinshader? "DP3 temp.x, final,one;" + |
---|
| 10974 | + /**/ |
---|
| 10975 | + (Skinshader? |
---|
| 10976 | + "DP3 average.x, final,one;" + |
---|
| 10977 | + "MUL average, one3rd.xxxx,average.xxxx;" + |
---|
| 10978 | + |
---|
| 10979 | + "MIN min.x, final.x,final.y;" + |
---|
| 10980 | + "MIN min.x, min.x,final.z;" + |
---|
| 10981 | + |
---|
| 10982 | + "MAX max.x, final.x,final.y;" + |
---|
| 10983 | + "MAX max.x, max.x,final.z;" + |
---|
| 10984 | + "MOV max, max.xxxx;" + |
---|
| 10985 | + |
---|
| 10986 | + "SUB saturation, max, final;" + |
---|
| 10987 | + |
---|
| 10988 | + "ADD temp.x, max.x, one10th.x;" + |
---|
| 10989 | + "RCP temp.x, temp.x;" + |
---|
| 10990 | + "MUL temp.x, temp.x, half.x;" + |
---|
| 10991 | + "MUL saturation, saturation, temp.xxxx;" + |
---|
| 10992 | + |
---|
| 10993 | + "DP3 ndotl.x, normald, light;" + |
---|
| 10994 | + "MAX ndotl.x, ndotl.x, -ndotl.x;" + |
---|
| 10995 | + |
---|
| 10996 | + "SUB temp.x, one.x, ndotl.x;" + |
---|
| 10997 | + "ADD temp.x, temp.x, options2.z;" + // lightsheen |
---|
| 10998 | + "ADD temp.y, one.y, options2.y;" + // sursurface |
---|
| 10999 | + "MUL temp.x, temp.x, temp.y;" + |
---|
| 11000 | + |
---|
| 11001 | + "MUL saturation, saturation, temp.xxxx;" + |
---|
| 11002 | + "SUB_SAT temp, max, saturation;" + |
---|
| 11003 | +/** |
---|
| 11004 | + "DP3 temp.x, final,one;" + |
---|
10943 | 11005 | "MUL R2, one3rd.xxxx,temp.xxxx;" + |
---|
10944 | | - "SUB temp, final,R2;" + |
---|
| 11006 | + "SUB temp, final, R2;" + |
---|
| 11007 | + |
---|
10945 | 11008 | // using light angle |
---|
10946 | 11009 | "DP3 ndotl.x, normald,light;" + |
---|
10947 | 11010 | //"SLT ndotl.y, ndotl.x, zero.x;" + |
---|
.. | .. |
---|
10954 | 11017 | // using light intensity |
---|
10955 | 11018 | "MOV ndotl.z, R2.x;" + |
---|
10956 | 11019 | "MUL ndotl.z, ndotl.z, ndotl.z;" + // tuning... |
---|
10957 | | - |
---|
10958 | 11020 | // june 2014 |
---|
10959 | 11021 | "MAD R1.x, ndotl.z,slope.y,one.x;" + |
---|
10960 | 11022 | // "SUB ndotl.x, one.x, ndotl.x;" + |
---|
.. | .. |
---|
10966 | 11028 | //"MUL R2.y, shadow.x,R2.y;" + // avril 2014 |
---|
10967 | 11029 | |
---|
10968 | 11030 | "MAD temp.x, R2.y, ndotl.y, temp.x;" + // red shift (skin) |
---|
| 11031 | +/**/ |
---|
10969 | 11032 | |
---|
10970 | 11033 | // "ADD final, R2,temp;" + |
---|
10971 | 11034 | "MOV final, temp;" |
---|
.. | .. |
---|
11055 | 11118 | /**/ |
---|
11056 | 11119 | // HDR |
---|
11057 | 11120 | "MOV temp.z, final.a;" + |
---|
11058 | | - "MUL final, final,options1.w;" + |
---|
| 11121 | + "MUL final, final,options2.x;" + |
---|
11059 | 11122 | "MOV final.a, temp.z;" + |
---|
11060 | 11123 | /**/ |
---|
11061 | 11124 | |
---|
.. | .. |
---|
11092 | 11155 | "MOV final.z, zero.x;" + |
---|
11093 | 11156 | "MOV final.a, one.w;":"" |
---|
11094 | 11157 | ) + |
---|
| 11158 | + /* |
---|
11095 | 11159 | (NORMALdebug?"MOV final.x, normal.x;" + |
---|
11096 | 11160 | "MOV final.y, normal.y;" + |
---|
11097 | 11161 | "MOV final.z, normal.z;" + |
---|
11098 | 11162 | "MOV final.a, one.w;":"" |
---|
| 11163 | + ) + |
---|
| 11164 | + */ |
---|
| 11165 | + (NORMALdebug?"SUB final.x, one.x, final.x;" + |
---|
| 11166 | + "SUB final.y, one.x, final.y;" + |
---|
| 11167 | + "SUB final.z, one.x, final.z;" + |
---|
| 11168 | + "MOV final.a, final.a;":"" |
---|
11099 | 11169 | ) + |
---|
11100 | 11170 | // "MOV final, bumpmap;" + |
---|
11101 | 11171 | "MOV result.color, final;" + |
---|
.. | .. |
---|
11241 | 11311 | String Shadow(String depth, String shadow) |
---|
11242 | 11312 | { |
---|
11243 | 11313 | return "MAX temp.x, ndotl.x, one64th.x;" + |
---|
| 11314 | + "MIN temp.x, temp.x, ninetenth.x;" + |
---|
11244 | 11315 | /**/ |
---|
11245 | 11316 | // Sine |
---|
11246 | 11317 | "MUL temp.y, temp.x, temp.x;" + |
---|
.. | .. |
---|
12793 | 12864 | { |
---|
12794 | 12865 | mouseMode |= ZOOM; |
---|
12795 | 12866 | } |
---|
12796 | | - if ((modifiers & META) == META) |
---|
| 12867 | + |
---|
| 12868 | + boolean capsLocked = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK); |
---|
| 12869 | + if (capsLocked || (modifiers & META) == META) |
---|
12797 | 12870 | { |
---|
12798 | 12871 | mouseMode |= VR; // BACKFORTH; |
---|
12799 | 12872 | } |
---|
.. | .. |
---|
12807 | 12880 | } |
---|
12808 | 12881 | if ((modifiers & SHIFT) == SHIFT || forcetranslate) |
---|
12809 | 12882 | { |
---|
| 12883 | + mouseMode &= ~VR; |
---|
12810 | 12884 | mouseMode |= TRANSLATE; |
---|
12811 | 12885 | } |
---|
12812 | 12886 | // if ((modifiers & SHIFT_META) == SHIFT_META) |
---|
.. | .. |
---|
13196 | 13270 | FlipTransform(); |
---|
13197 | 13271 | break; |
---|
13198 | 13272 | case ENTER: |
---|
13199 | | - object.editWindow.ScreenFit(); // Edit(); |
---|
| 13273 | + // object.editWindow.ScreenFit(); // Edit(); |
---|
| 13274 | + ToggleLive(); |
---|
13200 | 13275 | break; |
---|
13201 | 13276 | case DELETE: |
---|
13202 | 13277 | ClearSelection(); |
---|
.. | .. |
---|
14373 | 14448 | gl.glPushAttrib(GL.GL_ALL_ATTRIB_BITS); |
---|
14374 | 14449 | gl.glPushMatrix(); |
---|
14375 | 14450 | gl.glLoadIdentity(); |
---|
14376 | | - PushMatrix(checker.toParent); |
---|
| 14451 | + //PushMatrix(checker.toParent); |
---|
14377 | 14452 | |
---|
14378 | 14453 | gl.glMatrixMode(GL.GL_TEXTURE); |
---|
14379 | 14454 | gl.glPushMatrix(); |
---|
.. | .. |
---|
14396 | 14471 | |
---|
14397 | 14472 | gl.glNormal3f(0.0f, 0.0f, 1.0f); |
---|
14398 | 14473 | |
---|
14399 | | - float step = 0.1666f; //0.25f; |
---|
14400 | | - float stepv = step * 1652 / 998; |
---|
| 14474 | + float step = 2; // 0.1666f; //0.25f; |
---|
| 14475 | + float stepv = 2; // step * 1652 / 998; |
---|
14401 | 14476 | |
---|
14402 | 14477 | int i0 = 0; |
---|
14403 | 14478 | /* |
---|
.. | .. |
---|
14467 | 14542 | |
---|
14468 | 14543 | //float u = (i+1)/2; |
---|
14469 | 14544 | //float v = (j+1)/2; |
---|
14470 | | - gl.glTexCoord2f((i + 1) / 2, (j + 1) / 2); // (1,0) // (i+1+step)/2,(j+1)/2); |
---|
| 14545 | + if (checker.flipV) |
---|
| 14546 | + gl.glTexCoord2f((i + 1) / 2, 1 - (j + 1) / 2); |
---|
| 14547 | + else |
---|
| 14548 | + gl.glTexCoord2f((i + 1) / 2, (j + 1) / 2); // (1,0) // (i+1+step)/2,(j+1)/2); |
---|
14471 | 14549 | gl.glVertex3f(i, j, -0.5f); |
---|
14472 | 14550 | |
---|
| 14551 | + if (checker.flipV) |
---|
| 14552 | + gl.glTexCoord2f((i + 1 + step) / 2, 1 - (j + 1) / 2); // (1,1) // (i+1+step)/2,(j+1+step)/2); |
---|
| 14553 | + else |
---|
14473 | 14554 | gl.glTexCoord2f((i + 1 + step) / 2, (j + 1) / 2); // (1,1) // (i+1+step)/2,(j+1+step)/2); |
---|
14474 | 14555 | gl.glVertex3f(i + step, j, -0.5f); |
---|
14475 | 14556 | |
---|
| 14557 | + if (checker.flipV) |
---|
| 14558 | + gl.glTexCoord2f((i + 1 + step) / 2, 1 - (j + 1 + stepv) / 2); // (0,1) //(i+1)/2,(j+1+step)/2); |
---|
| 14559 | + else |
---|
14476 | 14560 | gl.glTexCoord2f((i + 1 + step) / 2, (j + 1 + stepv) / 2); // (0,1) //(i+1)/2,(j+1+step)/2); |
---|
14477 | 14561 | gl.glVertex3f(i + step, j + stepv, -0.5f); |
---|
14478 | 14562 | |
---|
| 14563 | + if (checker.flipV) |
---|
| 14564 | + gl.glTexCoord2f((i + 1) / 2, 1 - (j + 1 + stepv) / 2); // (0,0) //(i+1)/2,(j+1)/2); |
---|
| 14565 | + else |
---|
14479 | 14566 | gl.glTexCoord2f((i + 1) / 2, (j + 1 + stepv) / 2); // (0,0) //(i+1)/2,(j+1)/2); |
---|
14480 | 14567 | gl.glVertex3f(i, j + stepv, -0.5f); |
---|
14481 | 14568 | } |
---|
.. | .. |
---|
14487 | 14574 | gl.glMatrixMode(GL.GL_PROJECTION); |
---|
14488 | 14575 | gl.glPopMatrix(); |
---|
14489 | 14576 | gl.glMatrixMode(GL.GL_MODELVIEW); |
---|
14490 | | - PopMatrix(null); // checker.toParent); // null); |
---|
| 14577 | + //PopMatrix(null); // checker.toParent); // null); |
---|
14491 | 14578 | gl.glPopMatrix(); |
---|
14492 | 14579 | PopTextureMatrix(checker.toParent); |
---|
14493 | 14580 | gl.glMatrixMode(GL.GL_TEXTURE); |
---|
.. | .. |
---|
14657 | 14744 | // System.err.println("view = " + view[8] + " " + view[9] + " " + view[10] + " " + view[11]); |
---|
14658 | 14745 | // System.err.println("view = " + view[12] + " " + view[13] + " " + view[14] + " " + view[15]); |
---|
14659 | 14746 | |
---|
| 14747 | + // Will fit the mesh !!! |
---|
| 14748 | + selectedpoint.toParent[0][0] = 0.0001; |
---|
| 14749 | + selectedpoint.toParent[1][1] = 0.0001; |
---|
| 14750 | + selectedpoint.toParent[2][2] = 0.0001; |
---|
| 14751 | + |
---|
14660 | 14752 | glu.gluUnProject(x,y,depth,view,0,tempmat2,0,viewport,0,selectedpoint.toParent[3],0); |
---|
14661 | 14753 | |
---|
14662 | 14754 | // if (object.selection != null && object.selection.Size() > 0) |
---|
.. | .. |
---|
14700 | 14792 | System.out.println("; fromto " + sel + " " + Trunk(previousselectedpoint.toParent[3][0]) + " " + Trunk(previousselectedpoint.toParent[3][2]) + " " + Trunk(selectedpoint.toParent[3][0]) + " " + Trunk(selectedpoint.toParent[3][2])); |
---|
14701 | 14793 | } |
---|
14702 | 14794 | |
---|
14703 | | - previousselectedpoint = (Sphere) GraphreeD.clone(selectedpoint); |
---|
| 14795 | + previousselectedpoint = (Sphere) GrafreeD.clone(selectedpoint); |
---|
14704 | 14796 | } |
---|
14705 | 14797 | } |
---|
14706 | 14798 | |
---|
14707 | 14799 | if (!movingcamera && !PAINTMODE) |
---|
14708 | 14800 | object.editWindow.ScreenFitPoint(); // fev 2014 |
---|
14709 | 14801 | |
---|
14710 | | - if (PAINTMODE && GraphreeD.clipboard.size() == 1) // object.editWindow.copy.selection.Size() > 0) |
---|
| 14802 | + if (PAINTMODE && GrafreeD.clipboard.size() == 1) // object.editWindow.copy.selection.Size() > 0) |
---|
14711 | 14803 | { |
---|
14712 | | - Object3D paintobj = GraphreeD.clipboard.get(0); // object.editWindow.copy.selection.elementAt(0); |
---|
| 14804 | + Object3D paintobj = GrafreeD.clipboard.get(0); // object.editWindow.copy.selection.elementAt(0); |
---|
14713 | 14805 | |
---|
14714 | 14806 | Object3D group = new Object3D("inst" + paintcount++); |
---|
14715 | 14807 | |
---|
.. | .. |
---|
15045 | 15137 | gl.glFlush(); |
---|
15046 | 15138 | |
---|
15047 | 15139 | /**/ |
---|
15048 | | - gl.glReadPixels(0, 0, OCCLUSION_SIZE, OCCLUSION_SIZE, GL.GL_BGRA, GL.GL_UNSIGNED_INT_8_8_8_8_REV, occlusionsizebuffer); |
---|
| 15140 | + gl.glReadPixels(0, 0, OCCLUSION_SIZE, OCCLUSION_SIZE, GL.GL_DEPTH_COMPONENT, GL.GL_FLOAT, occlusionsizebuffer); |
---|
15049 | 15141 | |
---|
15050 | | - int[] pixels = occlusionsizebuffer.array(); |
---|
| 15142 | + float[] pixels = occlusionsizebuffer.array(); |
---|
15051 | 15143 | |
---|
15052 | 15144 | double r = 0, g = 0, b = 0; |
---|
15053 | 15145 | |
---|
15054 | 15146 | double count = 0; |
---|
| 15147 | + |
---|
| 15148 | + gl.glGetDoublev(gl.GL_PROJECTION_MATRIX, tempmat2, 0); |
---|
| 15149 | + |
---|
| 15150 | + float mindepth = 1; |
---|
| 15151 | + |
---|
| 15152 | + double FACTOR = 1; |
---|
15055 | 15153 | |
---|
15056 | 15154 | for (int i = 0; i < pixels.length; i++) |
---|
15057 | 15155 | { |
---|
.. | .. |
---|
15136 | 15234 | |
---|
15137 | 15235 | double scale = ray.z; // 1; // cos |
---|
15138 | 15236 | |
---|
15139 | | - int p = pixels[newindex]; |
---|
| 15237 | + float depth = pixels[newindex]; |
---|
15140 | 15238 | |
---|
15141 | 15239 | /* |
---|
15142 | 15240 | int newindex2 = (x + 1) * OCCLUSION_SIZE + y; |
---|
.. | .. |
---|
15160 | 15258 | scale = (1 - modu) * modv; |
---|
15161 | 15259 | */ |
---|
15162 | 15260 | |
---|
15163 | | - r += ((p >> 16) & 0xFF) * scale / 255; |
---|
15164 | | - g += ((p >> 8) & 0xFF) * scale / 255; |
---|
15165 | | - b += (p & 0xFF) * scale / 255; |
---|
| 15261 | + //r += ((p >> 16) & 0xFF) * scale / 255; |
---|
| 15262 | + //g += ((p >> 8) & 0xFF) * scale / 255; |
---|
| 15263 | + //b += (p & 0xFF) * scale / 255; |
---|
| 15264 | + |
---|
| 15265 | + if (mindepth > depth) |
---|
| 15266 | + { |
---|
| 15267 | + mindepth = depth; |
---|
| 15268 | + } |
---|
15166 | 15269 | |
---|
| 15270 | + double z_eye = tempmat2[3*4 + 2] / (depth * -2.0 + 1.0 - tempmat2[2*4 + 2]); |
---|
| 15271 | + |
---|
| 15272 | + double factor = 1 - Math.exp(-z_eye * z_eye / FACTOR); |
---|
| 15273 | + |
---|
| 15274 | + r += factor * scale; |
---|
| 15275 | + g += factor * scale; |
---|
| 15276 | + b += factor * scale; |
---|
| 15277 | + |
---|
15167 | 15278 | count += scale; |
---|
15168 | 15279 | } |
---|
15169 | 15280 | |
---|
.. | .. |
---|
15279 | 15390 | int AAbuffersize = 0; |
---|
15280 | 15391 | |
---|
15281 | 15392 | //double[] selectedpoint = new double[3]; |
---|
15282 | | - static Sphere selectedpoint = new Sphere(); |
---|
| 15393 | + static Superellipsoid selectedpoint = new Superellipsoid(); |
---|
15283 | 15394 | static Sphere previousselectedpoint = null; |
---|
15284 | | - static Sphere debugpoint = new Sphere(); |
---|
15285 | | - static Sphere debugpoint2 = new Sphere(); |
---|
| 15395 | + static Sphere debugpointG = new Sphere(); |
---|
| 15396 | + static Sphere debugpointP = new Sphere(); |
---|
| 15397 | + static Sphere debugpointC = new Sphere(); |
---|
| 15398 | + static Sphere debugpointR = new Sphere(); |
---|
15286 | 15399 | |
---|
15287 | 15400 | static Sphere debugpoints[] = new Sphere[8]; |
---|
15288 | 15401 | |
---|
.. | .. |
---|
15335 | 15448 | static IntBuffer texturesizebuffer = IntBuffer.allocate(TEX_SIZE * TEX_SIZE); |
---|
15336 | 15449 | static IntBuffer selectsizebuffer = IntBuffer.allocate(SELECT_SIZE * SELECT_SIZE); |
---|
15337 | 15450 | static java.nio.FloatBuffer pointselectsizebuffer = java.nio.FloatBuffer.allocate(SELECT_SIZE * SELECT_SIZE); |
---|
15338 | | - static IntBuffer occlusionsizebuffer = IntBuffer.allocate(OCCLUSION_SIZE * OCCLUSION_SIZE); |
---|
| 15451 | + //static IntBuffer occlusionsizebuffer = IntBuffer.allocate(OCCLUSION_SIZE * OCCLUSION_SIZE); |
---|
| 15452 | + static java.nio.FloatBuffer occlusionsizebuffer = java.nio.FloatBuffer.allocate(OCCLUSION_SIZE * OCCLUSION_SIZE); |
---|
15339 | 15453 | static BufferedImage bufimage = new BufferedImage(TEX_SIZE, TEX_SIZE, BufferedImage.TYPE_INT_RGB); |
---|
15340 | 15454 | static BufferedImage textest = new cBufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB); |
---|
15341 | 15455 | static java.util.Vector<BufferedImage> billboards = new java.util.Vector<BufferedImage>(); |
---|