Normand Briere
2019-04-22 91106535bc5aa5e67cbb02a67cf6de1519cba0e4
CameraPane.java
....@@ -31,8 +31,12 @@
3131
3232 import gleem.linalg.Mat4f;
3333
34
-class CameraPane extends GLCanvas implements Runnable, GLEventListener, ActionListener, MouseWheelListener, MouseMotionListener, MouseListener, KeyListener
34
+class CameraPane extends GLCanvas implements iCameraPane, Runnable, GLEventListener, ActionListener, MouseWheelListener, MouseMotionListener, MouseListener, KeyListener
3535 {
36
+ static cMaterial[] materialstack = new cMaterial[65536];
37
+ static boolean[] selectedstack = new boolean[65536];
38
+ static int materialdepth = 0;
39
+
3640 static boolean DEBUG = false;
3741 static boolean FRUSTUM = false; // still bogus true; // frustum culling
3842
....@@ -42,25 +46,7 @@
4246
4347 static int STEP = 1;
4448
45
- static boolean ONESTEP = false; // do LIVE once
46
-
47
- /**
48
- * @return the LIVE
49
- */
50
- public static boolean isLIVE()
51
- {
52
- return LIVE || ONESTEP;
53
- }
54
-
55
- /**
56
- * @param aLIVE the LIVE to set
57
- */
58
- public static void setLIVE(boolean aLIVE)
59
- {
60
- LIVE = aLIVE;
61
- }
62
-
63
- /*static*/ boolean CULLFACE = false; // true;
49
+ /*static*/ private boolean CULLFACE = false; // true;
6450 /*static*/ boolean NEAREST = false; // true;
6551 /*static*/ boolean WIREFRAME = false; // true;
6652
....@@ -97,10 +83,8 @@
9783
9884 static boolean textureon = true;
9985 static boolean LOCALTRANSFORM = false;
100
-private static boolean LIVE = false;
10186 static boolean FULLSCREEN = false;
10287 static boolean SUPPORT = true;
103
-static boolean CROWD = false;
10488 static boolean INERTIA = true;
10589 static boolean FAST = false;
10690 static boolean SLOWPOSE = false;
....@@ -173,17 +157,47 @@
173157 theRenderer = this;
174158 }
175159
160
+ CameraPane(Object3D o, Camera cam, boolean withcontext)
161
+ {
162
+ super(defaultcaps, null, withcontext?glcontext:null, null);
163
+
164
+ //System.out.println("AMERICA AREA = " + (9458886 + 9210755 + 8480395 + 2736391 + 1943018 + 1289475 + 1141569 + 1069350 + 911559 + 721229 + 395886 + 377972 + 246700 + 211156 + 173985 + 141133 + 118279 + 112079 + 108523));
165
+ glcontext = getContext();
166
+
167
+ cameras = new Camera[2];
168
+ targetLookAts = new cVector[2];
169
+
170
+ SetCamera(cam);
171
+
172
+ SetLight(new Camera(new cVector(10, 10, -20)));
173
+
174
+ object = o;
175
+
176
+ setBackground(Color.white);
177
+
178
+ addKeyListener(this);
179
+ addMouseListener(this);
180
+ addMouseMotionListener(this);
181
+ addMouseWheelListener(this);
182
+ //System.out.println("addGLEventListener: " + this);
183
+ addGLEventListener(this);
184
+
185
+// pingthread.start(); // may 2013
186
+ }
187
+
176188 static boolean AntialiasingEnabled()
177189 {
178190 return CURRENTANTIALIAS > 0;
179191 }
180192
181
- void ClearDepth()
193
+ /// INTERFACE
194
+
195
+ public void ClearDepth()
182196 {
183197 GetGL().glClear(GetGL().GL_DEPTH_BUFFER_BIT);
184198 }
185199
186
- void DepthTest(boolean depthtest)
200
+ public void DepthTest(boolean depthtest)
187201 {
188202 if (depthtest)
189203 GetGL().glDepthFunc(GL.GL_LEQUAL);
....@@ -191,7 +205,7 @@
191205 GetGL().glDepthFunc(GL.GL_ALWAYS);
192206 }
193207
194
- void DepthWrite(boolean depthwrite)
208
+ public void DepthWrite(boolean depthwrite)
195209 {
196210 if (depthwrite)
197211 GetGL().glDepthMask(true);
....@@ -199,12 +213,776 @@
199213 GetGL().glDepthMask(false);
200214 }
201215
202
- void BackFaceCull(boolean bfc)
216
+ public void BackFaceCull(boolean bfc)
203217 {
204218 if (bfc)
205219 GetGL().glEnable(GetGL().GL_CULL_FACE);
206220 else
207221 GetGL().glDisable(GetGL().GL_CULL_FACE);
222
+ }
223
+
224
+ public boolean BackFaceCullMode()
225
+ {
226
+ return this.CULLFACE;
227
+ }
228
+
229
+ public boolean IsAmbientOcclusionOn()
230
+ {
231
+ return this.ambientOcclusion;
232
+ }
233
+
234
+ public boolean IsFrozen()
235
+ {
236
+ boolean selectmode = this.DrawMode() == SELECTION || CameraPane.DEBUG_SELECTION;
237
+
238
+ return !selectmode && cameracount == 0; // != 0;
239
+ }
240
+
241
+ // Currently in Globals
242
+ public int DrawMode()
243
+ {
244
+ return Globals.DrawMode();
245
+ }
246
+
247
+ public Camera EyeCamera()
248
+ {
249
+ return eyeCamera;
250
+ }
251
+
252
+ public Camera LightCamera()
253
+ {
254
+ return lightCamera;
255
+ }
256
+
257
+ public Camera RenderCamera()
258
+ {
259
+ return renderCamera;
260
+ }
261
+
262
+ public void PushMaterial(Object3D obj, boolean selected)
263
+ {
264
+ CameraPane display = this;
265
+ javax.media.opengl.GL gl = display.GetGL();
266
+ cMaterial material = obj.material;
267
+
268
+ if (material != null)
269
+ {
270
+ materialstack[materialdepth] = material;
271
+ selectedstack[materialdepth] = selected;
272
+ cStatic.objectstack[materialdepth++] = obj;
273
+ //System.out.println("material " + material);
274
+ //Applet3D.tracein(this, selected);
275
+ display.vector2buffer = obj.projectedVertices;
276
+ if (obj instanceof Camera)
277
+ {
278
+ display.options1[0] = material.shift;
279
+ //System.out.println("shift " + material.shift);
280
+ display.options1[1] = material.lightarea;
281
+ display.options1[2] = material.shadowbias;
282
+ display.options1[3] = material.aniso;
283
+ display.options1[4] = material.anisoV;
284
+ display.options2[0] = material.opacity;
285
+ display.options2[1] = material.diffuse;
286
+ display.options2[2] = material.factor;
287
+
288
+ cColor.HSBtoRGB(material.color, material.modulation, 1, display.options3);
289
+ display.options4[0] = material.cameralight/0.2f;
290
+ display.options4[1] = material.subsurface;
291
+ display.options4[2] = material.sheen;
292
+
293
+ // if (display.CURRENTANTIALIAS > 0)
294
+ // display.options3[3] /= 4;
295
+
296
+ /*
297
+ System.out.println("Focus = " + display.options1[0]);
298
+ System.out.println("Aperture = " + display.options1[1]);
299
+ System.out.println("ShadowBlur = " + display.options1[2]);
300
+ System.out.println("Antialiasing = " + display.options1[3]);
301
+ System.out.println("Fog = " + display.options2[0]);
302
+ System.out.println("Intensity = " + display.options2[1]);
303
+ System.out.println("Elevation = " + display.options2[2]);
304
+ /**/
305
+ } else
306
+ {
307
+ DrawMaterial(material, selected);
308
+ }
309
+ } else
310
+ {
311
+ if (selected && CameraPane.flash)
312
+ {
313
+ display.modelParams4[1] = 100;
314
+ gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 4, display.modelParams4, 0);
315
+ }
316
+ }
317
+ }
318
+
319
+ public void PushMaterial2(Object3D obj, boolean selected)
320
+ {
321
+ CameraPane display = this;
322
+ cMaterial material = obj.material;
323
+
324
+ if (material != null)
325
+ {
326
+ materialstack[materialdepth] = material;
327
+ selectedstack[materialdepth] = selected;
328
+ cStatic.objectstack[materialdepth++] = obj;
329
+ //System.out.println("material " + material);
330
+ //Applet3D.tracein("selected ", selected);
331
+ display.vector2buffer = obj.projectedVertices;
332
+ display.DrawMaterial(material, selected);
333
+ }
334
+ }
335
+
336
+ public void PopMaterial(Object3D obj, boolean selected)
337
+ {
338
+ CameraPane display = this;
339
+ javax.media.opengl.GL gl = display.GetGL();
340
+ cMaterial material = obj.material;
341
+
342
+ //if (parent != null && parent.GetMaterial() != null)
343
+ // parent.GetMaterial().Draw(display, parent.IsSelected(this));
344
+ if (material != null)
345
+ {
346
+ materialdepth -= 1;
347
+ if (materialdepth > 0)
348
+ {
349
+ display.vector2buffer = cStatic.objectstack[materialdepth - 1].projectedVertices;
350
+ display.DrawMaterial(materialstack[materialdepth - 1], selectedstack[materialdepth - 1]);
351
+ }
352
+ //Applet3D.traceout("selected ", (stackdepth>0)?selectedstack[stackdepth-1]:"???");
353
+ } else if (selected && CameraPane.flash && obj.GetMaterial() != null)
354
+ {
355
+ display.modelParams4[1] = obj.GetMaterial().cameralight;
356
+ gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 4, display.modelParams4, 0);
357
+ }
358
+ }
359
+
360
+ public void PopMaterial2(Object3D obj)
361
+ {
362
+ CameraPane display = this;
363
+ cMaterial material = obj.material;
364
+
365
+ if (material != null)
366
+ {
367
+ materialdepth -= 1;
368
+ if (materialdepth > 0)
369
+ {
370
+ display.vector2buffer = cStatic.objectstack[materialdepth - 1].projectedVertices;
371
+ display.DrawMaterial(materialstack[materialdepth - 1], selectedstack[materialdepth - 1]);
372
+ }
373
+ //Applet3D.traceout("selected ", (stackdepth>0)?selectedstack[stackdepth-1]:"???");
374
+ //else
375
+ //material.Draw(display, false);
376
+ }
377
+ }
378
+
379
+ public void DrawFace(Object3D obj, Vertex pv, Vertex qv, Vertex rv, Face face)
380
+ {
381
+ CameraPane display = this;
382
+
383
+ if (pv.y == -10000 ||
384
+ qv.y == -10000 ||
385
+ rv.y == -10000)
386
+ return;
387
+
388
+// float b = f.nbiterations & 1;
389
+// float g = (f.nbiterations>>1) & 1;
390
+// float r = (f.nbiterations>>2) & 1;
391
+//
392
+// //if (f.weight == 10000)
393
+// //{
394
+// // r = 1; g = b = 0;
395
+// //}
396
+// //else
397
+// //{
398
+// // assert(f.weight < 10000);
399
+// r = g = b = (float)bRep.FaceWeight(f)*100;
400
+// if (r<0)
401
+// assert(r>=0);
402
+// //}
403
+
404
+ javax.media.opengl.GL gl = display.GetGL();
405
+
406
+ boolean selectmode = display.DrawMode() == display.SELECTION || CameraPane.DEBUG_SELECTION;
407
+
408
+ //System.out.println("p = " + pv + "; q = " + qv + "; r = " + rv);
409
+ if (!selectmode) // display.drawMode != display.SELECTION) // && display.drawMode != display.SHADOW) // (attributes & FILL) != 0)
410
+ {
411
+ //gl.glBegin(gl.GL_TRIANGLES);
412
+ boolean hasnorm = pv.norm != null; // && (pv.norm.x != 0 || pv.norm.y != 0 || pv.norm.z != 0);
413
+ if (!hasnorm)
414
+ {
415
+ // System.out.println("FUCK!!");
416
+ LA.vecSub(pv/*.pos*/, qv/*.pos*/, obj.v0);
417
+ LA.vecSub(pv/*.pos*/, rv/*.pos*/, obj.v1);
418
+ LA.vecCross(obj.v0, obj.v1, obj.v2);
419
+ LA.vecNormalize(obj.v2);
420
+ gl.glNormal3f((float) obj.v2.x, (float) obj.v2.y, (float) obj.v2.z);
421
+ }
422
+
423
+ // P
424
+ float x = (float)pv.x;
425
+ float y = (float)pv.y;
426
+ float z = (float)pv.z;
427
+
428
+ if (hasnorm)
429
+ {
430
+// if (!pv.norm.normalized())
431
+// assert(pv.norm.normalized());
432
+
433
+ //System.out.println("normalp = " + pv.norm.x + ", " + pv.norm.y + ", " + pv.norm.z);
434
+ float nx = (float)pv.norm.x;
435
+ float ny = (float)pv.norm.y;
436
+ float nz = (float)pv.norm.z;
437
+
438
+ x += nx * obj.NORMALPUSH;
439
+ y += ny * obj.NORMALPUSH;
440
+ z += nz * obj.NORMALPUSH;
441
+
442
+ gl.glNormal3f(nx, ny, nz);
443
+ }
444
+ gl.glColor4f(pv.AO, pv.AO, pv.AO, 1);
445
+ SetColor(obj, pv);
446
+ //gl.glColor4f(r, g, b, 1);
447
+ //gl.glColor4f(pv.boundary, pv.boundary, pv.boundary, 1);
448
+ if (obj.flipV)
449
+ gl.glTexCoord2f((float) pv.s, 1-(float) pv.t);
450
+ else
451
+ gl.glTexCoord2f((float) pv.s, (float) pv.t);
452
+ //System.out.println("vertexp = " + pv.x + ", " + pv.y + ", " + pv.z);
453
+
454
+ gl.glVertex3f(x, y, z);
455
+
456
+ // Q
457
+ x = (float)qv.x;
458
+ y = (float)qv.y;
459
+ z = (float)qv.z;
460
+
461
+// Print(pv);
462
+ if (hasnorm)
463
+ {
464
+// assert(qv.norm.normalized());
465
+ //System.out.println("normalq = " + qv.norm.x + ", " + qv.norm.y + ", " + qv.norm.z);
466
+ float nx = (float)qv.norm.x;
467
+ float ny = (float)qv.norm.y;
468
+ float nz = (float)qv.norm.z;
469
+
470
+ x += nx * obj.NORMALPUSH;
471
+ y += ny * obj.NORMALPUSH;
472
+ z += nz * obj.NORMALPUSH;
473
+
474
+ gl.glNormal3f(nx, ny, nz);
475
+ }
476
+ //System.out.println("vertexq = " + qv.s + ", " + qv.t);
477
+ // boolean locked = false;
478
+ // float eps = 0.1f;
479
+ // boolean wrap = CameraPane.UVWRAP; // true; // UV WRAP TEXTURE ISSUE: true = artifacts, false = nice
480
+
481
+ // int dot = 0; //*/ (int)f.dot;
482
+
483
+ // if ((dot&1) == 0)
484
+ // dot |= (Math.abs(qv.s - pv.s) < eps && Math.abs(qv.t - pv.t) < eps) ? 3 : 1;
485
+
486
+ // if (wrap || (dot&2) != 0) // Math.abs(qv.s - pv.s) < eps && Math.abs(qv.t - pv.t) < eps)
487
+ if (obj.flipV)
488
+ gl.glTexCoord2f((float) qv.s, 1-(float) qv.t);
489
+ else
490
+ gl.glTexCoord2f((float) qv.s, (float) qv.t);
491
+ // else
492
+ // {
493
+ // locked = true;
494
+ // gl.glTexCoord2f((float) pv.s, (float) pv.t);
495
+ // }
496
+ gl.glColor4f(qv.AO, qv.AO, qv.AO, 1);
497
+ SetColor(obj, qv);
498
+
499
+ gl.glVertex3f(x, y, z);
500
+ //gl.glColor4f(r, g, b, 1);
501
+ //gl.glColor4f(qv.boundary, qv.boundary, qv.boundary, 1);
502
+ //System.out.println("vertexq = " + qv.x + ", " + qv.y + ", " + qv.z);
503
+// Print(qv);
504
+
505
+ // R
506
+ x = (float)rv.x;
507
+ y = (float)rv.y;
508
+ z = (float)rv.z;
509
+
510
+ if (hasnorm)
511
+ {
512
+// assert(rv.norm.normalized());
513
+ //System.out.println("normalr = " + rv.norm.x + ", " + rv.norm.y + ", " + rv.norm.z);
514
+ float nx = (float)rv.norm.x;
515
+ float ny = (float)rv.norm.y;
516
+ float nz = (float)rv.norm.z;
517
+
518
+ x += nx * obj.NORMALPUSH;
519
+ y += ny * obj.NORMALPUSH;
520
+ z += nz * obj.NORMALPUSH;
521
+
522
+ gl.glNormal3f(nx, ny, nz);
523
+ }
524
+
525
+ // if ((dot&4) == 0)
526
+ // dot |= (Math.abs(rv.s - pv.s) < eps && Math.abs(rv.t - pv.t) < eps) ? 12 : 4;
527
+
528
+ // if (wrap || !locked && (dot&8) != 0)
529
+ if (obj.flipV)
530
+ gl.glTexCoord2f((float) rv.s, 1-(float) rv.t);
531
+ else
532
+ gl.glTexCoord2f((float) rv.s, (float) rv.t);
533
+ // else
534
+ // gl.glTexCoord2f((float) pv.s, (float) pv.t);
535
+
536
+ // f.dot = dot;
537
+
538
+ gl.glColor4f(rv.AO, rv.AO, rv.AO, 1);
539
+ SetColor(obj, rv);
540
+ //gl.glColor4f(r, g, b, 1);
541
+ //gl.glColor4f(rv.boundary, rv.boundary, rv.boundary, 1);
542
+ //System.out.println("vertexr = " + rv.x + ", " + rv.y + ", " + rv.z);
543
+ gl.glVertex3f(x, y, z);
544
+// Print(rv);
545
+ //gl.glEnd();
546
+ }
547
+ else
548
+ {
549
+ gl.glVertex3f((float) pv.x, (float) pv.y, (float) pv.z);
550
+ gl.glVertex3f((float) qv.x, (float) qv.y, (float) qv.z);
551
+ gl.glVertex3f((float) rv.x, (float) rv.y, (float) rv.z);
552
+
553
+ }
554
+
555
+ if (false) // (attributes & WIREFRAME) != 0)
556
+ {
557
+ gl.glDisable(gl.GL_LIGHTING);
558
+
559
+ gl.glBegin(gl.GL_LINE_LOOP);
560
+ gl.glVertex3d(pv./*pos.*/x, pv./*pos.*/y, pv./*pos.*/z);
561
+ gl.glVertex3d(qv./*pos.*/x, qv./*pos.*/y, qv./*pos.*/z);
562
+ gl.glVertex3d(rv./*pos.*/x, rv./*pos.*/y, rv./*pos.*/z);
563
+ gl.glEnd();
564
+
565
+ gl.glEnable(gl.GL_LIGHTING);
566
+ }
567
+ }
568
+
569
+ /// INTERFACE
570
+
571
+ void SetColor(Object3D obj, Vertex p0)
572
+ {
573
+ CameraPane display = this;
574
+ BoundaryRep bRep = obj.bRep;
575
+
576
+ if (RENDERPROGRAM == 0)
577
+ {
578
+ float r = 0;
579
+ if (bRep != null)
580
+ {
581
+ if (bRep.stripified)
582
+ {
583
+ r = 1;
584
+ }
585
+ }
586
+ float g = 0;
587
+ if (bRep != null)
588
+ {
589
+ if (bRep.trimmed)
590
+ {
591
+ g = 1;
592
+ }
593
+ }
594
+ float b = 0;
595
+ if (obj.support != null && obj.link2master)
596
+ {
597
+ b = 1;
598
+ }
599
+ display.GetGL().glColor3f(r*p0.AO, g*p0.AO, b*p0.AO);
600
+ return;
601
+ }
602
+
603
+ if (display.DrawMode() != CameraPane.SHADOW)
604
+ return;
605
+
606
+ javax.media.opengl.GL gl = display.GetGL();
607
+// if (true) return;
608
+// float ao = p.AO;
609
+//
610
+// // if (ao == 0 && !bRep.AOdone) // transient problem!
611
+// // ao = 1;
612
+//
613
+// gl.glColor4f(ao, ao, ao, 1);
614
+
615
+// CameraPane.selectedpoint.
616
+// getAverage(cStatic.point1, true);
617
+ if (CameraPane.pointflow == null) // !random) // live)
618
+ {
619
+ return;
620
+ }
621
+
622
+ cStatic.point1.set(0,0,0);
623
+ LA.xformPos(cStatic.point1, CameraPane.selectedpoint.toParent, cStatic.point1);
624
+
625
+ cStatic.point1.sub(p0);
626
+
627
+
628
+// if (marked && (p0.vertexlinks == null || support == null || support.bRep == null)) // no position delta?
629
+// {
630
+// return;
631
+// }
632
+
633
+ //if (true)
634
+ if (cStatic.point1.dot(cStatic.point1) > 0.000001)
635
+ {
636
+ return;
637
+ }
638
+
639
+ float[] colorV = new float[3];
640
+
641
+ if (false) // marked)
642
+ {
643
+ // debug rigging weights
644
+ for (int object = 0; object < p0.vertexlinks.length; object++)
645
+ {
646
+ float weight = p0.weights[object] / p0.totalweight;
647
+
648
+ // if (weight < 0.1)
649
+ // {
650
+ // assert(weight == 0);
651
+ // continue;
652
+ // }
653
+
654
+ if (p0.vertexlinks[object] == -1)
655
+ continue;
656
+
657
+ Vertex q = obj.support.bRep.GetVertex(p0.vertexlinks[object]);
658
+
659
+ int color = //1 << object; //
660
+ //p.vertexlinks.length;
661
+ obj.support.bRep.supports[p0.closestsupport].links[object];
662
+ colorV[2] += (color & 1) * weight;
663
+ colorV[1] += ((color & 2) >> 1) * weight;
664
+ colorV[0] += ((color & 4) >> 2) * weight;
665
+ }
666
+ }
667
+ else
668
+ {
669
+ if (obj.drawingstarted)
670
+ {
671
+ // find next point
672
+ if (bRep.GetVertex(0).faceindices == null)
673
+ {
674
+ bRep.InitFaceIndices();
675
+ }
676
+
677
+ double ymin = p0.y;
678
+
679
+ Vertex newp = p0;
680
+
681
+ for (int fii = 0; fii < p0.faceindices.length; fii++)
682
+ {
683
+ int fi = p0.faceindices[fii];
684
+
685
+ if (fi == -1)
686
+ break;
687
+
688
+ Face f = bRep.GetFace(fi);
689
+
690
+ Vertex p = bRep.GetVertex(f.p);
691
+ Vertex q = bRep.GetVertex(f.q);
692
+ Vertex r = bRep.GetVertex(f.r);
693
+
694
+ int swap = (int)(Math.random()*3);
695
+
696
+// for (int s=swap; --s>=0;)
697
+// {
698
+// Vertex t = p;
699
+// p = q;
700
+// q = r;
701
+// r = t;
702
+// }
703
+ if (ymin > p.y)
704
+ {
705
+ ymin = p.y;
706
+ newp = p;
707
+// break;
708
+ }
709
+ if (ymin > q.y)
710
+ {
711
+ ymin = q.y;
712
+ newp = q;
713
+// break;
714
+ }
715
+ if (ymin > r.y)
716
+ {
717
+ ymin = r.y;
718
+ newp = r;
719
+// break;
720
+ }
721
+ }
722
+
723
+ CameraPane.selectedpoint.toParent[3][0] = newp.x;
724
+ CameraPane.selectedpoint.toParent[3][1] = newp.y;
725
+ CameraPane.selectedpoint.toParent[3][2] = newp.z;
726
+
727
+ obj.drawingstarted = false;
728
+
729
+ // return;
730
+ }
731
+
732
+ if (false) // CameraPane.DRAW
733
+ {
734
+ p0.AO = colorV[0] = 2;
735
+ colorV[1] = 2;
736
+ colorV[2] = 2;
737
+ }
738
+
739
+ CameraPane.pointflow.add(p0);
740
+ CameraPane.pointflow.Touch();
741
+ }
742
+
743
+// gl.glColor3f(colorV[0], colorV[1], colorV[2]);
744
+// gl.glMaterialfv(gl.GL_FRONT, gl.GL_DIFFUSE, colorV, 0);
745
+// gl.glMaterialfv(gl.GL_BACK, gl.GL_DIFFUSE, colorV, 0);
746
+ }
747
+
748
+ void DrawMaterial(cMaterial material, boolean selected)
749
+ {
750
+ CameraPane display = this;
751
+ //new Exception().printStackTrace();
752
+
753
+ if (display.IsFrozen() && !selected || display.IsAmbientOcclusionOn()) // || display.drawMode == display.SHADOW)
754
+ {
755
+ return;
756
+ }
757
+
758
+ javax.media.opengl.GL gl = display.GetGL();
759
+
760
+ //Color col = Color.getHSBColor(color,modulation,1);
761
+ //col.getColorComponents(ColorSpace.getInstance(ColorSpace.CS_LINEAR_RGB), CameraPane.modelParams0);
762
+ if (!material.multiply)
763
+ {
764
+ display.color = color;
765
+ display.saturation = material.modulation;
766
+ }
767
+ else
768
+ {
769
+ display.color *= color*2;
770
+ display.saturation *= material.modulation*2;
771
+ }
772
+
773
+ cColor.HSBtoRGB(display.color, display.saturation, 1, display.modelParams0);
774
+
775
+ float[] colorV = GrafreeD.colorV;
776
+
777
+ /**/
778
+ if (display.DrawMode() == display.DEFAULT) // && display.RENDERPROGRAM == 0)
779
+ {
780
+ colorV[0] = display.modelParams0[0] * material.diffuse;
781
+ colorV[1] = display.modelParams0[1] * material.diffuse;
782
+ colorV[2] = display.modelParams0[2] * material.diffuse;
783
+ colorV[3] = material.opacity;
784
+
785
+ gl.glColor4f(colorV[0], colorV[1], colorV[2], material.opacity);
786
+ //System.out.println("Opacity = " + opacity);
787
+
788
+ gl.glMaterialfv(gl.GL_FRONT, gl.GL_DIFFUSE, colorV, 0);
789
+ //color[0] /= 2; color[1] /= 2; color[2] /= 2;
790
+ gl.glMaterialfv(gl.GL_BACK, gl.GL_DIFFUSE, colorV, 0);
791
+
792
+ float amb = material.ambient;
793
+ if (amb < material.cameralight)
794
+ {
795
+ amb = material.cameralight;
796
+ }
797
+ colorV[0] = display.modelParams0[0] * material.diffuse * amb;
798
+ colorV[1] = display.modelParams0[1] * material.diffuse * amb;
799
+ colorV[2] = display.modelParams0[2] * material.diffuse * amb;
800
+ gl.glMaterialfv(gl.GL_FRONT, gl.GL_AMBIENT, colorV, 0);
801
+ //color[0] /= 2; color[1] /= 2; color[2] /= 2;
802
+ gl.glMaterialfv(gl.GL_BACK, gl.GL_AMBIENT, colorV, 0);
803
+
804
+ /**/
805
+ colorV[0] = ((1 - material.metalness) + display.modelParams0[0] * material.metalness) * material.specular;
806
+ colorV[1] = ((1 - material.metalness) + display.modelParams0[1] * material.metalness) * material.specular;
807
+ colorV[2] = ((1 - material.metalness) + display.modelParams0[2] * material.metalness) * material.specular;
808
+ gl.glMaterialfv(gl.GL_FRONT, gl.GL_SPECULAR, colorV, 0);
809
+ //color[0] /= 2; color[1] /= 2; color[2] /= 2;
810
+ gl.glMaterialfv(gl.GL_BACK, gl.GL_SPECULAR, colorV, 0);
811
+ colorV[0] = 10 / material.shininess; // 1/0.005f;
812
+ //System.out.println("shininess = " + colorV[0]);
813
+ if (colorV[0] > 128)
814
+ {
815
+ colorV[0] = 128;
816
+ }
817
+ gl.glMaterialfv(gl.GL_FRONT, gl.GL_SHININESS, colorV, 0);
818
+ gl.glMaterialfv(gl.GL_BACK, gl.GL_SHININESS, colorV, 0);
819
+ /**/
820
+ }
821
+ /**/
822
+
823
+ //selected = false;
824
+ selected = selected && display.flash;
825
+
826
+ //display.modelParams0[0] = 0; // pigment.r;
827
+ //display.modelParams0[1] = 0; // pigment.g;
828
+ //display.modelParams0[2] = 0; // pigment.b;
829
+ if (!material.multiply)
830
+ {
831
+ display.modelParams0[3] = material.metalness;
832
+ display.modelParams1[0] = material.diffuse;
833
+ display.modelParams1[1] = material.specular;
834
+ display.modelParams1[2] = 1 / material.shininess;
835
+ display.modelParams1[3] = material.shift;
836
+ display.modelParams2[0] = material.ambient;
837
+ display.modelParams2[1] = material.lightarea;
838
+ //System.out.println("light area = " + lightarea);
839
+ display.modelParams2[2] = 1 / material.factor; // diffuseness
840
+ display.modelParams2[3] = material.velvet;
841
+ display.modelParams3[0] = material.sheen;
842
+ display.modelParams3[1] = material.subsurface;
843
+ display.modelParams3[2] = material.bump; // backlit
844
+ display.modelParams3[3] = material.aniso;
845
+ display.modelParams4[0] = material.anisoV;
846
+ display.modelParams4[1] = selected ? 100 : material.cameralight;
847
+ //System.out.println("selected = " + selected);
848
+ display.modelParams4[2] = material.diffuseness;
849
+ display.modelParams4[3] = material.shadow;
850
+ display.modelParams5[0] = material.texture;
851
+ display.modelParams5[1] = material.opacity;
852
+ display.modelParams5[2] = material.fakedepth;
853
+ display.modelParams5[3] = CameraPane.SHADOWCULLFACE ? 0f : (material.shadowbias - 0.005f) / 10;
854
+ }
855
+ else
856
+ {
857
+ display.modelParams0[3] *= material.metalness*2;
858
+ display.modelParams1[0] *= material.diffuse*2;
859
+ display.modelParams1[1] *= material.specular*2;
860
+ display.modelParams1[2] *= material.shininess*2;
861
+ display.modelParams1[3] *= material.shift*2;
862
+ display.modelParams2[0] *= material.ambient*2;
863
+ display.modelParams2[1] *= material.lightarea*2;
864
+ display.modelParams2[2] *= material.factor*2;
865
+ display.modelParams2[3] *= material.velvet*2;
866
+ display.modelParams3[0] *= material.sheen*2;
867
+ display.modelParams3[1] *= material.subsurface*2;
868
+ display.modelParams3[2] *= material.bump*2;
869
+ display.modelParams3[3] *= material.aniso*2;
870
+ display.modelParams4[0] *= material.anisoV*2;
871
+ display.modelParams4[1] *= material.cameralight*2;
872
+ //System.out.println("selected = " + selected);
873
+ display.modelParams4[2] *= material.diffuseness*2;
874
+ display.modelParams4[3] *= material.shadow*2;
875
+ display.modelParams5[0] *= material.texture*2;
876
+ display.modelParams5[1] *= material.opacity*2;
877
+ display.modelParams5[2] *= material.fakedepth*2;
878
+ display.modelParams5[3] *= material.shadowbias*2;
879
+ }
880
+
881
+ display.modelParams6[0] = 0;
882
+ display.modelParams6[1] = 0;
883
+ display.modelParams6[2] = 0;
884
+ display.modelParams6[3] = 0;
885
+
886
+ display.modelParams7[0] = 0;
887
+ display.modelParams7[1] = 1000;
888
+ display.modelParams7[2] = 0;
889
+ display.modelParams7[3] = 0;
890
+
891
+ display.modelParams6[0] = 100; // criss de bug de bump
892
+
893
+ Object3D.cVector2[] extparams = display.vector2buffer;
894
+ if (extparams != null && extparams.length > 0 && extparams[0] != null)
895
+ {
896
+ display.modelParams6[0] = extparams[0].x / 1000.0f; // bump
897
+ display.modelParams6[1] = extparams[0].y / 1000.0f; // noise
898
+ if (extparams.length > 1)
899
+ {
900
+ display.modelParams6[2] = extparams[1].x / 1000.0f; // borderfade
901
+ display.modelParams6[3] = extparams[1].y / 1000.0f; // (float)Math.exp(-extparams[1].y / 1000.0f); // fog punchthrough
902
+ if (extparams.length > 2)
903
+ {
904
+ display.modelParams7[0] = extparams[2].x / 1000.0f; // noise power
905
+ float x = extparams[2].y / 1000.0f;
906
+ //if (x == 0)
907
+ // x = 1f;
908
+ display.modelParams7[1] = 1 / x / x / x / x / x / x / x / x / x / x / x / x / x; // (float)Math.pow(-Math.log((extparams[2].y+0.00) / 1000.0f), 1); // opacity power
909
+ if (extparams[2].y > 0)
910
+ {
911
+ //System.out.println("extparams[1].y = " + extparams[1].y);
912
+ //System.out.println("extparams[2].y = " + extparams[2].y);
913
+ //System.out.println("opacity power = " + display.modelParams7[1]);
914
+ }
915
+ }
916
+ }
917
+ }
918
+
919
+ //if (display.modelParams6[2] != 0)
920
+ /*
921
+ System.out.println("modelParams0[0] = " + display.modelParams0[0]);
922
+ System.out.println("modelParams0[1] = " + display.modelParams0[1]);
923
+ System.out.println("modelParams0[2] = " + display.modelParams0[2]);
924
+ System.out.println("modelParams0[3] = " + display.modelParams0[3]);
925
+ System.out.println("modelParams1[0] = " + display.modelParams1[0]);
926
+ System.out.println("modelParams1[1] = " + display.modelParams1[1]);
927
+ System.out.println("modelParams1[2] = " + display.modelParams1[2]);
928
+ System.out.println("modelParams1[3] = " + display.modelParams1[3]);
929
+ System.out.println("modelParams2[0] = " + display.modelParams2[0]);
930
+ System.out.println("modelParams2[1] = " + display.modelParams2[1]);
931
+ System.out.println("modelParams2[2] = " + display.modelParams2[2]);
932
+ System.out.println("modelParams2[3] = " + display.modelParams2[3]);
933
+ System.out.println("modelParams3[0] = " + display.modelParams3[0]);
934
+ System.out.println("modelParams3[1] = " + display.modelParams3[1]);
935
+ System.out.println("modelParams3[2] = " + display.modelParams3[2]);
936
+ System.out.println("modelParams3[3] = " + display.modelParams3[3]);
937
+ System.out.println("modelParams4[0] = " + display.modelParams4[0]);
938
+ System.out.println("modelParams4[1] = " + display.modelParams4[1]);
939
+ System.out.println("modelParams4[2] = " + display.modelParams4[2]);
940
+ System.out.println("modelParams4[3] = " + display.modelParams4[3]);
941
+ System.out.println("modelParams5[0] = " + display.modelParams5[0]);
942
+ System.out.println("modelParams5[1] = " + display.modelParams5[1]);
943
+ System.out.println("modelParams5[2] = " + display.modelParams5[2]);
944
+ System.out.println("modelParams5[3] = " + display.modelParams5[3]);
945
+ System.out.println("modelParams6[0] = " + display.modelParams6[0]);
946
+ System.out.println("modelParams6[1] = " + display.modelParams6[1]);
947
+ System.out.println("modelParams6[2] = " + display.modelParams6[2]);
948
+ System.out.println("modelParams6[3] = " + display.modelParams6[3]);
949
+ System.out.println("modelParams7[0] = " + display.modelParams7[0]);
950
+ System.out.println("modelParams7[1] = " + display.modelParams7[1]);
951
+ System.out.println("modelParams7[2] = " + display.modelParams7[2]);
952
+ System.out.println("modelParams7[3] = " + display.modelParams7[3]);
953
+ /**/
954
+ //assert (display.modelParams6[2] == 0);
955
+
956
+ //System.out.println("noise power = " + display.modelParams7[0]);
957
+ //System.out.println("shadowbias = " + shadowbias);
958
+
959
+ gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 0, display.modelParams0, 0);
960
+ gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 1, display.modelParams1, 0);
961
+ gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 2, display.modelParams2, 0);
962
+ gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 3, display.modelParams3, 0);
963
+ gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 4, display.modelParams4, 0);
964
+ gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 5, display.modelParams5, 0);
965
+ gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 6, display.modelParams6, 0);
966
+ gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 7, display.modelParams7, 0);
967
+
968
+ int mode = display.FP_SHADER;
969
+
970
+ if (material.aniso != material.anisoV || material.aniso > 0.002)
971
+ {
972
+ mode |= display.FP_ANISO;
973
+ }
974
+
975
+ display.EnableProgram(mode);
976
+
977
+ //System.out.println("opacity power = " + display.modelParams7[1]);
978
+
979
+ if (!material.multiply)
980
+ {
981
+ if (Globals.drawMode == CameraPane.SHADOW)
982
+ gl.glDepthMask(material.opacity >= 0.9 && display.modelParams7[1] > 0.1);
983
+ else
984
+ gl.glDepthMask(material.opacity >= 0.99);
985
+ }
208986 }
209987
210988 int matrixdepth = 0; // 10000; // CONFLICT WITH cMESH... WARNING WARNING WARNING WARNING WARNING WARNING !!!!!!!!!!!! 0;
....@@ -225,7 +1003,7 @@
2251003 currentGL.glMultMatrixd(model, 0);
2261004 }
2271005
228
- void PushMatrix(double[][] matrix, int count)
1006
+ public void PushMatrix(double[][] matrix, int count) // INTERFACE
2291007 {
2301008 matrixdepth++;
2311009 // GrafreeD.tracein(matrix);
....@@ -270,7 +1048,7 @@
2701048
2711049 double[][] tmpmat = new double[4][4];
2721050
273
- void PopMatrix(double[][] inverse)
1051
+ public void PopMatrix(double[][] inverse) // INTERFACE
2741052 {
2751053 --matrixdepth;
2761054
....@@ -310,7 +1088,7 @@
3101088 PushTextureMatrix(matrix, 1);
3111089 }
3121090
313
- void PushTextureMatrix(double[][] matrix, int count)
1091
+ public void PushTextureMatrix(double[][] matrix, int count) // INTERFACE
3141092 {
3151093 currentGL.glActiveTexture(GetGL().GL_TEXTURE0);
3161094
....@@ -324,7 +1102,7 @@
3241102 currentGL.glMatrixMode(GetGL().GL_MODELVIEW);
3251103 }
3261104
327
- void PopTextureMatrix(double[][] inverse)
1105
+ public void PopTextureMatrix(double[][] inverse) // INTERFACE
3281106 {
3291107 currentGL.glActiveTexture(GetGL().GL_TEXTURE0);
3301108 currentGL.glMatrixMode(GetGL().GL_TEXTURE);
....@@ -356,10 +1134,10 @@
3561134 // may 2014 if (cam == cameras[0] || cam == cameras[1])
3571135 // return false;
3581136
359
- if (REFUSEMODE && isLIVE() && camerachangeframe != 0 && camerachangeframe != framecount)
1137
+ if (REFUSEMODE && Globals.isLIVE() && camerachangeframe != 0 && camerachangeframe != Globals.framecount)
3601138 {
3611139 // check for last change
362
- if (framecount < camerachangeframe + 400) // 120 == 1 second
1140
+ if (Globals.framecount < camerachangeframe + 400) // 120 == 1 second
3631141 {
3641142 // refuse the camera change
3651143 System.err.println("Camera " + cam + " REFUSED");
....@@ -367,7 +1145,7 @@
3671145 }
3681146 }
3691147
370
- camerachangeframe = framecount;
1148
+ camerachangeframe = Globals.framecount;
3711149
3721150 cam.hAspect = -1; // Read only
3731151
....@@ -398,7 +1176,7 @@
3981176 {
3991177 //System.err.println("Oeil on");
4001178 TRACK = true;
401
-// JUNE 2014 if (TRACK && trackedobject != null && drawMode == SHADOW) // && !lightMode)
1179
+// JUNE 2014 if (TRACK && trackedobject != null && DrawMode() == SHADOW) // && !lightMode)
4021180 // object.editWindow.ScreenFit(trackedobject);
4031181 //pingthread.StepToTarget(true);
4041182 }
....@@ -407,7 +1185,7 @@
4071185 {
4081186 //System.err.println("Oeil on");
4091187 OEIL = true;
410
- if ((TRACK || SHADOWTRACK) && trackedobject != null && drawMode == SHADOW) // && !lightMode)
1188
+ if ((TRACK || SHADOWTRACK) && trackedobject != null && DrawMode() == SHADOW) // && !lightMode)
4111189 object.editWindow.ScreenFit(trackedobject, SHADOWTRACK && !TRACK);
4121190 //pingthread.StepToTarget(true);
4131191 }
....@@ -471,7 +1249,7 @@
4711249 {
4721250 frozen ^= true;
4731251 // Weird...
474
- lighttouched = true;
1252
+ Globals.lighttouched = true;
4751253 }
4761254
4771255 void ToggleDL()
....@@ -486,11 +1264,11 @@
4861264
4871265 void ToggleLive()
4881266 {
489
- setLIVE(isLIVE() ^ true);
1267
+ Globals.setLIVE(Globals.isLIVE() ^ true);
4901268
491
- System.err.println("LIVE = " + isLIVE());
1269
+ System.err.println("LIVE = " + Globals.isLIVE());
4921270
493
- if (!isLIVE()) // save sound
1271
+ if (!Globals.isLIVE()) // save sound
4941272 GrafreeD.savesound = true; // wav.save();
4951273 // else
4961274 repaint(); // start loop // may 2013
....@@ -513,7 +1291,7 @@
5131291
5141292 void ToggleCrowd()
5151293 {
516
- CROWD ^= true;
1294
+ Globals.CROWD ^= true;
5171295 }
5181296
5191297 void ToggleInertia()
....@@ -674,34 +1452,6 @@
6741452 lightCamera = cam;
6751453 }
6761454
677
- CameraPane(Object3D o, Camera cam, boolean withcontext)
678
- {
679
- super(defaultcaps, null, withcontext?glcontext:null, null);
680
-
681
- //System.out.println("AMERICA AREA = " + (9458886 + 9210755 + 8480395 + 2736391 + 1943018 + 1289475 + 1141569 + 1069350 + 911559 + 721229 + 395886 + 377972 + 246700 + 211156 + 173985 + 141133 + 118279 + 112079 + 108523));
682
- glcontext = getContext();
683
-
684
- cameras = new Camera[2];
685
- targetLookAts = new cVector[2];
686
-
687
- SetCamera(cam);
688
-
689
- SetLight(new Camera(new cVector(10, 10, -20)));
690
-
691
- object = o;
692
-
693
- setBackground(Color.white);
694
-
695
- addKeyListener(this);
696
- addMouseListener(this);
697
- addMouseMotionListener(this);
698
- addMouseWheelListener(this);
699
- //System.out.println("addGLEventListener: " + this);
700
- addGLEventListener(this);
701
-
702
-// pingthread.start(); // may 2013
703
- }
704
-
7051455 private static void ApplyTransform(GL gl, Mat4f xform)
7061456 {
7071457 float[] data = new float[16];
....@@ -759,7 +1509,7 @@
7591509
7601510 GL currentGL;
7611511
762
- GL GetGL()
1512
+ public GL GetGL() // INTERFACE
7631513 {
7641514 return currentGL;
7651515 }
....@@ -2000,10 +2750,12 @@
20002750 */
20012751 TextureData ReduceTexture(TextureData texturedata, int resolution) // String name)
20022752 {
2753
+ int pixelformat = texturedata.getPixelFormat();
2754
+
20032755 int stride = 1;
2004
- if (texturedata.getPixelFormat() == GetGL().GL_RGB || texturedata.getPixelFormat() == GetGL().GL_BGR) // || texturedata.getPixelFormat() == GL.GL_LUMINANCE)
2756
+ if (pixelformat == GetGL().GL_RGB || pixelformat == GetGL().GL_BGR) // || texturedata.getPixelFormat() == GL.GL_LUMINANCE)
20052757 stride = 3;
2006
- if (texturedata.getPixelFormat() == GetGL().GL_RGBA || texturedata.getPixelFormat() == GetGL().GL_BGRA) // || texturedata.getPixelFormat() == GL.GL_LUMINANCE_ALPHA)
2758
+ if (pixelformat == GetGL().GL_RGBA || pixelformat == GetGL().GL_BGRA) // || texturedata.getPixelFormat() == GL.GL_LUMINANCE_ALPHA)
20072759 stride = 4;
20082760
20092761 int width = texturedata.getWidth();
....@@ -6269,7 +7021,7 @@
62697021 return null;
62707022 }
62717023
6272
- void ReleaseTextures(cTexture tex)
7024
+ public void ReleaseTextures(cTexture tex) // INTERFACE
62737025 {
62747026 if (/*tex == null ||*/ ambientOcclusion ) // || !textureon)
62757027 {
....@@ -6307,7 +7059,7 @@
63077059
63087060 void ReleaseTexture(String tex, boolean bump)
63097061 {
6310
- if (// drawMode != 0 || /*tex == null ||*/
7062
+ if (// DrawMode() != 0 || /*tex == null ||*/
63117063 ambientOcclusion ) // || !textureon)
63127064 {
63137065 return;
....@@ -6408,9 +7160,9 @@
64087160 }
64097161 }
64107162
6411
- /*boolean*/ void BindTextures(cTexture tex, int resolution)
7163
+ /*boolean*/ public void BindTextures(cTexture tex, int resolution) // INTERFACE
64127164 {
6413
- if (// drawMode != 0 || /*tex == null ||*/
7165
+ if (// DrawMode() != 0 || /*tex == null ||*/
64147166 ambientOcclusion ) // || !textureon)
64157167 {
64167168 return; // false;
....@@ -7310,9 +8062,9 @@
73108062 static boolean occlusionInitialized = false;
73118063 boolean selection = false;
73128064 boolean pointselection = false;
7313
- /*static*/ boolean lighttouched = true;
8065
+ ///*static*/ boolean lighttouched = true;
73148066 boolean deselect;
7315
- boolean ambientOcclusion = false;
8067
+ private boolean ambientOcclusion = false;
73168068 static boolean flash = false;
73178069 /*static*/ boolean wait = false;
73188070 boolean displaydone = false; // after repaint() calls
....@@ -7442,6 +8194,8 @@
74428194 //gl.glFrustum(-0.5*scale, 0.5*scale, -0.5*scale, 0.5*scale, 1, 100);
74438195 //glu.gluPerspective(lightshaper_fovy, 1, lightshaper_zNear, lightshaper_zFar);
74448196 double scale = lightCamera.SCALE / lightCamera.Distance();
8197
+// PATCH FILLE AUX JEANS
8198
+ //scale *= lightCamera.shaper_fovy / 25;
74458199 gl.glScaled(2 * scale, 2 * scale, -scale);
74468200 gl.glTranslated(0, 0, lightCamera.DECAL);
74478201
....@@ -7590,15 +8344,14 @@
75908344
75918345 float[] options1 = new float[]{1000, 0.00001f, 20, 0, 0}; // focus, aperture, Shadow blur, aniso, anisoV
75928346 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
8347
+ float[] options3 = new float[]{1, 1, 1, 0}; // fog color
8348
+ float[] options4 = new float[]{1, 0, 1, 0}; // image intensity, subsurface, lightsheen
75948349
75958350 static int imagecount = 0; // movie generation
75968351
75978352 static int jitter = 0;
75988353
75998354 boolean restartframe = false;
7600
-
7601
- static int framecount = 0; // general-purpose global count
76028355
76038356 void displayAntiAliased(javax.media.opengl.GL gl)
76048357 {
....@@ -7630,7 +8383,7 @@
76308383 gl.glClear(gl.GL_ACCUM_BUFFER_BIT);
76318384 for (jitter = 0; jitter < ACSIZE; jitter++) //, GrafreeD.wav.cursor += LIVE ? 735 : 0)
76328385 {
7633
- framecount++;
8386
+ Globals.framecount++;
76348387
76358388 if (CameraPane.tickcount > 0)
76368389 CameraPane.tickcount--;
....@@ -7668,7 +8421,7 @@
76688421
76698422 gl.glLightfv(gl.GL_LIGHT0, gl.GL_POSITION, pos, 0);
76708423 */
7671
- lighttouched = true;
8424
+ Globals.lighttouched = true;
76728425 //System.err.println(" shadowbuffer: " + jitter);
76738426 shadowbuffer.display();
76748427
....@@ -7690,7 +8443,7 @@
76908443
76918444 if (renderCamera != lightCamera)
76928445 for (int count = parentcam.GetTransformCount(); --count>=0;)
7693
- LA.matConcat(parentcam.toParent, matrix, matrix);
8446
+ LA.matConcat(matrix, parentcam.toParent, matrix);
76948447
76958448 // LA.matConcat(renderCamera.toScreen, renderCamera.toParent, matrix);
76968449
....@@ -7706,7 +8459,7 @@
77068459
77078460 if (renderCamera != lightCamera)
77088461 for (int count = parentcam.GetTransformCount(); --count>=0;)
7709
- LA.matConcat(matrix, parentcam.fromParent, matrix);
8462
+ LA.matConcat(parentcam.fromParent, matrix, matrix);
77108463
77118464 // LA.matConcat(renderCamera.fromParent, renderCamera.fromScreen, matrix);
77128465
....@@ -8615,13 +9368,6 @@
86159368 }
86169369 }
86179370
8618
- boolean IsFrozen()
8619
- {
8620
- boolean selectmode = drawMode == SELECTION || CameraPane.DEBUG_SELECTION;
8621
-
8622
- return !selectmode && cameracount == 0; // != 0;
8623
- }
8624
-
86259371 boolean niceon = false;
86269372 javax.swing.Timer AAtimer = new javax.swing.Timer(750, this);
86279373 boolean currentlydrawing = false;
....@@ -8639,8 +9385,8 @@
86399385 }
86409386 // if (DEBUG_SELECTION)
86419387 // {
8642
-// if (drawMode != SELECTION)
8643
-// drawMode = SELECTION;
9388
+// if (DrawMode() != SELECTION)
9389
+// DrawMode() = SELECTION;
86449390 // }
86459391
86469392 if (!isRenderer)
....@@ -8696,9 +9442,9 @@
86969442
86979443 //ANTIALIAS = 0;
86989444
8699
- if (drawMode == DEFAULT) // && CURRENTANTIALIAS > 0)
9445
+ if (DrawMode() == DEFAULT) // && CURRENTANTIALIAS > 0)
87009446 {
8701
- if (niceon || isLIVE())
9447
+ if (niceon || Globals.isLIVE())
87029448 {
87039449 //if(active == 0)
87049450 // antialiaser = null;
....@@ -8723,7 +9469,7 @@
87239469 assert eyeCamera.shaper_zFar == 1E5f; // 500.0f;
87249470 */
87259471
8726
- if (drawMode == DEFAULT)
9472
+ if (DrawMode() == DEFAULT)
87279473 {
87289474 currentlydrawing = true;
87299475 }
....@@ -8754,12 +9500,12 @@
87549500
87559501 // if(Applet3D.clipboard != null)
87569502 // System.out.println("Clipboard = " + Applet3D.clipboard); //.get(0).parent);
8757
-//drawMode = SELECTION;
9503
+//DrawMode() = SELECTION;
87589504 indexcount = 0;
87599505
8760
- if (drawMode == OCCLUSION)
9506
+ if (DrawMode() == OCCLUSION)
87619507 {
8762
- drawMode = DEFAULT;
9508
+ Globals.drawMode = DEFAULT; // WARNING
87639509 ambientOcclusion = true;
87649510 setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
87659511 Object3D theobject = object;
....@@ -8778,19 +9524,19 @@
87789524 ambientOcclusion = false;
87799525 }
87809526
8781
- if (lighttouched && drawMode == DEFAULT && !lightMode) // && !FROZEN)
9527
+ if (Globals.lighttouched && DrawMode() == DEFAULT && !lightMode) // && !FROZEN)
87829528 {
87839529 //if (RENDERSHADOW) // ?
87849530 if (!IsFrozen())
87859531 {
87869532 // dec 2012
8787
- if (!(!flash && !lightMode && drawMode == DEFAULT && ANTIALIAS > 0))
9533
+ if (!ambientOcclusion && !(!flash && !lightMode && DrawMode() == DEFAULT && ANTIALIAS > 0))
87889534 {
8789
- framecount++;
9535
+ Globals.framecount++;
87909536 shadowbuffer.display();
87919537 }
87929538 }
8793
- lighttouched = false; // ??
9539
+ Globals.lighttouched = false; // ??
87949540 //drawing = true;
87959541 //lighttouched = true;
87969542 }
....@@ -8811,9 +9557,9 @@
88119557 //eyeCamera.shaper_fovy = 1;
88129558 }
88139559
8814
- if ((RENDERPROGRAM != 0 || ambientOcclusion || spherical) && drawMode == DEFAULT) // SELECTION)
9560
+ if ((RENDERPROGRAM != 0 || ambientOcclusion || spherical) && DrawMode() == DEFAULT) // SELECTION)
88159561 {
8816
- //System.out.println("drawMode = " + drawMode);
9562
+ //System.out.println("DrawMode() = " + DrawMode());
88179563 vertexMode |= VP_PASS;
88189564 //vertexMode |= VP_PROJECTION;
88199565 if (!ambientOcclusion)
....@@ -8873,7 +9619,7 @@
88739619 Camera cam = renderCamera; // lightMode?lightCamera:eyeCamera;
88749620 //Camera lightcam = new Camera(light0);
88759621
8876
- if (drawMode == SHADOW)
9622
+ if (DrawMode() == SHADOW)
88779623 {
88789624 /*
88799625 gl.glMatrixMode(GL.GL_MODELVIEW);
....@@ -8912,7 +9658,7 @@
89129658 // if (parentcam != renderCamera) // not a light
89139659 if (cam != lightCamera)
89149660 for (int count = parentcam.GetTransformCount(); --count>=0;)
8915
- LA.matConcat(parentcam.toParent, matrix, matrix);
9661
+ LA.matConcat(matrix, parentcam.toParent, matrix);
89169662
89179663 for (int j = 0; j < 4; j++)
89189664 {
....@@ -8927,7 +9673,7 @@
89279673 // if (parentcam != renderCamera) // not a light
89289674 if (cam != lightCamera)
89299675 for (int count = parentcam.GetTransformCount(); --count>=0;)
8930
- LA.matConcat(matrix, parentcam.fromParent, matrix);
9676
+ LA.matConcat(parentcam.fromParent, matrix, matrix);
89319677
89329678 //LA.matConcat(cam.fromScreen, parentcam.fromParent, matrix);
89339679
....@@ -8963,7 +9709,7 @@
89639709 gl.glClear(gl.GL_DEPTH_BUFFER_BIT);
89649710 } else
89659711 {
8966
- if (drawMode != DEFAULT)
9712
+ if (DrawMode() != DEFAULT)
89679713 {
89689714 gl.glClearColor(1, 1, 1, 0);
89699715 } // 1);
....@@ -9028,7 +9774,7 @@
90289774
90299775 fast &= !ambientOcclusion;
90309776
9031
- if (drawMode == DEFAULT)
9777
+ if (DrawMode() == DEFAULT)
90329778 {
90339779 //gl.glEnable(gl.GL_ALPHA_TEST);
90349780 //gl.glActiveTexture(GL.GL_TEXTURE0);
....@@ -9089,6 +9835,8 @@
90899835 //gl.glFrustum(-0.5*scale, 0.5*scale, -0.5*scale, 0.5*scale, 1, 100);
90909836 //glu.gluPerspective(lightshaper_fovy, 1, lightshaper_zNear, lightshaper_zFar);
90919837 double scale = lightCamera.SCALE / lightCamera.Distance();
9838
+// PATCH FILLE AUX JEANS
9839
+ //scale *= lightCamera.shaper_fovy / 25;
90929840 gl.glScaled(2 * scale, 2 * scale, -scale);
90939841 gl.glTranslated(0, 0, lightCamera.DECAL);
90949842
....@@ -9224,10 +9972,12 @@
92249972 gl.glMatrixMode(gl.GL_PROJECTION);
92259973 gl.glLoadIdentity();
92269974
9227
- if (drawMode == SHADOW || cam == lightCamera) // || (vertexMode&VP_PROJECTION) != 0)
9975
+ if (DrawMode() == SHADOW || cam == lightCamera) // || (vertexMode&VP_PROJECTION) != 0)
92289976 {
92299977 //glu.gluPerspective(lightshaper_fovy, 1, lightshaper_zNear, lightshaper_zFar);
92309978 double scale = lightCamera.SCALE / lightCamera.Distance();
9979
+// PATCH FILLE AUX JEANS
9980
+ //scale *= lightCamera.shaper_fovy / 25;
92319981 gl.glScaled(2 * scale, 2 * scale, -scale);
92329982 gl.glTranslated(0, 0, lightCamera.DECAL);
92339983 //System.out.println("DECAL = " + LIGHTDECAL + "; SCALE = " + LIGHTSCALE);
....@@ -9280,7 +10030,7 @@
928010030 //gl.glPushMatrix();
928110031 gl.glLoadIdentity();
928210032
9283
- if (!ambientOcclusion) // drawMode != OCCLUSION)
10033
+ if (!ambientOcclusion) // DrawMode() != OCCLUSION)
928410034 {
928510035 //LA.xformPos(light0, lightCamera.fromScreen, light);
928610036 LA.xformDir(dirlight, lightCamera.fromScreen, lightposition);
....@@ -9367,7 +10117,7 @@
936710117 }
936810118
936910119 /**/
9370
- if (true) // drawMode == SELECTION) // != DEFAULT)
10120
+ if (true) // DrawMode() == SELECTION) // != DEFAULT)
937110121 gl.glDisable(gl.GL_LIGHTING);
937210122 else
937310123 gl.glEnable(gl.GL_LIGHTING);
....@@ -9379,12 +10129,13 @@
937910129
938010130 gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 63, options2, 0);
938110131 gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 62, options3, 0);
10132
+ gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 61, options4, 0);
938210133
938310134 options2[0] *= renderCamera.Distance();
938410135
938510136 lightslot = 64;
938610137
9387
- if (!frozen && !ambientOcclusion && isRenderer && drawMode == DEFAULT)
10138
+ if (!frozen && !ambientOcclusion && isRenderer && DrawMode() == DEFAULT)
938810139 {
938910140 DrawLights(object);
939010141 }
....@@ -9395,7 +10146,7 @@
939510146 fragmentMode |= (lightslot - 64) << 2; // 1; // first bit is available for aniso
939610147 //System.out.println("fragmentMode = " + fragmentMode);
939710148
9398
- if (drawMode == DEFAULT || drawMode == SELECTION || DEBUG_SELECTION)
10149
+ if (DrawMode() == DEFAULT || DrawMode() == SELECTION || DEBUG_SELECTION)
939910150 {
940010151 /*
940110152 if (CULLFACE || (ambientOcclusion && OCCLUSION_CULLING))
....@@ -9428,7 +10179,7 @@
942810179 }
942910180 }
943010181
9431
- if (drawMode == DEFAULT)
10182
+ if (DrawMode() == DEFAULT)
943210183 {
943310184 if (WIREFRAME && !ambientOcclusion)
943410185 {
....@@ -9446,7 +10197,7 @@
944610197 gl.glDisable(GL.GL_FRAGMENT_PROGRAM_ARB);
944710198 gl.glDisable(GL.GL_VERTEX_PROGRAM_ARB);
944810199
9449
- if (!fast/*RENDERPROGRAM != 0*/ && (drawMode == DEFAULT || drawMode == SHADOW)) // && !WIREFRAME) //
10200
+ if (!fast/*RENDERPROGRAM != 0*/ && (DrawMode() == DEFAULT || DrawMode() == SHADOW)) // && !WIREFRAME) //
945010201 {
945110202 if (vertexMode != 0) // && !fast)
945210203 {
....@@ -9466,7 +10217,7 @@
946610217 }
946710218 }
946810219
9469
- if (false) // fast && !IsFreezed() && drawMode != SELECTION && !ambientOcclusion)
10220
+ if (false) // fast && !IsFreezed() && DrawMode() != SELECTION && !ambientOcclusion)
947010221 {
947110222 //gl.glDepthFunc(GL.GL_LEQUAL);
947210223 //gl.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT);
....@@ -9494,7 +10245,7 @@
949410245 //gl.glDepthMask(false);
949510246 }
949610247
9497
- if (false) // drawMode == SHADOW)
10248
+ if (false) // DrawMode() == SHADOW)
949810249 {
949910250 //SetColumnMajorData(cameraInverseTransform, view_1);
950010251 //System.out.println("light = " + cameraInverseTransform);
....@@ -9508,16 +10259,16 @@
950810259 //System.out.println("object = " + object);
950910260 if (!frozen && !imageLocked)
951010261 {
9511
- if (!flash && !lightMode && drawMode == DEFAULT && ANTIALIAS > 0)
10262
+ if (!flash && !lightMode && DrawMode() == DEFAULT && ANTIALIAS > 0)
951210263 {
951310264 displayAntiAliased(gl);
951410265 } else
951510266 {
951610267 programcount = 0;
9517
- int keepmode = drawMode;
10268
+ int keepmode = DrawMode();
951810269 // if (DEBUG_SELECTION)
951910270 // {
9520
-// drawMode = SELECTION;
10271
+// DrawMode() = SELECTION;
952110272 // }
952210273 // for point selection
952310274 // gl.glGetDoublev(gl.GL_MODELVIEW_MATRIX, tempmat, 0);
....@@ -9527,10 +10278,10 @@
952710278 DrawObject(gl);
952810279
952910280 // jan 2013 System.err.println("RESET ABORT (display)");
9530
- // if (drawMode == DEFAULT)
10281
+ // if (DrawMode() == DEFAULT)
953110282 // ABORTED = false;
953210283 fullreset = false;
9533
- drawMode = keepmode;
10284
+ Globals.drawMode = keepmode; // WARNING
953410285 //System.out.println("PROGRAM SWITCH " + programcount);
953510286 }
953610287 }
....@@ -9538,11 +10289,11 @@
953810289 gl.glDisable(GL.GL_VERTEX_PROGRAM_ARB);
953910290 gl.glDisable(GL.GL_FRAGMENT_PROGRAM_ARB);
954010291
9541
- if (drawMode == DEFAULT)
10292
+ if (DrawMode() == DEFAULT)
954210293 {
954310294 ReleaseTexture(NOISE_TEXTURE, false);
954410295 }
9545
- //if (drawMode == DEFAULT)
10296
+ //if (DrawMode() == DEFAULT)
954610297 {
954710298
954810299 gl.glActiveTexture(GL.GL_TEXTURE1);
....@@ -9554,7 +10305,7 @@
955410305 //else
955510306 //gl.glDisable(gl.GL_TEXTURE_2D);
955610307 //gl.glPopMatrix();
9557
- if (imageCompleted && ANTIALIAS > 0 && drawMode == DEFAULT && cam != lightCamera && !ambientOcclusion)
10308
+ if (imageCompleted && ANTIALIAS > 0 && DrawMode() == DEFAULT && cam != lightCamera && !ambientOcclusion)
955810309 {
955910310 //new Exception().printStackTrace();
956010311 //System.out.println("Draw image " + width + ", " + height);
....@@ -9596,7 +10347,7 @@
959610347 //gl.glFlush();
959710348 }
959810349
9599
- if (flash && drawMode == DEFAULT)
10350
+ if (flash && DrawMode() == DEFAULT)
960010351 {
960110352 flash = false;
960210353 wait = true;
....@@ -9604,9 +10355,9 @@
960410355 }
960510356
960610357 //drawing = false;
9607
- //if(drawMode == DEFAULT)
10358
+ //if(DrawMode() == DEFAULT)
960810359 // niceon = false;
9609
- if (drawMode == DEFAULT)
10360
+ if (DrawMode() == DEFAULT)
961010361 {
961110362 currentlydrawing = false;
961210363 }
....@@ -9626,7 +10377,7 @@
962610377 repaint();
962710378 }
962810379
9629
- if (isLIVE() && drawMode == DEFAULT) // may 2013
10380
+ if (Globals.isLIVE() && DrawMode() == DEFAULT) // may 2013
963010381 repaint();
963110382
963210383 displaydone = true;
....@@ -9663,7 +10414,7 @@
966310414 if (GrafreeD.RENDERME > 0)
966410415 GrafreeD.RENDERME--; // mechante magouille
966510416
9666
- ONESTEP = false;
10417
+ Globals.ONESTEP = false;
966710418 }
966810419
966910420 static boolean zoomonce = false;
....@@ -9671,11 +10422,11 @@
967110422 void DrawObject(GL gl, boolean draw)
967210423 {
967310424 //System.out.println("DRAW OBJECT " + mouseDown);
9674
-// drawMode = SELECTION;
10425
+// DrawMode() = SELECTION;
967510426 //GL gl = getGL();
967610427 if ((TRACK || SHADOWTRACK) || zoomonce)
967710428 {
9678
- if ((TRACK || SHADOWTRACK) && trackedobject != null && drawMode == SHADOW) // && !lightMode)
10429
+ if ((TRACK || SHADOWTRACK) && trackedobject != null && DrawMode() == SHADOW) // && !lightMode)
967910430 object.editWindow.ScreenFit(trackedobject, SHADOWTRACK && !TRACK);
968010431 pingthread.StepToTarget(true); // true);
968110432 // zoomonce = false;
....@@ -9696,9 +10447,9 @@
969610447 callist = gl.glGenLists(1);
969710448 }
969810449
9699
- boolean selectmode = drawMode == SELECTION || CameraPane.DEBUG_SELECTION;
10450
+ boolean selectmode = DrawMode() == SELECTION || CameraPane.DEBUG_SELECTION;
970010451
9701
- boolean active = !selectmode; // drawMode != SELECTION; // mouseDown;
10452
+ boolean active = !selectmode; // DrawMode() != SELECTION; // mouseDown;
970210453
970310454 if (!mainDL || !active || touched)
970410455 {
....@@ -9725,7 +10476,7 @@
972510476 PushMatrix(ClickInfo.matbuffer);
972610477 }
972710478
9728
- if (drawMode == 0)
10479
+ if (DrawMode() == 0)
972910480 {
973010481 // System.out.println("CLEAR +++++++++++++++ +++++++++++++++ +++++++++++++++ +++++++++++++++");
973110482
....@@ -9739,7 +10490,7 @@
973910490 // DRAW
974010491 object.draw(this, /*(Composite)*/ object, false, false);
974110492
9742
- if (drawMode == DEFAULT)
10493
+ if (DrawMode() == DEFAULT)
974310494 {
974410495 if (DEBUG)
974510496 {
....@@ -9750,40 +10501,40 @@
975010501 selectedpoint.radius = radius;
975110502 selectedpoint.recalculate();
975210503 selectedpoint.material = new cMaterial();
9753
- selectedpoint.material.color = 0.25f;
10504
+ selectedpoint.material.color = 0.15f; // Yellow
975410505 selectedpoint.material.modulation = 0.75f;
975510506
9756
- debugpoint.radius = radius;
9757
- debugpoint.recalculate();
9758
- debugpoint.material = new cMaterial();
9759
- debugpoint.material.color = 0.25f;
9760
- debugpoint.material.modulation = 0.75f;
10507
+ debugpointG.radius = radius;
10508
+ debugpointG.recalculate();
10509
+ debugpointG.material = new cMaterial();
10510
+ debugpointG.material.color = 0.25f; // Green
10511
+ debugpointG.material.modulation = 0.75f;
976110512
9762
- debugpoint2.radius = radius;
9763
- debugpoint2.recalculate();
9764
- debugpoint2.material = new cMaterial();
9765
- debugpoint2.material.color = 0.75f;
9766
- debugpoint2.material.modulation = 0.75f;
10513
+ debugpointP.radius = radius;
10514
+ debugpointP.recalculate();
10515
+ debugpointP.material = new cMaterial();
10516
+ debugpointP.material.color = 0.75f; // Purple
10517
+ debugpointP.material.modulation = 0.75f;
976710518
9768
- debugpoint3.radius = radius;
9769
- debugpoint3.recalculate();
9770
- debugpoint3.material = new cMaterial();
9771
- debugpoint3.material.color = 0.5f;
9772
- debugpoint3.material.modulation = 0.75f;
10519
+ debugpointC.radius = radius;
10520
+ debugpointC.recalculate();
10521
+ debugpointC.material = new cMaterial();
10522
+ debugpointC.material.color = 0.5f; // Cyan
10523
+ debugpointC.material.modulation = 0.75f;
977310524
9774
- debugpoint4.radius = radius;
9775
- debugpoint4.recalculate();
9776
- debugpoint4.material = new cMaterial();
9777
- debugpoint4.material.color = 0f;
9778
- debugpoint4.material.modulation = 0.75f;
10525
+ debugpointR.radius = radius;
10526
+ debugpointR.recalculate();
10527
+ debugpointR.material = new cMaterial();
10528
+ debugpointR.material.color = 0f; // Red
10529
+ debugpointR.material.modulation = 0.75f;
977910530
978010531 InitPoints(radius);
978110532 }
978210533 selectedpoint.draw(this, /*(Composite)*/ null, false, false);
9783
- debugpoint.draw(this, /*(Composite)*/ null, false,false);
9784
- debugpoint2.draw(this, /*(Composite)*/ null, false,false);
9785
- debugpoint3.draw(this, /*(Composite)*/ null, false,false);
9786
- debugpoint4.draw(this, /*(Composite)*/ null, false,false);
10534
+ debugpointG.draw(this, /*(Composite)*/ null, false,false);
10535
+ debugpointP.draw(this, /*(Composite)*/ null, false,false);
10536
+ debugpointC.draw(this, /*(Composite)*/ null, false,false);
10537
+ debugpointR.draw(this, /*(Composite)*/ null, false,false);
978710538 // DrawPoints(this);
978810539 }
978910540
....@@ -9791,7 +10542,7 @@
979110542 }
979210543 // GrafreeD.traceoff();
979310544 //System.out.println(stackdepth);
9794
- if (drawMode == 0)
10545
+ if (DrawMode() == 0)
979510546 {
979610547 ReleaseTextures(DEFAULT_TEXTURES);
979710548
....@@ -9816,17 +10567,19 @@
981610567
981710568 checker = null;
981810569
9819
- if (!ambientOcclusion && !IsFrozen() && drawMode == DEFAULT)
10570
+ if (!ambientOcclusion && !IsFrozen() && DrawMode() == DEFAULT)
982010571 FindChecker(object);
982110572
9822
- if (checker != null && drawMode == DEFAULT)
10573
+ if (checker != null && DrawMode() == DEFAULT)
982310574 {
9824
- // BindTexture(IMMORTAL_TEXTURE);
10575
+ //BindTexture(IMMORTAL_TEXTURE);
10576
+ BindTextures(checker.GetTextures(), checker.texres);
982510577 // NEAREST
982610578 GetGL().glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); // GL.GL_LINEAR);
982710579 DrawChecker(gl);
982810580 //checker.Draw(this, null, false);
982910581 // ReleaseTexture(IMMORTAL_TEXTURE);
10582
+ ReleaseTextures(checker.GetTextures());
983010583 }
983110584
983210585 if (object.parent != null)
....@@ -9839,7 +10592,7 @@
983910592 //gl.glDisable(GL.GL_VERTEX_PROGRAM_ARB);
984010593 //gl.glDisable(GL.GL_FRAGMENT_PROGRAM_ARB);
984110594
9842
- if (DISPLAYTEXT && drawMode == DEFAULT)
10595
+ if (DISPLAYTEXT && DrawMode() == DEFAULT)
984310596 {
984410597 // Draw it once, then use the raster
984510598 Balloon(gl, balloon.createGraphics());
....@@ -9895,9 +10648,9 @@
989510648 int[] xs = new int[3];
989610649 int[] ys = new int[3];
989710650
9898
- void DrawString(Object3D obj) // String string)
10651
+ public void DrawString(Object3D obj) // String string) // INTERFACE
989910652 {
9900
- if (!DISPLAYTEXT || drawMode != DEFAULT)
10653
+ if (!DISPLAYTEXT || DrawMode() != DEFAULT)
990110654 {
990210655 return;
990310656 }
....@@ -10357,11 +11110,13 @@
1035711110 "PARAM params6 = program.env[6];" + // bump, noise, borderfade, fog punchthrough
1035811111 "PARAM params7 = program.env[7];" + // noise power, opacity power
1035911112 "PARAM options0 = program.env[63];" + // fog density, intensity, elevation
10360
- "PARAM options1 = program.env[62];" + // fog rgb color, image intensity
11113
+ "PARAM options1 = program.env[62];" + // fog rgb color
11114
+ "PARAM options2 = program.env[61];" + // image intensity, subsurface, lightsheen
1036111115 "PARAM pointlight = program.env[127];" + // ...
1036211116 "PARAM zero = { 0.0, 0.0, 0.0, 0.0 };" +
1036311117 "PARAM halfhalf = { 0.25, 0.25, 0.25, 1.0 };" +
1036411118 "PARAM half = { 0.5, 0.5, 0.5, 1.0 };" +
11119
+ "PARAM threequarter = { 0.75, 0.75, 0.75, 1.0 };" +
1036511120 "PARAM two = { 2.0, 2.0, 2.0, 1.0 };" +
1036611121 "PARAM ten = { 10, 10, 10, 1.0 };" +
1036711122 "PARAM one3rd = { 0.5, 0.33333333333, 0.333333333, 1.0 };" +
....@@ -10382,6 +11137,7 @@
1038211137 "PARAM lodbias = { 10,10,10,10 };" + // 20, -2, -20, 1.0 };" +
1038311138 "PARAM infinity = { 100000000, 100000000, 100000000, 1.0 };" +
1038411139 "PARAM one2048th = { 0.00048828125, 0.00048828125, 0.00048828125, 1.0 };" +
11140
+ "PARAM ninetenth = { 0.9, 0.9, 0.9, 1.0 };" +
1038511141 "PARAM almostone = { 0.999, 0.999, 0.999, 1.0 };" +
1038611142 "PARAM c256 = { 256, 256, 256, 1.0 };" +
1038711143 "PARAM c256i = { 0.00390625, 0.00390625, 0.00390625, 1.0 };" +
....@@ -10422,6 +11178,10 @@
1042211178 "TEMP R1;" +
1042311179 "TEMP R2;" +
1042411180 "TEMP R3;" +
11181
+ "TEMP min;" +
11182
+ "TEMP max;" +
11183
+ "TEMP average;" +
11184
+ "TEMP saturation;" +
1042511185 "TEMP keep1;" +
1042611186 "TEMP keep2;" +
1042711187 "TEMP keep3;" +
....@@ -10952,10 +11712,40 @@
1095211712
1095311713 // skin?
1095411714 // Saturation for skin
10955
- /**/ // c'est ici
10956
- (Skinshader? "DP3 temp.x, final,one;" +
11715
+ /**/
11716
+ (Skinshader?
11717
+ "DP3 average.x, final,one;" +
11718
+ "MUL average, one3rd.xxxx,average.xxxx;" +
11719
+
11720
+ "MIN min.x, final.x,final.y;" +
11721
+ "MIN min.x, min.x,final.z;" +
11722
+
11723
+ "MAX max.x, final.x,final.y;" +
11724
+ "MAX max.x, max.x,final.z;" +
11725
+ "MOV max, max.xxxx;" +
11726
+
11727
+ "SUB saturation, max, final;" +
11728
+
11729
+ "ADD temp.x, max.x, one10th.x;" +
11730
+ "RCP temp.x, temp.x;" +
11731
+ "MUL temp.x, temp.x, half.x;" +
11732
+ "MUL saturation, saturation, temp.xxxx;" +
11733
+
11734
+ "DP3 ndotl.x, normald, light;" +
11735
+ "MAX ndotl.x, ndotl.x, -ndotl.x;" +
11736
+
11737
+ "SUB temp.x, one.x, ndotl.x;" +
11738
+ "ADD temp.x, temp.x, options2.z;" + // lightsheen
11739
+ "ADD temp.y, one.y, options2.y;" + // sursurface
11740
+ "MUL temp.x, temp.x, temp.y;" +
11741
+
11742
+ "MUL saturation, saturation, temp.xxxx;" +
11743
+ "SUB_SAT temp, max, saturation;" +
11744
+/**
11745
+ "DP3 temp.x, final,one;" +
1095711746 "MUL R2, one3rd.xxxx,temp.xxxx;" +
10958
- "SUB temp, final,R2;" +
11747
+ "SUB temp, final, R2;" +
11748
+
1095911749 // using light angle
1096011750 "DP3 ndotl.x, normald,light;" +
1096111751 //"SLT ndotl.y, ndotl.x, zero.x;" +
....@@ -10968,7 +11758,6 @@
1096811758 // using light intensity
1096911759 "MOV ndotl.z, R2.x;" +
1097011760 "MUL ndotl.z, ndotl.z, ndotl.z;" + // tuning...
10971
-
1097211761 // june 2014
1097311762 "MAD R1.x, ndotl.z,slope.y,one.x;" +
1097411763 // "SUB ndotl.x, one.x, ndotl.x;" +
....@@ -10980,6 +11769,7 @@
1098011769 //"MUL R2.y, shadow.x,R2.y;" + // avril 2014
1098111770
1098211771 "MAD temp.x, R2.y, ndotl.y, temp.x;" + // red shift (skin)
11772
+/**/
1098311773
1098411774 // "ADD final, R2,temp;" +
1098511775 "MOV final, temp;"
....@@ -11069,7 +11859,7 @@
1106911859 /**/
1107011860 // HDR
1107111861 "MOV temp.z, final.a;" +
11072
- "MUL final, final,options1.w;" +
11862
+ "MUL final, final,options2.x;" +
1107311863 "MOV final.a, temp.z;" +
1107411864 /**/
1107511865
....@@ -11262,6 +12052,7 @@
1126212052 String Shadow(String depth, String shadow)
1126312053 {
1126412054 return "MAX temp.x, ndotl.x, one64th.x;" +
12055
+ "MIN temp.x, temp.x, ninetenth.x;" +
1126512056 /**/
1126612057 // Sine
1126712058 "MUL temp.y, temp.x, temp.x;" +
....@@ -11886,9 +12677,10 @@
1188612677 return;
1188712678 }
1188812679
12680
+ boolean capsLocked = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK);
1188912681
1189012682 // TIMER
11891
- if (!wheeltimer.isRunning() && e.getModifiersEx() == 0) // VR
12683
+ if (!wheeltimer.isRunning() && e.getModifiersEx() == 0 && !capsLocked) // VR
1189212684 {
1189312685 keepboxmode = BOXMODE;
1189412686 keepsupport = SUPPORT;
....@@ -12017,7 +12809,7 @@
1201712809 // ObjEditor.tweenManager.update(1f / 60f);
1201812810
1201912811 // fev 2014???
12020
- if ((TRACK || SHADOWTRACK) && trackedobject != null) // && drawMode == SHADOW) // && !lightMode)
12812
+ if ((TRACK || SHADOWTRACK) && trackedobject != null) // && DrawMode() == SHADOW) // && !lightMode)
1202112813 object.editWindow.ScreenFit(trackedobject, SHADOWTRACK && !TRACK);
1202212814 pingthread.StepToTarget(true); // true);
1202312815 }
....@@ -12268,7 +13060,7 @@
1226813060 //System.out.println("---------------- ---------- Paint " + tmp.length2());
1226913061 if (lightMode)
1227013062 {
12271
- lighttouched = true;
13063
+ Globals.lighttouched = true;
1227213064 }
1227313065
1227413066 if (OEILONCE && OEIL)
....@@ -12326,7 +13118,7 @@
1232613118 mouseDown = false;
1232713119 if (lightMode)
1232813120 {
12329
- lighttouched = true;
13121
+ Globals.lighttouched = true;
1233013122 }
1233113123 repaint();
1233213124 alreadypainted = true;
....@@ -12334,7 +13126,7 @@
1233413126 isMoving = false;
1233513127 } //??
1233613128
12337
- if (isLIVE() && !alreadypainted)
13129
+ if (Globals.isLIVE() && !alreadypainted)
1233813130 {
1233913131 // FOR DEBUG BREAKPOINT USING PAUSE: while (true)
1234013132 repaint();
....@@ -12346,7 +13138,7 @@
1234613138 {
1234713139 if (lightMode)
1234813140 {
12349
- lighttouched = true;
13141
+ Globals.lighttouched = true;
1235013142 }
1235113143 drag(X, (mouseMode != 0) ? Y : anchorY, MODIFIERS);
1235213144 }
....@@ -12589,6 +13381,7 @@
1258913381 {
1259013382 manipCamera.Translate(dx, dy, getWidth());
1259113383 }
13384
+ else
1259213385 if ((mouseMode & ZOOM) == 0 && (mouseMode & VR) != 0)
1259313386 {
1259413387 manipCamera.RotateInterest(dx, dy);
....@@ -12599,7 +13392,7 @@
1259913392
1260013393 if (manipCamera == lightCamera)
1260113394 {
12602
- lighttouched = true;
13395
+ Globals.lighttouched = true;
1260313396 }
1260413397 /*
1260513398 switch (mode)
....@@ -12814,13 +13607,15 @@
1281413607 {
1281513608 mouseMode |= ZOOM;
1281613609 }
12817
- if ((modifiers & META) == META)
13610
+
13611
+ boolean capsLocked = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK);
13612
+ if (capsLocked || (modifiers & META) == META)
1281813613 {
1281913614 mouseMode |= VR; // BACKFORTH;
1282013615 }
1282113616 if ((modifiers & CTRLCLICK) == CTRLCLICK)
1282213617 {
12823
- mouseMode |= SELECT; // BACKFORTH;
13618
+ mouseMode |= SELECT;
1282413619 }
1282513620 if ((modifiers & COMMAND) == COMMAND)
1282613621 {
....@@ -12828,6 +13623,7 @@
1282813623 }
1282913624 if ((modifiers & SHIFT) == SHIFT || forcetranslate)
1283013625 {
13626
+ mouseMode &= ~VR;
1283113627 mouseMode |= TRANSLATE;
1283213628 }
1283313629 // if ((modifiers & SHIFT_META) == SHIFT_META)
....@@ -12984,7 +13780,7 @@
1298413780 case 'B':
1298513781 BRISMOOTH ^= true;
1298613782 SHADOWCULLFACE ^= true;
12987
- lighttouched = true;
13783
+ Globals.lighttouched = true;
1298813784 repaint();
1298913785 break;
1299013786 case 'b':
....@@ -13084,7 +13880,7 @@
1308413880 repaint();
1308513881 break;
1308613882 case 'O':
13087
- drawMode = OCCLUSION;
13883
+ Globals.drawMode = OCCLUSION; // WARNING
1308813884 repaint();
1308913885 break;
1309013886 case 'o':
....@@ -13175,7 +13971,7 @@
1317513971 break;
1317613972 case ' ':
1317713973 lightMode ^= true;
13178
- lighttouched = true;
13974
+ Globals.lighttouched = true;
1317913975 manipCamera = renderCamera = lightMode ? lightCamera : eyeCamera;
1318013976 targetLookAt.set(manipCamera.lookAt);
1318113977 repaint();
....@@ -13187,11 +13983,11 @@
1318713983 repaint();
1318813984 break;
1318913985 case 'Z':
13190
- RESIZETEXTURE ^= true;
13191
- break;
13986
+ //RESIZETEXTURE ^= true;
13987
+ //break;
1319213988 case 'z':
1319313989 RENDERSHADOW ^= true;
13194
- lighttouched = true;
13990
+ Globals.lighttouched = true;
1319513991 repaint();
1319613992 break;
1319713993 //case UP:
....@@ -13217,7 +14013,8 @@
1321714013 FlipTransform();
1321814014 break;
1321914015 case ENTER:
13220
- object.editWindow.ScreenFit(); // Edit();
14016
+ // object.editWindow.ScreenFit(); // Edit();
14017
+ ToggleLive();
1322114018 break;
1322214019 case DELETE:
1322314020 ClearSelection();
....@@ -13792,6 +14589,7 @@
1379214589 //if (g != gr) g.drawImage(img, 0, 0, width, height, null);
1379314590 }
1379414591
14592
+ // To avoid clear.
1379514593 public void update(Graphics g)
1379614594 {
1379714595 paint(g);
....@@ -14394,7 +15192,7 @@
1439415192 gl.glPushAttrib(GL.GL_ALL_ATTRIB_BITS);
1439515193 gl.glPushMatrix();
1439615194 gl.glLoadIdentity();
14397
- PushMatrix(checker.toParent);
15195
+ //PushMatrix(checker.toParent);
1439815196
1439915197 gl.glMatrixMode(GL.GL_TEXTURE);
1440015198 gl.glPushMatrix();
....@@ -14417,8 +15215,8 @@
1441715215
1441815216 gl.glNormal3f(0.0f, 0.0f, 1.0f);
1441915217
14420
- float step = 0.1666f; //0.25f;
14421
- float stepv = step * 1652 / 998;
15218
+ float step = 2; // 0.1666f; //0.25f;
15219
+ float stepv = 2; // step * 1652 / 998;
1442215220
1442315221 int i0 = 0;
1442415222 /*
....@@ -14454,20 +15252,21 @@
1445415252 /**/
1445515253 //checker.GetMaterial().opacity = 1.1f;
1445615254 ////checker.GetMaterial().ambient = 0.99f;
14457
- Object3D.materialstack[Object3D.materialdepth] = checker.material;
14458
- Object3D.selectedstack[Object3D.materialdepth] = false;
14459
- cStatic.objectstack[Object3D.materialdepth++] = checker;
15255
+ materialstack[materialdepth] = checker.material;
15256
+ selectedstack[materialdepth] = false;
15257
+ cStatic.objectstack[materialdepth++] = checker;
1446015258 //System.out.println("material " + material);
1446115259 //Applet3D.tracein(this, selected);
1446215260 vector2buffer = checker.projectedVertices;
1446315261
14464
- checker.GetMaterial().Draw(this, false); // true);
15262
+ //checker.GetMaterial().Draw(this, false); // true);
15263
+ DrawMaterial(checker.GetMaterial(), false); // true);
1446515264
14466
- Object3D.materialdepth -= 1;
14467
- if (Object3D.materialdepth > 0)
15265
+ materialdepth -= 1;
15266
+ if (materialdepth > 0)
1446815267 {
14469
- vector2buffer = cStatic.objectstack[Object3D.materialdepth - 1].projectedVertices;
14470
- Object3D.materialstack[Object3D.materialdepth - 1].Draw(this, Object3D.selectedstack[Object3D.materialdepth - 1]);
15268
+ vector2buffer = cStatic.objectstack[materialdepth - 1].projectedVertices;
15269
+ DrawMaterial(materialstack[materialdepth - 1], selectedstack[materialdepth - 1]);
1447115270 }
1447215271 //checker.GetMaterial().opacity = 1f;
1447315272 ////checker.GetMaterial().ambient = 1f;
....@@ -14488,15 +15287,27 @@
1448815287
1448915288 //float u = (i+1)/2;
1449015289 //float v = (j+1)/2;
14491
- gl.glTexCoord2f((i + 1) / 2, (j + 1) / 2); // (1,0) // (i+1+step)/2,(j+1)/2);
15290
+ if (checker.flipV)
15291
+ gl.glTexCoord2f((i + 1) / 2, 1 - (j + 1) / 2);
15292
+ else
15293
+ gl.glTexCoord2f((i + 1) / 2, (j + 1) / 2); // (1,0) // (i+1+step)/2,(j+1)/2);
1449215294 gl.glVertex3f(i, j, -0.5f);
1449315295
15296
+ if (checker.flipV)
15297
+ gl.glTexCoord2f((i + 1 + step) / 2, 1 - (j + 1) / 2); // (1,1) // (i+1+step)/2,(j+1+step)/2);
15298
+ else
1449415299 gl.glTexCoord2f((i + 1 + step) / 2, (j + 1) / 2); // (1,1) // (i+1+step)/2,(j+1+step)/2);
1449515300 gl.glVertex3f(i + step, j, -0.5f);
1449615301
15302
+ if (checker.flipV)
15303
+ gl.glTexCoord2f((i + 1 + step) / 2, 1 - (j + 1 + stepv) / 2); // (0,1) //(i+1)/2,(j+1+step)/2);
15304
+ else
1449715305 gl.glTexCoord2f((i + 1 + step) / 2, (j + 1 + stepv) / 2); // (0,1) //(i+1)/2,(j+1+step)/2);
1449815306 gl.glVertex3f(i + step, j + stepv, -0.5f);
1449915307
15308
+ if (checker.flipV)
15309
+ gl.glTexCoord2f((i + 1) / 2, 1 - (j + 1 + stepv) / 2); // (0,0) //(i+1)/2,(j+1)/2);
15310
+ else
1450015311 gl.glTexCoord2f((i + 1) / 2, (j + 1 + stepv) / 2); // (0,0) //(i+1)/2,(j+1)/2);
1450115312 gl.glVertex3f(i, j + stepv, -0.5f);
1450215313 }
....@@ -14508,7 +15319,7 @@
1450815319 gl.glMatrixMode(GL.GL_PROJECTION);
1450915320 gl.glPopMatrix();
1451015321 gl.glMatrixMode(GL.GL_MODELVIEW);
14511
- PopMatrix(null); // checker.toParent); // null);
15322
+ //PopMatrix(null); // checker.toParent); // null);
1451215323 gl.glPopMatrix();
1451315324 PopTextureMatrix(checker.toParent);
1451415325 gl.glMatrixMode(GL.GL_TEXTURE);
....@@ -14621,14 +15432,14 @@
1462115432
1462215433 //int tmp = selection_view;
1462315434 //selection_view = -1;
14624
- int temp = drawMode;
14625
- drawMode = SELECTION;
15435
+ int temp = DrawMode();
15436
+ Globals.drawMode = SELECTION; // WARNING
1462615437 indexcount = 0;
1462715438 parent.display(drawable);
1462815439 //selection_view = tmp;
1462915440 //if (temp == SELECTION)
1463015441 // temp = DEFAULT; // patch for selection debug
14631
- drawMode = temp;
15442
+ Globals.drawMode = temp; // WARNING
1463215443
1463315444 //gl.glBindTexture(GL.GL_TEXTURE_2D, selection_view);
1463415445
....@@ -14677,6 +15488,11 @@
1467715488 // System.err.println("view = " + view[4] + " " + view[5] + " " + view[6] + " " + view[7]);
1467815489 // System.err.println("view = " + view[8] + " " + view[9] + " " + view[10] + " " + view[11]);
1467915490 // System.err.println("view = " + view[12] + " " + view[13] + " " + view[14] + " " + view[15]);
15491
+
15492
+ // Will fit the mesh !!!
15493
+ selectedpoint.toParent[0][0] = 0.0001;
15494
+ selectedpoint.toParent[1][1] = 0.0001;
15495
+ selectedpoint.toParent[2][2] = 0.0001;
1468015496
1468115497 glu.gluUnProject(x,y,depth,view,0,tempmat2,0,viewport,0,selectedpoint.toParent[3],0);
1468215498
....@@ -14896,14 +15712,14 @@
1489615712 //gl.glColorMask(false, false, false, false);
1489715713
1489815714 //render_scene_from_light_view(gl, drawable, 0, 0);
14899
- if (RENDERSHADOW && lighttouched && !movingcamera) // && !parent.IsFreezed())
15715
+ if (RENDERSHADOW && Globals.lighttouched && !movingcamera) // && !parent.IsFreezed())
1490015716 {
1490115717 gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
1490215718
14903
- int temp = drawMode;
14904
- drawMode = SHADOW;
15719
+ int temp = DrawMode();
15720
+ Globals.drawMode = SHADOW; // WARNING
1490515721 parent.display(drawable);
14906
- drawMode = temp;
15722
+ Globals.drawMode = temp; // WARNING
1490715723 }
1490815724
1490915725 gl.glCullFace(gl.GL_BACK);
....@@ -15066,13 +15882,19 @@
1506615882 gl.glFlush();
1506715883
1506815884 /**/
15069
- gl.glReadPixels(0, 0, OCCLUSION_SIZE, OCCLUSION_SIZE, GL.GL_BGRA, GL.GL_UNSIGNED_INT_8_8_8_8_REV, occlusionsizebuffer);
15885
+ gl.glReadPixels(0, 0, OCCLUSION_SIZE, OCCLUSION_SIZE, GL.GL_DEPTH_COMPONENT, GL.GL_FLOAT, occlusionsizebuffer);
1507015886
15071
- int[] pixels = occlusionsizebuffer.array();
15887
+ float[] pixels = occlusionsizebuffer.array();
1507215888
1507315889 double r = 0, g = 0, b = 0;
1507415890
1507515891 double count = 0;
15892
+
15893
+ gl.glGetDoublev(gl.GL_PROJECTION_MATRIX, tempmat2, 0);
15894
+
15895
+ float mindepth = 1;
15896
+
15897
+ double FACTOR = 1;
1507615898
1507715899 for (int i = 0; i < pixels.length; i++)
1507815900 {
....@@ -15157,7 +15979,7 @@
1515715979
1515815980 double scale = ray.z; // 1; // cos
1515915981
15160
- int p = pixels[newindex];
15982
+ float depth = pixels[newindex];
1516115983
1516215984 /*
1516315985 int newindex2 = (x + 1) * OCCLUSION_SIZE + y;
....@@ -15181,10 +16003,23 @@
1518116003 scale = (1 - modu) * modv;
1518216004 */
1518316005
15184
- r += ((p >> 16) & 0xFF) * scale / 255;
15185
- g += ((p >> 8) & 0xFF) * scale / 255;
15186
- b += (p & 0xFF) * scale / 255;
16006
+ //r += ((p >> 16) & 0xFF) * scale / 255;
16007
+ //g += ((p >> 8) & 0xFF) * scale / 255;
16008
+ //b += (p & 0xFF) * scale / 255;
16009
+
16010
+ if (mindepth > depth)
16011
+ {
16012
+ mindepth = depth;
16013
+ }
1518716014
16015
+ double z_eye = tempmat2[3*4 + 2] / (depth * -2.0 + 1.0 - tempmat2[2*4 + 2]);
16016
+
16017
+ double factor = 1 - Math.exp(-z_eye * z_eye / FACTOR);
16018
+
16019
+ r += factor * scale;
16020
+ g += factor * scale;
16021
+ b += factor * scale;
16022
+
1518816023 count += scale;
1518916024 }
1519016025
....@@ -15282,12 +16117,6 @@
1528216117 GLUT glut = new GLUT();
1528316118
1528416119
15285
- static final public int DEFAULT = 0;
15286
- static final public int SELECTION = 1;
15287
- static final public int SHADOW = 2;
15288
- static final public int OCCLUSION = 3;
15289
- static
15290
- public int drawMode = DEFAULT;
1529116120 public boolean spherical = false;
1529216121 static boolean DEBUG_OCCLUSION = false;
1529316122 static boolean DEBUG_SELECTION = false;
....@@ -15300,12 +16129,12 @@
1530016129 int AAbuffersize = 0;
1530116130
1530216131 //double[] selectedpoint = new double[3];
15303
- static Sphere selectedpoint = new Sphere();
16132
+ static Superellipsoid selectedpoint = new Superellipsoid();
1530416133 static Sphere previousselectedpoint = null;
15305
- static Sphere debugpoint = new Sphere();
15306
- static Sphere debugpoint2 = new Sphere();
15307
- static Sphere debugpoint3 = new Sphere();
15308
- static Sphere debugpoint4 = new Sphere();
16134
+ static Sphere debugpointG = new Sphere();
16135
+ static Sphere debugpointP = new Sphere();
16136
+ static Sphere debugpointC = new Sphere();
16137
+ static Sphere debugpointR = new Sphere();
1530916138
1531016139 static Sphere debugpoints[] = new Sphere[8];
1531116140
....@@ -15358,7 +16187,8 @@
1535816187 static IntBuffer texturesizebuffer = IntBuffer.allocate(TEX_SIZE * TEX_SIZE);
1535916188 static IntBuffer selectsizebuffer = IntBuffer.allocate(SELECT_SIZE * SELECT_SIZE);
1536016189 static java.nio.FloatBuffer pointselectsizebuffer = java.nio.FloatBuffer.allocate(SELECT_SIZE * SELECT_SIZE);
15361
- static IntBuffer occlusionsizebuffer = IntBuffer.allocate(OCCLUSION_SIZE * OCCLUSION_SIZE);
16190
+ //static IntBuffer occlusionsizebuffer = IntBuffer.allocate(OCCLUSION_SIZE * OCCLUSION_SIZE);
16191
+ static java.nio.FloatBuffer occlusionsizebuffer = java.nio.FloatBuffer.allocate(OCCLUSION_SIZE * OCCLUSION_SIZE);
1536216192 static BufferedImage bufimage = new BufferedImage(TEX_SIZE, TEX_SIZE, BufferedImage.TYPE_INT_RGB);
1536316193 static BufferedImage textest = new cBufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
1536416194 static java.util.Vector<BufferedImage> billboards = new java.util.Vector<BufferedImage>();