Normand Briere
2018-12-15 6ed65dcb597fb2153cef75bf1845978f1115658c
CameraPane.java
....@@ -228,7 +228,7 @@
228228 void PushMatrix(double[][] matrix, int count)
229229 {
230230 matrixdepth++;
231
- // GraphreeD.tracein(matrix);
231
+ // GrafreeD.tracein(matrix);
232232 if (matrix == null)
233233 return; // Identity
234234
....@@ -253,13 +253,13 @@
253253
254254 void PushMatrix(double[][] matrix)
255255 {
256
- // GraphreeD.tracein(matrix);
256
+ // GrafreeD.tracein(matrix);
257257 PushMatrix(matrix,1);
258258 }
259259
260260 void PushMatrix()
261261 {
262
- // GraphreeD.tracein(null);
262
+ // GrafreeD.tracein(null);
263263 if (matrixdepth++ < MAXSTACK - 1)
264264 {
265265 currentGL.glPushMatrix();
....@@ -274,7 +274,7 @@
274274 {
275275 --matrixdepth;
276276
277
- // GraphreeD.traceout(inverse);
277
+ // GrafreeD.traceout(inverse);
278278 if (inverse == null)
279279 return; // Identity
280280
....@@ -292,7 +292,7 @@
292292
293293 void PopMatrix()
294294 {
295
- // GraphreeD.traceout(null);
295
+ // GrafreeD.traceout(null);
296296 // inverse == null??
297297 if (--matrixdepth < MAXSTACK - 1)
298298 {
....@@ -491,7 +491,7 @@
491491 System.err.println("LIVE = " + isLIVE());
492492
493493 if (!isLIVE()) // save sound
494
- GraphreeD.savesound = true; // wav.save();
494
+ GrafreeD.savesound = true; // wav.save();
495495 // else
496496 repaint(); // start loop // may 2013
497497 }
....@@ -768,6 +768,8 @@
768768 class CacheTexture
769769 {
770770 com.sun.opengl.util.texture.Texture texture;
771
+ com.sun.opengl.util.texture.TextureData texturedata;
772
+
771773 int resolution;
772774
773775 CacheTexture(com.sun.opengl.util.texture.Texture tex, int res)
....@@ -1998,10 +2000,12 @@
19982000 */
19992001 TextureData ReduceTexture(TextureData texturedata, int resolution) // String name)
20002002 {
2003
+ int pixelformat = texturedata.getPixelFormat();
2004
+
20012005 int stride = 1;
2002
- 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)
20032007 stride = 3;
2004
- 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)
20052009 stride = 4;
20062010
20072011 int width = texturedata.getWidth();
....@@ -6331,7 +6335,7 @@
63316335 {
63326336 bumpdepth--;
63336337
6334
- // GraphreeD.trace("POP " + tex + "(" + pigmentdepth + ")" + " : " + pigmentstack[pigmentdepth] + " vs " + texture);
6338
+ // GrafreeD.trace("POP " + tex + "(" + pigmentdepth + ")" + " : " + pigmentstack[pigmentdepth] + " vs " + texture);
63356339 if (bumpstack[bumpdepth] != (texture!=null?texture.texture:null))
63366340 {
63376341 // assert (bumpstack[bumpdepth] == texture);
....@@ -6361,7 +6365,7 @@
63616365 {
63626366 pigmentdepth--;
63636367
6364
- // GraphreeD.trace("POP " + tex + "(" + pigmentdepth + ")" + " : " + pigmentstack[pigmentdepth] + " vs " + texture);
6368
+ // GrafreeD.trace("POP " + tex + "(" + pigmentdepth + ")" + " : " + pigmentstack[pigmentdepth] + " vs " + texture);
63656369 if (pigmentstack[pigmentdepth] != (texture!=null?texture.texture:null))
63666370 {
63676371 // assert (pigmentstack[pigmentdepth] == texture);
....@@ -6451,7 +6455,7 @@
64516455 return; // true;
64526456 }
64536457
6454
- com.sun.opengl.util.texture.Texture GetTexture(String tex, boolean bump, int resolution)
6458
+ CacheTexture GetCacheTexture(String tex, boolean bump, int resolution)
64556459 {
64566460 CacheTexture/*com.sun.opengl.util.texture.Texture*/ texture = null;
64576461
....@@ -6665,6 +6669,8 @@
66656669 thetex.texture.dispose();
66666670 textures.remove(texname);
66676671 }
6672
+
6673
+ texture.texturedata = texturedata;
66686674 textures.put(texname, texture);
66696675
66706676 // newtex = true;
....@@ -6681,18 +6687,32 @@
66816687 }
66826688 }
66836689
6690
+ return texture;
6691
+ }
6692
+
6693
+ com.sun.opengl.util.texture.Texture GetTexture(String tex, boolean bump, int resolution)
6694
+ {
6695
+ CacheTexture texture = GetCacheTexture(tex, bump, resolution);
6696
+
66846697 if (bump)
66856698 {
6686
- // GraphreeD.trace("PUSH BUMP " + tex + "(" + bumpdepth + ")" + " : " + texture);
6699
+ // GrafreeD.trace("PUSH BUMP " + tex + "(" + bumpdepth + ")" + " : " + texture);
66876700 bumpstack[bumpdepth++] = texture!=null?texture.texture:null;
66886701 }
66896702 else
66906703 {
6691
- // GraphreeD.trace("PUSH PIGMENT " + tex + "(" + pigmentdepth + ")" + " : " + texture);
6704
+ // GrafreeD.trace("PUSH PIGMENT " + tex + "(" + pigmentdepth + ")" + " : " + texture);
66926705 pigmentstack[pigmentdepth++] = texture!=null?texture.texture:null;
66936706 }
66946707
66956708 return texture!=null?texture.texture:null;
6709
+ }
6710
+
6711
+ com.sun.opengl.util.texture.TextureData GetTextureData(String tex, boolean bump, int resolution)
6712
+ {
6713
+ CacheTexture texture = GetCacheTexture(tex, bump, resolution);
6714
+
6715
+ return texture!=null?texture.texturedata:null;
66966716 }
66976717
66986718 boolean BindTexture(String tex, boolean bump, int resolution)
....@@ -7424,6 +7444,8 @@
74247444 //gl.glFrustum(-0.5*scale, 0.5*scale, -0.5*scale, 0.5*scale, 1, 100);
74257445 //glu.gluPerspective(lightshaper_fovy, 1, lightshaper_zNear, lightshaper_zFar);
74267446 double scale = lightCamera.SCALE / lightCamera.Distance();
7447
+// PATCH FILLE AUX JEANS
7448
+ //scale *= lightCamera.shaper_fovy / 25;
74277449 gl.glScaled(2 * scale, 2 * scale, -scale);
74287450 gl.glTranslated(0, 0, lightCamera.DECAL);
74297451
....@@ -7572,7 +7594,8 @@
75727594
75737595 float[] options1 = new float[]{1000, 0.00001f, 20, 0, 0}; // focus, aperture, Shadow blur, aniso, anisoV
75747596 float[] options2 = new float[]{0, 1, 0, 0}; // fog density, intensity, elevation
7575
- 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
75767599
75777600 static int imagecount = 0; // movie generation
75787601
....@@ -7610,14 +7633,14 @@
76107633
76117634 //System.out.println("start frame");
76127635 gl.glClear(gl.GL_ACCUM_BUFFER_BIT);
7613
- 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)
76147637 {
76157638 framecount++;
76167639
76177640 if (CameraPane.tickcount > 0)
76187641 CameraPane.tickcount--;
76197642
7620
-// 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)
76217644 // restartframe = true;
76227645 if (options1[2] > 100 && (jitter%2==0))
76237646 {
....@@ -7672,7 +7695,7 @@
76727695
76737696 if (renderCamera != lightCamera)
76747697 for (int count = parentcam.GetTransformCount(); --count>=0;)
7675
- LA.matConcat(parentcam.toParent, matrix, matrix);
7698
+ LA.matConcat(matrix, parentcam.toParent, matrix);
76767699
76777700 // LA.matConcat(renderCamera.toScreen, renderCamera.toParent, matrix);
76787701
....@@ -7688,7 +7711,7 @@
76887711
76897712 if (renderCamera != lightCamera)
76907713 for (int count = parentcam.GetTransformCount(); --count>=0;)
7691
- LA.matConcat(matrix, parentcam.fromParent, matrix);
7714
+ LA.matConcat(parentcam.fromParent, matrix, matrix);
76927715
76937716 // LA.matConcat(renderCamera.fromParent, renderCamera.fromScreen, matrix);
76947717
....@@ -7905,7 +7928,7 @@
79057928
79067929 if (!BOXMODE)
79077930 {
7908
- System.out.println("image: " + fullname + " (" + (GraphreeD.wav.cursor / 735 / 4) + ")");
7931
+ System.out.println("image: " + fullname + " (wav cursor=" + (GrafreeD.wav.cursor / 735 / 4) + ")");
79097932 }
79107933
79117934 if (!BOXMODE)
....@@ -7933,7 +7956,7 @@
79337956 {
79347957 if (ACSIZE > 1)
79357958 {
7936
- // System.err.println("image #" + (GraphreeD.wav.cursor / 735 / 4));
7959
+ // System.err.println("image #" + (GrafreeD.wav.cursor / 735 / 4));
79377960 }
79387961 }
79397962
....@@ -7943,7 +7966,7 @@
79437966 ABORTED = false;
79447967 }
79457968 else
7946
- GraphreeD.wav.cursor += 735 * ACSIZE;
7969
+ GrafreeD.wav.cursor += 735 * ACSIZE;
79477970
79487971 if (false)
79497972 {
....@@ -8613,11 +8636,11 @@
86138636
86148637 public void display(GLAutoDrawable drawable)
86158638 {
8616
- if (GraphreeD.savesound && GraphreeD.hassound)
8639
+ if (GrafreeD.savesound && GrafreeD.hassound)
86178640 {
8618
- GraphreeD.wav.save();
8619
- GraphreeD.savesound = false;
8620
- GraphreeD.hassound = false;
8641
+ GrafreeD.wav.save();
8642
+ GrafreeD.savesound = false;
8643
+ GrafreeD.hassound = false;
86218644 }
86228645 // if (DEBUG_SELECTION)
86238646 // {
....@@ -8747,7 +8770,7 @@
87478770 Object3D theobject = object;
87488771 Object3D theparent = object.parent;
87498772 object.parent = null;
8750
- object = (Object3D)GraphreeD.clone(object);
8773
+ object = (Object3D)GrafreeD.clone(object);
87518774 object.Stripify();
87528775 if (theobject.selection == null || theobject.selection.Size() == 0)
87538776 theobject.PreprocessOcclusion(this);
....@@ -8766,7 +8789,7 @@
87668789 if (!IsFrozen())
87678790 {
87688791 // dec 2012
8769
- if (!(!flash && !lightMode && drawMode == DEFAULT && ANTIALIAS > 0))
8792
+ if (!ambientOcclusion && !(!flash && !lightMode && drawMode == DEFAULT && ANTIALIAS > 0))
87708793 {
87718794 framecount++;
87728795 shadowbuffer.display();
....@@ -8894,7 +8917,7 @@
88948917 // if (parentcam != renderCamera) // not a light
88958918 if (cam != lightCamera)
88968919 for (int count = parentcam.GetTransformCount(); --count>=0;)
8897
- LA.matConcat(parentcam.toParent, matrix, matrix);
8920
+ LA.matConcat(matrix, parentcam.toParent, matrix);
88988921
88998922 for (int j = 0; j < 4; j++)
89008923 {
....@@ -8909,7 +8932,7 @@
89098932 // if (parentcam != renderCamera) // not a light
89108933 if (cam != lightCamera)
89118934 for (int count = parentcam.GetTransformCount(); --count>=0;)
8912
- LA.matConcat(matrix, parentcam.fromParent, matrix);
8935
+ LA.matConcat(parentcam.fromParent, matrix, matrix);
89138936
89148937 //LA.matConcat(cam.fromScreen, parentcam.fromParent, matrix);
89158938
....@@ -9071,6 +9094,8 @@
90719094 //gl.glFrustum(-0.5*scale, 0.5*scale, -0.5*scale, 0.5*scale, 1, 100);
90729095 //glu.gluPerspective(lightshaper_fovy, 1, lightshaper_zNear, lightshaper_zFar);
90739096 double scale = lightCamera.SCALE / lightCamera.Distance();
9097
+// PATCH FILLE AUX JEANS
9098
+ //scale *= lightCamera.shaper_fovy / 25;
90749099 gl.glScaled(2 * scale, 2 * scale, -scale);
90759100 gl.glTranslated(0, 0, lightCamera.DECAL);
90769101
....@@ -9210,6 +9235,8 @@
92109235 {
92119236 //glu.gluPerspective(lightshaper_fovy, 1, lightshaper_zNear, lightshaper_zFar);
92129237 double scale = lightCamera.SCALE / lightCamera.Distance();
9238
+// PATCH FILLE AUX JEANS
9239
+ //scale *= lightCamera.shaper_fovy / 25;
92139240 gl.glScaled(2 * scale, 2 * scale, -scale);
92149241 gl.glTranslated(0, 0, lightCamera.DECAL);
92159242 //System.out.println("DECAL = " + LIGHTDECAL + "; SCALE = " + LIGHTSCALE);
....@@ -9361,6 +9388,7 @@
93619388
93629389 gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 63, options2, 0);
93639390 gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 62, options3, 0);
9391
+ gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 61, options4, 0);
93649392
93659393 options2[0] *= renderCamera.Distance();
93669394
....@@ -9642,8 +9670,8 @@
96429670 e.printStackTrace();
96439671 }
96449672
9645
- if (GraphreeD.RENDERME > 0)
9646
- GraphreeD.RENDERME--; // mechante magouille
9673
+ if (GrafreeD.RENDERME > 0)
9674
+ GrafreeD.RENDERME--; // mechante magouille
96479675
96489676 ONESTEP = false;
96499677 }
....@@ -9716,7 +9744,7 @@
97169744 BindTextures(DEFAULT_TEXTURES, 2);
97179745 }
97189746 //System.out.println("--> " + stackdepth);
9719
-// GraphreeD.traceon();
9747
+// GrafreeD.traceon();
97209748
97219749 // DRAW
97229750 object.draw(this, /*(Composite)*/ object, false, false);
....@@ -9732,32 +9760,46 @@
97329760 selectedpoint.radius = radius;
97339761 selectedpoint.recalculate();
97349762 selectedpoint.material = new cMaterial();
9735
- selectedpoint.material.color = 0.25f;
9763
+ selectedpoint.material.color = 0.15f; // Yellow
97369764 selectedpoint.material.modulation = 0.75f;
97379765
9738
- debugpoint.radius = radius;
9739
- debugpoint.recalculate();
9740
- debugpoint.material = new cMaterial();
9741
- debugpoint.material.color = 0.25f;
9742
- 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;
97439771
9744
- debugpoint2.radius = radius;
9745
- debugpoint2.recalculate();
9746
- debugpoint2.material = new cMaterial();
9747
- debugpoint2.material.color = 0.75f;
9748
- 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;
97499789
97509790 InitPoints(radius);
97519791 }
97529792 selectedpoint.draw(this, /*(Composite)*/ null, false, false);
9753
- //debugpoint.draw(this, /*(Composite)*/ null, false);
9754
- //debugpoint2.draw(this, /*(Composite)*/ null, false);
9755
- 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);
97569798 }
97579799
97589800 // debugstuff.draw(this, /*(Composite)*/ null, false);
97599801 }
9760
-// GraphreeD.traceoff();
9802
+// GrafreeD.traceoff();
97619803 //System.out.println(stackdepth);
97629804 if (drawMode == 0)
97639805 {
....@@ -9789,12 +9831,14 @@
97899831
97909832 if (checker != null && drawMode == DEFAULT)
97919833 {
9792
- // BindTexture(IMMORTAL_TEXTURE);
9834
+ //BindTexture(IMMORTAL_TEXTURE);
9835
+ BindTextures(checker.GetTextures(), checker.texres);
97939836 // NEAREST
97949837 GetGL().glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); // GL.GL_LINEAR);
97959838 DrawChecker(gl);
97969839 //checker.Draw(this, null, false);
97979840 // ReleaseTexture(IMMORTAL_TEXTURE);
9841
+ ReleaseTextures(checker.GetTextures());
97989842 }
97999843
98009844 if (object.parent != null)
....@@ -10253,7 +10297,7 @@
1025310297 return;
1025410298 }
1025510299
10256
- if (obj instanceof CheckerIG)
10300
+ if (obj instanceof Checker)
1025710301 {
1025810302 checker = obj;
1025910303
....@@ -10325,11 +10369,13 @@
1032510369 "PARAM params6 = program.env[6];" + // bump, noise, borderfade, fog punchthrough
1032610370 "PARAM params7 = program.env[7];" + // noise power, opacity power
1032710371 "PARAM options0 = program.env[63];" + // fog density, intensity, elevation
10328
- "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
1032910374 "PARAM pointlight = program.env[127];" + // ...
1033010375 "PARAM zero = { 0.0, 0.0, 0.0, 0.0 };" +
1033110376 "PARAM halfhalf = { 0.25, 0.25, 0.25, 1.0 };" +
1033210377 "PARAM half = { 0.5, 0.5, 0.5, 1.0 };" +
10378
+ "PARAM threequarter = { 0.75, 0.75, 0.75, 1.0 };" +
1033310379 "PARAM two = { 2.0, 2.0, 2.0, 1.0 };" +
1033410380 "PARAM ten = { 10, 10, 10, 1.0 };" +
1033510381 "PARAM one3rd = { 0.5, 0.33333333333, 0.333333333, 1.0 };" +
....@@ -10350,6 +10396,7 @@
1035010396 "PARAM lodbias = { 10,10,10,10 };" + // 20, -2, -20, 1.0 };" +
1035110397 "PARAM infinity = { 100000000, 100000000, 100000000, 1.0 };" +
1035210398 "PARAM one2048th = { 0.00048828125, 0.00048828125, 0.00048828125, 1.0 };" +
10399
+ "PARAM ninetenth = { 0.9, 0.9, 0.9, 1.0 };" +
1035310400 "PARAM almostone = { 0.999, 0.999, 0.999, 1.0 };" +
1035410401 "PARAM c256 = { 256, 256, 256, 1.0 };" +
1035510402 "PARAM c256i = { 0.00390625, 0.00390625, 0.00390625, 1.0 };" +
....@@ -10390,6 +10437,10 @@
1039010437 "TEMP R1;" +
1039110438 "TEMP R2;" +
1039210439 "TEMP R3;" +
10440
+ "TEMP min;" +
10441
+ "TEMP max;" +
10442
+ "TEMP average;" +
10443
+ "TEMP saturation;" +
1039310444 "TEMP keep1;" +
1039410445 "TEMP keep2;" +
1039510446 "TEMP keep3;" +
....@@ -10920,10 +10971,40 @@
1092010971
1092110972 // skin?
1092210973 // Saturation for skin
10923
- /**/ // c'est ici
10924
- (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;" +
1092511005 "MUL R2, one3rd.xxxx,temp.xxxx;" +
10926
- "SUB temp, final,R2;" +
11006
+ "SUB temp, final, R2;" +
11007
+
1092711008 // using light angle
1092811009 "DP3 ndotl.x, normald,light;" +
1092911010 //"SLT ndotl.y, ndotl.x, zero.x;" +
....@@ -10936,7 +11017,6 @@
1093611017 // using light intensity
1093711018 "MOV ndotl.z, R2.x;" +
1093811019 "MUL ndotl.z, ndotl.z, ndotl.z;" + // tuning...
10939
-
1094011020 // june 2014
1094111021 "MAD R1.x, ndotl.z,slope.y,one.x;" +
1094211022 // "SUB ndotl.x, one.x, ndotl.x;" +
....@@ -10948,6 +11028,7 @@
1094811028 //"MUL R2.y, shadow.x,R2.y;" + // avril 2014
1094911029
1095011030 "MAD temp.x, R2.y, ndotl.y, temp.x;" + // red shift (skin)
11031
+/**/
1095111032
1095211033 // "ADD final, R2,temp;" +
1095311034 "MOV final, temp;"
....@@ -11037,7 +11118,7 @@
1103711118 /**/
1103811119 // HDR
1103911120 "MOV temp.z, final.a;" +
11040
- "MUL final, final,options1.w;" +
11121
+ "MUL final, final,options2.x;" +
1104111122 "MOV final.a, temp.z;" +
1104211123 /**/
1104311124
....@@ -11074,10 +11155,17 @@
1107411155 "MOV final.z, zero.x;" +
1107511156 "MOV final.a, one.w;":""
1107611157 ) +
11158
+ /*
1107711159 (NORMALdebug?"MOV final.x, normal.x;" +
1107811160 "MOV final.y, normal.y;" +
1107911161 "MOV final.z, normal.z;" +
1108011162 "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;":""
1108111169 ) +
1108211170 // "MOV final, bumpmap;" +
1108311171 "MOV result.color, final;" +
....@@ -11223,6 +11311,7 @@
1122311311 String Shadow(String depth, String shadow)
1122411312 {
1122511313 return "MAX temp.x, ndotl.x, one64th.x;" +
11314
+ "MIN temp.x, temp.x, ninetenth.x;" +
1122611315 /**/
1122711316 // Sine
1122811317 "MUL temp.y, temp.x, temp.x;" +
....@@ -12775,7 +12864,9 @@
1277512864 {
1277612865 mouseMode |= ZOOM;
1277712866 }
12778
- if ((modifiers & META) == META)
12867
+
12868
+ boolean capsLocked = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK);
12869
+ if (capsLocked || (modifiers & META) == META)
1277912870 {
1278012871 mouseMode |= VR; // BACKFORTH;
1278112872 }
....@@ -12789,6 +12880,7 @@
1278912880 }
1279012881 if ((modifiers & SHIFT) == SHIFT || forcetranslate)
1279112882 {
12883
+ mouseMode &= ~VR;
1279212884 mouseMode |= TRANSLATE;
1279312885 }
1279412886 // if ((modifiers & SHIFT_META) == SHIFT_META)
....@@ -13178,7 +13270,8 @@
1317813270 FlipTransform();
1317913271 break;
1318013272 case ENTER:
13181
- object.editWindow.ScreenFit(); // Edit();
13273
+ // object.editWindow.ScreenFit(); // Edit();
13274
+ ToggleLive();
1318213275 break;
1318313276 case DELETE:
1318413277 ClearSelection();
....@@ -14355,7 +14448,7 @@
1435514448 gl.glPushAttrib(GL.GL_ALL_ATTRIB_BITS);
1435614449 gl.glPushMatrix();
1435714450 gl.glLoadIdentity();
14358
- PushMatrix(checker.toParent);
14451
+ //PushMatrix(checker.toParent);
1435914452
1436014453 gl.glMatrixMode(GL.GL_TEXTURE);
1436114454 gl.glPushMatrix();
....@@ -14378,8 +14471,8 @@
1437814471
1437914472 gl.glNormal3f(0.0f, 0.0f, 1.0f);
1438014473
14381
- float step = 0.1666f; //0.25f;
14382
- float stepv = step * 1652 / 998;
14474
+ float step = 2; // 0.1666f; //0.25f;
14475
+ float stepv = 2; // step * 1652 / 998;
1438314476
1438414477 int i0 = 0;
1438514478 /*
....@@ -14449,15 +14542,27 @@
1444914542
1445014543 //float u = (i+1)/2;
1445114544 //float v = (j+1)/2;
14452
- 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);
1445314549 gl.glVertex3f(i, j, -0.5f);
1445414550
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
1445514554 gl.glTexCoord2f((i + 1 + step) / 2, (j + 1) / 2); // (1,1) // (i+1+step)/2,(j+1+step)/2);
1445614555 gl.glVertex3f(i + step, j, -0.5f);
1445714556
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
1445814560 gl.glTexCoord2f((i + 1 + step) / 2, (j + 1 + stepv) / 2); // (0,1) //(i+1)/2,(j+1+step)/2);
1445914561 gl.glVertex3f(i + step, j + stepv, -0.5f);
1446014562
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
1446114566 gl.glTexCoord2f((i + 1) / 2, (j + 1 + stepv) / 2); // (0,0) //(i+1)/2,(j+1)/2);
1446214567 gl.glVertex3f(i, j + stepv, -0.5f);
1446314568 }
....@@ -14469,7 +14574,7 @@
1446914574 gl.glMatrixMode(GL.GL_PROJECTION);
1447014575 gl.glPopMatrix();
1447114576 gl.glMatrixMode(GL.GL_MODELVIEW);
14472
- PopMatrix(null); // checker.toParent); // null);
14577
+ //PopMatrix(null); // checker.toParent); // null);
1447314578 gl.glPopMatrix();
1447414579 PopTextureMatrix(checker.toParent);
1447514580 gl.glMatrixMode(GL.GL_TEXTURE);
....@@ -14639,6 +14744,11 @@
1463914744 // System.err.println("view = " + view[8] + " " + view[9] + " " + view[10] + " " + view[11]);
1464014745 // System.err.println("view = " + view[12] + " " + view[13] + " " + view[14] + " " + view[15]);
1464114746
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
+
1464214752 glu.gluUnProject(x,y,depth,view,0,tempmat2,0,viewport,0,selectedpoint.toParent[3],0);
1464314753
1464414754 // if (object.selection != null && object.selection.Size() > 0)
....@@ -14682,16 +14792,16 @@
1468214792 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]));
1468314793 }
1468414794
14685
- previousselectedpoint = (Sphere) GraphreeD.clone(selectedpoint);
14795
+ previousselectedpoint = (Sphere) GrafreeD.clone(selectedpoint);
1468614796 }
1468714797 }
1468814798
1468914799 if (!movingcamera && !PAINTMODE)
1469014800 object.editWindow.ScreenFitPoint(); // fev 2014
1469114801
14692
- 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)
1469314803 {
14694
- 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);
1469514805
1469614806 Object3D group = new Object3D("inst" + paintcount++);
1469714807
....@@ -15027,13 +15137,19 @@
1502715137 gl.glFlush();
1502815138
1502915139 /**/
15030
- 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);
1503115141
15032
- int[] pixels = occlusionsizebuffer.array();
15142
+ float[] pixels = occlusionsizebuffer.array();
1503315143
1503415144 double r = 0, g = 0, b = 0;
1503515145
1503615146 double count = 0;
15147
+
15148
+ gl.glGetDoublev(gl.GL_PROJECTION_MATRIX, tempmat2, 0);
15149
+
15150
+ float mindepth = 1;
15151
+
15152
+ double FACTOR = 1;
1503715153
1503815154 for (int i = 0; i < pixels.length; i++)
1503915155 {
....@@ -15118,7 +15234,7 @@
1511815234
1511915235 double scale = ray.z; // 1; // cos
1512015236
15121
- int p = pixels[newindex];
15237
+ float depth = pixels[newindex];
1512215238
1512315239 /*
1512415240 int newindex2 = (x + 1) * OCCLUSION_SIZE + y;
....@@ -15142,10 +15258,23 @@
1514215258 scale = (1 - modu) * modv;
1514315259 */
1514415260
15145
- r += ((p >> 16) & 0xFF) * scale / 255;
15146
- g += ((p >> 8) & 0xFF) * scale / 255;
15147
- 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
+ }
1514815269
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
+
1514915278 count += scale;
1515015279 }
1515115280
....@@ -15261,10 +15390,12 @@
1526115390 int AAbuffersize = 0;
1526215391
1526315392 //double[] selectedpoint = new double[3];
15264
- static Sphere selectedpoint = new Sphere();
15393
+ static Superellipsoid selectedpoint = new Superellipsoid();
1526515394 static Sphere previousselectedpoint = null;
15266
- static Sphere debugpoint = new Sphere();
15267
- 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();
1526815399
1526915400 static Sphere debugpoints[] = new Sphere[8];
1527015401
....@@ -15317,7 +15448,8 @@
1531715448 static IntBuffer texturesizebuffer = IntBuffer.allocate(TEX_SIZE * TEX_SIZE);
1531815449 static IntBuffer selectsizebuffer = IntBuffer.allocate(SELECT_SIZE * SELECT_SIZE);
1531915450 static java.nio.FloatBuffer pointselectsizebuffer = java.nio.FloatBuffer.allocate(SELECT_SIZE * SELECT_SIZE);
15320
- 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);
1532115453 static BufferedImage bufimage = new BufferedImage(TEX_SIZE, TEX_SIZE, BufferedImage.TYPE_INT_RGB);
1532215454 static BufferedImage textest = new cBufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
1532315455 static java.util.Vector<BufferedImage> billboards = new java.util.Vector<BufferedImage>();