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,