From 4bda82de0bca754f3ce387e9968170c5122241a9 Mon Sep 17 00:00:00 2001 From: Alex Sakhartchouk Date: Fri, 27 Jan 2012 15:00:34 -0800 Subject: Better constant names, removed unused code, general cleanup. Change-Id: Iebf6d6c930c146e83d6963674d63ee322e831f3e --- .../com/android/scenegraph/CompoundTransform.java | 52 +++++++++++- .../src/com/android/scenegraph/FragmentShader.java | 3 - .../src/com/android/scenegraph/Scene.java | 13 +-- .../src/com/android/scenegraph/Transform.java | 7 +- .../src/com/android/scenegraph/VertexShader.java | 3 - .../src/com/android/scenegraph/render.rs | 34 +------- .../com/android/scenegraph/scenegraph_objects.rsh | 30 +++++++ .../src/com/android/testapp/FullscreenBlur.java | 4 +- .../com/android/testapp/TestAppLoadingScreen.java | 4 - .../src/com/android/testapp/TestAppRS.java | 86 ++++++++----------- .../src/com/android/testapp/TouchHandler.java | 98 ++++++++-------------- .../SceneGraph/src/com/android/testapp/test_app.rs | 3 +- .../src/com/android/testapp/test_app.rsh | 19 ++--- 13 files changed, 171 insertions(+), 185 deletions(-) (limited to 'tests/RenderScriptTests/SceneGraph') 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 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; -- cgit v1.2.3-59-g8ed1b