Merge "add better support for landscape mode + minor cleanups"
diff --git a/java/tests/VrDemo/res/layout-land/activity_vr.xml b/java/tests/VrDemo/res/layout-land/activity_vr.xml
index 3ab5662..6703923 100644
--- a/java/tests/VrDemo/res/layout-land/activity_vr.xml
+++ b/java/tests/VrDemo/res/layout-land/activity_vr.xml
@@ -23,34 +23,36 @@
     android:paddingBottom="@dimen/activity_vertical_margin"
     tools:context=".VrActivity">
     <view
-        android:layout_width="0dp"
         android:layout_height="match_parent"
+        android:layout_width="0dp"
         class="com.example.android.rs.vr.VrView"
         android:id="@+id/view"
         android:layout_weight="1"/>
 
         <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
             android:orientation="vertical">
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="horizontal">
 
                 <TextView
                     android:id="@+id/title"
                     android:text="@string/volume_name"
-                    android:layout_width="0dp"
-                    android:layout_height="match_parent"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
                     android:layout_weight="1.0"
                     android:gravity="center" />
-            </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:layout_weight="1.0"
+        >
 
         <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:orientation="horizontal">
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
 
                 <ToggleButton
                     android:layout_width="wrap_content"
@@ -106,6 +108,6 @@
                     android:text="@string/save"
                     android:onClick="saveClick" />
             </LinearLayout>
-
+    </LinearLayout>
         </LinearLayout>
  </LinearLayout>
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/VrActivity.java b/java/tests/VrDemo/src/com/example/android/rs/vr/VrActivity.java
index aa64d2a..4fe8f8e 100644
--- a/java/tests/VrDemo/src/com/example/android/rs/vr/VrActivity.java
+++ b/java/tests/VrDemo/src/com/example/android/rs/vr/VrActivity.java
@@ -18,6 +18,8 @@
 
 import android.app.Activity;
 import android.app.ProgressDialog;
+import android.content.pm.ActivityInfo;
+import android.content.res.Configuration;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.renderscript.RenderScript;
@@ -103,6 +105,11 @@
             Log.v(LOGTAG,"done");
             mVrView.setVolume(mRs, v);
             progressDialog.dismiss();
+            if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
+                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+            } else {
+                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+            }
         }
     }
 
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/vr.rs b/java/tests/VrDemo/src/com/example/android/rs/vr/engine/vr.rs
index 997bb10..43fb794 100644
--- a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/vr.rs
+++ b/java/tests/VrDemo/src/com/example/android/rs/vr/engine/vr.rs
@@ -19,7 +19,7 @@
 #pragma rs_fp_relaxed

 

 #define FLOAT_MAX  3.4028234E30f

-#define JITTER_LENGTH 3456

+#define JITTER_LENGTH 3457

 float jitter[JITTER_LENGTH];

 

 float3 s;

@@ -31,6 +31,7 @@
 rs_matrix3x3 matrix3;

 uchar4 base_color;

 static float3 mLight;

+static float rscale;

 

 // material color

 rs_allocation opacity;

@@ -38,7 +39,7 @@
 

 static void fillJitter() {

     for (int i = 0; i < JITTER_LENGTH; i++) {

-        jitter[i] = rsRand(1.0f);

+        jitter[i] = (rsRand(rscale)+rsRand(rscale)+rsRand(rscale))/3;

     }

 }

 

@@ -53,28 +54,15 @@
     base_color.g = 0;

     base_color.b = 0;

     base_color.a = 255;

-    fillJitter();

-    float3 mLightRelitvePos = (float3) {0, 0.7071f, -0.7071f}; // light relitve to camera

+

+    float3 mLightRelitvePos = (float3) {0.f, 0.7071f, -0.7071f}; // light relitve to camera

     mLight = mLightRelitvePos.x + dx + mLightRelitvePos.y * dy + mLightRelitvePos.z * dz;

     mLight = normalize(mLight);

+    rscale = 1.5f/length(dz);

+    fillJitter();

 }

 

-// old simple version

-static float triLinear_old(short v_0_0_0, short v_0_0_1, short v_0_1_0, short v_0_1_1,

-        short v_1_0_0, short v_1_0_1, short v_1_1_0, short v_1_1_1,

-        float3 delta) {

-    float v_0_0 = v_0_0_0 + delta.x * (v_0_0_1 - v_0_0_0);

-    float v_0_1 = v_0_1_0 + delta.x * (v_0_1_1 - v_0_1_0);

-    float v_1_0 = v_1_0_0 + delta.x * (v_1_0_1 - v_1_0_0);

-    float v_1_1 = v_1_1_0 + delta.x * (v_1_1_1 - v_1_1_0);

-    float v_0 = v_0_0 + delta.y * (v_0_1 - v_0_0);

-    float v_1 = v_1_0 + delta.y * (v_1_1 - v_1_0);

-    float v = v_0 + delta.z * (v_1 - v_0);

-    return v;

-}

-

-//  This seemed to improve over above

-static float triLinear(float v_0_0_0, float v_0_0_1, float v_0_1_0, short v_0_1_1,

+static float triLinear(float v_0_0_0, float v_0_0_1, float v_0_1_0, float v_0_1_1,

         float v_1_0_0, float v_1_0_1, float v_1_1_0, float v_1_1_1,

         float3 delta) {

     float v_0_0 = mix(v_0_0_0, v_0_0_1, delta.x);

@@ -173,14 +161,14 @@
                 float sdx = rsGetElementAt_float2(zbuff, max(0, (int) x - 1), y).x - in.x;

                 float sdy = rsGetElementAt_float2(zbuff, x, max(0, (int) y - 1)).x - in.x;

                 float dot_prod = sqrt(1 / (1 + (sdy * sdy + sdx * sdx) * zoomFactor));

-                float opf = op / 255.f;

+                float opf = op  * (1/255.f);

                 uchar4 color = rsGetElementAt_uchar4(color_map, intensity * 2);

                 uchar4 mat = rsGetElementAt_uchar4(color_map, intensity * 2 + 1);

                 float4 fcolor = convert_float4(color);;

 

-                float ambient = mat.x / 255.f;

-                float specular = mat.y / 255.f;

-                float diffuse = mat.z / 255.f;

+                float ambient = mat.x * (1/255.f);

+                float specular = mat.y * (1/255.f);

+                float diffuse = mat.z * (1/255.f);

                 float lop = (ambient + diffuse * dot_prod) * light * opf;

                 light -= opf;

                 total_color += fcolor * lop;

@@ -189,7 +177,7 @@
             }

         }

     }

-    p += dz * rsRand(2.f);

+    p += dz * jitter[(x+(y<<11))%JITTER_LENGTH];

 

     if (light > 0) {

         for (int k = 0; k < izlen - 1; k++) {

@@ -281,9 +269,9 @@
                     // Eye point in this space is in the direction (0,0,-1)

                     // Spec * Math.pow(R_z , P) lets use power == 2 (cheap)

 

-                    float ambient = mat.x / 255.f; // ambient

-                    float specular = mat.y / 255.f; // specular not used right now

-                    float diffuse = mat.z / 255.f; // diffuse

+                    float ambient = mat.x * (1/255.f); // ambient

+                    float specular = mat.y * (1/255.f); // specular not used right now

+                    float diffuse = mat.z  * (1/255.f);// diffuse

                     float lop = (ambient + diffuse * dot_prod + specular * pow(spec, 10)) * light * opf;

                     light -= opf;

                     total_color += fcolor * lop;

diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/loaders/Mandelbulb.java b/java/tests/VrDemo/src/com/example/android/rs/vr/loaders/Mandelbulb.java
index 7d05891..9b16039 100644
--- a/java/tests/VrDemo/src/com/example/android/rs/vr/loaders/Mandelbulb.java
+++ b/java/tests/VrDemo/src/com/example/android/rs/vr/loaders/Mandelbulb.java
@@ -31,13 +31,13 @@
 public class Mandelbulb {
     private static final String LOGTAG = "RawLoader";
     private static final String simpleLook = "simple";
-    private static final int[][] simpleOpacity = {{120, 0x0}, {126, 0xFF}};
+    private static final int[][] simpleOpacity = {{120, 0x0}, {140, 0xFF}};
     private static final int[][] simpleColor = {
-            {200, 0x44AA44, 30, 70, 0},
-            {230, 0xAA44AA, 30, 70, 0},
-            {255, 0xAAAAAA, 30, 70, 0}};
+            {200, 0x44AA44, 70, 30, 0},
+            {230, 0xAA44AA, 70, 30, 0},
+            {255, 0xAAAAAA, 70, 30, 0}};
 
-    private static final int SIZE = 512;
+    private static final int SIZE = 256;
     public static final String NAME = "A Mandelbulb";
 
     public static Volume buildRSVolume(RenderScript rs,