| .. | .. | 
|---|
| 71 | 71 |              perspective = false; | 
|---|
| 72 | 72 |              break; | 
|---|
| 73 | 73 |          case 4: // Default light | 
|---|
| 74 |  | -            location = LA.newVector(-5, 20, 10);  | 
|---|
 | 74 | +            location = LA.newVector(-5, 15, 10);  | 
|---|
| 75 | 75 |              perspective = false; | 
|---|
| 76 | 76 |              break; | 
|---|
| 77 | 77 |          } | 
|---|
| .. | .. | 
|---|
| 106 | 106 |          background = LA.newVector(0.8, 0.8, 0.8); | 
|---|
| 107 | 107 |      } | 
|---|
| 108 | 108 |   | 
|---|
 | 109 | +    void CreateMaterial(boolean multiply)  | 
|---|
 | 110 | +    {  | 
|---|
 | 111 | +        super.CreateMaterial(multiply);  | 
|---|
 | 112 | +          | 
|---|
 | 113 | +        material.shift = 90;  | 
|---|
 | 114 | +        material.cameralight = 0.2f;  | 
|---|
 | 115 | +    }  | 
|---|
 | 116 | +  | 
|---|
| 109 | 117 |      void setAspect(int width, int height) | 
|---|
| 110 | 118 |      { | 
|---|
| 111 | 119 |          //hAspect = width; | 
|---|
 
| .. | .. | 
|---|
| 881 | 881 |  ////        tris.postdraw(this); | 
|---|
| 882 | 882 |      } | 
|---|
| 883 | 883 |   | 
|---|
| 884 |  | -    static Camera localcamera = new Camera();  | 
|---|
 | 884 | +    static Camera localAOcamera = new Camera();  | 
|---|
| 885 | 885 |      static cVector from = new cVector(); | 
|---|
| 886 | 886 |      static cVector to = new cVector(); | 
|---|
| 887 | 887 |       | 
|---|
| .. | .. | 
|---|
| 890 | 890 |                  CameraPane cp = this; | 
|---|
| 891 | 891 |   | 
|---|
| 892 | 892 |                  Camera keep = cp.RenderCamera(); | 
|---|
| 893 |  | -                cp.renderCamera = localcamera;  | 
|---|
 | 893 | +                cp.renderCamera = localAOcamera;  | 
|---|
| 894 | 894 |   | 
|---|
| 895 | 895 |                  if (br.trimmed) | 
|---|
| 896 | 896 |                  { | 
|---|
| .. | .. | 
|---|
| 908 | 908 |                                  br.positions[i3 + 2] + br.normals[i3 + 2]); | 
|---|
| 909 | 909 |                          LA.xformPos(from, transform, from); | 
|---|
| 910 | 910 |                          LA.xformPos(to, transform, to); // RIGID ONLY | 
|---|
| 911 |  | -                        localcamera.setAim(from, to);  | 
|---|
 | 911 | +                        localAOcamera.setAim(from, to);  | 
|---|
| 912 | 912 |   | 
|---|
| 913 | 913 |                          CameraPane.occlusionbuffer.display(); | 
|---|
| 914 | 914 |   | 
|---|
| .. | .. | 
|---|
| 942 | 942 |                          to.set(v.x+v.norm.x, v.y+v.norm.y, v.z+v.norm.z); | 
|---|
| 943 | 943 |                          LA.xformPos(from, transform, from); | 
|---|
| 944 | 944 |                          LA.xformPos(to, transform, to); // RIGID ONLY | 
|---|
| 945 |  | -                        localcamera.setAim(from, to);  | 
|---|
 | 945 | +                        localAOcamera.setAim(from, to);  | 
|---|
| 946 | 946 |   | 
|---|
| 947 | 947 |                          CameraPane.occlusionbuffer.display(); | 
|---|
| 948 | 948 |   | 
|---|
| .. | .. | 
|---|
| 12514 | 12514 |          String programmin = | 
|---|
| 12515 | 12515 |                  // Min shader | 
|---|
| 12516 | 12516 |                  "!!ARBfp1.0\n" + | 
|---|
| 12517 |  | -                "PARAM zero123      = { 0.0, 1.0, 2, 1.25 };" +  | 
|---|
| 12518 |  | -                "PARAM pow2      = { 0.5, 0.25, 0.125, 0.0 };" +  | 
|---|
 | 12517 | +                "PARAM zero12t      = { 0.0, 1.0, 2, 1.25 };" +  | 
|---|
 | 12518 | +                "PARAM pow_2      = { 0.5, 0.25, 0.125, 0.0 };" +  | 
|---|
 | 12519 | +                "PARAM pow2      = { 2, 4, 8, 0.0 };" +  | 
|---|
| 12519 | 12520 |                  "PARAM one      = { 1.0, 1.0, 1.0, 1.0 };" + | 
|---|
| 12520 | 12521 |                  "PARAM eps      = { 0.001, 0.001, 0.001, 1.0 };" + | 
|---|
| 12521 | 12522 |                  "PARAM infinity  = { 100000000, 100000000, 100000000, 1.0 };" + | 
|---|
| .. | .. | 
|---|
| 12530 | 12531 |                  "TEMP eye;" + | 
|---|
| 12531 | 12532 |                  "TEMP pos;" + | 
|---|
| 12532 | 12533 |                   | 
|---|
| 12533 |  | -                "MAD normal, fragment.color, zero123.z, -zero123.y;" +  | 
|---|
 | 12534 | +                "MAD normal, fragment.color, zero12t.z, -zero12t.y;" +  | 
|---|
| 12534 | 12535 |                  Normalize("normal") + | 
|---|
| 12535 | 12536 |                  "MOV light, state.light[0].position;" + | 
|---|
| 12536 | 12537 |                  "DP3 ndotl.x, light, normal;" + | 
|---|
 | 12538 | +                "MAX ndotl.x, ndotl.x, zero12t.x;" +  | 
|---|
| 12537 | 12539 |   | 
|---|
| 12538 | 12540 |                  // shadow | 
|---|
| 12539 | 12541 |                  "MOV pos, fragment.texcoord[1];" + | 
|---|
| .. | .. | 
|---|
| 12549 | 12551 |                  "MUL ndotl.x, ndotl.x, ndotl.z;" + // Shadow | 
|---|
| 12550 | 12552 |                   | 
|---|
| 12551 | 12553 |                  // Backlit | 
|---|
| 12552 |  | -                "MOV pos.w, zero123.y;" +  | 
|---|
 | 12554 | +                "MOV pos.w, zero12t.y;" + // one  | 
|---|
| 12553 | 12555 |                  "DP4 eye.x, pos, light2cam0;" + | 
|---|
| 12554 | 12556 |                  "DP4 eye.y, pos, light2cam1;" + | 
|---|
| 12555 | 12557 |                  "DP4 eye.z, pos, light2cam2;" + | 
|---|
| .. | .. | 
|---|
| 12557 | 12559 |                   | 
|---|
| 12558 | 12560 |                  "DP3 ndotl.y, -eye, normal;" + | 
|---|
| 12559 | 12561 |                  //"MUL ndotl.y, ndotl.y, pow2.x;" + | 
|---|
| 12560 |  | -                "POW ndotl.y, ndotl.y, pow2.z;" + // backlit  | 
|---|
| 12561 |  | -                "SUB ndotl.y, zero123.y, ndotl.y;" +  | 
|---|
 | 12562 | +                "POW ndotl.y, ndotl.y, pow2.x;" + // backlit  | 
|---|
 | 12563 | +                "SUB ndotl.y, zero12t.y, ndotl.y;" + // 1 - y  | 
|---|
 | 12564 | +                //"POW ndotl.y, ndotl.y, pow2.z;" + // backlit  | 
|---|
| 12562 | 12565 |                  //"SUB ndotl.y, zero123.y, ndotl.y;" + | 
|---|
| 12563 | 12566 |                  //"MUL ndotl.y, ndotl.y, pow2.z;" + | 
|---|
 | 12567 | +                "ADD ndotl.y, ndotl.y, one.x;" +  | 
|---|
 | 12568 | +                "MUL ndotl.y, ndotl.y, pow_2.x;" +  | 
|---|
| 12564 | 12569 |                   | 
|---|
| 12565 | 12570 |                  //"MAX ndotl.x, ndotl.x, ndotl.y;" + // Ambient | 
|---|
| 12566 | 12571 |                  //"MAX ndotl.x, ndotl.x, pow2.y;" + // Ambient | 
|---|
| 12567 | 12572 |                   | 
|---|
| 12568 | 12573 |                  // Pigment | 
|---|
| 12569 | 12574 |                  "TEX temp, fragment.texcoord[0], texture[0], 2D;" + | 
|---|
| 12570 |  | -                "LRP temp, zero123.w, temp, one;" + // texture proportion  | 
|---|
| 12571 |  | -                "MUL temp, temp, ndotl.x;" +  | 
|---|
| 12572 |  | -                  | 
|---|
| 12573 |  | -                "MUL temp, temp, zero123.z;" +  | 
|---|
 | 12575 | +                "LRP temp, zero12t.w, temp, one;" + // texture proportion  | 
|---|
 | 12576 | +                "MUL temp, temp, zero12t.w;" + // Times x  | 
|---|
| 12574 | 12577 |                   | 
|---|
| 12575 | 12578 |                  //"MUL temp, temp, ndotl.y;" + | 
|---|
 | 12579 | +                "MAD ndotl.x, pow_2.xxxx, ndotl.yyyy, ndotl.x;" +  | 
|---|
| 12576 | 12580 |                   | 
|---|
| 12577 |  | -                "MOV temp.w, zero123.y;" + // reset alpha  | 
|---|
 | 12581 | +                "MUL temp, temp, ndotl.x;" + // lambert  | 
|---|
 | 12582 | +                  | 
|---|
 | 12583 | +                "MOV temp.w, zero12t.y;" + // reset alpha  | 
|---|
| 12578 | 12584 |                  "MOV result.color, temp;" + | 
|---|
| 12579 | 12585 |                  "END"; | 
|---|
| 12580 | 12586 |           | 
|---|
 
| .. | .. | 
|---|
| 15 | 15 |          material.specular = 0.001f; | 
|---|
| 16 | 16 |          material.diffuse = 0.01f; | 
|---|
| 17 | 17 |          material.cameralight = 0.001f; | 
|---|
| 18 |  | -        material.opacity = 0.5f;  | 
|---|
 | 18 | +        material.opacity = 0.25f;  | 
|---|
| 19 | 19 |           | 
|---|
| 20 | 20 |          flipV = true; | 
|---|
| 21 | 21 |      } | 
|---|
 
| .. | .. | 
|---|
| 2129 | 2129 |              switch(axis) | 
|---|
| 2130 | 2130 |              { | 
|---|
| 2131 | 2131 |                  case 0 : | 
|---|
| 2132 |  | -                    vert1.x = minima.x; vert1.y = minima.y; vert1.z = minima.z;  | 
|---|
| 2133 |  | -                    vert2.x = minima.x; vert2.y = maxima.y; vert2.z = minima.z;  | 
|---|
| 2134 |  | -                    vert3.x = minima.x; vert3.y = minima.y; vert3.z = maxima.z;  | 
|---|
| 2135 |  | -                    vert4.x = minima.x; vert4.y = maxima.y; vert4.z = maxima.z;  | 
|---|
 | 2132 | +                    vert1.x = minima.x + 0.001f; vert1.y = minima.y; vert1.z = minima.z;  | 
|---|
 | 2133 | +                    vert2.x = minima.x + 0.001f; vert2.y = maxima.y; vert2.z = minima.z;  | 
|---|
 | 2134 | +                    vert3.x = minima.x + 0.001f; vert3.y = minima.y; vert3.z = maxima.z;  | 
|---|
 | 2135 | +                    vert4.x = minima.x + 0.001f; vert4.y = maxima.y; vert4.z = maxima.z;  | 
|---|
| 2136 | 2136 |                      norm = cVector.X; | 
|---|
| 2137 | 2137 |                      break; | 
|---|
| 2138 | 2138 |                  case 1 : | 
|---|
| 2139 |  | -                    vert1.x = minima.x; vert1.y = minima.y; vert1.z = minima.z;  | 
|---|
| 2140 |  | -                    vert2.x = maxima.x; vert2.y = minima.y; vert2.z = minima.z;  | 
|---|
| 2141 |  | -                    vert3.x = minima.x; vert3.y = minima.y; vert3.z = maxima.z;  | 
|---|
| 2142 |  | -                    vert4.x = maxima.x; vert4.y = minima.y; vert4.z = maxima.z;  | 
|---|
 | 2139 | +                    vert1.x = minima.x; vert1.y = minima.y + 0.001f; vert1.z = minima.z;  | 
|---|
 | 2140 | +                    vert2.x = maxima.x; vert2.y = minima.y + 0.001f; vert2.z = minima.z;  | 
|---|
 | 2141 | +                    vert3.x = minima.x; vert3.y = minima.y + 0.001f; vert3.z = maxima.z;  | 
|---|
 | 2142 | +                    vert4.x = maxima.x; vert4.y = minima.y + 0.001f; vert4.z = maxima.z;  | 
|---|
| 2143 | 2143 |                      norm = cVector.Y; | 
|---|
| 2144 | 2144 |                      break; | 
|---|
| 2145 | 2145 |                  case 2 : | 
|---|
| 2146 |  | -                    vert1.x = minima.x; vert1.y = minima.y; vert1.z = minima.z;  | 
|---|
| 2147 |  | -                    vert2.x = maxima.x; vert2.y = minima.y; vert2.z = minima.z;  | 
|---|
| 2148 |  | -                    vert3.x = minima.x; vert3.y = maxima.y; vert3.z = minima.z;  | 
|---|
| 2149 |  | -                    vert4.x = maxima.x; vert4.y = maxima.y; vert4.z = minima.z;  | 
|---|
 | 2146 | +                    vert1.x = minima.x; vert1.y = minima.y; vert1.z = minima.z + 0.001f;  | 
|---|
 | 2147 | +                    vert2.x = maxima.x; vert2.y = minima.y; vert2.z = minima.z + 0.001f;  | 
|---|
 | 2148 | +                    vert3.x = minima.x; vert3.y = maxima.y; vert3.z = minima.z + 0.001f;  | 
|---|
 | 2149 | +                    vert4.x = maxima.x; vert4.y = maxima.y; vert4.z = minima.z + 0.001f;  | 
|---|
| 2150 | 2150 |                      norm = cVector.Z; | 
|---|
| 2151 | 2151 |                      break; | 
|---|
| 2152 | 2152 |              } | 
|---|
 
| .. | .. | 
|---|
| 1767 | 1767 |          scrollpane.addMouseWheelListener(this); // Default not fast enough | 
|---|
| 1768 | 1768 |   | 
|---|
| 1769 | 1769 |          /*JTabbedPane*/ scenePanel = new cGridBag(); | 
|---|
| 1770 |  | -        scenePanel.preferredWidth = 6;  | 
|---|
 | 1770 | +        scenePanel.preferredWidth = 5;  | 
|---|
| 1771 | 1771 |           | 
|---|
| 1772 | 1772 |          JTabbedPane tabbedPane = new JTabbedPane(); | 
|---|
| 1773 | 1773 |          tabbedPane.add(scrollpane); | 
|---|
 
| .. | .. | 
|---|
| 687 | 687 |          { | 
|---|
| 688 | 688 |              if (maxcount != 1) | 
|---|
| 689 | 689 |              { | 
|---|
| 690 |  | -                new Exception().printStackTrace();  | 
|---|
 | 690 | +                //new Exception().printStackTrace();  | 
|---|
| 691 | 691 |              } | 
|---|
| 692 | 692 |               | 
|---|
| 693 | 693 |              toParentMarked = LA.newMatrix(); | 
|---|
| .. | .. | 
|---|
| 2369 | 2369 |               | 
|---|
| 2370 | 2370 |              InitOthers(); | 
|---|
| 2371 | 2371 |               | 
|---|
| 2372 |  | -            if (this instanceof Camera)  | 
|---|
| 2373 |  | -            {  | 
|---|
| 2374 |  | -                material.shift = 90;  | 
|---|
| 2375 |  | -            }  | 
|---|
| 2376 |  | -  | 
|---|
| 2377 | 2372 |              material.multiply = multiply; | 
|---|
| 2378 | 2373 |               | 
|---|
| 2379 | 2374 |              if (multiply) | 
|---|
| .. | .. | 
|---|
| 7716 | 7711 |                   | 
|---|
| 7717 | 7712 |                  scale *= 0.05f * Globals.theRenderer.RenderCamera().Distance(); | 
|---|
| 7718 | 7713 |                   | 
|---|
| 7719 |  | -                if (modified || opposite)  | 
|---|
 | 7714 | +                // Modified could snap  | 
|---|
 | 7715 | +                if (//modified ||  | 
|---|
 | 7716 | +                        opposite)  | 
|---|
| 7720 | 7717 |                  { | 
|---|
| 7721 | 7718 |                      //assert(false); | 
|---|
| 7722 | 7719 |                              /* | 
|---|
| .. | .. | 
|---|
| 7810 | 7807 |   | 
|---|
| 7811 | 7808 |                  if (modified) | 
|---|
| 7812 | 7809 |                  { | 
|---|
| 7813 |  | -                    // Rotate 90 degrees  | 
|---|
 | 7810 | +                    // Rotate 45 degrees  | 
|---|
| 7814 | 7811 |                      angle /= (Math.PI / 4); | 
|---|
| 7815 | 7812 |                      angle = Math.floor(angle + 0.5); | 
|---|
| 7816 | 7813 |                      angle *= (Math.PI / 4); | 
|---|
| .. | .. | 
|---|
| 7896 | 7893 |                      case 3: // '\001' | 
|---|
| 7897 | 7894 |                          if (modified || opposite) | 
|---|
| 7898 | 7895 |                          { | 
|---|
| 7899 |  | -                            if (modified && opposite)  | 
|---|
 | 7896 | +                            if (modified) // && opposite)  | 
|---|
| 7900 | 7897 |                                  LA.matScale(toParent, totalScale, totalScale, totalScale); | 
|---|
| 7901 | 7898 |                              else | 
|---|
| 7902 | 7899 |                              //LA.matScale(toParent, 1, hScale, vScale); | 
|---|
| .. | .. | 
|---|
| 7912 | 7909 |                      case 2: // '\002' | 
|---|
| 7913 | 7910 |                          if (modified || opposite) | 
|---|
| 7914 | 7911 |                          { | 
|---|
| 7915 |  | -                            if (modified && opposite)  | 
|---|
 | 7912 | +                            if (modified) // && opposite)  | 
|---|
| 7916 | 7913 |                                  LA.matScale(toParent, totalScale, totalScale, totalScale); | 
|---|
| 7917 | 7914 |                              else | 
|---|
| 7918 | 7915 |                                  //LA.matScale(toParent, hScale, 1, vScale); | 
|---|
| .. | .. | 
|---|
| 7926 | 7923 |                      case 1: // '\003' | 
|---|
| 7927 | 7924 |                          if (modified || opposite) | 
|---|
| 7928 | 7925 |                          { | 
|---|
| 7929 |  | -                            if (modified && opposite)  | 
|---|
 | 7926 | +                            if (modified) // && opposite)  | 
|---|
| 7930 | 7927 |                                  LA.matScale(toParent, totalScale, totalScale, totalScale); | 
|---|
| 7931 | 7928 |                              else | 
|---|
| 7932 | 7929 |                                  //LA.matScale(toParent, hScale, vScale, 1); | 
|---|
 
| .. | .. | 
|---|
| 362 | 362 |  //    } | 
|---|
| 363 | 363 |       | 
|---|
| 364 | 364 |      float color = 0.5f, modulation /*SATURATION*/ = 0.001f, metalness = 0.001f; | 
|---|
| 365 |  | -    float diffuse = 0.75f, specular = 0.25f, shininess = 0.75f, shift = 1;  | 
|---|
 | 365 | +    float diffuse = 1f, specular = 0.25f, shininess = 0.75f, shift = 1;  | 
|---|
| 366 | 366 |      float ambient = 0.001f, lightarea = 0.025f, factor = 0.001f, velvet = 0.001f; | 
|---|
| 367 | 367 |      float sheen = 1f, subsurface = 0.001f, bump = 0.75f, aniso = 0.001f, anisoV = 0.001f; | 
|---|
| 368 |  | -    float cameralight = 0.3f, diffuseness = 0.001f, shadow = 5f, texture = 1f, opacity = 1;  | 
|---|
 | 368 | +    float cameralight = 0.5f, diffuseness = 0.001f, shadow = 5f, texture = 1f, opacity = 1;  | 
|---|
| 369 | 369 |      float fakedepth = 0.5f, shadowbias = 0.01f; // 0.001f; | 
|---|
| 370 | 370 |       | 
|---|
| 371 | 371 |      float parallax = 0; | 
|---|