summaryrefslogtreecommitdiff
path: root/tests/RenderScriptTests/SceneGraph
diff options
context:
space:
mode:
Diffstat (limited to 'tests/RenderScriptTests/SceneGraph')
-rw-r--r--tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/CompoundTransform.java52
-rw-r--r--tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/FragmentShader.java3
-rw-r--r--tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Scene.java13
-rw-r--r--tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Transform.java7
-rw-r--r--tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/VertexShader.java3
-rw-r--r--tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/render.rs34
-rw-r--r--tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/scenegraph_objects.rsh30
-rw-r--r--tests/RenderScriptTests/SceneGraph/src/com/android/testapp/FullscreenBlur.java4
-rw-r--r--tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppLoadingScreen.java4
-rw-r--r--tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppRS.java86
-rw-r--r--tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TouchHandler.java98
-rw-r--r--tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rs3
-rw-r--r--tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rsh19
13 files changed, 171 insertions, 185 deletions
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/CompoundTransform.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/CompoundTransform.java
index 53e69a861a64..5eb1d8a2fe73 100644
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/CompoundTransform.java
+++ b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/CompoundTransform.java
@@ -29,10 +29,11 @@ import android.util.Log;
*/
public class CompoundTransform extends Transform {
- public static class Component {
+ public static abstract class Component {
String mName;
int mRsId;
- public Float4 mValue;
+ Float4 mValue;
+ CompoundTransform mParent;
public String getName() {
return mName;
@@ -45,6 +46,15 @@ public class CompoundTransform extends Transform {
mName = name;
mValue = new Float4(translate.x, translate.y, translate.z, 0);
}
+ public Float3 getValue() {
+ return new Float3(mValue.x, mValue.y, mValue.z);
+ }
+ public void setValue(Float3 val) {
+ mValue.x = val.x;
+ mValue.y = val.y;
+ mValue.z = val.z;
+ mParent.updateRSData();
+ }
}
public static class RotateComponent extends Component {
@@ -53,6 +63,22 @@ public class CompoundTransform extends Transform {
mName = name;
mValue = new Float4(axis.x, axis.y, axis.z, angle);
}
+ public Float3 getAxis() {
+ return new Float3(mValue.x, mValue.y, mValue.z);
+ }
+ public float getAngle() {
+ return mValue.w;
+ }
+ public void setAxis(Float3 val) {
+ mValue.x = val.x;
+ mValue.y = val.y;
+ mValue.z = val.z;
+ mParent.updateRSData();
+ }
+ public void setAngle(float val) {
+ mValue.w = val;
+ mParent.updateRSData();
+ }
}
public static class ScaleComponent extends Component {
@@ -61,6 +87,15 @@ public class CompoundTransform extends Transform {
mName = name;
mValue = new Float4(scale.x, scale.y, scale.z, 0);
}
+ public Float3 getValue() {
+ return new Float3(mValue.x, mValue.y, mValue.z);
+ }
+ public void setValue(Float3 val) {
+ mValue.x = val.x;
+ mValue.y = val.y;
+ mValue.z = val.z;
+ mParent.updateRSData();
+ }
}
public ArrayList<Component> mTransformComponents;
@@ -73,10 +108,18 @@ public class CompoundTransform extends Transform {
}
public void addComponent(Component c) {
+ if (c.mParent != null) {
+ throw new IllegalArgumentException("Transform components may not be shared");
+ }
+ c.mParent = this;
mTransformComponents.add(c);
}
public void setComponent(int index, Component c) {
+ if (c.mParent != null) {
+ throw new IllegalArgumentException("Transform components may not be shared");
+ }
+ c.mParent = this;
mTransformComponents.set(index, c);
}
@@ -97,7 +140,10 @@ public class CompoundTransform extends Transform {
mTransformData.name = SceneManager.getStringAsAllocation(mRS, getName());
}
- public void updateRSData() {
+ void updateRSData() {
+ if (mField == null) {
+ return;
+ }
int numElements = mTransformComponents.size();
for (int i = 0; i < numElements; i ++) {
Component ith = mTransformComponents.get(i);
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/FragmentShader.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/FragmentShader.java
index 52523b5f3c6f..02372f30c7c3 100644
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/FragmentShader.java
+++ b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/FragmentShader.java
@@ -87,9 +87,6 @@ public class FragmentShader extends Shader {
}
}
- FragmentShader() {
- }
-
public ProgramFragment getProgram() {
return mProgram;
}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Scene.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Scene.java
index 653ce5165d65..715fb234dbbe 100644
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Scene.java
+++ b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Scene.java
@@ -22,12 +22,14 @@ import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import android.renderscript.RenderScriptGL;
-import android.renderscript.Mesh;
-import android.renderscript.*;
+import com.android.scenegraph.SceneManager;
+
import android.content.res.Resources;
-import android.util.Log;
import android.os.AsyncTask;
+import android.renderscript.*;
+import android.renderscript.Mesh;
+import android.renderscript.RenderScriptGL;
+import android.util.Log;
/**
* @hide
@@ -204,7 +206,8 @@ public class Scene extends SceneGraphBase {
entries.add(d);
}
- public void destroyRS(SceneManager sceneManager) {
+ public void destroyRS() {
+ SceneManager sceneManager = SceneManager.getInstance();
mTransformRSData = null;
sceneManager.mRenderLoop.bind_gRootNode(mTransformRSData);
sceneManager.mRenderLoop.set_gRenderableObjects(null);
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Transform.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Transform.java
index cc70bed366b1..8f0cbe5b9fc6 100644
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Transform.java
+++ b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Transform.java
@@ -51,9 +51,9 @@ public abstract class Transform extends SceneGraphBase {
}
abstract void initLocalData();
- public abstract void updateRSData();
+ abstract void updateRSData();
- public ScriptField_SgTransform getRSData(RenderScriptGL rs) {
+ ScriptField_SgTransform getRSData(RenderScriptGL rs) {
if (mField != null) {
return mField;
}
@@ -62,8 +62,7 @@ public abstract class Transform extends SceneGraphBase {
initLocalData();
if (mChildren.size() != 0) {
- Allocation childRSData = Allocation.createSized(rs,
- Element.ALLOCATION(rs),
+ Allocation childRSData = Allocation.createSized(rs, Element.ALLOCATION(rs),
mChildren.size());
mTransformData.children = childRSData;
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/VertexShader.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/VertexShader.java
index 2ceed327f86e..f1189965596f 100644
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/VertexShader.java
+++ b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/VertexShader.java
@@ -71,9 +71,6 @@ public class VertexShader extends Shader {
}
}
- VertexShader() {
- }
-
public ProgramVertex getProgram() {
return mProgram;
}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/render.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/render.rs
index 0d6c795aa671..ecfec08cb8df 100644
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/render.rs
+++ b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/render.rs
@@ -51,16 +51,15 @@ static rs_allocation nullAlloc;
//#define DEBUG_RENDERABLES
static void draw(SgRenderable *obj) {
-
- const SgRenderState *renderState = (const SgRenderState *)rsGetElementAt(obj->render_state, 0);
- const SgTransform *objTransform = (const SgTransform *)rsGetElementAt(obj->transformMatrix, 0);
#ifdef DEBUG_RENDERABLES
+ const SgTransform *objTransform = (const SgTransform *)rsGetElementAt(obj->transformMatrix, 0);
rsDebug("**** Drawing object with transform", obj);
printName(objTransform->name);
rsDebug("Model matrix: ", &objTransform->globalMat);
printName(obj->name);
#endif //DEBUG_RENDERABLES
+ const SgRenderState *renderState = (const SgRenderState *)rsGetElementAt(obj->render_state, 0);
const SgVertexShader *pv = (const SgVertexShader *)rsGetElementAt(renderState->pv, 0);
const SgFragmentShader *pf = (const SgFragmentShader *)rsGetElementAt(renderState->pf, 0);
@@ -215,35 +214,6 @@ void root(const void *v_in, void *v_out) {
}
}
-static bool intersect(const SgRenderable *obj, float3 pnt, float3 vec) {
- // Solving for t^2 + Bt + C = 0
- float3 originMinusCenter = pnt - obj->worldBoundingSphere.xyz;
- float B = dot(originMinusCenter, vec) * 2.0f;
- float C = dot(originMinusCenter, originMinusCenter) -
- obj->worldBoundingSphere.w * obj->worldBoundingSphere.w;
-
- float discriminant = B * B - 4.0f * C;
- if (discriminant < 0.0f) {
- return false;
- }
- discriminant = sqrt(discriminant);
-
- float t0 = (-B - discriminant) * 0.5f;
- float t1 = (-B + discriminant) * 0.5f;
-
- if (t0 > t1) {
- float temp = t0;
- t0 = t1;
- t1 = temp;
- }
-
- // The sphere is behind us
- if (t1 < 0.0f) {
- return false;
- }
- return true;
-}
-
// Search through sorted and culled objects
void pick(int screenX, int screenY) {
float3 pnt, vec;
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/scenegraph_objects.rsh b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/scenegraph_objects.rsh
index e3df60e0eaec..6c9890b23685 100644
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/scenegraph_objects.rsh
+++ b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/scenegraph_objects.rsh
@@ -247,4 +247,34 @@ static void getCameraRay(const SgCamera *cam, int screenX, int screenY, float3 *
*pnt = cam->position.xyz;
}
+static bool intersect(const SgRenderable *obj, float3 pnt, float3 vec) {
+ // Solving for t^2 + Bt + C = 0
+ float3 originMinusCenter = pnt - obj->worldBoundingSphere.xyz;
+ float B = dot(originMinusCenter, vec) * 2.0f;
+ float C = dot(originMinusCenter, originMinusCenter) -
+ obj->worldBoundingSphere.w * obj->worldBoundingSphere.w;
+
+ float discriminant = B * B - 4.0f * C;
+ if (discriminant < 0.0f) {
+ return false;
+ }
+ discriminant = sqrt(discriminant);
+
+ float t0 = (-B - discriminant) * 0.5f;
+ float t1 = (-B + discriminant) * 0.5f;
+
+ if (t0 > t1) {
+ float temp = t0;
+ t0 = t1;
+ t1 = temp;
+ }
+
+ // The sphere is behind us
+ if (t1 < 0.0f) {
+ return false;
+ }
+ return true;
+}
+
+
#endif // _TRANSFORM_DEF_
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/FullscreenBlur.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/FullscreenBlur.java
index 2e764e932e21..2299b72d120c 100644
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/FullscreenBlur.java
+++ b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/FullscreenBlur.java
@@ -166,9 +166,9 @@ class FullscreenBlur {
}
static void initShaders(Resources res, RenderScriptGL rs) {
- ScriptField_FBlurOffsets_s blurConst = new ScriptField_FBlurOffsets_s(rs, 1);
+ ScriptField_BlurOffsets blurConst = new ScriptField_BlurOffsets(rs, 1);
VertexShader.Builder vb = new VertexShader.Builder(rs);
- vb.addInput(ScriptField_VertexShaderInputs_s.createElement(rs));
+ vb.addInput(ScriptField_VertexShaderInputs.createElement(rs));
vb.setShader(res, R.raw.blur_vertex);
mPV_Blur = vb.create();
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppLoadingScreen.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppLoadingScreen.java
index b818833c42a4..60616cc0d89f 100644
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppLoadingScreen.java
+++ b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppLoadingScreen.java
@@ -38,9 +38,6 @@ public class TestAppLoadingScreen {
private static String TAG = "TestAppLoadingScreen";
- int mWidth;
- int mHeight;
-
private Resources mRes;
private RenderScriptGL mRS;
private ScriptC_test_app mScript;
@@ -108,7 +105,6 @@ public class TestAppLoadingScreen {
mRS.bindRootScript(mScript);
}
-
public void setRenderLoop(ScriptC renderLoop) {
mScript.set_gRenderLoop(renderLoop);
Allocation dummyAlloc = Allocation.createSized(mRS, Element.I32(mRS), 1);
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppRS.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppRS.java
index e24b1a7fb318..0892fdb0afc5 100644
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppRS.java
+++ b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppRS.java
@@ -62,10 +62,6 @@ public class TestAppRS {
private Resources mRes;
private RenderScriptGL mRS;
- ScriptField_FShaderParams_s mFsConst;
- ScriptField_FShaderLightParams_s mFsConst2;
- ScriptField_VShaderParams_s mVsConst;
-
// Shaders
private FragmentShader mPaintF;
private FragmentShader mLightsF;
@@ -73,18 +69,10 @@ public class TestAppRS {
private FragmentShader mPlasticF;
private FragmentShader mDiffuseF;
private FragmentShader mTextureF;
- private VertexShader mPaintV;
-
- private Allocation mDefaultCube;
- private TextureCube mEnvCube;
- private TextureCube mDiffCube;
+ private VertexShader mGenericV;
Scene mActiveScene;
- public TestAppRS() {
- mUseBlur = false;
- }
-
// This is a part of the test app, it's used to tests multiple render passes and is toggled
// on and off in the menu, off by default
void toggleBlur() {
@@ -103,6 +91,7 @@ public class TestAppRS {
}
public void init(RenderScriptGL rs, Resources res, int width, int height) {
+ mUseBlur = false;
mRS = rs;
mRes = res;
mWidth = width;
@@ -117,7 +106,9 @@ public class TestAppRS {
mLoadingScreen = new TestAppLoadingScreen(mRS, mRes);
// Initi renderscript stuff specific to the app. This will need to be abstracted out later.
- initRS();
+ FullscreenBlur.createRenderTargets(mRS, mWidth, mHeight);
+ initPaintShaders();
+ mLoadingScreen.setRenderLoop(mSceneManager.getRenderLoop());
// Load a scene to render
mSceneManager.loadModel(mFilePath + modelName, mLoadedCallback);
@@ -126,14 +117,12 @@ public class TestAppRS {
// When a new model file is selected from the UI, this function gets called to init everything
void loadModel(String path) {
mLoadingScreen.showLoadingScreen(true);
- mActiveScene.destroyRS(mSceneManager);
+ mActiveScene.destroyRS();
mSceneManager.loadModel(path, mLoadedCallback);
}
public void onActionDown(float x, float y) {
mTouchHandler.onActionDown(x, y);
-
- //mSceneManager.getRenderLoop().invoke_pick((int)x, (int)y);
}
public void onActionScale(float scale) {
@@ -144,9 +133,9 @@ public class TestAppRS {
mTouchHandler.onActionMove(x, y);
}
- FragmentShader createFromResource(int id, boolean addCubemap) {
+ FragmentShader createFromResource(int id, boolean addCubemap, Type constType) {
FragmentShader.Builder fb = new FragmentShader.Builder(mRS);
- fb.setShaderConst(mFsConst.getAllocation().getType());
+ fb.setShaderConst(constType);
fb.setShader(mRes, id);
fb.addTexture(TextureType.TEXTURE_2D, "diffuse");
if (addCubemap) {
@@ -161,30 +150,34 @@ public class TestAppRS {
}
private void initPaintShaders() {
- ScriptField_VObjectParams_s objConst = new ScriptField_VObjectParams_s(mRS, 1);
- ScriptField_VSParams_s shaderConst = new ScriptField_VSParams_s(mRS, 1);
+ ScriptField_ModelParams objConst = new ScriptField_ModelParams(mRS, 1);
+ ScriptField_ViewProjParams shaderConst = new ScriptField_ViewProjParams(mRS, 1);
VertexShader.Builder vb = new VertexShader.Builder(mRS);
- vb.addInput(ScriptField_VertexShaderInputs_s.createElement(mRS));
+ vb.addInput(ScriptField_VertexShaderInputs.createElement(mRS));
vb.setShader(mRes, R.raw.shader2v);
vb.setObjectConst(objConst.getAllocation().getType());
vb.setShaderConst(shaderConst.getAllocation().getType());
- mPaintV = vb.create();
+ mGenericV = vb.create();
+
+ ScriptField_CameraParams fsConst = new ScriptField_CameraParams(mRS, 1);
+ ScriptField_LightParams fsConst2 = new ScriptField_LightParams(mRS, 1);
- mFsConst = new ScriptField_FShaderParams_s(mRS, 1);
- mFsConst2 = new ScriptField_FShaderLightParams_s(mRS, 1);
+ mPaintF = createFromResource(R.raw.paintf, true, fsConst.getAllocation().getType());
+ // Assign a reflection map
+ TextureCube envCube = new TextureCube("sdcard/scenegraph/", "cube_env.png");
+ mPaintF.appendSourceParams(new TextureParam("reflection", envCube));
- mPaintF = createFromResource(R.raw.paintf, true);
- mPaintF.appendSourceParams(new TextureParam("reflection", mEnvCube));
- mAluminumF = createFromResource(R.raw.metal, true);
- mAluminumF.appendSourceParams(new TextureParam("reflection", mDiffCube));
+ mAluminumF = createFromResource(R.raw.metal, true, fsConst.getAllocation().getType());
+ TextureCube diffCube = new TextureCube("sdcard/scenegraph/", "cube_spec.png");
+ mAluminumF.appendSourceParams(new TextureParam("reflection", diffCube));
- mPlasticF = createFromResource(R.raw.plastic, false);
- mDiffuseF = createFromResource(R.raw.diffuse, false);
- mTextureF = createFromResource(R.raw.texture, false);
+ mPlasticF = createFromResource(R.raw.plastic, false, fsConst.getAllocation().getType());
+ mDiffuseF = createFromResource(R.raw.diffuse, false, fsConst.getAllocation().getType());
+ mTextureF = createFromResource(R.raw.texture, false, fsConst.getAllocation().getType());
FragmentShader.Builder fb = new FragmentShader.Builder(mRS);
- fb.setObjectConst(mFsConst2.getAllocation().getType());
+ fb.setObjectConst(fsConst2.getAllocation().getType());
fb.setShader(mRes, R.raw.plastic_lights);
mLightsF = fb.create();
@@ -222,19 +215,19 @@ public class TestAppRS {
mActiveScene.appendShader(mPlasticF);
mActiveScene.appendShader(mDiffuseF);
mActiveScene.appendShader(mTextureF);
- mActiveScene.appendShader(mPaintV);
+ mActiveScene.appendShader(mGenericV);
}
public void prepareToRender(Scene s) {
mSceneManager.setActiveScene(s);
mActiveScene = s;
addShadersToScene();
- RenderState plastic = new RenderState(mPaintV, mPlasticF, null, null);
- RenderState diffuse = new RenderState(mPaintV, mDiffuseF, null, null);
- RenderState paint = new RenderState(mPaintV, mPaintF, null, null);
- RenderState aluminum = new RenderState(mPaintV, mAluminumF, null, null);
- RenderState lights = new RenderState(mPaintV, mLightsF, null, null);
- RenderState glassTransp = new RenderState(mPaintV, mPaintF,
+ RenderState plastic = new RenderState(mGenericV, mPlasticF, null, null);
+ RenderState diffuse = new RenderState(mGenericV, mDiffuseF, null, null);
+ RenderState paint = new RenderState(mGenericV, mPaintF, null, null);
+ RenderState aluminum = new RenderState(mGenericV, mAluminumF, null, null);
+ RenderState lights = new RenderState(mGenericV, mLightsF, null, null);
+ RenderState glassTransp = new RenderState(mGenericV, mPaintF,
ProgramStore.BLEND_ALPHA_DEPTH_TEST(mRS), null);
initRenderPasses();
@@ -257,7 +250,7 @@ public class TestAppRS {
Renderable plane = (Renderable)mActiveScene.getRenderableByName("pPlaneShape1");
if (plane != null) {
- RenderState texState = new RenderState(mPaintV, mTextureF, null, null);
+ RenderState texState = new RenderState(mGenericV, mTextureF, null, null);
plane.setRenderState(texState);
plane.setVisible(mRS, !mUseBlur);
}
@@ -271,15 +264,4 @@ public class TestAppRS {
mLoadingScreen.showLoadingScreen(false);
}
-
- private void initRS() {
-
- FullscreenBlur.createRenderTargets(mRS, mWidth, mHeight);
- // Reflection maps from SD card
- mEnvCube = new TextureCube("sdcard/scenegraph/", "cube_env.png");
- mDiffCube = new TextureCube("sdcard/scenegraph/", "cube_spec.png");
- initPaintShaders();
-
- mLoadingScreen.setRenderLoop(mSceneManager.getRenderLoop());
- }
}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TouchHandler.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TouchHandler.java
index 4d303419079e..5dcc9f886d67 100644
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TouchHandler.java
+++ b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TouchHandler.java
@@ -16,62 +16,38 @@
package com.android.testapp;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.FileInputStream;
-import java.io.BufferedInputStream;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Vector;
-
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.os.AsyncTask;
-import android.renderscript.*;
-import android.renderscript.Allocation.MipmapControl;
-import android.renderscript.Element.Builder;
-import android.renderscript.Font.Style;
-import android.renderscript.Program.TextureType;
-import android.renderscript.ProgramStore.DepthFunc;
import android.util.Log;
-
+import android.renderscript.Float3;
import com.android.scenegraph.*;
+import com.android.scenegraph.CompoundTransform.RotateComponent;
+import com.android.scenegraph.CompoundTransform.TranslateComponent;
public class TouchHandler {
-
private static String TAG = "TouchHandler";
- public TouchHandler() {
- }
-
- public void init(Scene scene) {
- mCameraRotate = (CompoundTransform)scene.getTransformByName("CameraAim");
- mCameraDist = (CompoundTransform)scene.getTransformByName("CameraDist");
-
- if (mCameraRotate != null && mCameraDist != null) {
- mRotateX = mCameraRotate.mTransformComponents.get(2);
- mRotateY = mCameraRotate.mTransformComponents.get(1);
- mDist = mCameraDist.mTransformComponents.get(0);
- }
- }
-
-
- private Resources mRes;
- private RenderScriptGL mRS;
-
float mLastX;
float mLastY;
- CompoundTransform mCameraRotate;
- CompoundTransform mCameraDist;
+ RotateComponent mRotateX;
+ float mRotateXValue;
+ RotateComponent mRotateY;
+ float mRotateYValue;
+ TranslateComponent mDist;
+ Float3 mDistValue;
- CompoundTransform.Component mRotateX;
- CompoundTransform.Component mRotateY;
- CompoundTransform.Component mDist;
+ public void init(Scene scene) {
+ CompoundTransform cameraRotate = (CompoundTransform)scene.getTransformByName("CameraAim");
+ CompoundTransform cameraDist = (CompoundTransform)scene.getTransformByName("CameraDist");
+
+ if (cameraRotate != null && cameraDist != null) {
+ mRotateX = (RotateComponent)cameraRotate.mTransformComponents.get(2);
+ mRotateXValue = mRotateX.getAngle();
+ mRotateY = (RotateComponent)cameraRotate.mTransformComponents.get(1);
+ mRotateYValue = mRotateY.getAngle();
+ mDist = (TranslateComponent)cameraDist.mTransformComponents.get(0);
+ mDistValue = mDist.getValue();
+ }
+ }
public void onActionDown(float x, float y) {
mLastX = x;
@@ -79,16 +55,16 @@ public class TouchHandler {
}
public void onActionScale(float scale) {
- if (mCameraDist == null) {
+ if (mDist == null) {
return;
}
- mDist.mValue.z *= 1.0f / scale;
- mDist.mValue.z = Math.max(20.0f, Math.min(mDist.mValue.z, 100.0f));
- mCameraDist.updateRSData();
+ mDistValue.z *= 1.0f / scale;
+ mDistValue.z = Math.max(20.0f, Math.min(mDistValue.z, 100.0f));
+ mDist.setValue(mDistValue);
}
public void onActionMove(float x, float y) {
- if (mCameraRotate == null) {
+ if (mRotateX == null) {
return;
}
@@ -102,21 +78,17 @@ public class TouchHandler {
dx = 0.0f;
}
- mRotateY.mValue.w += dx*0.25;
- if (mRotateY.mValue.w > 360) {
- mRotateY.mValue.w -= 360;
- }
- if (mRotateY.mValue.w < 0) {
- mRotateY.mValue.w += 360;
- }
+ mRotateYValue += dx * 0.25f;
+ mRotateYValue %= 360.0f;
- mRotateX.mValue.w += dy*0.25;
- mRotateX.mValue.w = Math.max(mRotateX.mValue.w, -80.0f);
- mRotateX.mValue.w = Math.min(mRotateX.mValue.w, 0.0f);
+ mRotateXValue += dy * 0.25f;
+ mRotateXValue = Math.max(mRotateXValue , -80.0f);
+ mRotateXValue = Math.min(mRotateXValue , 0.0f);
+
+ mRotateX.setAngle(mRotateXValue);
+ mRotateY.setAngle(mRotateYValue);
mLastX = x;
mLastY = y;
-
- mCameraRotate.updateRSData();
}
}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rs
index cb4e3d0a05a8..e4dcc39e797c 100644
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rs
+++ b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rs
@@ -21,8 +21,7 @@
// Making sure these get reflected
FBlurOffsets *blurExport;
-VertexShaderInputs *iExport;
-VShaderParams *vConst;
+VShaderInputs *iExport;
FShaderParams *fConst;
FShaderLightParams *fConts2;
VSParams *vConst2;
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rsh b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rsh
index 2885ac575045..5fbcbb2ebb69 100644
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rsh
+++ b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rsh
@@ -17,24 +17,19 @@
#pragma rs java_package_name(com.android.testapp)
// Helpers
-typedef struct VShaderParams_s {
- rs_matrix4x4 model;
- rs_matrix4x4 viewProj;
-} VShaderParams;
-
-typedef struct VSParams_s {
+typedef struct ViewProjParams {
rs_matrix4x4 viewProj;
} VSParams;
-typedef struct VObjectParams_s {
+typedef struct ModelParams {
rs_matrix4x4 model;
} VObjectParams;
-typedef struct FShaderParams_s {
+typedef struct CameraParams {
float4 cameraPos;
} FShaderParams;
-typedef struct FShaderLightParams_s {
+typedef struct LightParams {
float4 lightPos_0;
float4 lightColor_0;
float4 lightPos_1;
@@ -43,15 +38,15 @@ typedef struct FShaderLightParams_s {
float4 diffuse;
} FShaderLightParams;
-typedef struct FBlurOffsets_s {
+typedef struct BlurOffsets {
float blurOffset0;
float blurOffset1;
float blurOffset2;
float blurOffset3;
} FBlurOffsets;
-typedef struct VertexShaderInputs_s {
+typedef struct VertexShaderInputs {
float4 position;
float3 normal;
float2 texture0;
-} VertexShaderInputs;
+} VShaderInputs;