Normand Briere
2019-10-06 ce660a4b6ba367bd162dd2cff26d02c80a34c912
Fix camera up and skybox AO
3 files modified
43 ■■■■ changed files
Camera.java 5 ●●●●● patch | view | raw | blame | history
CameraPane.java 36 ●●●●● patch | view | raw | blame | history
ObjEditor.java 2 ●●●●● patch | view | raw | blame | history
Camera.java
....@@ -382,13 +382,14 @@
382382 {
383383 double K = 0.25;
384384
385
- if (!CameraPane.capsLocked)
385
+ if (!CameraPane.capsLocked || CameraPane.ambientOcclusion)
386386 K = 1;
387387
388388 locationBuf.y = location.y * K + locationBuf.y * (1 - K);
389389 lookAtBuf.y = lookAt.y * K + lookAtBuf.y * (1 - K);
390390
391
- K = 0.1;
391
+ if (CameraPane.capsLocked && !CameraPane.ambientOcclusion)
392
+ K = 0.1;
392393
393394 upBuf.x = UP.x * K + upBuf.x * (1 - K);
394395 upBuf.y = UP.y * K + upBuf.y * (1 - K);
CameraPane.java
....@@ -9367,7 +9367,9 @@
93679367 boolean pointselection = false;
93689368 ///*static*/ boolean lighttouched = true;
93699369 boolean deselect;
9370
- private boolean ambientOcclusion = false;
9370
+
9371
+ static boolean ambientOcclusion = false;
9372
+
93719373 static boolean flash = false;
93729374 /*static*/ boolean wait = false;
93739375 boolean displaydone = false; // after repaint() calls
....@@ -11260,7 +11262,7 @@
1126011262 //gl.glEnable(gl.GL_ALPHA_TEST);
1126111263 //gl.glActiveTexture(GL.GL_TEXTURE0);
1126211264
11263
- if (!IsFrozen() && !ambientOcclusion)
11265
+ if (!IsFrozen()) // && !ambientOcclusion)
1126411266 {
1126511267 DrawSkyBox(gl, (float)ratio);
1126611268 }
....@@ -18046,7 +18048,7 @@
1804618048
1804718049 gl.glReadPixels(0, 0, OCCLUSION_SIZE, OCCLUSION_SIZE, GL.GL_BGRA, GL.GL_UNSIGNED_INT_8_8_8_8_REV, occlusioncolorbuffer);
1804818050
18049
- int[] pixels = selectsizebuffer.array();
18051
+ int[] pixels = occlusioncolorbuffer.array();
1805018052
1805118053 // BufferedImage rendImage = new BufferedImage(OCCLUSION_SIZE, OCCLUSION_SIZE, BufferedImage.TYPE_INT_RGB);
1805218054 // rendImage.setRGB(0,0, OCCLUSION_SIZE,OCCLUSION_SIZE, pixels, OCCLUSION_SIZE*(OCCLUSION_SIZE-1),-OCCLUSION_SIZE);
....@@ -18065,6 +18067,9 @@
1806518067
1806618068 double FACTOR = 1;
1806718069
18070
+ float minvalue = 1;
18071
+ float maxvalue = 0;
18072
+
1806818073 for (int i = 0; i < depths.length; i++)
1806918074 {
1807018075 int x = i / OCCLUSION_SIZE - OCCLUSION_SIZE / 2;
....@@ -18148,6 +18153,27 @@
1814818153
1814918154 double scale = ray.z; // 1; // cos
1815018155
18156
+ int pixel = pixels[newindex];
18157
+
18158
+ float value = (pixel&255) / 255.0f;
18159
+
18160
+ pixel >>= 8;
18161
+
18162
+ value += (pixel&255) / 255.0f;
18163
+
18164
+ pixel >>= 8;
18165
+
18166
+ value += (pixel&255) / 255.0f;
18167
+
18168
+ value /= 3;
18169
+
18170
+ if (minvalue > value)
18171
+ minvalue = value;
18172
+ if (maxvalue < value)
18173
+ maxvalue = value;
18174
+
18175
+ //scale *= value;
18176
+
1815118177 float depth = depths[newindex];
1815218178
1815318179 /*
....@@ -18184,6 +18210,8 @@
1818418210 double z_eye = tempmat2[3*4 + 2] / (depth * -2.0 + 1.0 - tempmat2[2*4 + 2]);
1818518211
1818618212 double factor = 1 - Math.exp(-z_eye * z_eye / FACTOR);
18213
+
18214
+ factor *= value;
1818718215
1818818216 r += factor * scale;
1818918217 g += factor * scale;
....@@ -18227,6 +18255,8 @@
1822718255
1822818256 stackdepth--;
1822918257
18258
+// System.err.println("minvalue = " + minvalue);
18259
+// System.err.println("maxvalue = " + maxvalue);
1823018260 //System.err.println("depth = " + stackdepth);
1823118261 // DEBUG
1823218262 /*
ObjEditor.java
....@@ -4216,6 +4216,8 @@
42164216 //mid.shadow = 0.25f;
42174217 // mid.shift = 1.5f;
42184218 // mid.sheen = 10f;
4219
+
4220
+ mid.parallax = 0;
42194221
42204222 SetMaterial(mid, null);
42214223 }