diff options
198 files changed, 0 insertions, 17480 deletions
diff --git a/tests/RenderScriptTests/Android.mk b/tests/RenderScriptTests/Android.mk deleted file mode 100644 index 5053e7d64389..000000000000 --- a/tests/RenderScriptTests/Android.mk +++ /dev/null @@ -1 +0,0 @@ -include $(call all-subdir-makefiles) diff --git a/tests/RenderScriptTests/FBOTest/Android.mk b/tests/RenderScriptTests/FBOTest/Android.mk deleted file mode 100644 index 7a578d9e4be8..000000000000 --- a/tests/RenderScriptTests/FBOTest/Android.mk +++ /dev/null @@ -1,28 +0,0 @@ -# -# Copyright (C) 2008 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := tests - -LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src) - -LOCAL_PACKAGE_NAME := FBOTest - -LOCAL_SDK_VERSION := 17 - -include $(BUILD_PACKAGE) diff --git a/tests/RenderScriptTests/FBOTest/AndroidManifest.xml b/tests/RenderScriptTests/FBOTest/AndroidManifest.xml deleted file mode 100644 index 788e8560b65a..000000000000 --- a/tests/RenderScriptTests/FBOTest/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.fbotest"> - <application android:label="_FBOTest"> - <activity android:name="FBOTest" - android:label="FBO Base Test" - android:theme="@android:style/Theme.Black.NoTitleBar"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - <activity android:name="FBOSync" - android:label="FBO Sync Test" - android:theme="@android:style/Theme.Black.NoTitleBar"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - </application> -</manifest> diff --git a/tests/RenderScriptTests/FBOTest/res/drawable-nodpi/robot.png b/tests/RenderScriptTests/FBOTest/res/drawable-nodpi/robot.png Binary files differdeleted file mode 100644 index f7353fd61c5b..000000000000 --- a/tests/RenderScriptTests/FBOTest/res/drawable-nodpi/robot.png +++ /dev/null diff --git a/tests/RenderScriptTests/FBOTest/res/raw/robot.a3d b/tests/RenderScriptTests/FBOTest/res/raw/robot.a3d Binary files differdeleted file mode 100644 index f48895cd8451..000000000000 --- a/tests/RenderScriptTests/FBOTest/res/raw/robot.a3d +++ /dev/null diff --git a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOSync.java b/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOSync.java deleted file mode 100644 index d30ad7e7c8eb..000000000000 --- a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOSync.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.fbotest; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; - -import android.app.Activity; -import android.content.res.Configuration; -import android.content.Intent; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.provider.Settings.System; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.MenuInflater; -import android.view.Window; -import android.widget.Button; -import android.widget.ListView; -import android.net.Uri; - -import java.lang.Runtime; - -public class FBOSync extends Activity { - - private FBOSyncView mView; - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - // Create our Preview view and set it as the content of our - // Activity - mView = new FBOSyncView(this); - setContentView(mView); - } - - @Override - protected void onResume() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity looses focus - super.onResume(); - mView.resume(); - } - - @Override - protected void onPause() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity looses focus - super.onPause(); - mView.pause(); - } -} - diff --git a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOSyncRS.java b/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOSyncRS.java deleted file mode 100644 index 57a117cc9ccd..000000000000 --- a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOSyncRS.java +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.fbotest; - -import java.io.Writer; - -import android.content.res.Resources; -import android.renderscript.*; -import android.renderscript.Element.DataType; -import android.renderscript.Element.DataKind; -import android.renderscript.ProgramStore.DepthFunc; -import android.renderscript.Type.Builder; -import android.util.Log; - - -public class FBOSyncRS { - - public FBOSyncRS() { - } - - public void init(RenderScriptGL rs, Resources res) { - mRS = rs; - mRes = res; - initRS(); - } - - public void surfaceChanged() { - mRS.getWidth(); - mRS.getHeight(); - } - - private Resources mRes; - private RenderScriptGL mRS; - private Sampler mSampler; - private ProgramStore mPSBackground; - private ProgramFragment mPFBackground; - private ProgramVertex mPVBackground; - private ProgramVertexFixedFunction.Constants mPVA; - - private Allocation mGridImage; - private Allocation mOffscreen; - private Allocation mOffscreenDepth; - private Allocation mAllocPV; - private Allocation mReadBackTest; - - private Font mItalic; - private Allocation mTextAlloc; - - private ScriptField_MeshInfo mMeshes; - private ScriptC_fbosync mScript; - - - public void onActionDown(float x, float y) { - mScript.invoke_onActionDown(x, y); - } - - public void onActionScale(float scale) { - mScript.invoke_onActionScale(scale); - } - - public void onActionMove(float x, float y) { - mScript.invoke_onActionMove(x, y); - } - - private void initPFS() { - ProgramStore.Builder b = new ProgramStore.Builder(mRS); - - b.setDepthFunc(ProgramStore.DepthFunc.LESS); - b.setDitherEnabled(false); - b.setDepthMaskEnabled(true); - mPSBackground = b.create(); - - mScript.set_gPFSBackground(mPSBackground); - } - - private void initPF() { - Sampler.Builder bs = new Sampler.Builder(mRS); - bs.setMinification(Sampler.Value.LINEAR); - bs.setMagnification(Sampler.Value.LINEAR); - bs.setWrapS(Sampler.Value.CLAMP); - bs.setWrapT(Sampler.Value.CLAMP); - mSampler = bs.create(); - - ProgramFragmentFixedFunction.Builder b = new ProgramFragmentFixedFunction.Builder(mRS); - b.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE, - ProgramFragmentFixedFunction.Builder.Format.RGBA, 0); - mPFBackground = b.create(); - mPFBackground.bindSampler(mSampler, 0); - - mScript.set_gPFBackground(mPFBackground); - } - - private void initPV() { - ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS); - mPVBackground = pvb.create(); - - mPVA = new ProgramVertexFixedFunction.Constants(mRS); - ((ProgramVertexFixedFunction)mPVBackground).bindConstants(mPVA); - - mScript.set_gPVBackground(mPVBackground); - } - - private void loadImage() { - mGridImage = Allocation.createFromBitmapResource(mRS, mRes, R.drawable.robot, - Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, - Allocation.USAGE_GRAPHICS_TEXTURE); - mScript.set_gTGrid(mGridImage); - } - - private void initTextAllocation(String fileName) { - String allocString = "Displaying file: " + fileName; - mTextAlloc = Allocation.createFromString(mRS, allocString, Allocation.USAGE_SCRIPT); - mScript.set_gTextAlloc(mTextAlloc); - } - - private void initMeshes(FileA3D model) { - int numEntries = model.getIndexEntryCount(); - int numMeshes = 0; - for (int i = 0; i < numEntries; i ++) { - FileA3D.IndexEntry entry = model.getIndexEntry(i); - if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) { - numMeshes ++; - } - } - - if (numMeshes > 0) { - mMeshes = new ScriptField_MeshInfo(mRS, numMeshes); - - for (int i = 0; i < numEntries; i ++) { - FileA3D.IndexEntry entry = model.getIndexEntry(i); - if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) { - Mesh mesh = entry.getMesh(); - mMeshes.set_mMesh(i, mesh, false); - mMeshes.set_mNumIndexSets(i, mesh.getPrimitiveCount(), false); - } - } - mMeshes.copyAll(); - } else { - throw new RSRuntimeException("No valid meshes in file"); - } - - mScript.bind_gMeshes(mMeshes); - mScript.invoke_updateMeshInfo(); - } - - public void loadA3DFile(String path) { - FileA3D model = FileA3D.createFromFile(mRS, path); - initMeshes(model); - initTextAllocation(path); - } - - private void initRS() { - - mScript = new ScriptC_fbosync(mRS, mRes, R.raw.fbosync); - - initPFS(); - initPF(); - initPV(); - - loadImage(); - - Type.Builder b = new Type.Builder(mRS, Element.RGBA_8888(mRS)); - b.setX(512).setY(512); - mOffscreen = Allocation.createTyped(mRS, - b.create(), - Allocation.USAGE_SCRIPT | - Allocation.USAGE_GRAPHICS_TEXTURE | - Allocation.USAGE_GRAPHICS_RENDER_TARGET); - mScript.set_gOffscreen(mOffscreen); - - mReadBackTest = Allocation.createTyped(mRS, - b.create(), - Allocation.USAGE_SCRIPT | - Allocation.USAGE_GRAPHICS_TEXTURE); - mScript.set_gReadBackTest(mReadBackTest); - - b = new Type.Builder(mRS, - Element.createPixel(mRS, DataType.UNSIGNED_16, - DataKind.PIXEL_DEPTH)); - b.setX(512).setY(512); - mOffscreenDepth = Allocation.createTyped(mRS, - b.create(), - Allocation.USAGE_GRAPHICS_RENDER_TARGET); - mScript.set_gOffscreenDepth(mOffscreenDepth); - - FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.robot); - initMeshes(model); - - mItalic = Font.create(mRS, mRes, "serif", Font.Style.ITALIC, 8); - mScript.set_gItalic(mItalic); - - initTextAllocation("R.raw.robot"); - - mRS.bindRootScript(mScript); - } -} - - - diff --git a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOSyncView.java b/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOSyncView.java deleted file mode 100644 index 6a856284cbec..000000000000 --- a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOSyncView.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.fbotest; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScriptGL; - -import android.content.Context; -import android.view.MotionEvent; -import android.view.SurfaceHolder; -import android.view.ScaleGestureDetector; -import android.util.Log; - -public class FBOSyncView extends RSSurfaceView { - - private RenderScriptGL mRS; - private FBOSyncRS mRender; - - private ScaleGestureDetector mScaleDetector; - - private static final int INVALID_POINTER_ID = -1; - private int mActivePointerId = INVALID_POINTER_ID; - - public FBOSyncView(Context context) { - super(context); - ensureRenderScript(); - mScaleDetector = new ScaleGestureDetector(context, new ScaleListener()); - } - - private void ensureRenderScript() { - if (mRS == null) { - RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); - sc.setDepth(16, 24); - mRS = createRenderScriptGL(sc); - mRender = new FBOSyncRS(); - mRender.init(mRS, getResources()); - } - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - ensureRenderScript(); - } - - @Override - public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { - super.surfaceChanged(holder, format, w, h); - mRender.surfaceChanged(); - } - - @Override - protected void onDetachedFromWindow() { - mRender = null; - if (mRS != null) { - mRS = null; - destroyRenderScriptGL(); - } - } - - public void loadA3DFile(String path) { - mRender.loadA3DFile(path); - } - - @Override - public boolean onTouchEvent(MotionEvent ev) { - mScaleDetector.onTouchEvent(ev); - - boolean ret = false; - float x = ev.getX(); - float y = ev.getY(); - - final int action = ev.getAction(); - - switch (action & MotionEvent.ACTION_MASK) { - case MotionEvent.ACTION_DOWN: { - mRender.onActionDown(x, y); - mActivePointerId = ev.getPointerId(0); - ret = true; - break; - } - case MotionEvent.ACTION_MOVE: { - if (!mScaleDetector.isInProgress()) { - mRender.onActionMove(x, y); - } - mRender.onActionDown(x, y); - ret = true; - break; - } - - case MotionEvent.ACTION_UP: { - mActivePointerId = INVALID_POINTER_ID; - break; - } - - case MotionEvent.ACTION_CANCEL: { - mActivePointerId = INVALID_POINTER_ID; - break; - } - - case MotionEvent.ACTION_POINTER_UP: { - final int pointerIndex = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) - >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; - final int pointerId = ev.getPointerId(pointerIndex); - if (pointerId == mActivePointerId) { - // This was our active pointer going up. Choose a new - // active pointer and adjust accordingly. - final int newPointerIndex = pointerIndex == 0 ? 1 : 0; - x = ev.getX(newPointerIndex); - y = ev.getY(newPointerIndex); - mRender.onActionDown(x, y); - mActivePointerId = ev.getPointerId(newPointerIndex); - } - break; - } - } - - return ret; - } - - private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { - @Override - public boolean onScale(ScaleGestureDetector detector) { - mRender.onActionScale(detector.getScaleFactor()); - return true; - } - } -} - - diff --git a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOTest.java b/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOTest.java deleted file mode 100644 index 72aa3eaed5ae..000000000000 --- a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOTest.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.fbotest; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; - -import android.app.Activity; -import android.content.res.Configuration; -import android.content.Intent; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.provider.Settings.System; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.MenuInflater; -import android.view.Window; -import android.widget.Button; -import android.widget.ListView; -import android.net.Uri; - -import java.lang.Runtime; - -public class FBOTest extends Activity { - - private FBOTestView mView; - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - // Create our Preview view and set it as the content of our - // Activity - mView = new FBOTestView(this); - setContentView(mView); - } - - @Override - protected void onResume() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity looses focus - super.onResume(); - mView.resume(); - } - - @Override - protected void onPause() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity looses focus - super.onPause(); - mView.pause(); - } -} - diff --git a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOTestRS.java b/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOTestRS.java deleted file mode 100644 index 9e30c4b561ca..000000000000 --- a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOTestRS.java +++ /dev/null @@ -1,205 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.fbotest; - -import java.io.Writer; - -import android.content.res.Resources; -import android.renderscript.*; -import android.renderscript.Element.DataType; -import android.renderscript.Element.DataKind; -import android.renderscript.ProgramStore.DepthFunc; -import android.renderscript.Type.Builder; -import android.util.Log; - - -public class FBOTestRS { - - public FBOTestRS() { - } - - public void init(RenderScriptGL rs, Resources res) { - mRS = rs; - mRes = res; - initRS(); - } - - public void surfaceChanged() { - mRS.getWidth(); - mRS.getHeight(); - } - - private Resources mRes; - private RenderScriptGL mRS; - private Sampler mSampler; - private ProgramStore mPSBackground; - private ProgramFragment mPFBackground; - private ProgramVertex mPVBackground; - private ProgramVertexFixedFunction.Constants mPVA; - - private Allocation mGridImage; - private Allocation mOffscreen; - private Allocation mOffscreenDepth; - private Allocation mAllocPV; - - private Font mItalic; - private Allocation mTextAlloc; - - private ScriptField_MeshInfo mMeshes; - private ScriptC_fbotest mScript; - - - public void onActionDown(float x, float y) { - mScript.invoke_onActionDown(x, y); - } - - public void onActionScale(float scale) { - mScript.invoke_onActionScale(scale); - } - - public void onActionMove(float x, float y) { - mScript.invoke_onActionMove(x, y); - } - - private void initPFS() { - ProgramStore.Builder b = new ProgramStore.Builder(mRS); - - b.setDepthFunc(ProgramStore.DepthFunc.LESS); - b.setDitherEnabled(false); - b.setDepthMaskEnabled(true); - mPSBackground = b.create(); - - mScript.set_gPFSBackground(mPSBackground); - } - - private void initPF() { - Sampler.Builder bs = new Sampler.Builder(mRS); - bs.setMinification(Sampler.Value.LINEAR); - bs.setMagnification(Sampler.Value.LINEAR); - bs.setWrapS(Sampler.Value.CLAMP); - bs.setWrapT(Sampler.Value.CLAMP); - mSampler = bs.create(); - - ProgramFragmentFixedFunction.Builder b = new ProgramFragmentFixedFunction.Builder(mRS); - b.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE, - ProgramFragmentFixedFunction.Builder.Format.RGBA, 0); - mPFBackground = b.create(); - mPFBackground.bindSampler(mSampler, 0); - - mScript.set_gPFBackground(mPFBackground); - } - - private void initPV() { - ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS); - mPVBackground = pvb.create(); - - mPVA = new ProgramVertexFixedFunction.Constants(mRS); - ((ProgramVertexFixedFunction)mPVBackground).bindConstants(mPVA); - - mScript.set_gPVBackground(mPVBackground); - } - - private void loadImage() { - mGridImage = Allocation.createFromBitmapResource(mRS, mRes, R.drawable.robot, - Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, - Allocation.USAGE_GRAPHICS_TEXTURE); - mScript.set_gTGrid(mGridImage); - } - - private void initTextAllocation(String fileName) { - String allocString = "Displaying file: " + fileName; - mTextAlloc = Allocation.createFromString(mRS, allocString, Allocation.USAGE_SCRIPT); - mScript.set_gTextAlloc(mTextAlloc); - } - - private void initMeshes(FileA3D model) { - int numEntries = model.getIndexEntryCount(); - int numMeshes = 0; - for (int i = 0; i < numEntries; i ++) { - FileA3D.IndexEntry entry = model.getIndexEntry(i); - if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) { - numMeshes ++; - } - } - - if (numMeshes > 0) { - mMeshes = new ScriptField_MeshInfo(mRS, numMeshes); - - for (int i = 0; i < numEntries; i ++) { - FileA3D.IndexEntry entry = model.getIndexEntry(i); - if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) { - Mesh mesh = entry.getMesh(); - mMeshes.set_mMesh(i, mesh, false); - mMeshes.set_mNumIndexSets(i, mesh.getPrimitiveCount(), false); - } - } - mMeshes.copyAll(); - } else { - throw new RSRuntimeException("No valid meshes in file"); - } - - mScript.bind_gMeshes(mMeshes); - mScript.invoke_updateMeshInfo(); - } - - public void loadA3DFile(String path) { - FileA3D model = FileA3D.createFromFile(mRS, path); - initMeshes(model); - initTextAllocation(path); - } - - private void initRS() { - - mScript = new ScriptC_fbotest(mRS, mRes, R.raw.fbotest); - - initPFS(); - initPF(); - initPV(); - - loadImage(); - - Type.Builder b = new Type.Builder(mRS, Element.RGBA_8888(mRS)); - b.setX(512).setY(512); - mOffscreen = Allocation.createTyped(mRS, - b.create(), - Allocation.USAGE_GRAPHICS_TEXTURE | - Allocation.USAGE_GRAPHICS_RENDER_TARGET); - mScript.set_gOffscreen(mOffscreen); - - b = new Type.Builder(mRS, - Element.createPixel(mRS, DataType.UNSIGNED_16, - DataKind.PIXEL_DEPTH)); - b.setX(512).setY(512); - mOffscreenDepth = Allocation.createTyped(mRS, - b.create(), - Allocation.USAGE_GRAPHICS_RENDER_TARGET); - mScript.set_gOffscreenDepth(mOffscreenDepth); - - FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.robot); - initMeshes(model); - - mItalic = Font.create(mRS, mRes, "serif", Font.Style.ITALIC, 8); - mScript.set_gItalic(mItalic); - - initTextAllocation("R.raw.robot"); - - mRS.bindRootScript(mScript); - } -} - - - diff --git a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOTestView.java b/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOTestView.java deleted file mode 100644 index c9598ee864c0..000000000000 --- a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOTestView.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.fbotest; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScriptGL; - -import android.content.Context; -import android.view.MotionEvent; -import android.view.SurfaceHolder; -import android.view.ScaleGestureDetector; -import android.util.Log; - -public class FBOTestView extends RSSurfaceView { - - private RenderScriptGL mRS; - private FBOTestRS mRender; - - private ScaleGestureDetector mScaleDetector; - - private static final int INVALID_POINTER_ID = -1; - private int mActivePointerId = INVALID_POINTER_ID; - - public FBOTestView(Context context) { - super(context); - ensureRenderScript(); - mScaleDetector = new ScaleGestureDetector(context, new ScaleListener()); - } - - private void ensureRenderScript() { - if (mRS == null) { - RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); - sc.setDepth(16, 24); - mRS = createRenderScriptGL(sc); - mRender = new FBOTestRS(); - mRender.init(mRS, getResources()); - } - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - ensureRenderScript(); - } - - @Override - public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { - super.surfaceChanged(holder, format, w, h); - mRender.surfaceChanged(); - } - - @Override - protected void onDetachedFromWindow() { - mRender = null; - if (mRS != null) { - mRS = null; - destroyRenderScriptGL(); - } - } - - public void loadA3DFile(String path) { - mRender.loadA3DFile(path); - } - - @Override - public boolean onTouchEvent(MotionEvent ev) { - mScaleDetector.onTouchEvent(ev); - - boolean ret = false; - float x = ev.getX(); - float y = ev.getY(); - - final int action = ev.getAction(); - - switch (action & MotionEvent.ACTION_MASK) { - case MotionEvent.ACTION_DOWN: { - mRender.onActionDown(x, y); - mActivePointerId = ev.getPointerId(0); - ret = true; - break; - } - case MotionEvent.ACTION_MOVE: { - if (!mScaleDetector.isInProgress()) { - mRender.onActionMove(x, y); - } - mRender.onActionDown(x, y); - ret = true; - break; - } - - case MotionEvent.ACTION_UP: { - mActivePointerId = INVALID_POINTER_ID; - break; - } - - case MotionEvent.ACTION_CANCEL: { - mActivePointerId = INVALID_POINTER_ID; - break; - } - - case MotionEvent.ACTION_POINTER_UP: { - final int pointerIndex = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) - >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; - final int pointerId = ev.getPointerId(pointerIndex); - if (pointerId == mActivePointerId) { - // This was our active pointer going up. Choose a new - // active pointer and adjust accordingly. - final int newPointerIndex = pointerIndex == 0 ? 1 : 0; - x = ev.getX(newPointerIndex); - y = ev.getY(newPointerIndex); - mRender.onActionDown(x, y); - mActivePointerId = ev.getPointerId(newPointerIndex); - } - break; - } - } - - return ret; - } - - private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { - @Override - public boolean onScale(ScaleGestureDetector detector) { - mRender.onActionScale(detector.getScaleFactor()); - return true; - } - } -} - - diff --git a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/fbosync.rs b/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/fbosync.rs deleted file mode 100644 index 0c177efd06bd..000000000000 --- a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/fbosync.rs +++ /dev/null @@ -1,230 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.fbotest) - -#include "rs_graphics.rsh" - -rs_program_vertex gPVBackground; -rs_program_fragment gPFBackground; - -rs_allocation gTGrid; - -rs_program_store gPFSBackground; - -rs_font gItalic; -rs_allocation gTextAlloc; - -rs_allocation gOffscreen; -rs_allocation gOffscreenDepth; -rs_allocation gReadBackTest; - -typedef struct MeshInfo { - rs_mesh mMesh; - int mNumIndexSets; - float3 bBoxMin; - float3 bBoxMax; -} MeshInfo_t; - -MeshInfo_t *gMeshes; - -static float3 gLookAt; - -static float gRotateX; -static float gRotateY; -static float gZoom; - -static float gLastX; -static float gLastY; - -void onActionDown(float x, float y) { - gLastX = x; - gLastY = y; -} - -void onActionScale(float scale) { - - gZoom *= 1.0f / scale; - gZoom = max(0.1f, min(gZoom, 500.0f)); -} - -void onActionMove(float x, float y) { - float dx = gLastX - x; - float dy = gLastY - y; - - if (fabs(dy) <= 2.0f) { - dy = 0.0f; - } - if (fabs(dx) <= 2.0f) { - dx = 0.0f; - } - - gRotateY -= dx; - if (gRotateY > 360) { - gRotateY -= 360; - } - if (gRotateY < 0) { - gRotateY += 360; - } - - gRotateX -= dy; - gRotateX = min(gRotateX, 80.0f); - gRotateX = max(gRotateX, -80.0f); - - gLastX = x; - gLastY = y; -} - -void init() { - gRotateX = 0.0f; - gRotateY = 0.0f; - gZoom = 50.0f; - gLookAt = 0.0f; -} - -void updateMeshInfo() { - rs_allocation allMeshes = rsGetAllocation(gMeshes); - int size = rsAllocationGetDimX(allMeshes); - gLookAt = 0.0f; - float minX, minY, minZ, maxX, maxY, maxZ; - for (int i = 0; i < size; i++) { - MeshInfo_t *info = (MeshInfo_t*)rsGetElementAt(allMeshes, i); - rsgMeshComputeBoundingBox(info->mMesh, - &minX, &minY, &minZ, - &maxX, &maxY, &maxZ); - info->bBoxMin = (float3){minX, minY, minZ}; - info->bBoxMax = (float3){maxX, maxY, maxZ}; - gLookAt += (info->bBoxMin + info->bBoxMax)*0.5f; - } - gLookAt = gLookAt / (float)size; -} - -static void renderAllMeshes() { - rs_allocation allMeshes = rsGetAllocation(gMeshes); - int size = rsAllocationGetDimX(allMeshes); - gLookAt = 0.0f; - for (int i = 0; i < size; i++) { - MeshInfo_t *info = (MeshInfo_t*)rsGetElementAt(allMeshes, i); - rsgDrawMesh(info->mMesh); - } -} - -static void drawDescription() { - uint height = rsgGetHeight(); - int left = 0, right = 0, top = 0, bottom = 0; - - rsgBindFont(gItalic); - - rsgMeasureText(gTextAlloc, &left, &right, &top, &bottom); - rsgDrawText(gTextAlloc, 2 -left, height - 2 + bottom); -} - -static void renderOffscreen(bool useDepth) { - - rsgBindColorTarget(gOffscreen, 0); - if (useDepth) { - rsgBindDepthTarget(gOffscreenDepth); - rsgClearDepth(1.0f); - } else { - rsgClearDepthTarget(); - } - rsgClearColor(0.8f, 0.0f, 0.0f, 1.0f); - - rsgBindProgramVertex(gPVBackground); - rs_matrix4x4 proj; - float aspect = (float)rsAllocationGetDimX(gOffscreen) / (float)rsAllocationGetDimY(gOffscreen); - rsMatrixLoadPerspective(&proj, 30.0f, aspect, 1.0f, 100.0f); - rsgProgramVertexLoadProjectionMatrix(&proj); - - rsgBindProgramFragment(gPFBackground); - rsgBindProgramStore(gPFSBackground); - rsgBindTexture(gPFBackground, 0, gTGrid); - - rs_matrix4x4 matrix; - rsMatrixLoadIdentity(&matrix); - // Position our models on the screen - rsMatrixTranslate(&matrix, gLookAt.x, gLookAt.y, gLookAt.z - gZoom); - rsMatrixRotate(&matrix, gRotateX, 1.0f, 0.0f, 0.0f); - rsMatrixRotate(&matrix, gRotateY, 0.0f, 1.0f, 0.0f); - rsgProgramVertexLoadModelMatrix(&matrix); - - renderAllMeshes(); - - // Render into the frambuffer - rsgClearAllRenderTargets(); -} - -static void drawOffscreenResult(int posX, int posY, rs_allocation texture) { - // display the result - rs_matrix4x4 proj, matrix; - rsMatrixLoadOrtho(&proj, 0, rsgGetWidth(), rsgGetHeight(), 0, -500, 500); - rsgProgramVertexLoadProjectionMatrix(&proj); - rsMatrixLoadIdentity(&matrix); - rsgProgramVertexLoadModelMatrix(&matrix); - rsgBindTexture(gPFBackground, 0, texture); - float startX = posX, startY = posY; - float width = 256, height = 256; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 1, - startX, startY + height, 0, 0, 0, - startX + width, startY + height, 0, 1, 0, - startX + width, startY, 0, 1, 1); -} - -int root(void) { - - rsgClearColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgClearDepth(1.0f); - - renderOffscreen(true); - drawOffscreenResult(0, 0, gOffscreen); - - - uint32_t w = rsAllocationGetDimX(gOffscreen); - uint32_t h = rsAllocationGetDimY(gOffscreen); - - rsgAllocationSyncAll(gOffscreen, RS_ALLOCATION_USAGE_GRAPHICS_RENDER_TARGET); - - rsAllocationCopy2DRange(gReadBackTest, 0, 0, 0, - RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X, w, h, - gOffscreen, 0, 0, 0, RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X); - - rsgAllocationSyncAll(gReadBackTest); - drawOffscreenResult(0, 300, gReadBackTest); - - rsgBindProgramVertex(gPVBackground); - rs_matrix4x4 proj; - float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); - rsMatrixLoadPerspective(&proj, 30.0f, aspect, 1.0f, 100.0f); - rsgProgramVertexLoadProjectionMatrix(&proj); - - rsgBindProgramFragment(gPFBackground); - rsgBindProgramStore(gPFSBackground); - rsgBindTexture(gPFBackground, 0, gTGrid); - - rs_matrix4x4 matrix; - rsMatrixLoadIdentity(&matrix); - // Position our models on the screen - rsMatrixTranslate(&matrix, gLookAt.x, gLookAt.y, gLookAt.z - gZoom); - rsMatrixRotate(&matrix, gRotateX, 1.0f, 0.0f, 0.0f); - rsMatrixRotate(&matrix, gRotateY, 0.0f, 1.0f, 0.0f); - rsgProgramVertexLoadModelMatrix(&matrix); - - renderAllMeshes(); - - drawDescription(); - - return 0; -} diff --git a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/fbotest.rs b/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/fbotest.rs deleted file mode 100644 index 13a3c85a381d..000000000000 --- a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/fbotest.rs +++ /dev/null @@ -1,219 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.fbotest) - -#include "rs_graphics.rsh" - -rs_program_vertex gPVBackground; -rs_program_fragment gPFBackground; - -rs_allocation gTGrid; - -rs_program_store gPFSBackground; - -rs_font gItalic; -rs_allocation gTextAlloc; - -rs_allocation gOffscreen; -rs_allocation gOffscreenDepth; - -typedef struct MeshInfo { - rs_mesh mMesh; - int mNumIndexSets; - float3 bBoxMin; - float3 bBoxMax; -} MeshInfo_t; - -MeshInfo_t *gMeshes; - -static float3 gLookAt; - -static float gRotateX; -static float gRotateY; -static float gZoom; - -static float gLastX; -static float gLastY; - -void onActionDown(float x, float y) { - gLastX = x; - gLastY = y; -} - -void onActionScale(float scale) { - - gZoom *= 1.0f / scale; - gZoom = max(0.1f, min(gZoom, 500.0f)); -} - -void onActionMove(float x, float y) { - float dx = gLastX - x; - float dy = gLastY - y; - - if (fabs(dy) <= 2.0f) { - dy = 0.0f; - } - if (fabs(dx) <= 2.0f) { - dx = 0.0f; - } - - gRotateY -= dx; - if (gRotateY > 360) { - gRotateY -= 360; - } - if (gRotateY < 0) { - gRotateY += 360; - } - - gRotateX -= dy; - gRotateX = min(gRotateX, 80.0f); - gRotateX = max(gRotateX, -80.0f); - - gLastX = x; - gLastY = y; -} - -void init() { - gRotateX = 0.0f; - gRotateY = 0.0f; - gZoom = 50.0f; - gLookAt = 0.0f; -} - -void updateMeshInfo() { - rs_allocation allMeshes = rsGetAllocation(gMeshes); - int size = rsAllocationGetDimX(allMeshes); - gLookAt = 0.0f; - float minX, minY, minZ, maxX, maxY, maxZ; - for (int i = 0; i < size; i++) { - MeshInfo_t *info = (MeshInfo_t*)rsGetElementAt(allMeshes, i); - rsgMeshComputeBoundingBox(info->mMesh, - &minX, &minY, &minZ, - &maxX, &maxY, &maxZ); - info->bBoxMin = (float3){minX, minY, minZ}; - info->bBoxMax = (float3){maxX, maxY, maxZ}; - gLookAt += (info->bBoxMin + info->bBoxMax)*0.5f; - } - gLookAt = gLookAt / (float)size; -} - -static void renderAllMeshes() { - rs_allocation allMeshes = rsGetAllocation(gMeshes); - int size = rsAllocationGetDimX(allMeshes); - gLookAt = 0.0f; - for (int i = 0; i < size; i++) { - MeshInfo_t *info = (MeshInfo_t*)rsGetElementAt(allMeshes, i); - rsgDrawMesh(info->mMesh); - } -} - -static void drawDescription() { - uint height = rsgGetHeight(); - int left = 0, right = 0, top = 0, bottom = 0; - - rsgBindFont(gItalic); - - rsgMeasureText(gTextAlloc, &left, &right, &top, &bottom); - rsgDrawText(gTextAlloc, 2 -left, height - 2 + bottom); -} - -static void renderOffscreen(bool useDepth) { - - rsgBindColorTarget(gOffscreen, 0); - if (useDepth) { - rsgBindDepthTarget(gOffscreenDepth); - rsgClearDepth(1.0f); - } else { - rsgClearDepthTarget(); - } - rsgClearColor(0.8f, 0.8f, 0.8f, 1.0f); - - rsgBindProgramVertex(gPVBackground); - rs_matrix4x4 proj; - float aspect = (float)rsAllocationGetDimX(gOffscreen) / (float)rsAllocationGetDimY(gOffscreen); - rsMatrixLoadPerspective(&proj, 30.0f, aspect, 1.0f, 100.0f); - rsgProgramVertexLoadProjectionMatrix(&proj); - - rsgBindProgramFragment(gPFBackground); - rsgBindProgramStore(gPFSBackground); - rsgBindTexture(gPFBackground, 0, gTGrid); - - rs_matrix4x4 matrix; - rsMatrixLoadIdentity(&matrix); - // Position our models on the screen - rsMatrixTranslate(&matrix, gLookAt.x, gLookAt.y, gLookAt.z - gZoom); - rsMatrixRotate(&matrix, gRotateX, 1.0f, 0.0f, 0.0f); - rsMatrixRotate(&matrix, gRotateY, 0.0f, 1.0f, 0.0f); - rsgProgramVertexLoadModelMatrix(&matrix); - - renderAllMeshes(); - - // Render into the frambuffer - rsgClearAllRenderTargets(); -} - -static void drawOffscreenResult(int posX, int posY) { - // display the result - rs_matrix4x4 proj, matrix; - rsMatrixLoadOrtho(&proj, 0, rsgGetWidth(), rsgGetHeight(), 0, -500, 500); - rsgProgramVertexLoadProjectionMatrix(&proj); - rsMatrixLoadIdentity(&matrix); - rsgProgramVertexLoadModelMatrix(&matrix); - rsgBindTexture(gPFBackground, 0, gOffscreen); - float startX = posX, startY = posY; - float width = 256, height = 256; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 1, - startX, startY + height, 0, 0, 0, - startX + width, startY + height, 0, 1, 0, - startX + width, startY, 0, 1, 1); -} - -int root(void) { - - rsgClearColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgClearDepth(1.0f); - - renderOffscreen(true); - drawOffscreenResult(0, 0); - - renderOffscreen(false); - drawOffscreenResult(0, 256); - - rsgBindProgramVertex(gPVBackground); - rs_matrix4x4 proj; - float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); - rsMatrixLoadPerspective(&proj, 30.0f, aspect, 1.0f, 100.0f); - rsgProgramVertexLoadProjectionMatrix(&proj); - - rsgBindProgramFragment(gPFBackground); - rsgBindProgramStore(gPFSBackground); - rsgBindTexture(gPFBackground, 0, gTGrid); - - rs_matrix4x4 matrix; - rsMatrixLoadIdentity(&matrix); - // Position our models on the screen - rsMatrixTranslate(&matrix, gLookAt.x, gLookAt.y, gLookAt.z - gZoom); - rsMatrixRotate(&matrix, gRotateX, 1.0f, 0.0f, 0.0f); - rsMatrixRotate(&matrix, gRotateY, 0.0f, 1.0f, 0.0f); - rsgProgramVertexLoadModelMatrix(&matrix); - - renderAllMeshes(); - - drawDescription(); - - return 0; -} diff --git a/tests/RenderScriptTests/HelloWorld/Android.mk b/tests/RenderScriptTests/HelloWorld/Android.mk deleted file mode 100644 index c1c08ec18f33..000000000000 --- a/tests/RenderScriptTests/HelloWorld/Android.mk +++ /dev/null @@ -1,28 +0,0 @@ -# -# Copyright (C) 2011 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := tests - -LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src) - -LOCAL_PACKAGE_NAME := RsHelloWorld - -LOCAL_SDK_VERSION := 17 - -include $(BUILD_PACKAGE) diff --git a/tests/RenderScriptTests/HelloWorld/AndroidManifest.xml b/tests/RenderScriptTests/HelloWorld/AndroidManifest.xml deleted file mode 100644 index 1d37dc980ccf..000000000000 --- a/tests/RenderScriptTests/HelloWorld/AndroidManifest.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2011 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.example.android.rs.helloworld"> - <uses-sdk android:minSdkVersion="11" /> - <application android:label="RsHelloWorld" - android:icon="@drawable/test_pattern"> - <activity android:name="HelloWorld" - android:label="RsHelloWorld" - android:theme="@android:style/Theme.Black.NoTitleBar"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - </application> -</manifest> diff --git a/tests/RenderScriptTests/HelloWorld/_index.html b/tests/RenderScriptTests/HelloWorld/_index.html deleted file mode 100644 index 4cab73817684..000000000000 --- a/tests/RenderScriptTests/HelloWorld/_index.html +++ /dev/null @@ -1 +0,0 @@ -<p>A Renderscript graphics application that draws the text "Hello, World!" where the user touches.</p>
\ No newline at end of file diff --git a/tests/RenderScriptTests/HelloWorld/res/drawable/test_pattern.png b/tests/RenderScriptTests/HelloWorld/res/drawable/test_pattern.png Binary files differdeleted file mode 100644 index e7d145554c00..000000000000 --- a/tests/RenderScriptTests/HelloWorld/res/drawable/test_pattern.png +++ /dev/null diff --git a/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/HelloWorld.java b/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/HelloWorld.java deleted file mode 100644 index 9b1697b2cf27..000000000000 --- a/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/HelloWorld.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.example.android.rs.helloworld; - -import android.app.Activity; -import android.os.Bundle; - -// Renderscript activity -public class HelloWorld extends Activity { - - // Custom view to use with RenderScript - private HelloWorldView mView; - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - // Create our view and set it as the content of our Activity - mView = new HelloWorldView(this); - setContentView(mView); - } - - @Override - protected void onResume() { - // Ideally an app should implement onResume() and onPause() - // to take appropriate action when the activity loses focus - super.onResume(); - mView.resume(); - } - - @Override - protected void onPause() { - // Ideally an app should implement onResume() and onPause() - // to take appropriate action when the activity loses focus - super.onPause(); - mView.pause(); - } - -} - diff --git a/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/HelloWorldRS.java b/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/HelloWorldRS.java deleted file mode 100644 index 431641173b0c..000000000000 --- a/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/HelloWorldRS.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.example.android.rs.helloworld; - -import android.content.res.Resources; -import android.renderscript.*; - -// This is the renderer for the HelloWorldView -public class HelloWorldRS { - private Resources mRes; - private RenderScriptGL mRS; - - private ScriptC_helloworld mScript; - - public HelloWorldRS() { - } - - // This provides us with the renderscript context and resources that - // allow us to create the script that does rendering - public void init(RenderScriptGL rs, Resources res) { - mRS = rs; - mRes = res; - initRS(); - } - - public void onActionDown(int x, int y) { - mScript.set_gTouchX(x); - mScript.set_gTouchY(y); - } - - private void initRS() { - mScript = new ScriptC_helloworld(mRS, mRes, R.raw.helloworld); - mRS.bindRootScript(mScript); - } -} - - - diff --git a/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/HelloWorldView.java b/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/HelloWorldView.java deleted file mode 100644 index 557ebc5a418f..000000000000 --- a/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/HelloWorldView.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.example.android.rs.helloworld; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScriptGL; - -import android.content.Context; -import android.view.MotionEvent; - -public class HelloWorldView extends RSSurfaceView { - // Renderscipt context - private RenderScriptGL mRS; - // Script that does the rendering - private HelloWorldRS mRender; - - public HelloWorldView(Context context) { - super(context); - ensureRenderScript(); - } - - private void ensureRenderScript() { - if (mRS == null) { - // Initialize renderscript with desired surface characteristics. - // In this case, just use the defaults - RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); - mRS = createRenderScriptGL(sc); - // Create an instance of the script that does the rendering - mRender = new HelloWorldRS(); - mRender.init(mRS, getResources()); - } - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - ensureRenderScript(); - } - - @Override - protected void onDetachedFromWindow() { - // Handle the system event and clean up - mRender = null; - if (mRS != null) { - mRS = null; - destroyRenderScriptGL(); - } - } - - @Override - public boolean onTouchEvent(MotionEvent ev) { - // Pass touch events from the system to the rendering script - if (ev.getAction() == MotionEvent.ACTION_DOWN) { - mRender.onActionDown((int)ev.getX(), (int)ev.getY()); - return true; - } - - return false; - } -} - - diff --git a/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/helloworld.rs b/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/helloworld.rs deleted file mode 100644 index bcf624e20055..000000000000 --- a/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/helloworld.rs +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -// Tell which java package name the reflected files should belong to -#pragma rs java_package_name(com.example.android.rs.helloworld) - -// Built-in header with graphics API's -#include "rs_graphics.rsh" - -// gTouchX and gTouchY are variables that will be reflected for use -// by the java API. We can use them to notify the script of touch events. -int gTouchX; -int gTouchY; - -// This is invoked automatically when the script is created -void init() { - gTouchX = 50.0f; - gTouchY = 50.0f; -} - -int root(void) { - - // Clear the background color - rsgClearColor(0.0f, 0.0f, 0.0f, 0.0f); - // Tell the runtime what the font color should be - rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); - // Introuduce ourselves to the world by drawing a greeting - // at the position user touched on the screen - rsgDrawText("Hello World!", gTouchX, gTouchY); - - // Return value tells RS roughly how often to redraw - // in this case 20 ms - return 20; -} diff --git a/tests/RenderScriptTests/MiscSamples/Android.mk b/tests/RenderScriptTests/MiscSamples/Android.mk deleted file mode 100644 index ee3567bf1651..000000000000 --- a/tests/RenderScriptTests/MiscSamples/Android.mk +++ /dev/null @@ -1,28 +0,0 @@ -# -# Copyright (C) 2008 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := tests - -LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src) - -LOCAL_PACKAGE_NAME := RsMiscSamples - -LOCAL_SDK_VERSION := 17 - -include $(BUILD_PACKAGE) diff --git a/tests/RenderScriptTests/MiscSamples/AndroidManifest.xml b/tests/RenderScriptTests/MiscSamples/AndroidManifest.xml deleted file mode 100644 index 08a3976afebe..000000000000 --- a/tests/RenderScriptTests/MiscSamples/AndroidManifest.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.example.android.rs.miscsamples"> - <uses-sdk android:minSdkVersion="11" /> - <application android:label="RsMiscSamples" - android:icon="@drawable/test_pattern"> - <activity android:name="RsList" - android:label="RsList" - android:theme="@android:style/Theme.Black.NoTitleBar"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - - <activity android:name="RsRenderStates" - android:label="RsStates" - android:theme="@android:style/Theme.Black.NoTitleBar"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - </application> -</manifest> diff --git a/tests/RenderScriptTests/MiscSamples/_index.html b/tests/RenderScriptTests/MiscSamples/_index.html deleted file mode 100644 index 5872431420e6..000000000000 --- a/tests/RenderScriptTests/MiscSamples/_index.html +++ /dev/null @@ -1 +0,0 @@ -<p>A set of samples that demonstrate how to use various features of the Renderscript APIs.</p>
\ No newline at end of file diff --git a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/checker.png b/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/checker.png Binary files differdeleted file mode 100644 index b631e1ee4ba6..000000000000 --- a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/checker.png +++ /dev/null diff --git a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/cubemap_test.png b/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/cubemap_test.png Binary files differdeleted file mode 100644 index baf35d0acbe9..000000000000 --- a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/cubemap_test.png +++ /dev/null diff --git a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/data.png b/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/data.png Binary files differdeleted file mode 100644 index 8e347146e331..000000000000 --- a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/data.png +++ /dev/null diff --git a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/leaf.png b/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/leaf.png Binary files differdeleted file mode 100644 index 3cd37755f549..000000000000 --- a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/leaf.png +++ /dev/null diff --git a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/test_pattern.png b/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/test_pattern.png Binary files differdeleted file mode 100644 index e7d145554c00..000000000000 --- a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/test_pattern.png +++ /dev/null diff --git a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/torusmap.png b/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/torusmap.png Binary files differdeleted file mode 100644 index 1e08f3b9ac3e..000000000000 --- a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/torusmap.png +++ /dev/null diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/multitexf.glsl b/tests/RenderScriptTests/MiscSamples/res/raw/multitexf.glsl deleted file mode 100644 index e492a477ff5b..000000000000 --- a/tests/RenderScriptTests/MiscSamples/res/raw/multitexf.glsl +++ /dev/null @@ -1,13 +0,0 @@ -varying vec2 varTex0; - -void main() { - vec2 t0 = varTex0.xy; - lowp vec4 col0 = texture2D(UNI_Tex0, t0).rgba; - lowp vec4 col1 = texture2D(UNI_Tex1, t0*4.0).rgba; - lowp vec4 col2 = texture2D(UNI_Tex2, t0).rgba; - col0.xyz = col0.xyz*col1.xyz*1.5; - col0.xyz = mix(col0.xyz, col2.xyz, col2.w); - col0.w = 0.5; - gl_FragColor = col0; -} - diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/shader2f.glsl b/tests/RenderScriptTests/MiscSamples/res/raw/shader2f.glsl deleted file mode 100644 index 5fc05f14a812..000000000000 --- a/tests/RenderScriptTests/MiscSamples/res/raw/shader2f.glsl +++ /dev/null @@ -1,29 +0,0 @@ -varying vec3 varWorldPos; -varying vec3 varWorldNormal; -varying vec2 varTex0; - -void main() { - - vec3 V = normalize(-varWorldPos.xyz); - vec3 worldNorm = normalize(varWorldNormal); - - vec3 light0Vec = normalize(UNI_light0_Posision.xyz - varWorldPos); - vec3 light0R = -reflect(light0Vec, worldNorm); - float light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0) * UNI_light0_Diffuse; - float light0Spec = clamp(dot(light0R, V), 0.001, 1.0); - float light0_Specular = pow(light0Spec, UNI_light0_CosinePower) * UNI_light0_Specular; - - vec3 light1Vec = normalize(UNI_light1_Posision.xyz - varWorldPos); - vec3 light1R = reflect(light1Vec, worldNorm); - float light1_Diffuse = clamp(dot(worldNorm, light1Vec), 0.0, 1.0) * UNI_light1_Diffuse; - float light1Spec = clamp(dot(light1R, V), 0.001, 1.0); - float light1_Specular = pow(light1Spec, UNI_light1_CosinePower) * UNI_light1_Specular; - - vec2 t0 = varTex0.xy; - lowp vec4 col = texture2D(UNI_Tex0, t0).rgba; - col.xyz = col.xyz * (light0_Diffuse * UNI_light0_DiffuseColor.xyz + light1_Diffuse * UNI_light1_DiffuseColor.xyz); - col.xyz += light0_Specular * UNI_light0_SpecularColor.xyz; - col.xyz += light1_Specular * UNI_light1_SpecularColor.xyz; - gl_FragColor = col; -} - diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/shader2movev.glsl b/tests/RenderScriptTests/MiscSamples/res/raw/shader2movev.glsl deleted file mode 100644 index a2c807e838cc..000000000000 --- a/tests/RenderScriptTests/MiscSamples/res/raw/shader2movev.glsl +++ /dev/null @@ -1,21 +0,0 @@ -varying vec3 varWorldPos; -varying vec3 varWorldNormal; -varying vec2 varTex0; - -// This is where actual shader code begins -void main() { - vec4 objPos = ATTRIB_position; - vec3 oldPos = objPos.xyz; - objPos.xyz += 0.1*sin(objPos.xyz*2.0 + UNI_time); - objPos.xyz += 0.05*sin(objPos.xyz*4.0 + UNI_time*0.5); - objPos.xyz += 0.02*sin(objPos.xyz*7.0 + UNI_time*0.75); - vec4 worldPos = UNI_model * objPos; - gl_Position = UNI_proj * worldPos; - - mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz); - vec3 worldNorm = model3 * (ATTRIB_normal + oldPos - objPos.xyz); - - varWorldPos = worldPos.xyz; - varWorldNormal = worldNorm; - varTex0 = ATTRIB_texture0; -} diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/shader2v.glsl b/tests/RenderScriptTests/MiscSamples/res/raw/shader2v.glsl deleted file mode 100644 index e6885a38aca0..000000000000 --- a/tests/RenderScriptTests/MiscSamples/res/raw/shader2v.glsl +++ /dev/null @@ -1,17 +0,0 @@ -varying vec3 varWorldPos; -varying vec3 varWorldNormal; -varying vec2 varTex0; - -// This is where actual shader code begins -void main() { - vec4 objPos = ATTRIB_position; - vec4 worldPos = UNI_model * objPos; - gl_Position = UNI_proj * worldPos; - - mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz); - vec3 worldNorm = model3 * ATTRIB_normal; - - varWorldPos = worldPos.xyz; - varWorldNormal = worldNorm; - varTex0 = ATTRIB_texture0; -} diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/shaderarrayf.glsl b/tests/RenderScriptTests/MiscSamples/res/raw/shaderarrayf.glsl deleted file mode 100644 index 238ecad56cf1..000000000000 --- a/tests/RenderScriptTests/MiscSamples/res/raw/shaderarrayf.glsl +++ /dev/null @@ -1,16 +0,0 @@ - -varying lowp float light0_Diffuse; -varying lowp float light0_Specular; -varying lowp float light1_Diffuse; -varying lowp float light1_Specular; -varying vec2 varTex0; - -void main() { - vec2 t0 = varTex0.xy; - lowp vec4 col = texture2D(UNI_Tex0, t0).rgba; - col.xyz = col.xyz * (light0_Diffuse * UNI_light_DiffuseColor[0].xyz + light1_Diffuse * UNI_light_DiffuseColor[1].xyz); - col.xyz += light0_Specular * UNI_light_SpecularColor[0].xyz; - col.xyz += light1_Specular * UNI_light_SpecularColor[1].xyz; - gl_FragColor = col; -} - diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/shaderarrayv.glsl b/tests/RenderScriptTests/MiscSamples/res/raw/shaderarrayv.glsl deleted file mode 100644 index 7a1310ac1ef4..000000000000 --- a/tests/RenderScriptTests/MiscSamples/res/raw/shaderarrayv.glsl +++ /dev/null @@ -1,32 +0,0 @@ -varying float light0_Diffuse; -varying float light0_Specular; -varying float light1_Diffuse; -varying float light1_Specular; -varying vec2 varTex0; - -// This is where actual shader code begins -void main() { - vec4 worldPos = UNI_model[0] * ATTRIB_position; - worldPos = UNI_model[1] * worldPos; - gl_Position = UNI_proj * worldPos; - - mat4 model0 = UNI_model[0]; - mat3 model3 = mat3(model0[0].xyz, model0[1].xyz, model0[2].xyz); - vec3 worldNorm = model3 * ATTRIB_normal; - vec3 V = normalize(-worldPos.xyz); - - vec3 light0Vec = normalize(UNI_light_Posision[0].xyz - worldPos.xyz); - vec3 light0R = -reflect(light0Vec, worldNorm); - light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0) * UNI_light_Diffuse[0]; - float light0Spec = clamp(dot(light0R, V), 0.001, 1.0); - light0_Specular = pow(light0Spec, UNI_light_CosinePower[0]) * UNI_light_Specular[0]; - - vec3 light1Vec = normalize(UNI_light_Posision[1].xyz - worldPos.xyz); - vec3 light1R = reflect(light1Vec, worldNorm); - light1_Diffuse = clamp(dot(worldNorm, light1Vec), 0.0, 1.0) * UNI_light_Diffuse[1]; - float light1Spec = clamp(dot(light1R, V), 0.001, 1.0); - light1_Specular = pow(light1Spec, UNI_light_CosinePower[1]) * UNI_light_Specular[1]; - - gl_PointSize = 1.0; - varTex0 = ATTRIB_texture0; -} diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/shadercubef.glsl b/tests/RenderScriptTests/MiscSamples/res/raw/shadercubef.glsl deleted file mode 100644 index 15696a4723d5..000000000000 --- a/tests/RenderScriptTests/MiscSamples/res/raw/shadercubef.glsl +++ /dev/null @@ -1,8 +0,0 @@ - -varying vec3 worldNormal; - -void main() { - lowp vec4 col = textureCube(UNI_Tex0, worldNormal); - gl_FragColor = col; -} - diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/shadercubev.glsl b/tests/RenderScriptTests/MiscSamples/res/raw/shadercubev.glsl deleted file mode 100644 index 70f5cd64e371..000000000000 --- a/tests/RenderScriptTests/MiscSamples/res/raw/shadercubev.glsl +++ /dev/null @@ -1,10 +0,0 @@ -varying vec3 worldNormal; - -// This is where actual shader code begins -void main() { - vec4 worldPos = UNI_model * ATTRIB_position; - gl_Position = UNI_proj * worldPos; - - mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz); - worldNormal = model3 * ATTRIB_normal; -} diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/shaderf.glsl b/tests/RenderScriptTests/MiscSamples/res/raw/shaderf.glsl deleted file mode 100644 index d56e203496c3..000000000000 --- a/tests/RenderScriptTests/MiscSamples/res/raw/shaderf.glsl +++ /dev/null @@ -1,16 +0,0 @@ - -varying lowp float light0_Diffuse; -varying lowp float light0_Specular; -varying lowp float light1_Diffuse; -varying lowp float light1_Specular; -varying vec2 varTex0; - -void main() { - vec2 t0 = varTex0.xy; - lowp vec4 col = texture2D(UNI_Tex0, t0).rgba; - col.xyz = col.xyz * (light0_Diffuse * UNI_light0_DiffuseColor.xyz + light1_Diffuse * UNI_light1_DiffuseColor.xyz); - col.xyz += light0_Specular * UNI_light0_SpecularColor.xyz; - col.xyz += light1_Specular * UNI_light1_SpecularColor.xyz; - gl_FragColor = col; -} - diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/shaderv.glsl b/tests/RenderScriptTests/MiscSamples/res/raw/shaderv.glsl deleted file mode 100644 index f7d01de384cb..000000000000 --- a/tests/RenderScriptTests/MiscSamples/res/raw/shaderv.glsl +++ /dev/null @@ -1,30 +0,0 @@ -varying float light0_Diffuse; -varying float light0_Specular; -varying float light1_Diffuse; -varying float light1_Specular; -varying vec2 varTex0; - -// This is where actual shader code begins -void main() { - vec4 worldPos = UNI_model * ATTRIB_position; - gl_Position = UNI_proj * worldPos; - - mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz); - vec3 worldNorm = model3 * ATTRIB_normal; - vec3 V = normalize(-worldPos.xyz); - - vec3 light0Vec = normalize(UNI_light0_Posision.xyz - worldPos.xyz); - vec3 light0R = -reflect(light0Vec, worldNorm); - light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0) * UNI_light0_Diffuse; - float light0Spec = clamp(dot(light0R, V), 0.001, 1.0); - light0_Specular = pow(light0Spec, UNI_light0_CosinePower) * UNI_light0_Specular; - - vec3 light1Vec = normalize(UNI_light1_Posision.xyz - worldPos.xyz); - vec3 light1R = reflect(light1Vec, worldNorm); - light1_Diffuse = clamp(dot(worldNorm, light1Vec), 0.0, 1.0) * UNI_light1_Diffuse; - float light1Spec = clamp(dot(light1R, V), 0.001, 1.0); - light1_Specular = pow(light1Spec, UNI_light1_CosinePower) * UNI_light1_Specular; - - gl_PointSize = 1.0; - varTex0 = ATTRIB_texture0; -} diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/torus.a3d b/tests/RenderScriptTests/MiscSamples/res/raw/torus.a3d Binary files differdeleted file mode 100644 index 0322b01be8a8..000000000000 --- a/tests/RenderScriptTests/MiscSamples/res/raw/torus.a3d +++ /dev/null diff --git a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsList.java b/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsList.java deleted file mode 100644 index dade3b3cb449..000000000000 --- a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsList.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.example.android.rs.miscsamples; - -import android.app.Activity; -import android.os.Bundle; - -public class RsList extends Activity { - - private RsListView mView; - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - // Create our Preview view and set it as the content of our - // Activity - mView = new RsListView(this); - setContentView(mView); - } - - @Override - protected void onResume() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity loses focus - super.onResume(); - mView.resume(); - } - - @Override - protected void onPause() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity loses focus - super.onPause(); - mView.pause(); - } - -} - diff --git a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsListRS.java b/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsListRS.java deleted file mode 100644 index eeb2480cc720..000000000000 --- a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsListRS.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.example.android.rs.miscsamples; - -import java.io.Writer; -import java.util.Vector; - -import android.content.res.Resources; -import android.renderscript.*; -import android.renderscript.ProgramStore.DepthFunc; -import android.util.Log; - - -public class RsListRS { - - private final int STATE_LAST_FOCUS = 1; - - private static final String[] DATA_LIST = { - "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra", - "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina", - "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan", - "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium", - "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia", - "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", - "British Indian Ocean Territory", "British Virgin Islands", "Brunei", "Bulgaria", - "Burkina Faso", "Burundi", "Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde", - "Cayman Islands", "Central African Republic", "Chad", "Chile", "China", - "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo", - "Cook Islands", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic", - "Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic", - "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", - "Estonia", "Ethiopia", "Faeroe Islands", "Falkland Islands", "Fiji", "Finland", - "Former Yugoslav Republic of Macedonia", "France", "French Guiana", "French Polynesia", - "French Southern Territories", "Gabon", "Georgia", "Germany", "Ghana", "Gibraltar", - "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau", - "Guyana", "Haiti", "Heard Island and McDonald Islands", "Honduras", "Hong Kong", "Hungary", - "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica", - "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kuwait", "Kyrgyzstan", "Laos", - "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg", - "Macau", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands", - "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova", - "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia", - "Nauru", "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand", - "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "Northern Marianas", - "Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru", - "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico", "Qatar", - "Reunion", "Romania", "Russia", "Rwanda", "Sqo Tome and Principe", "Saint Helena", - "Saint Kitts and Nevis", "Saint Lucia", "Saint Pierre and Miquelon", - "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Saudi Arabia", "Senegal", - "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands", - "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Korea", - "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden", - "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "The Bahamas", - "The Gambia", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey", - "Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Virgin Islands", "Uganda", - "Ukraine", "United Arab Emirates", "United Kingdom", - "United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan", - "Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Wallis and Futuna", "Western Sahara", - "Yemen", "Yugoslavia", "Zambia", "Zimbabwe" - }; - - public RsListRS() { - } - - public void init(RenderScriptGL rs, Resources res) { - mRS = rs; - mRes = res; - initRS(); - } - - private Resources mRes; - private RenderScriptGL mRS; - private Font mItalic; - - ScriptField_ListAllocs_s mListAllocs; - - private ScriptC_rslist mScript; - - int mLastX; - int mLastY; - - public void onActionDown(int x, int y) { - mScript.set_gDY(0.0f); - - mLastX = x; - mLastY = y; - } - - public void onActionMove(int x, int y) { - int dx = mLastX - x; - int dy = mLastY - y; - - if (Math.abs(dy) <= 2) { - dy = 0; - } - - mScript.set_gDY(dy); - - mLastX = x; - mLastY = y; - } - - private void initRS() { - - mScript = new ScriptC_rslist(mRS, mRes, R.raw.rslist); - - mListAllocs = new ScriptField_ListAllocs_s(mRS, DATA_LIST.length); - for (int i = 0; i < DATA_LIST.length; i ++) { - ScriptField_ListAllocs_s.Item listElem = new ScriptField_ListAllocs_s.Item(); - listElem.text = Allocation.createFromString(mRS, DATA_LIST[i], Allocation.USAGE_SCRIPT); - mListAllocs.set(listElem, i, false); - } - - mListAllocs.copyAll(); - - mScript.bind_gList(mListAllocs); - - mItalic = Font.create(mRS, mRes, "serif", Font.Style.BOLD_ITALIC, 8); - mScript.set_gItalic(mItalic); - - mRS.bindRootScript(mScript); - } -} - - - diff --git a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsListView.java b/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsListView.java deleted file mode 100644 index db6e6c516a3a..000000000000 --- a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsListView.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.example.android.rs.miscsamples; -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScriptGL; - -import android.content.Context; -import android.view.MotionEvent; - -public class RsListView extends RSSurfaceView { - - public RsListView(Context context) { - super(context); - ensureRenderScript(); - } - - private RenderScriptGL mRS; - private RsListRS mRender; - - private void ensureRenderScript() { - if (mRS == null) { - RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); - mRS = createRenderScriptGL(sc); - mRender = new RsListRS(); - mRender.init(mRS, getResources()); - } - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - ensureRenderScript(); - } - - @Override - protected void onDetachedFromWindow() { - mRender = null; - if (mRS != null) { - mRS = null; - destroyRenderScriptGL(); - } - } - - @Override - public boolean onTouchEvent(MotionEvent ev) - { - boolean ret = false; - int act = ev.getAction(); - if (act == MotionEvent.ACTION_DOWN) { - mRender.onActionDown((int)ev.getX(), (int)ev.getY()); - ret = true; - } else if (act == MotionEvent.ACTION_MOVE) { - mRender.onActionMove((int)ev.getX(), (int)ev.getY()); - ret = true; - } - - return ret; - } -} - - diff --git a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStates.java b/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStates.java deleted file mode 100644 index f4ea76ef6f35..000000000000 --- a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStates.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.example.android.rs.miscsamples; - -import android.app.Activity; -import android.os.Bundle; - -public class RsRenderStates extends Activity { - - private RsRenderStatesView mView; - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - // Create our Preview view and set it as the content of our - // Activity - mView = new RsRenderStatesView(this); - setContentView(mView); - } - - @Override - protected void onResume() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity looses focus - super.onResume(); - mView.resume(); - } - - @Override - protected void onPause() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity looses focus - super.onPause(); - mView.pause(); - } - -} - diff --git a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStatesRS.java b/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStatesRS.java deleted file mode 100644 index 0e319fe9052c..000000000000 --- a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStatesRS.java +++ /dev/null @@ -1,422 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.example.android.rs.miscsamples; - -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.renderscript.*; -import android.renderscript.Font.Style; -import android.renderscript.Program.TextureType; -import android.renderscript.ProgramStore.DepthFunc; -import android.renderscript.ProgramStore.BlendSrcFunc; -import android.renderscript.ProgramStore.BlendDstFunc; -import android.renderscript.Sampler.Value; -import android.util.Log; - - -public class RsRenderStatesRS { - - int mWidth; - int mHeight; - - public RsRenderStatesRS() { - } - - public void init(RenderScriptGL rs, Resources res) { - mRS = rs; - mWidth = mRS.getWidth(); - mHeight = mRS.getHeight(); - mRes = res; - mOptionsARGB.inScaled = false; - mOptionsARGB.inPreferredConfig = Bitmap.Config.ARGB_8888; - mMode = 0; - mMaxModes = 0; - initRS(); - } - - public void surfaceChanged() { - mWidth = mRS.getWidth(); - mHeight = mRS.getHeight(); - - Matrix4f proj = new Matrix4f(); - proj.loadOrthoWindow(mWidth, mHeight); - mPVA.setProjection(proj); - } - - private Resources mRes; - private RenderScriptGL mRS; - - private Sampler mLinearClamp; - private Sampler mLinearWrap; - private Sampler mMipLinearWrap; - private Sampler mNearestClamp; - private Sampler mMipLinearAniso8; - private Sampler mMipLinearAniso15; - - private ProgramStore mProgStoreBlendNoneDepth; - private ProgramStore mProgStoreBlendNone; - private ProgramStore mProgStoreBlendAlpha; - private ProgramStore mProgStoreBlendAdd; - - private ProgramFragment mProgFragmentTexture; - private ProgramFragment mProgFragmentColor; - - private ProgramVertex mProgVertex; - private ProgramVertexFixedFunction.Constants mPVA; - - // Custom shaders - private ProgramVertex mProgVertexCustom; - private ProgramFragment mProgFragmentCustom; - private ProgramFragment mProgFragmentMultitex; - private ScriptField_VertexShaderConstants_s mVSConst; - private ScriptField_VertexShaderConstants2_s mVSConst2; - private ScriptField_FragentShaderConstants_s mFSConst; - private ScriptField_FragentShaderConstants2_s mFSConst2; - - private ProgramVertex mProgVertexCustom2; - private ProgramFragment mProgFragmentCustom2; - - private ProgramVertex mProgVertexCube; - private ProgramFragment mProgFragmentCube; - - private ProgramRaster mCullBack; - private ProgramRaster mCullFront; - private ProgramRaster mCullNone; - - private Allocation mTexTorus; - private Allocation mTexOpaque; - private Allocation mTexTransparent; - private Allocation mTexChecker; - private Allocation mTexCube; - - private Mesh mMbyNMesh; - private Mesh mTorus; - - Font mFontSans; - Font mFontSerif; - Font mFontSerifBold; - Font mFontSerifItalic; - Font mFontSerifBoldItalic; - Font mFontMono; - private Allocation mTextAlloc; - - private ScriptC_rsrenderstates mScript; - - private final BitmapFactory.Options mOptionsARGB = new BitmapFactory.Options(); - - int mMode; - int mMaxModes; - - public void onActionDown(int x, int y) { - mMode ++; - mMode = mMode % mMaxModes; - mScript.set_gDisplayMode(mMode); - } - - ProgramStore BLEND_ADD_DEPTH_NONE(RenderScript rs) { - ProgramStore.Builder builder = new ProgramStore.Builder(rs); - builder.setDepthFunc(ProgramStore.DepthFunc.ALWAYS); - builder.setBlendFunc(BlendSrcFunc.ONE, BlendDstFunc.ONE); - builder.setDitherEnabled(false); - builder.setDepthMaskEnabled(false); - return builder.create(); - } - - private Mesh getMbyNMesh(float width, float height, int wResolution, int hResolution) { - - Mesh.TriangleMeshBuilder tmb = new Mesh.TriangleMeshBuilder(mRS, - 2, Mesh.TriangleMeshBuilder.TEXTURE_0); - - for (int y = 0; y <= hResolution; y++) { - final float normalizedY = (float)y / hResolution; - final float yOffset = (normalizedY - 0.5f) * height; - for (int x = 0; x <= wResolution; x++) { - float normalizedX = (float)x / wResolution; - float xOffset = (normalizedX - 0.5f) * width; - tmb.setTexture(normalizedX, normalizedY); - tmb.addVertex(xOffset, yOffset); - } - } - - for (int y = 0; y < hResolution; y++) { - final int curY = y * (wResolution + 1); - final int belowY = (y + 1) * (wResolution + 1); - for (int x = 0; x < wResolution; x++) { - int curV = curY + x; - int belowV = belowY + x; - tmb.addTriangle(curV, belowV, curV + 1); - tmb.addTriangle(belowV, belowV + 1, curV + 1); - } - } - - return tmb.create(true); - } - - private void initProgramStore() { - // Use stock the stock program store object - mProgStoreBlendNoneDepth = ProgramStore.BLEND_NONE_DEPTH_TEST(mRS); - mProgStoreBlendNone = ProgramStore.BLEND_NONE_DEPTH_NONE(mRS); - - // Create a custom program store - ProgramStore.Builder builder = new ProgramStore.Builder(mRS); - builder.setDepthFunc(ProgramStore.DepthFunc.ALWAYS); - builder.setBlendFunc(ProgramStore.BlendSrcFunc.SRC_ALPHA, - ProgramStore.BlendDstFunc.ONE_MINUS_SRC_ALPHA); - builder.setDitherEnabled(false); - builder.setDepthMaskEnabled(false); - mProgStoreBlendAlpha = builder.create(); - - mProgStoreBlendAdd = BLEND_ADD_DEPTH_NONE(mRS); - - mScript.set_gProgStoreBlendNoneDepth(mProgStoreBlendNoneDepth); - mScript.set_gProgStoreBlendNone(mProgStoreBlendNone); - mScript.set_gProgStoreBlendAlpha(mProgStoreBlendAlpha); - mScript.set_gProgStoreBlendAdd(mProgStoreBlendAdd); - } - - private void initProgramFragment() { - - ProgramFragmentFixedFunction.Builder texBuilder = new ProgramFragmentFixedFunction.Builder(mRS); - texBuilder.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE, - ProgramFragmentFixedFunction.Builder.Format.RGBA, 0); - mProgFragmentTexture = texBuilder.create(); - mProgFragmentTexture.bindSampler(mLinearClamp, 0); - - ProgramFragmentFixedFunction.Builder colBuilder = new ProgramFragmentFixedFunction.Builder(mRS); - colBuilder.setVaryingColor(false); - mProgFragmentColor = colBuilder.create(); - - mScript.set_gProgFragmentColor(mProgFragmentColor); - mScript.set_gProgFragmentTexture(mProgFragmentTexture); - } - - private void initProgramVertex() { - ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS); - mProgVertex = pvb.create(); - - mPVA = new ProgramVertexFixedFunction.Constants(mRS); - ((ProgramVertexFixedFunction)mProgVertex).bindConstants(mPVA); - Matrix4f proj = new Matrix4f(); - proj.loadOrthoWindow(mWidth, mHeight); - mPVA.setProjection(proj); - - mScript.set_gProgVertex(mProgVertex); - } - - private void initCustomShaders() { - mVSConst = new ScriptField_VertexShaderConstants_s(mRS, 1); - mVSConst2 = new ScriptField_VertexShaderConstants2_s(mRS, 1); - mFSConst = new ScriptField_FragentShaderConstants_s(mRS, 1); - mFSConst2 = new ScriptField_FragentShaderConstants2_s(mRS, 1); - - mScript.bind_gVSConstants(mVSConst); - mScript.bind_gVSConstants2(mVSConst2); - mScript.bind_gFSConstants(mFSConst); - mScript.bind_gFSConstants2(mFSConst2); - - // Initialize the shader builder - ProgramVertex.Builder pvbCustom = new ProgramVertex.Builder(mRS); - // Specify the resource that contains the shader string - pvbCustom.setShader(mRes, R.raw.shaderv); - // Use a script field to spcify the input layout - pvbCustom.addInput(ScriptField_VertexShaderInputs_s.createElement(mRS)); - // Define the constant input layout - pvbCustom.addConstant(mVSConst.getAllocation().getType()); - mProgVertexCustom = pvbCustom.create(); - // Bind the source of constant data - mProgVertexCustom.bindConstants(mVSConst.getAllocation(), 0); - - ProgramFragment.Builder pfbCustom = new ProgramFragment.Builder(mRS); - // Specify the resource that contains the shader string - pfbCustom.setShader(mRes, R.raw.shaderf); - //Tell the builder how many textures we have - pfbCustom.addTexture(Program.TextureType.TEXTURE_2D); - // Define the constant input layout - pfbCustom.addConstant(mFSConst.getAllocation().getType()); - mProgFragmentCustom = pfbCustom.create(); - // Bind the source of constant data - mProgFragmentCustom.bindConstants(mFSConst.getAllocation(), 0); - - pvbCustom = new ProgramVertex.Builder(mRS); - pvbCustom.setShader(mRes, R.raw.shaderarrayv); - pvbCustom.addInput(ScriptField_VertexShaderInputs_s.createElement(mRS)); - pvbCustom.addConstant(mVSConst2.getAllocation().getType()); - mProgVertexCustom2 = pvbCustom.create(); - mProgVertexCustom2.bindConstants(mVSConst2.getAllocation(), 0); - - pfbCustom = new ProgramFragment.Builder(mRS); - pfbCustom.setShader(mRes, R.raw.shaderarrayf); - pfbCustom.addTexture(Program.TextureType.TEXTURE_2D); - pfbCustom.addConstant(mFSConst2.getAllocation().getType()); - mProgFragmentCustom2 = pfbCustom.create(); - mProgFragmentCustom2.bindConstants(mFSConst2.getAllocation(), 0); - - // Cubemap test shaders - pvbCustom = new ProgramVertex.Builder(mRS); - pvbCustom.setShader(mRes, R.raw.shadercubev); - pvbCustom.addInput(ScriptField_VertexShaderInputs_s.createElement(mRS)); - pvbCustom.addConstant(mVSConst.getAllocation().getType()); - mProgVertexCube = pvbCustom.create(); - mProgVertexCube.bindConstants(mVSConst.getAllocation(), 0); - - pfbCustom = new ProgramFragment.Builder(mRS); - pfbCustom.setShader(mRes, R.raw.shadercubef); - pfbCustom.addTexture(Program.TextureType.TEXTURE_CUBE); - mProgFragmentCube = pfbCustom.create(); - - pfbCustom = new ProgramFragment.Builder(mRS); - pfbCustom.setShader(mRes, R.raw.multitexf); - for (int texCount = 0; texCount < 3; texCount ++) { - pfbCustom.addTexture(Program.TextureType.TEXTURE_2D); - } - mProgFragmentMultitex = pfbCustom.create(); - - mScript.set_gProgVertexCustom(mProgVertexCustom); - mScript.set_gProgFragmentCustom(mProgFragmentCustom); - mScript.set_gProgVertexCustom2(mProgVertexCustom2); - mScript.set_gProgFragmentCustom2(mProgFragmentCustom2); - mScript.set_gProgVertexCube(mProgVertexCube); - mScript.set_gProgFragmentCube(mProgFragmentCube); - mScript.set_gProgFragmentMultitex(mProgFragmentMultitex); - } - - private Allocation loadTextureRGB(int id) { - return Allocation.createFromBitmapResource(mRS, mRes, id, - Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, - Allocation.USAGE_GRAPHICS_TEXTURE); - } - - private Allocation loadTextureARGB(int id) { - Bitmap b = BitmapFactory.decodeResource(mRes, id, mOptionsARGB); - return Allocation.createFromBitmap(mRS, b, - Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, - Allocation.USAGE_GRAPHICS_TEXTURE); - } - - private void loadImages() { - mTexTorus = loadTextureRGB(R.drawable.torusmap); - mTexOpaque = loadTextureRGB(R.drawable.data); - mTexTransparent = loadTextureARGB(R.drawable.leaf); - mTexChecker = loadTextureRGB(R.drawable.checker); - Bitmap b = BitmapFactory.decodeResource(mRes, R.drawable.cubemap_test); - mTexCube = Allocation.createCubemapFromBitmap(mRS, b); - - mScript.set_gTexTorus(mTexTorus); - mScript.set_gTexOpaque(mTexOpaque); - mScript.set_gTexTransparent(mTexTransparent); - mScript.set_gTexChecker(mTexChecker); - mScript.set_gTexCube(mTexCube); - } - - private void initFonts() { - // Sans font by family name - mFontSans = Font.create(mRS, mRes, "sans-serif", Font.Style.NORMAL, 8); - mFontSerif = Font.create(mRS, mRes, "serif", Font.Style.NORMAL, 8); - // Create fonts by family and style - mFontSerifBold = Font.create(mRS, mRes, "serif", Font.Style.BOLD, 8); - mFontSerifItalic = Font.create(mRS, mRes, "serif", Font.Style.ITALIC, 8); - mFontSerifBoldItalic = Font.create(mRS, mRes, "serif", Font.Style.BOLD_ITALIC, 8); - mFontMono = Font.create(mRS, mRes, "mono", Font.Style.NORMAL, 8); - - mTextAlloc = Allocation.createFromString(mRS, "String from allocation", Allocation.USAGE_SCRIPT); - - mScript.set_gFontSans(mFontSans); - mScript.set_gFontSerif(mFontSerif); - mScript.set_gFontSerifBold(mFontSerifBold); - mScript.set_gFontSerifItalic(mFontSerifItalic); - mScript.set_gFontSerifBoldItalic(mFontSerifBoldItalic); - mScript.set_gFontMono(mFontMono); - mScript.set_gTextAlloc(mTextAlloc); - } - - private void initMesh() { - mMbyNMesh = getMbyNMesh(256, 256, 10, 10); - mScript.set_gMbyNMesh(mMbyNMesh); - - FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.torus); - FileA3D.IndexEntry entry = model.getIndexEntry(0); - if (entry == null || entry.getEntryType() != FileA3D.EntryType.MESH) { - Log.e("rs", "could not load model"); - } else { - mTorus = (Mesh)entry.getObject(); - mScript.set_gTorusMesh(mTorus); - } - } - - private void initSamplers() { - Sampler.Builder bs = new Sampler.Builder(mRS); - bs.setMinification(Sampler.Value.LINEAR); - bs.setMagnification(Sampler.Value.LINEAR); - bs.setWrapS(Sampler.Value.WRAP); - bs.setWrapT(Sampler.Value.WRAP); - mLinearWrap = bs.create(); - - mLinearClamp = Sampler.CLAMP_LINEAR(mRS); - mNearestClamp = Sampler.CLAMP_NEAREST(mRS); - mMipLinearWrap = Sampler.WRAP_LINEAR_MIP_LINEAR(mRS); - - bs = new Sampler.Builder(mRS); - bs.setMinification(Sampler.Value.LINEAR_MIP_LINEAR); - bs.setMagnification(Sampler.Value.LINEAR); - bs.setWrapS(Sampler.Value.WRAP); - bs.setWrapT(Sampler.Value.WRAP); - bs.setAnisotropy(8.0f); - mMipLinearAniso8 = bs.create(); - bs.setAnisotropy(15.0f); - mMipLinearAniso15 = bs.create(); - - mScript.set_gLinearClamp(mLinearClamp); - mScript.set_gLinearWrap(mLinearWrap); - mScript.set_gMipLinearWrap(mMipLinearWrap); - mScript.set_gMipLinearAniso8(mMipLinearAniso8); - mScript.set_gMipLinearAniso15(mMipLinearAniso15); - mScript.set_gNearestClamp(mNearestClamp); - } - - private void initProgramRaster() { - mCullBack = ProgramRaster.CULL_BACK(mRS); - mCullFront = ProgramRaster.CULL_FRONT(mRS); - mCullNone = ProgramRaster.CULL_NONE(mRS); - - mScript.set_gCullBack(mCullBack); - mScript.set_gCullFront(mCullFront); - mScript.set_gCullNone(mCullNone); - } - - private void initRS() { - - mScript = new ScriptC_rsrenderstates(mRS, mRes, R.raw.rsrenderstates); - - mMaxModes = mScript.get_gMaxModes(); - - initSamplers(); - initProgramStore(); - initProgramFragment(); - initProgramVertex(); - initFonts(); - loadImages(); - initMesh(); - initProgramRaster(); - initCustomShaders(); - - mRS.bindRootScript(mScript); - } -} - - - diff --git a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStatesView.java b/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStatesView.java deleted file mode 100644 index a15e38f8b9fd..000000000000 --- a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStatesView.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.example.android.rs.miscsamples; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScriptGL; - -import android.content.Context; -import android.view.MotionEvent; -import android.view.SurfaceHolder; - -public class RsRenderStatesView extends RSSurfaceView { - - public RsRenderStatesView(Context context) { - super(context); - ensureRenderScript(); - } - - private RenderScriptGL mRS; - private RsRenderStatesRS mRender; - - private void ensureRenderScript() { - if (mRS == null) { - RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); - sc.setDepth(16, 24); - mRS = createRenderScriptGL(sc); - mRender = new RsRenderStatesRS(); - mRender.init(mRS, getResources()); - } - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - ensureRenderScript(); - } - - @Override - public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { - super.surfaceChanged(holder, format, w, h); - mRender.surfaceChanged(); - } - - @Override - protected void onDetachedFromWindow() { - mRender = null; - if (mRS != null) { - mRS = null; - destroyRenderScriptGL(); - } - } - - @Override - public boolean onTouchEvent(MotionEvent ev) { - if (ev.getAction() == MotionEvent.ACTION_DOWN) { - mRender.onActionDown((int)ev.getX(), (int)ev.getY()); - return true; - } - - return false; - } -} - - diff --git a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/rslist.rs b/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/rslist.rs deleted file mode 100644 index d9d450dc4f62..000000000000 --- a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/rslist.rs +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (C) 2009 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.example.android.rs.miscsamples) - -#include "rs_graphics.rsh" - -float gDY; - -rs_font gItalic; - -typedef struct ListAllocs_s { - rs_allocation text; -} ListAllocs; - -ListAllocs *gList; - -void init() { - gDY = 0.0f; -} - -int textPos = 0; - -int root(void) { - - rsgClearColor(0.0f, 0.0f, 0.0f, 0.0f); - - textPos -= (int)gDY*2; - gDY *= 0.95; - - rsgFontColor(0.9f, 0.9f, 0.9f, 1.0f); - rsgBindFont(gItalic); - - rs_allocation listAlloc; - listAlloc = rsGetAllocation(gList); - int allocSize = rsAllocationGetDimX(listAlloc); - - int width = rsgGetWidth(); - int height = rsgGetHeight(); - - int itemHeight = 80; - int currentYPos = itemHeight + textPos; - - for (int i = 0; i < allocSize; i ++) { - if (currentYPos - itemHeight > height) { - break; - } - - if (currentYPos > 0) { - rsgDrawRect(0, currentYPos - 1, width, currentYPos, 0); - rsgDrawText(gList[i].text, 30, currentYPos - 32); - } - currentYPos += itemHeight; - } - - return 10; -} diff --git a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/rsrenderstates.rs b/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/rsrenderstates.rs deleted file mode 100644 index 5dabd00bc133..000000000000 --- a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/rsrenderstates.rs +++ /dev/null @@ -1,680 +0,0 @@ -// Copyright (C) 2009 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.example.android.rs.miscsamples) - -#include "rs_graphics.rsh" -#include "shader_def.rsh" - -const int gMaxModes = 11; - -rs_program_vertex gProgVertex; -rs_program_fragment gProgFragmentColor; -rs_program_fragment gProgFragmentTexture; - -rs_program_store gProgStoreBlendNoneDepth; -rs_program_store gProgStoreBlendNone; -rs_program_store gProgStoreBlendAlpha; -rs_program_store gProgStoreBlendAdd; - -rs_allocation gTexOpaque; -rs_allocation gTexTorus; -rs_allocation gTexTransparent; -rs_allocation gTexChecker; -rs_allocation gTexCube; - -rs_mesh gMbyNMesh; -rs_mesh gTorusMesh; - -rs_font gFontSans; -rs_font gFontSerif; -rs_font gFontSerifBold; -rs_font gFontSerifItalic; -rs_font gFontSerifBoldItalic; -rs_font gFontMono; -rs_allocation gTextAlloc; - -int gDisplayMode; - -rs_sampler gLinearClamp; -rs_sampler gLinearWrap; -rs_sampler gMipLinearWrap; -rs_sampler gMipLinearAniso8; -rs_sampler gMipLinearAniso15; -rs_sampler gNearestClamp; - -rs_program_raster gCullBack; -rs_program_raster gCullFront; -rs_program_raster gCullNone; - -// Custom vertex shader compunents -VertexShaderConstants *gVSConstants; -VertexShaderConstants2 *gVSConstants2; -FragentShaderConstants *gFSConstants; -FragentShaderConstants2 *gFSConstants2; -// Export these out to easily set the inputs to shader -VertexShaderInputs *gVSInputs; -// Custom shaders we use for lighting -rs_program_vertex gProgVertexCustom; -rs_program_fragment gProgFragmentCustom; -rs_program_vertex gProgVertexCustom2; -rs_program_fragment gProgFragmentCustom2; -rs_program_vertex gProgVertexCube; -rs_program_fragment gProgFragmentCube; -rs_program_fragment gProgFragmentMultitex; - -float gDt = 0; - -void init() { -} - -static void displayFontSamples() { - rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); - int yPos = 100; - rsgBindFont(gFontSans); - rsgDrawText("Sans font sample", 30, yPos); - yPos += 30; - rsgFontColor(0.5f, 0.9f, 0.5f, 1.0f); - rsgBindFont(gFontSerif); - rsgDrawText("Serif font sample", 30, yPos); - yPos += 30; - rsgFontColor(0.7f, 0.7f, 0.7f, 1.0f); - rsgBindFont(gFontSerifBold); - rsgDrawText("Serif Bold font sample", 30, yPos); - yPos += 30; - rsgFontColor(0.5f, 0.5f, 0.9f, 1.0f); - rsgBindFont(gFontSerifItalic); - rsgDrawText("Serif Italic font sample", 30, yPos); - yPos += 30; - rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgBindFont(gFontSerifBoldItalic); - rsgDrawText("Serif Bold Italic font sample", 30, yPos); - yPos += 30; - rsgBindFont(gFontMono); - rsgDrawText("Monospace font sample", 30, yPos); - yPos += 50; - - // Now use text metrics to center the text - uint width = rsgGetWidth(); - uint height = rsgGetHeight(); - int left = 0, right = 0, top = 0, bottom = 0; - - rsgFontColor(0.9f, 0.9f, 0.95f, 1.0f); - rsgBindFont(gFontSerifBoldItalic); - - rsgMeasureText(gTextAlloc, &left, &right, &top, &bottom); - int centeredPos = width / 2 - (right - left) / 2; - rsgDrawText(gTextAlloc, centeredPos, yPos); - yPos += 30; - - const char* text = "Centered Text Sample"; - rsgMeasureText(text, &left, &right, &top, &bottom); - centeredPos = width / 2 - (right - left) / 2; - rsgDrawText(text, centeredPos, yPos); - yPos += 30; - - rsgBindFont(gFontSans); - text = "More Centered Text Samples"; - rsgMeasureText(text, &left, &right, &top, &bottom); - centeredPos = width / 2 - (right - left) / 2; - rsgDrawText(text, centeredPos, yPos); - yPos += 30; - - // Now draw bottom and top right aligned text - text = "Top-right aligned text"; - rsgMeasureText(text, &left, &right, &top, &bottom); - rsgDrawText(text, width - right, top); - - text = "Top-left"; - rsgMeasureText(text, &left, &right, &top, &bottom); - rsgDrawText(text, -left, top); - - text = "Bottom-right aligned text"; - rsgMeasureText(text, &left, &right, &top, &bottom); - rsgDrawText(text, width - right, height + bottom); - -} - -static void bindProgramVertexOrtho() { - // Default vertex sahder - rsgBindProgramVertex(gProgVertex); - // Setup the projectioni matrix - rs_matrix4x4 proj; - rsMatrixLoadOrtho(&proj, 0, rsgGetWidth(), rsgGetHeight(), 0, -500, 500); - rsgProgramVertexLoadProjectionMatrix(&proj); -} - -static void displayShaderSamples() { - bindProgramVertexOrtho(); - rs_matrix4x4 matrix; - rsMatrixLoadIdentity(&matrix); - rsgProgramVertexLoadModelMatrix(&matrix); - - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendNone); - rsgBindProgramFragment(gProgFragmentTexture); - rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp); - rsgBindTexture(gProgFragmentTexture, 0, gTexOpaque); - - float startX = 0, startY = 0; - float width = 256, height = 256; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 0, - startX, startY + height, 0, 0, 1, - startX + width, startY + height, 0, 1, 1, - startX + width, startY, 0, 1, 0); - - startX = 200; startY = 0; - width = 128; height = 128; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 0, - startX, startY + height, 0, 0, 1, - startX + width, startY + height, 0, 1, 1, - startX + width, startY, 0, 1, 0); - - rsgBindProgramStore(gProgStoreBlendAlpha); - rsgBindTexture(gProgFragmentTexture, 0, gTexTransparent); - startX = 0; startY = 200; - width = 128; height = 128; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 0, - startX, startY + height, 0, 0, 1, - startX + width, startY + height, 0, 1, 1, - startX + width, startY, 0, 1, 0); - - // Fragment program with simple color - rsgBindProgramFragment(gProgFragmentColor); - rsgProgramFragmentConstantColor(gProgFragmentColor, 0.9, 0.3, 0.3, 1); - rsgDrawRect(200, 300, 350, 450, 0); - rsgProgramFragmentConstantColor(gProgFragmentColor, 0.3, 0.9, 0.3, 1); - rsgDrawRect(50, 400, 400, 600, 0); - - rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgBindFont(gFontMono); - rsgDrawText("Texture shader", 10, 50); - rsgDrawText("Alpha-blended texture shader", 10, 280); - rsgDrawText("Flat color shader", 100, 450); -} - -static void displayBlendingSamples() { - int i; - - bindProgramVertexOrtho(); - rs_matrix4x4 matrix; - rsMatrixLoadIdentity(&matrix); - rsgProgramVertexLoadModelMatrix(&matrix); - - rsgBindProgramFragment(gProgFragmentColor); - - rsgBindProgramStore(gProgStoreBlendNone); - for (i = 0; i < 3; i ++) { - float iPlusOne = (float)(i + 1); - rsgProgramFragmentConstantColor(gProgFragmentColor, - 0.1f*iPlusOne, 0.2f*iPlusOne, 0.3f*iPlusOne, 1); - float yPos = 150 * (float)i; - rsgDrawRect(0, yPos, 200, yPos + 200, 0); - } - - rsgBindProgramStore(gProgStoreBlendAlpha); - for (i = 0; i < 3; i ++) { - float iPlusOne = (float)(i + 1); - rsgProgramFragmentConstantColor(gProgFragmentColor, - 0.2f*iPlusOne, 0.3f*iPlusOne, 0.1f*iPlusOne, 0.5); - float yPos = 150 * (float)i; - rsgDrawRect(150, yPos, 350, yPos + 200, 0); - } - - rsgBindProgramStore(gProgStoreBlendAdd); - for (i = 0; i < 3; i ++) { - float iPlusOne = (float)(i + 1); - rsgProgramFragmentConstantColor(gProgFragmentColor, - 0.3f*iPlusOne, 0.1f*iPlusOne, 0.2f*iPlusOne, 0.5); - float yPos = 150 * (float)i; - rsgDrawRect(300, yPos, 500, yPos + 200, 0); - } - - - rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgBindFont(gFontMono); - rsgDrawText("No Blending", 10, 50); - rsgDrawText("Alpha Blending", 160, 150); - rsgDrawText("Additive Blending", 320, 250); - -} - -static void displayMeshSamples() { - - bindProgramVertexOrtho(); - rs_matrix4x4 matrix; - rsMatrixLoadTranslate(&matrix, 128, 128, 0); - rsgProgramVertexLoadModelMatrix(&matrix); - - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendNone); - rsgBindProgramFragment(gProgFragmentTexture); - rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp); - rsgBindTexture(gProgFragmentTexture, 0, gTexOpaque); - - rsgDrawMesh(gMbyNMesh); - - rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgBindFont(gFontMono); - rsgDrawText("User gen 10 by 10 grid mesh", 10, 250); -} - -static void displayTextureSamplers() { - - bindProgramVertexOrtho(); - rs_matrix4x4 matrix; - rsMatrixLoadIdentity(&matrix); - rsgProgramVertexLoadModelMatrix(&matrix); - - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendNone); - rsgBindProgramFragment(gProgFragmentTexture); - rsgBindTexture(gProgFragmentTexture, 0, gTexOpaque); - - // Linear clamp - rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp); - float startX = 0, startY = 0; - float width = 300, height = 300; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 0, - startX, startY + height, 0, 0, 1.1, - startX + width, startY + height, 0, 1.1, 1.1, - startX + width, startY, 0, 1.1, 0); - - // Linear Wrap - rsgBindSampler(gProgFragmentTexture, 0, gLinearWrap); - startX = 0; startY = 300; - width = 300; height = 300; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 0, - startX, startY + height, 0, 0, 1.1, - startX + width, startY + height, 0, 1.1, 1.1, - startX + width, startY, 0, 1.1, 0); - - // Nearest - rsgBindSampler(gProgFragmentTexture, 0, gNearestClamp); - startX = 300; startY = 0; - width = 300; height = 300; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 0, - startX, startY + height, 0, 0, 1.1, - startX + width, startY + height, 0, 1.1, 1.1, - startX + width, startY, 0, 1.1, 0); - - rsgBindSampler(gProgFragmentTexture, 0, gMipLinearWrap); - startX = 300; startY = 300; - width = 300; height = 300; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 0, - startX, startY + height, 0, 0, 1.5, - startX + width, startY + height, 0, 1.5, 1.5, - startX + width, startY, 0, 1.5, 0); - - rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgBindFont(gFontMono); - rsgDrawText("Filtering: linear clamp", 10, 290); - rsgDrawText("Filtering: linear wrap", 10, 590); - rsgDrawText("Filtering: nearest clamp", 310, 290); - rsgDrawText("Filtering: miplinear wrap", 310, 590); -} - -static float gTorusRotation = 0; - -static void displayCullingSamples() { - rsgBindProgramVertex(gProgVertex); - // Setup the projectioni matrix with 60 degree field of view - rs_matrix4x4 proj; - float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); - rsMatrixLoadPerspective(&proj, 30.0f, aspect, 0.1f, 100.0f); - rsgProgramVertexLoadProjectionMatrix(&proj); - - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendNoneDepth); - rsgBindProgramFragment(gProgFragmentTexture); - rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp); - rsgBindTexture(gProgFragmentTexture, 0, gTexTorus); - - // Aplly a rotation to our mesh - gTorusRotation += 50.0f * gDt; - if (gTorusRotation > 360.0f) { - gTorusRotation -= 360.0f; - } - - rs_matrix4x4 matrix; - // Position our model on the screen - rsMatrixLoadTranslate(&matrix, -2.0f, 0.0f, -10.0f); - rsMatrixRotate(&matrix, gTorusRotation, 1.0f, 0.0f, 0.0f); - rsgProgramVertexLoadModelMatrix(&matrix); - // Use front face culling - rsgBindProgramRaster(gCullFront); - rsgDrawMesh(gTorusMesh); - - rsMatrixLoadTranslate(&matrix, 2.0f, 0.0f, -10.0f); - rsMatrixRotate(&matrix, gTorusRotation, 1.0f, 0.0f, 0.0f); - rsgProgramVertexLoadModelMatrix(&matrix); - // Use back face culling - rsgBindProgramRaster(gCullBack); - rsgDrawMesh(gTorusMesh); - - rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgBindFont(gFontMono); - rsgDrawText("Displaying mesh front/back face culling", 10, rsgGetHeight() - 10); -} - -static float gLight0Rotation = 0; -static float gLight1Rotation = 0; - -static void setupCustomShaderLights() { - float4 light0Pos = {-5.0f, 5.0f, -10.0f, 1.0f}; - float4 light1Pos = {2.0f, 5.0f, 15.0f, 1.0f}; - float4 light0DiffCol = {0.9f, 0.7f, 0.7f, 1.0f}; - float4 light0SpecCol = {0.9f, 0.6f, 0.6f, 1.0f}; - float4 light1DiffCol = {0.5f, 0.5f, 0.9f, 1.0f}; - float4 light1SpecCol = {0.5f, 0.5f, 0.9f, 1.0f}; - - gLight0Rotation += 50.0f * gDt; - if (gLight0Rotation > 360.0f) { - gLight0Rotation -= 360.0f; - } - gLight1Rotation -= 50.0f * gDt; - if (gLight1Rotation > 360.0f) { - gLight1Rotation -= 360.0f; - } - - rs_matrix4x4 l0Mat; - rsMatrixLoadRotate(&l0Mat, gLight0Rotation, 1.0f, 0.0f, 0.0f); - light0Pos = rsMatrixMultiply(&l0Mat, light0Pos); - rs_matrix4x4 l1Mat; - rsMatrixLoadRotate(&l1Mat, gLight1Rotation, 0.0f, 0.0f, 1.0f); - light1Pos = rsMatrixMultiply(&l1Mat, light1Pos); - - // Set light 0 properties - gVSConstants->light0_Posision = light0Pos; - gVSConstants->light0_Diffuse = 1.0f; - gVSConstants->light0_Specular = 0.5f; - gVSConstants->light0_CosinePower = 10.0f; - // Set light 1 properties - gVSConstants->light1_Posision = light1Pos; - gVSConstants->light1_Diffuse = 1.0f; - gVSConstants->light1_Specular = 0.7f; - gVSConstants->light1_CosinePower = 25.0f; - rsgAllocationSyncAll(rsGetAllocation(gVSConstants)); - - gVSConstants2->light_Posision[0] = light0Pos; - gVSConstants2->light_Diffuse[0] = 1.0f; - gVSConstants2->light_Specular[0] = 0.5f; - gVSConstants2->light_CosinePower[0] = 10.0f; - gVSConstants2->light_Posision[1] = light1Pos; - gVSConstants2->light_Diffuse[1] = 1.0f; - gVSConstants2->light_Specular[1] = 0.7f; - gVSConstants2->light_CosinePower[1] = 25.0f; - rsgAllocationSyncAll(rsGetAllocation(gVSConstants2)); - - // Update fragmetn shader constants - // Set light 0 colors - gFSConstants->light0_DiffuseColor = light0DiffCol; - gFSConstants->light0_SpecularColor = light0SpecCol; - // Set light 1 colors - gFSConstants->light1_DiffuseColor = light1DiffCol; - gFSConstants->light1_SpecularColor = light1SpecCol; - rsgAllocationSyncAll(rsGetAllocation(gFSConstants)); - - gFSConstants2->light_DiffuseColor[0] = light0DiffCol; - gFSConstants2->light_SpecularColor[0] = light0SpecCol; - // Set light 1 colors - gFSConstants2->light_DiffuseColor[1] = light1DiffCol; - gFSConstants2->light_SpecularColor[1] = light1SpecCol; - rsgAllocationSyncAll(rsGetAllocation(gFSConstants2)); -} - -static void displayCustomShaderSamples() { - - // Update vertex shader constants - // Load model matrix - // Aplly a rotation to our mesh - gTorusRotation += 50.0f * gDt; - if (gTorusRotation > 360.0f) { - gTorusRotation -= 360.0f; - } - - // Position our model on the screen - rsMatrixLoadTranslate(&gVSConstants->model, 0.0f, 0.0f, -10.0f); - rsMatrixRotate(&gVSConstants->model, gTorusRotation, 1.0f, 0.0f, 0.0f); - rsMatrixRotate(&gVSConstants->model, gTorusRotation, 0.0f, 0.0f, 1.0f); - // Setup the projectioni matrix - float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); - rsMatrixLoadPerspective(&gVSConstants->proj, 30.0f, aspect, 0.1f, 100.0f); - setupCustomShaderLights(); - - rsgBindProgramVertex(gProgVertexCustom); - - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendNoneDepth); - rsgBindProgramFragment(gProgFragmentCustom); - rsgBindSampler(gProgFragmentCustom, 0, gLinearClamp); - rsgBindTexture(gProgFragmentCustom, 0, gTexTorus); - - // Use back face culling - rsgBindProgramRaster(gCullBack); - rsgDrawMesh(gTorusMesh); - - rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgBindFont(gFontMono); - rsgDrawText("Custom shader sample", 10, rsgGetHeight() - 10); -} - -static void displayCustomShaderSamples2() { - - // Update vertex shader constants - // Load model matrix - // Aplly a rotation to our mesh - gTorusRotation += 50.0f * gDt; - if (gTorusRotation > 360.0f) { - gTorusRotation -= 360.0f; - } - - // Position our model on the screen - rsMatrixLoadTranslate(&gVSConstants2->model[1], 0.0f, 0.0f, -10.0f); - rsMatrixLoadIdentity(&gVSConstants2->model[0]); - rsMatrixRotate(&gVSConstants2->model[0], gTorusRotation, 1.0f, 0.0f, 0.0f); - rsMatrixRotate(&gVSConstants2->model[0], gTorusRotation, 0.0f, 0.0f, 1.0f); - // Setup the projectioni matrix - float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); - rsMatrixLoadPerspective(&gVSConstants2->proj, 30.0f, aspect, 0.1f, 100.0f); - setupCustomShaderLights(); - - rsgBindProgramVertex(gProgVertexCustom2); - - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendNoneDepth); - rsgBindProgramFragment(gProgFragmentCustom2); - rsgBindSampler(gProgFragmentCustom2, 0, gLinearClamp); - rsgBindTexture(gProgFragmentCustom2, 0, gTexTorus); - - // Use back face culling - rsgBindProgramRaster(gCullBack); - rsgDrawMesh(gTorusMesh); - - rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgBindFont(gFontMono); - rsgDrawText("Custom shader sample with array uniforms", 10, rsgGetHeight() - 10); -} - -static void displayCubemapShaderSample() { - // Update vertex shader constants - // Load model matrix - // Aplly a rotation to our mesh - gTorusRotation += 50.0f * gDt; - if (gTorusRotation > 360.0f) { - gTorusRotation -= 360.0f; - } - - // Position our model on the screen - // Position our model on the screen - rsMatrixLoadTranslate(&gVSConstants->model, 0.0f, 0.0f, -10.0f); - rsMatrixRotate(&gVSConstants->model, gTorusRotation, 1.0f, 0.0f, 0.0f); - rsMatrixRotate(&gVSConstants->model, gTorusRotation, 0.0f, 0.0f, 1.0f); - // Setup the projectioni matrix - float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); - rsMatrixLoadPerspective(&gVSConstants->proj, 30.0f, aspect, 0.1f, 100.0f); - rsgAllocationSyncAll(rsGetAllocation(gFSConstants)); - - rsgBindProgramVertex(gProgVertexCube); - - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendNoneDepth); - rsgBindProgramFragment(gProgFragmentCube); - rsgBindSampler(gProgFragmentCube, 0, gLinearClamp); - rsgBindTexture(gProgFragmentCube, 0, gTexCube); - - // Use back face culling - rsgBindProgramRaster(gCullBack); - rsgDrawMesh(gTorusMesh); - - rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgBindFont(gFontMono); - rsgDrawText("Cubemap shader sample", 10, rsgGetHeight() - 10); -} - -static void displayMultitextureSample() { - bindProgramVertexOrtho(); - rs_matrix4x4 matrix; - rsMatrixLoadIdentity(&matrix); - rsgProgramVertexLoadModelMatrix(&matrix); - - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendNone); - rsgBindProgramFragment(gProgFragmentMultitex); - rsgBindSampler(gProgFragmentMultitex, 0, gLinearClamp); - rsgBindSampler(gProgFragmentMultitex, 1, gLinearWrap); - rsgBindSampler(gProgFragmentMultitex, 2, gLinearClamp); - rsgBindTexture(gProgFragmentMultitex, 0, gTexChecker); - rsgBindTexture(gProgFragmentMultitex, 1, gTexTorus); - rsgBindTexture(gProgFragmentMultitex, 2, gTexTransparent); - - float startX = 0, startY = 0; - float width = 256, height = 256; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 0, - startX, startY + height, 0, 0, 1, - startX + width, startY + height, 0, 1, 1, - startX + width, startY, 0, 1, 0); - - rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgBindFont(gFontMono); - rsgDrawText("Custom shader with multitexturing", 10, 280); -} - -static float gAnisoTime = 0.0f; -static uint anisoMode = 0; -static void displayAnisoSample() { - - gAnisoTime += gDt; - - rsgBindProgramVertex(gProgVertex); - float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); - rs_matrix4x4 proj; - rsMatrixLoadPerspective(&proj, 30.0f, aspect, 0.1f, 100.0f); - rsgProgramVertexLoadProjectionMatrix(&proj); - - rs_matrix4x4 matrix; - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendNone); - rsgBindProgramFragment(gProgFragmentTexture); - rsMatrixLoadTranslate(&matrix, 0.0f, 0.0f, -10.0f); - rsMatrixRotate(&matrix, -80, 1.0f, 0.0f, 0.0f); - rsgProgramVertexLoadModelMatrix(&matrix); - - rsgBindProgramRaster(gCullNone); - - rsgBindTexture(gProgFragmentTexture, 0, gTexChecker); - - if (gAnisoTime >= 5.0f) { - gAnisoTime = 0.0f; - anisoMode ++; - anisoMode = anisoMode % 3; - } - - if (anisoMode == 0) { - rsgBindSampler(gProgFragmentTexture, 0, gMipLinearAniso8); - } else if (anisoMode == 1) { - rsgBindSampler(gProgFragmentTexture, 0, gMipLinearAniso15); - } else { - rsgBindSampler(gProgFragmentTexture, 0, gMipLinearWrap); - } - - float startX = -15; - float startY = -15; - float width = 30; - float height = 30; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 0, - startX, startY + height, 0, 0, 10, - startX + width, startY + height, 0, 10, 10, - startX + width, startY, 0, 10, 0); - - rsgBindProgramRaster(gCullBack); - - rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgBindFont(gFontMono); - if (anisoMode == 0) { - rsgDrawText("Anisotropic filtering 8", 10, 40); - } else if (anisoMode == 1) { - rsgDrawText("Anisotropic filtering 15", 10, 40); - } else { - rsgDrawText("Miplinear filtering", 10, 40); - } -} - -int root(void) { - - gDt = rsGetDt(); - - rsgClearColor(0.2f, 0.2f, 0.2f, 0.0f); - rsgClearDepth(1.0f); - - switch (gDisplayMode) { - case 0: - displayFontSamples(); - break; - case 1: - displayShaderSamples(); - break; - case 2: - displayBlendingSamples(); - break; - case 3: - displayMeshSamples(); - break; - case 4: - displayTextureSamplers(); - break; - case 5: - displayCullingSamples(); - break; - case 6: - displayCustomShaderSamples(); - break; - case 7: - displayMultitextureSample(); - break; - case 8: - displayAnisoSample(); - break; - case 9: - displayCustomShaderSamples2(); - break; - case 10: - displayCubemapShaderSample(); - break; - } - - return 10; -} diff --git a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/shader_def.rsh b/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/shader_def.rsh deleted file mode 100644 index 08cf361e8fe5..000000000000 --- a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/shader_def.rsh +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright (C) 2009 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.example.android.rs.miscsamples) - -typedef struct VertexShaderConstants_s { - rs_matrix4x4 model; - rs_matrix4x4 proj; - float4 light0_Posision; - float light0_Diffuse; - float light0_Specular; - float light0_CosinePower; - - float4 light1_Posision; - float light1_Diffuse; - float light1_Specular; - float light1_CosinePower; -} VertexShaderConstants; - -typedef struct VertexShaderConstants2_s { - rs_matrix4x4 model[2]; - rs_matrix4x4 proj; - float4 light_Posision[2]; - float light_Diffuse[2]; - float light_Specular[2]; - float light_CosinePower[2]; -} VertexShaderConstants2; - -typedef struct VertexShaderConstants3_s { - rs_matrix4x4 model; - rs_matrix4x4 proj; - float time; -} VertexShaderConstants3; - - -typedef struct FragentShaderConstants_s { - float4 light0_DiffuseColor; - float4 light0_SpecularColor; - - float4 light1_DiffuseColor; - float4 light1_SpecularColor; -} FragentShaderConstants; - -typedef struct FragentShaderConstants2_s { - float4 light_DiffuseColor[2]; - float4 light_SpecularColor[2]; -} FragentShaderConstants2; - -typedef struct FragentShaderConstants3_s { - float4 light0_DiffuseColor; - float4 light0_SpecularColor; - float4 light0_Posision; - float light0_Diffuse; - float light0_Specular; - float light0_CosinePower; - - float4 light1_DiffuseColor; - float4 light1_SpecularColor; - float4 light1_Posision; - float light1_Diffuse; - float light1_Specular; - float light1_CosinePower; -} FragentShaderConstants3; - -typedef struct VertexShaderInputs_s { - float4 position; - float3 normal; - float2 texture0; -} VertexShaderInputs; - diff --git a/tests/RenderScriptTests/ModelViewer/Android.mk b/tests/RenderScriptTests/ModelViewer/Android.mk deleted file mode 100644 index 86724cfc3bde..000000000000 --- a/tests/RenderScriptTests/ModelViewer/Android.mk +++ /dev/null @@ -1,29 +0,0 @@ -# -# Copyright (C) 2008 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := tests - -LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src) -#LOCAL_STATIC_JAVA_LIBRARIES := android.renderscript - -LOCAL_SDK_VERSION := 17 - -LOCAL_PACKAGE_NAME := ModelViewer - -include $(BUILD_PACKAGE) diff --git a/tests/RenderScriptTests/ModelViewer/AndroidManifest.xml b/tests/RenderScriptTests/ModelViewer/AndroidManifest.xml deleted file mode 100644 index 57ec4fe74d39..000000000000 --- a/tests/RenderScriptTests/ModelViewer/AndroidManifest.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.modelviewer"> - <application android:label="ModelViewer"> - <activity android:name="SimpleModel" - android:label="SimpleModel" - android:screenOrientation="nosensor"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - <activity android:name="A3DSelector" - android:label="A3DSelector" - android:hardwareAccelerated="true"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - </intent-filter> - </activity> - <activity android:name="SceneGraph" - android:label="SceneGraph" - android:theme="@android:style/Theme.Black.NoTitleBar"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - </application> -</manifest> diff --git a/tests/RenderScriptTests/ModelViewer/res/drawable-nodpi/robot.png b/tests/RenderScriptTests/ModelViewer/res/drawable-nodpi/robot.png Binary files differdeleted file mode 100644 index f7353fd61c5b..000000000000 --- a/tests/RenderScriptTests/ModelViewer/res/drawable-nodpi/robot.png +++ /dev/null diff --git a/tests/RenderScriptTests/ModelViewer/res/menu/loader_menu.xml b/tests/RenderScriptTests/ModelViewer/res/menu/loader_menu.xml deleted file mode 100644 index 2a8759c9d083..000000000000 --- a/tests/RenderScriptTests/ModelViewer/res/menu/loader_menu.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ ---> - -<menu xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:id="@+id/load_model" - android:title="@string/load_model" /> - <item android:id="@+id/display_options" - android:title="@string/display_options" /> - <item android:id="@+id/sensor" - android:title="@string/sensor" /> -</menu> diff --git a/tests/RenderScriptTests/ModelViewer/res/raw/robot.a3d b/tests/RenderScriptTests/ModelViewer/res/raw/robot.a3d Binary files differdeleted file mode 100644 index f48895cd8451..000000000000 --- a/tests/RenderScriptTests/ModelViewer/res/raw/robot.a3d +++ /dev/null diff --git a/tests/RenderScriptTests/ModelViewer/res/values/strings.xml b/tests/RenderScriptTests/ModelViewer/res/values/strings.xml deleted file mode 100644 index a5c8f22e90ad..000000000000 --- a/tests/RenderScriptTests/ModelViewer/res/values/strings.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ ---> - -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <skip /> - <string name="load_model">Load Model</string> - <string name="display_options">Display Options</string> - <string name="sensor">Toggle Sensor</string> -</resources> diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/A3DSelector.java b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/A3DSelector.java deleted file mode 100644 index 0e2004f2046f..000000000000 --- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/A3DSelector.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.modelviewer; - -import java.io.File; -import java.io.FileFilter; -import java.util.ArrayList; -import java.util.List; - -import android.app.ListActivity; -import android.content.Intent; -import android.net.Uri; -import android.os.Bundle; -import android.view.View; -import android.widget.ArrayAdapter; -import android.widget.ListView; - -/** - * A list view where the last item the user clicked is placed in - * the "activated" state, causing its background to highlight. - */ -public class A3DSelector extends ListActivity { - - File[] mCurrentSubList; - File mCurrentFile; - - class A3DFilter implements FileFilter { - public boolean accept(File file) { - if (file.isDirectory()) { - return true; - } - return file.getName().endsWith(".a3d"); - } - } - - private void populateList(File file) { - - mCurrentFile = file; - setTitle(mCurrentFile.getAbsolutePath() + "/*.a3d"); - List<String> names = new ArrayList<String>(); - names.add(".."); - - mCurrentSubList = mCurrentFile.listFiles(new A3DFilter()); - - if (mCurrentSubList != null) { - for (int i = 0; i < mCurrentSubList.length; i ++) { - String fileName = mCurrentSubList[i].getName(); - if (mCurrentSubList[i].isDirectory()) { - fileName = "/" + fileName; - } - names.add(fileName); - } - } - - // Use the built-in layout for showing a list item with a single - // line of text whose background is changes when activated. - setListAdapter(new ArrayAdapter<String>(this, - android.R.layout.simple_list_item_activated_1, names)); - getListView().setTextFilterEnabled(true); - - // Tell the list view to show one checked/activated item at a time. - getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - populateList(new File("/sdcard/")); - } - - @Override - protected void onListItemClick(ListView l, View v, int position, long id) { - if (position == 0) { - File parent = mCurrentFile.getParentFile(); - if (parent == null) { - return; - } - populateList(parent); - return; - } - - // the first thing in list is parent directory - File selectedFile = mCurrentSubList[position - 1]; - if (selectedFile.isDirectory()) { - populateList(selectedFile); - return; - } - - Intent resultIntent = new Intent(); - resultIntent.setData(Uri.fromFile(selectedFile)); - setResult(RESULT_OK, resultIntent); - finish(); - } - -} diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SceneGraph.java b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SceneGraph.java deleted file mode 100644 index c9c4dc1dadc2..000000000000 --- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SceneGraph.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.modelviewer; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; - -import android.app.Activity; -import android.content.res.Configuration; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.provider.Settings.System; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.Window; -import android.widget.Button; -import android.widget.ListView; - -import java.lang.Runtime; - -public class SceneGraph extends Activity { - - private SceneGraphView mView; - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - // Create our Preview view and set it as the content of our - // Activity - mView = new SceneGraphView(this); - setContentView(mView); - } - - @Override - protected void onResume() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity looses focus - super.onResume(); - mView.resume(); - } - - @Override - protected void onPause() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity looses focus - super.onPause(); - mView.pause(); - } - -} - diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SceneGraphRS.java b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SceneGraphRS.java deleted file mode 100644 index f91f31ee35e7..000000000000 --- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SceneGraphRS.java +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.modelviewer; - -import java.io.Writer; -import java.util.Map; -import java.util.Vector; - -import android.content.res.Resources; -import android.renderscript.*; -import android.renderscript.Element.Builder; -import android.renderscript.Font.Style; -import android.renderscript.ProgramStore.DepthFunc; -import android.util.Log; - - -public class SceneGraphRS { - - private final int STATE_LAST_FOCUS = 1; - - int mWidth; - int mHeight; - int mRotation; - - public SceneGraphRS() { - } - - public void init(RenderScriptGL rs, Resources res, int width, int height) { - mRS = rs; - mRes = res; - mWidth = width; - mHeight = height; - mRotation = 0; - initRS(); - } - - private Resources mRes; - private RenderScriptGL mRS; - private Sampler mSampler; - private ProgramStore mPSBackground; - private ProgramFragment mPFBackground; - private ProgramVertex mPVBackground; - private ProgramVertexFixedFunction.Constants mPVA; - - private Allocation mGridImage; - private Allocation mAllocPV; - - private Mesh mMesh; - - private Font mItalic; - private Allocation mTextAlloc; - - private ScriptC_scenegraph mScript; - private ScriptC_transform mTransformScript; - - int mLastX; - int mLastY; - - public void touchEvent(int x, int y) { - int dx = mLastX - x; - if (Math.abs(dx) > 50 || Math.abs(dx) < 3) { - dx = 0; - } - - mRotation -= dx; - if (mRotation > 360) { - mRotation -= 360; - } - if (mRotation < 0) { - mRotation += 360; - } - - mScript.set_gRotate(-(float)mRotation); - - mLastX = x; - mLastY = y; - } - - private void initPFS() { - ProgramStore.Builder b = new ProgramStore.Builder(mRS); - - b.setDepthFunc(ProgramStore.DepthFunc.LESS); - b.setDitherEnabled(false); - b.setDepthMaskEnabled(true); - mPSBackground = b.create(); - - mScript.set_gPFSBackground(mPSBackground); - } - - private void initPF() { - Sampler.Builder bs = new Sampler.Builder(mRS); - bs.setMinification(Sampler.Value.LINEAR); - bs.setMagnification(Sampler.Value.LINEAR); - bs.setWrapS(Sampler.Value.CLAMP); - bs.setWrapT(Sampler.Value.CLAMP); - mSampler = bs.create(); - - ProgramFragmentFixedFunction.Builder b = new ProgramFragmentFixedFunction.Builder(mRS); - b.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE, - ProgramFragmentFixedFunction.Builder.Format.RGBA, 0); - mPFBackground = b.create(); - mPFBackground.bindSampler(mSampler, 0); - - mScript.set_gPFBackground(mPFBackground); - } - - private void initPV() { - ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS); - mPVBackground = pvb.create(); - - mPVA = new ProgramVertexFixedFunction.Constants(mRS); - ((ProgramVertexFixedFunction)mPVBackground).bindConstants(mPVA); - - mScript.set_gPVBackground(mPVBackground); - } - - private void loadImage() { - mGridImage = Allocation.createFromBitmapResource(mRS, mRes, R.drawable.robot, - Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, - Allocation.USAGE_GRAPHICS_TEXTURE); - mScript.set_gTGrid(mGridImage); - } - - private void initTextAllocation() { - String allocString = "Displaying file: R.raw.robot"; - mTextAlloc = Allocation.createFromString(mRS, allocString, Allocation.USAGE_SCRIPT); - mScript.set_gTextAlloc(mTextAlloc); - } - - SgTransform mRootTransform; - SgTransform mGroup1; - - SgTransform mRobot1; - SgTransform mRobot2; - - void initTransformHierarchy() { - mRootTransform = new SgTransform(mRS); - - mGroup1 = new SgTransform(mRS); - mRootTransform.addChild(mGroup1); - - mRobot1 = new SgTransform(mRS); - mRobot2 = new SgTransform(mRS); - - mGroup1.addChild(mRobot1); - mGroup1.addChild(mRobot2); - - mGroup1.setTransform(0, new Float4(0.0f, 0.0f, -15.0f, 0.0f), TransformType.TRANSLATE); - mGroup1.setTransform(1, new Float4(0.0f, 1.0f, 0.0f, 15.0f), TransformType.ROTATE); - - mRobot1.setTransform(0, new Float4(-3.0f, -0.5f, 0.0f, 0.0f), TransformType.TRANSLATE); - mRobot1.setTransform(1, new Float4(0.0f, 1.0f, 0.0f, 20.0f), TransformType.ROTATE); - mRobot1.setTransform(2, new Float4(0.2f, 0.2f, 0.2f, 0.0f), TransformType.SCALE); - - mRobot2.setTransform(0, new Float4(3.0f, 0.0f, 0.0f, 0.0f), TransformType.TRANSLATE); - mRobot2.setTransform(1, new Float4(0.0f, 1.0f, 0.0f, -20.0f), TransformType.ROTATE); - mRobot2.setTransform(2, new Float4(0.3f, 0.3f, 0.3f, 0.0f), TransformType.SCALE); - } - - private void initRS() { - - mScript = new ScriptC_scenegraph(mRS, mRes, R.raw.scenegraph); - mTransformScript = new ScriptC_transform(mRS, mRes, R.raw.transform); - mTransformScript.set_transformScript(mTransformScript); - - mScript.set_gTransformRS(mTransformScript); - - initPFS(); - initPF(); - initPV(); - - loadImage(); - - FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.robot); - FileA3D.IndexEntry entry = model.getIndexEntry(0); - if (entry == null || entry.getEntryType() != FileA3D.EntryType.MESH) { - Log.e("rs", "could not load model"); - } else { - mMesh = (Mesh)entry.getObject(); - mScript.set_gTestMesh(mMesh); - } - - mItalic = Font.create(mRS, mRes, "serif", Font.Style.ITALIC, 8); - mScript.set_gItalic(mItalic); - - initTextAllocation(); - - initTransformHierarchy(); - - mScript.bind_gRootNode(mRootTransform.getField()); - - mScript.bind_gGroup(mGroup1.mParent.mChildField); - mScript.bind_gRobot1(mRobot1.mParent.mChildField); - mScript.set_gRobot1Index(mRobot1.mIndexInParentGroup); - mScript.bind_gRobot2(mRobot2.mParent.mChildField); - mScript.set_gRobot2Index(mRobot2.mIndexInParentGroup); - - mRS.bindRootScript(mScript); - } -} - - - diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SceneGraphView.java b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SceneGraphView.java deleted file mode 100644 index 0b6a3b863866..000000000000 --- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SceneGraphView.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.modelviewer; - -import java.io.Writer; -import java.util.ArrayList; -import java.util.concurrent.Semaphore; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; -import android.renderscript.RenderScriptGL; - -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; -import android.os.Handler; -import android.os.Message; -import android.util.AttributeSet; -import android.util.Log; -import android.view.Surface; -import android.view.SurfaceHolder; -import android.view.SurfaceView; -import android.view.KeyEvent; -import android.view.MotionEvent; - -public class SceneGraphView extends RSSurfaceView { - - public SceneGraphView(Context context) { - super(context); - //setFocusable(true); - } - - private RenderScriptGL mRS; - private SceneGraphRS mRender; - - - public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { - super.surfaceChanged(holder, format, w, h); - if (mRS == null) { - RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); - sc.setDepth(16, 24); - mRS = createRenderScriptGL(sc); - mRS.setSurface(holder, w, h); - mRender = new SceneGraphRS(); - mRender.init(mRS, getResources(), w, h); - } - } - - @Override - protected void onDetachedFromWindow() { - if (mRS != null) { - mRS = null; - destroyRenderScriptGL(); - } - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) - { - // break point at here - // this method doesn't work when 'extends View' include 'extends ScrollView'. - return super.onKeyDown(keyCode, event); - } - - - @Override - public boolean onTouchEvent(MotionEvent ev) - { - boolean ret = true; - int act = ev.getAction(); - if (act == ev.ACTION_UP) { - ret = false; - } - - mRender.touchEvent((int)ev.getX(), (int)ev.getY()); - return ret; - } -} - - diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SgTransform.java b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SgTransform.java deleted file mode 100644 index f5484e29c424..000000000000 --- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SgTransform.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.modelviewer; - -import java.io.Writer; -import java.util.Map; -import java.util.Vector; - -import android.content.res.Resources; -import android.renderscript.*; -import android.renderscript.Element.Builder; -import android.renderscript.ProgramStore.DepthFunc; -import android.util.Log; - -enum TransformType { - - NONE(0), - TRANSLATE(1), - ROTATE(2), - SCALE(3); - - int mID; - TransformType(int id) { - mID = id; - } -} - -public class SgTransform { - - - ScriptField_SgTransform mTransformField; - ScriptField_SgTransform mChildField; - public ScriptField_SgTransform.Item mTransformData; - - RenderScript mRS; - - Vector mChildren; - SgTransform mParent; - int mIndexInParentGroup; - - public void setParent(SgTransform parent, int parentIndex) { - mParent = parent; - mIndexInParentGroup = parentIndex; - } - - public void addChild(SgTransform child) { - mChildren.add(child); - child.setParent(this, mChildren.size() - 1); - } - - public void setTransform(int index, Float4 value, TransformType type) { - mTransformData.transforms[index] = value; - mTransformData.transformTypes[index] = type.mID; - } - - void initData() { - int numElements = mTransformData.transforms.length; - mTransformData.transformTypes = new int[numElements]; - for (int i = 0; i < numElements; i ++) { - mTransformData.transforms[i] = new Float4(0, 0, 0, 0); - mTransformData.transformTypes[i] = TransformType.NONE.mID; - } - - mTransformData.isDirty = 1; - mTransformData.children = null; - } - - public SgTransform(RenderScript rs) { - mRS = rs; - mTransformData = new ScriptField_SgTransform.Item(); - mChildren = new Vector(); - initData(); - } - - public ScriptField_SgTransform.Item getData() { - if (mChildren.size() != 0) { - mChildField = new ScriptField_SgTransform(mRS, mChildren.size()); - mTransformData.children = mChildField.getAllocation(); - - for (int i = 0; i < mChildren.size(); i ++) { - SgTransform child = (SgTransform)mChildren.get(i); - mChildField.set(child.getData(), i, false); - } - mChildField.copyAll(); - } - - return mTransformData; - } - - public ScriptField_SgTransform getField() { - mTransformField = new ScriptField_SgTransform(mRS, 1); - mTransformField.set(getData(), 0, true); - return mTransformField; - } -} - - - diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SimpleModel.java b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SimpleModel.java deleted file mode 100644 index 2b29ff4400eb..000000000000 --- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SimpleModel.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.modelviewer; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; - -import android.app.Activity; -import android.content.res.Configuration; -import android.content.Intent; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.provider.Settings.System; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.MenuInflater; -import android.view.Window; -import android.widget.Button; -import android.widget.ListView; -import android.net.Uri; - -import java.lang.Runtime; - -public class SimpleModel extends Activity { - - private SimpleModelView mView; - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - // Create our Preview view and set it as the content of our - // Activity - mView = new SimpleModelView(this); - setContentView(mView); - } - - @Override - protected void onResume() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity looses focus - super.onResume(); - mView.resume(); - } - - @Override - protected void onPause() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity looses focus - super.onPause(); - mView.pause(); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.loader_menu, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle item selection - switch (item.getItemId()) { - case R.id.load_model: - loadModel(); - return true; - case R.id.display_options: - return true; - case R.id.sensor: - mView.toggleSensor(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - - private static final int FIND_A3D_MODEL = 10; - public void onActivityResult(int requestCode, int resultCode, Intent data) { - if (resultCode == RESULT_OK) { - if (requestCode == FIND_A3D_MODEL) { - Uri selectedImageUri = data.getData(); - Log.e("Selected Path: ", selectedImageUri.getPath()); - mView.loadA3DFile(selectedImageUri.getPath()); - } - } - } - - public void loadModel() { - Intent intent = new Intent(); - intent.setAction(Intent.ACTION_PICK); - intent.setClassName("com.android.modelviewer", - "com.android.modelviewer.A3DSelector"); - startActivityForResult(intent, FIND_A3D_MODEL); - } - -} - diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SimpleModelRS.java b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SimpleModelRS.java deleted file mode 100644 index 5fa3a9e9a86e..000000000000 --- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SimpleModelRS.java +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.modelviewer; - -import java.io.Writer; - -import android.content.res.Resources; -import android.renderscript.*; -import android.renderscript.ProgramStore.DepthFunc; -import android.util.Log; - - -public class SimpleModelRS { - - public SimpleModelRS() { - } - - public void init(RenderScriptGL rs, Resources res) { - mRS = rs; - mRes = res; - initRS(); - } - - public void surfaceChanged() { - mRS.getWidth(); - mRS.getHeight(); - } - - private Resources mRes; - private RenderScriptGL mRS; - private Sampler mSampler; - private ProgramStore mPSBackground; - private ProgramFragment mPFBackground; - private ProgramVertex mPVBackground; - private ProgramVertexFixedFunction.Constants mPVA; - - private Allocation mGridImage; - private Allocation mAllocPV; - - private Font mItalic; - private Allocation mTextAlloc; - - private ScriptField_MeshInfo mMeshes; - private ScriptC_simplemodel mScript; - - - public void onActionDown(float x, float y) { - mScript.invoke_onActionDown(x, y); - } - - public void onActionScale(float scale) { - mScript.invoke_onActionScale(scale); - } - - public void onActionMove(float x, float y) { - mScript.invoke_onActionMove(x, y); - } - - public void onPostureChanged(Matrix4f posture) { - mScript.set_gPostureMatrix(posture); - } - - private void initPFS() { - ProgramStore.Builder b = new ProgramStore.Builder(mRS); - - b.setDepthFunc(ProgramStore.DepthFunc.LESS); - b.setDitherEnabled(false); - b.setDepthMaskEnabled(true); - mPSBackground = b.create(); - - mScript.set_gPFSBackground(mPSBackground); - } - - private void initPF() { - Sampler.Builder bs = new Sampler.Builder(mRS); - bs.setMinification(Sampler.Value.LINEAR); - bs.setMagnification(Sampler.Value.LINEAR); - bs.setWrapS(Sampler.Value.CLAMP); - bs.setWrapT(Sampler.Value.CLAMP); - mSampler = bs.create(); - - ProgramFragmentFixedFunction.Builder b = new ProgramFragmentFixedFunction.Builder(mRS); - b.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE, - ProgramFragmentFixedFunction.Builder.Format.RGBA, 0); - mPFBackground = b.create(); - mPFBackground.bindSampler(mSampler, 0); - - mScript.set_gPFBackground(mPFBackground); - } - - private void initPV() { - ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS); - mPVBackground = pvb.create(); - - mPVA = new ProgramVertexFixedFunction.Constants(mRS); - ((ProgramVertexFixedFunction)mPVBackground).bindConstants(mPVA); - - mScript.set_gPVBackground(mPVBackground); - } - - private void loadImage() { - mGridImage = Allocation.createFromBitmapResource(mRS, mRes, R.drawable.robot, - Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, - Allocation.USAGE_GRAPHICS_TEXTURE); - mScript.set_gTGrid(mGridImage); - } - - private void initTextAllocation(String fileName) { - String allocString = "Displaying file: " + fileName; - mTextAlloc = Allocation.createFromString(mRS, allocString, Allocation.USAGE_SCRIPT); - mScript.set_gTextAlloc(mTextAlloc); - } - - private void initMeshes(FileA3D model) { - int numEntries = model.getIndexEntryCount(); - int numMeshes = 0; - for (int i = 0; i < numEntries; i ++) { - FileA3D.IndexEntry entry = model.getIndexEntry(i); - if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) { - numMeshes ++; - } - } - - if (numMeshes > 0) { - mMeshes = new ScriptField_MeshInfo(mRS, numMeshes); - - for (int i = 0; i < numEntries; i ++) { - FileA3D.IndexEntry entry = model.getIndexEntry(i); - if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) { - Mesh mesh = entry.getMesh(); - mMeshes.set_mMesh(i, mesh, false); - mMeshes.set_mNumIndexSets(i, mesh.getPrimitiveCount(), false); - } - } - mMeshes.copyAll(); - } else { - throw new RSRuntimeException("No valid meshes in file"); - } - - mScript.bind_gMeshes(mMeshes); - mScript.invoke_updateMeshInfo(); - } - - public void loadA3DFile(String path) { - FileA3D model = FileA3D.createFromFile(mRS, path); - initMeshes(model); - initTextAllocation(path); - } - - private void initRS() { - - mScript = new ScriptC_simplemodel(mRS, mRes, R.raw.simplemodel); - - initPFS(); - initPF(); - initPV(); - - loadImage(); - - FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.robot); - initMeshes(model); - - mItalic = Font.create(mRS, mRes, "serif", Font.Style.ITALIC, 8); - mScript.set_gItalic(mItalic); - - initTextAllocation("R.raw.robot"); - - mRS.bindRootScript(mScript); - } -} - - - diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SimpleModelView.java b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SimpleModelView.java deleted file mode 100644 index 4b7836b002b1..000000000000 --- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SimpleModelView.java +++ /dev/null @@ -1,197 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.modelviewer; - -import android.renderscript.Matrix4f; -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScriptGL; - -import android.content.Context; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.hardware.SensorManager; -import android.view.MotionEvent; -import android.view.SurfaceHolder; -import android.view.ScaleGestureDetector; -import android.util.Log; - -public class SimpleModelView extends RSSurfaceView implements SensorEventListener { - - private RenderScriptGL mRS; - private SimpleModelRS mRender; - - private ScaleGestureDetector mScaleDetector; - - private SensorManager mSensorManager; - private Sensor mRotationVectorSensor; - private final float[] mRotationMatrix = new float[16]; - - private static final int INVALID_POINTER_ID = -1; - private int mActivePointerId = INVALID_POINTER_ID; - private boolean mUseSensor = false; - private Matrix4f mIdentityMatrix = new Matrix4f(); - - public SimpleModelView(Context context) { - super(context); - ensureRenderScript(); - mScaleDetector = new ScaleGestureDetector(context, new ScaleListener()); - // Get an instance of the SensorManager - mSensorManager = (SensorManager)getContext().getSystemService(Context.SENSOR_SERVICE); - // find the rotation-vector sensor - mRotationVectorSensor = mSensorManager.getDefaultSensor( - Sensor.TYPE_ROTATION_VECTOR); - mIdentityMatrix.loadIdentity(); - } - - private void ensureRenderScript() { - if (mRS == null) { - RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); - sc.setDepth(16, 24); - mRS = createRenderScriptGL(sc); - mRender = new SimpleModelRS(); - mRender.init(mRS, getResources()); - } - } - - @Override - public void resume() { - mSensorManager.registerListener(this, mRotationVectorSensor, 10000); - } - - @Override - public void pause() { - mSensorManager.unregisterListener(this); - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - ensureRenderScript(); - } - - @Override - public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { - super.surfaceChanged(holder, format, w, h); - mRender.surfaceChanged(); - } - - @Override - protected void onDetachedFromWindow() { - mRender = null; - if (mRS != null) { - mRS = null; - destroyRenderScriptGL(); - } - } - - public void loadA3DFile(String path) { - mRender.loadA3DFile(path); - } - - @Override - public boolean onTouchEvent(MotionEvent ev) { - mScaleDetector.onTouchEvent(ev); - - boolean ret = false; - float x = ev.getX(); - float y = ev.getY(); - - final int action = ev.getAction(); - - switch (action & MotionEvent.ACTION_MASK) { - case MotionEvent.ACTION_DOWN: { - mRender.onActionDown(x, y); - mActivePointerId = ev.getPointerId(0); - ret = true; - break; - } - case MotionEvent.ACTION_MOVE: { - if (!mScaleDetector.isInProgress()) { - mRender.onActionMove(x, y); - } - mRender.onActionDown(x, y); - ret = true; - break; - } - - case MotionEvent.ACTION_UP: { - mActivePointerId = INVALID_POINTER_ID; - break; - } - - case MotionEvent.ACTION_CANCEL: { - mActivePointerId = INVALID_POINTER_ID; - break; - } - - case MotionEvent.ACTION_POINTER_UP: { - final int pointerIndex = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) - >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; - final int pointerId = ev.getPointerId(pointerIndex); - if (pointerId == mActivePointerId) { - // This was our active pointer going up. Choose a new - // active pointer and adjust accordingly. - final int newPointerIndex = pointerIndex == 0 ? 1 : 0; - x = ev.getX(newPointerIndex); - y = ev.getY(newPointerIndex); - mRender.onActionDown(x, y); - mActivePointerId = ev.getPointerId(newPointerIndex); - } - break; - } - } - - return ret; - } - - private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { - @Override - public boolean onScale(ScaleGestureDetector detector) { - mRender.onActionScale(detector.getScaleFactor()); - return true; - } - } - - public void onSensorChanged(SensorEvent event) { - // we received a sensor event. it is a good practice to check - // that we received the proper event - if (mUseSensor) { - if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) { - // convert the rotation-vector to a 4x4 matrix. the matrix - // is interpreted by Open GL as the inverse of the - // rotation-vector, which is what we want. - SensorManager.getRotationMatrixFromVector( - mRotationMatrix , event.values); - - if (mRender != null) { - mRender.onPostureChanged(new Matrix4f(mRotationMatrix)); - } - } - } - } - - public void onAccuracyChanged(Sensor sensor, int accuracy) { - } - - public void toggleSensor() { - mUseSensor = !mUseSensor; - if (mUseSensor == false) { - mRender.onPostureChanged(mIdentityMatrix); - } - } -} diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/scenegraph.rs b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/scenegraph.rs deleted file mode 100644 index 5c5b1c999b68..000000000000 --- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/scenegraph.rs +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright (C) 2009 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.modelviewer) - -#include "rs_graphics.rsh" -#include "transform_def.rsh" - -rs_program_vertex gPVBackground; -rs_program_fragment gPFBackground; - -rs_allocation gTGrid; -rs_mesh gTestMesh; - -rs_program_store gPFSBackground; - -float gRotate; - -rs_font gItalic; -rs_allocation gTextAlloc; - -rs_script gTransformRS; - -SgTransform *gGroup; -SgTransform *gRobot1; -int gRobot1Index; -SgTransform *gRobot2; -int gRobot2Index; - -SgTransform *gRootNode; - -void init() { - gRotate = 0.0f; -} - -int root(void) { - - gGroup->transforms[1].w += 0.5f; - gGroup->isDirty = 1; - - SgTransform *robot1Ptr = gRobot1 + gRobot1Index; - - robot1Ptr->transforms[1].w -= 1.5f; - robot1Ptr->isDirty = 1; - - SgTransform *robot2Ptr = gRobot2 + gRobot2Index; - robot2Ptr->transforms[1].w += 2.5f; - robot2Ptr->isDirty = 1; - - rsForEach(gTransformRS, gRootNode->children, gRootNode->children); - - rsgClearColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgClearDepth(1.0f); - - rsgBindProgramVertex(gPVBackground); - rs_matrix4x4 proj; - float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); - rsMatrixLoadPerspective(&proj, 30.0f, aspect, 0.1f, 100.0f); - rsgProgramVertexLoadProjectionMatrix(&proj); - - rsgBindProgramFragment(gPFBackground); - rsgBindProgramStore(gPFSBackground); - rsgBindTexture(gPFBackground, 0, gTGrid); - - rsgProgramVertexLoadModelMatrix(&robot1Ptr->globalMat); - rsgDrawMesh(gTestMesh); - - rsgProgramVertexLoadModelMatrix(&robot2Ptr->globalMat); - rsgDrawMesh(gTestMesh); - - //color(0.3f, 0.3f, 0.3f, 1.0f); - rsgDrawText("Renderscript transform test", 30, 695); - - rsgBindFont(gItalic); - rsgDrawText(gTextAlloc, 30, 730); - - return 10; -} diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/simplemodel.rs b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/simplemodel.rs deleted file mode 100644 index d3dd5b9fc8d1..000000000000 --- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/simplemodel.rs +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.modelviewer) - -#include "rs_graphics.rsh" - -rs_program_vertex gPVBackground; -rs_program_fragment gPFBackground; - -rs_allocation gTGrid; - -rs_program_store gPFSBackground; - -rs_font gItalic; -rs_allocation gTextAlloc; - -rs_matrix4x4 gPostureMatrix; - -typedef struct MeshInfo { - rs_mesh mMesh; - int mNumIndexSets; - float3 bBoxMin; - float3 bBoxMax; -} MeshInfo_t; - -MeshInfo_t *gMeshes; - -static float3 gLookAt; - -static float gRotateX; -static float gRotateY; -static float gZoom; - -static float gLastX; -static float gLastY; - -static float3 toFloat3(float x, float y, float z) { - float3 f; - f.x = x; - f.y = y; - f.z = z; - return f; -} - -void onActionDown(float x, float y) { - gLastX = x; - gLastY = y; -} - -void onActionScale(float scale) { - - gZoom *= 1.0f / scale; - gZoom = max(0.1f, min(gZoom, 500.0f)); -} - -void onActionMove(float x, float y) { - float dx = gLastX - x; - float dy = gLastY - y; - - if (fabs(dy) <= 2.0f) { - dy = 0.0f; - } - if (fabs(dx) <= 2.0f) { - dx = 0.0f; - } - - gRotateY -= dx; - if (gRotateY > 360) { - gRotateY -= 360; - } - if (gRotateY < 0) { - gRotateY += 360; - } - - gRotateX -= dy; - gRotateX = min(gRotateX, 80.0f); - gRotateX = max(gRotateX, -80.0f); - - gLastX = x; - gLastY = y; -} - -void init() { - gRotateX = 0.0f; - gRotateY = 0.0f; - gZoom = 50.0f; - gLookAt = 0.0f; - rsMatrixLoadIdentity(&gPostureMatrix); -} - -void updateMeshInfo() { - rs_allocation allMeshes = rsGetAllocation(gMeshes); - int size = rsAllocationGetDimX(allMeshes); - gLookAt = 0.0f; - float minX, minY, minZ, maxX, maxY, maxZ; - for (int i = 0; i < size; i++) { - MeshInfo_t *info = (MeshInfo_t*)rsGetElementAt(allMeshes, i); - rsgMeshComputeBoundingBox(info->mMesh, - &minX, &minY, &minZ, - &maxX, &maxY, &maxZ); - info->bBoxMin = toFloat3(minX, minY, minZ); - info->bBoxMax = toFloat3(maxX, maxY, maxZ); - gLookAt += (info->bBoxMin + info->bBoxMax)*0.5f; - } - gLookAt = gLookAt / (float)size; -} - -static void renderAllMeshes() { - rs_allocation allMeshes = rsGetAllocation(gMeshes); - int size = rsAllocationGetDimX(allMeshes); - gLookAt = 0.0f; - for (int i = 0; i < size; i++) { - MeshInfo_t *info = (MeshInfo_t*)rsGetElementAt(allMeshes, i); - rsgDrawMesh(info->mMesh); - } -} - -void drawDescription() { - uint height = rsgGetHeight(); - int left = 0, right = 0, top = 0, bottom = 0; - - rsgBindFont(gItalic); - - rsgMeasureText(gTextAlloc, &left, &right, &top, &bottom); - rsgDrawText(gTextAlloc, 2 -left, height - 2 + bottom); -} - -int root(void) { - - rsgClearColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgClearDepth(1.0f); - - rsgBindProgramVertex(gPVBackground); - rs_matrix4x4 proj; - float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); - rsMatrixLoadPerspective(&proj, 30.0f, aspect, 1.0f, 100.0f); - rsgProgramVertexLoadProjectionMatrix(&proj); - - rsgBindProgramFragment(gPFBackground); - rsgBindProgramStore(gPFSBackground); - rsgBindTexture(gPFBackground, 0, gTGrid); - - rs_matrix4x4 matrix; - rsMatrixLoadIdentity(&matrix); - // Position our models on the screen - rsMatrixTranslate(&matrix, gLookAt.x, gLookAt.y, gLookAt.z - gZoom); - rsMatrixMultiply(&matrix, &gPostureMatrix); - rsMatrixRotate(&matrix, gRotateX, 1.0f, 0.0f, 0.0f); - rsMatrixRotate(&matrix, gRotateY, 0.0f, 1.0f, 0.0f); - - rsgProgramVertexLoadModelMatrix(&matrix); - - renderAllMeshes(); - - drawDescription(); - - return 0; -} diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/transform.rs b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/transform.rs deleted file mode 100644 index 85c06306071d..000000000000 --- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/transform.rs +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright (C) 2009 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.modelviewer) - -#include "transform_def.rsh" - -rs_script transformScript; - -typedef struct { - int changed; - rs_matrix4x4 *mat; -} ParentData; - -static void appendTransformation(int type, float4 data, rs_matrix4x4 *mat) { - rs_matrix4x4 temp; - - switch (type) { - case TRANSFORM_TRANSLATE: - rsMatrixLoadTranslate(&temp, data.x, data.y, data.z); - break; - case TRANSFORM_ROTATE: - rsMatrixLoadRotate(&temp, data.w, data.x, data.y, data.z); - break; - case TRANSFORM_SCALE: - rsMatrixLoadScale(&temp, data.x, data.y, data.z); - break; - } - rsMatrixMultiply(mat, &temp); -} - -void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32_t y) { - - SgTransform *data = (SgTransform *)v_out; - const ParentData *parent = (const ParentData *)usrData; - - //rsDebug("Transform data", (int)data); - //rsDebug("Entering parent", (int)parent); - - rs_matrix4x4 *localMat = &data->localMat; - rs_matrix4x4 *globalMat = &data->globalMat; - - ParentData toChild; - toChild.changed = 0; - toChild.mat = globalMat; - - //rsDebug("Transform is dirty", data->isDirty); - - // Refresh matrices if dirty - if (data->isDirty) { - data->isDirty = 0; - toChild.changed = 1; - - // Reset our local matrix - rsMatrixLoadIdentity(localMat); - - for (int i = 0; i < 16; i ++) { - if (data->transformTypes[i] == TRANSFORM_NONE) { - break; - } - //rsDebug("Transform adding transformation", transformTypes[i]); - appendTransformation(data->transformTypes[i], data->transforms[i], localMat); - } - } - - //rsDebug("Transform checking parent", (int)0); - - if (parent) { - if (parent->changed) { - toChild.changed = 1; - - rsMatrixLoad(globalMat, parent->mat); - rsMatrixMultiply(globalMat, localMat); - } - } else { - rsMatrixLoad(globalMat, localMat); - } - - //rsDebug("Transform calling self with child ", (int)data->children.p); - if (data->children.p) { - rsForEach(transformScript, data->children, data->children, (void*)&toChild, sizeof(toChild)); - } -} diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/transform_def.rsh b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/transform_def.rsh deleted file mode 100644 index 24a36c1db28e..000000000000 --- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/transform_def.rsh +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (C) 2009 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.modelviewer) - -#define TRANSFORM_NONE 0 -#define TRANSFORM_TRANSLATE 1 -#define TRANSFORM_ROTATE 2 -#define TRANSFORM_SCALE 3 - -typedef struct __attribute__((packed, aligned(4))) SgTransform { - rs_matrix4x4 globalMat; - rs_matrix4x4 localMat; - - float4 transforms[16]; - int transformTypes[16]; - - int isDirty; - - rs_allocation children; - -} SgTransform; diff --git a/tests/RenderScriptTests/PerfTest/Android.mk b/tests/RenderScriptTests/PerfTest/Android.mk deleted file mode 100644 index e9ee771f0c68..000000000000 --- a/tests/RenderScriptTests/PerfTest/Android.mk +++ /dev/null @@ -1,31 +0,0 @@ -# -# Copyright (C) 2008 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := tests - -LOCAL_JAVA_LIBRARIES := android.test.runner - -LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src) -#LOCAL_STATIC_JAVA_LIBRARIES := android.renderscript - -LOCAL_SDK_VERSION := 17 - -LOCAL_PACKAGE_NAME := PerfTest - -include $(BUILD_PACKAGE) diff --git a/tests/RenderScriptTests/PerfTest/AndroidManifest.xml b/tests/RenderScriptTests/PerfTest/AndroidManifest.xml deleted file mode 100644 index cc6039685736..000000000000 --- a/tests/RenderScriptTests/PerfTest/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.perftest"> - - <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> - - <uses-sdk android:minSdkVersion="11" /> - <application android:label="PerfTest" - android:icon="@drawable/test_pattern"> - <uses-library android:name="android.test.runner" /> - <activity android:name="RsBench" - android:label="RsBenchmark"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - </application> - - <instrumentation android:name=".RsPerfTestRunner" - android:targetPackage="com.android.perftest" - android:label="Test runner for RsBench tests" - /> -</manifest> diff --git a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/checker.png b/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/checker.png Binary files differdeleted file mode 100644 index b631e1ee4ba6..000000000000 --- a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/checker.png +++ /dev/null diff --git a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/data.png b/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/data.png Binary files differdeleted file mode 100644 index 8e347146e331..000000000000 --- a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/data.png +++ /dev/null diff --git a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/flares.png b/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/flares.png Binary files differdeleted file mode 100644 index 3a5c970fc2b9..000000000000 --- a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/flares.png +++ /dev/null diff --git a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/globe.png b/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/globe.png Binary files differdeleted file mode 100644 index f9d61727cce8..000000000000 --- a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/globe.png +++ /dev/null diff --git a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/leaf.png b/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/leaf.png Binary files differdeleted file mode 100644 index 3cd37755f549..000000000000 --- a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/leaf.png +++ /dev/null diff --git a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/light1.jpg b/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/light1.jpg Binary files differdeleted file mode 100644 index 2f2f10ee8eb2..000000000000 --- a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/light1.jpg +++ /dev/null diff --git a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/space.jpg b/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/space.jpg Binary files differdeleted file mode 100644 index b61f6a3de5dd..000000000000 --- a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/space.jpg +++ /dev/null diff --git a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/test_pattern.png b/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/test_pattern.png Binary files differdeleted file mode 100644 index e7d145554c00..000000000000 --- a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/test_pattern.png +++ /dev/null diff --git a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/torusmap.png b/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/torusmap.png Binary files differdeleted file mode 100644 index 1e08f3b9ac3e..000000000000 --- a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/torusmap.png +++ /dev/null diff --git a/tests/RenderScriptTests/PerfTest/res/menu/loader_menu.xml b/tests/RenderScriptTests/PerfTest/res/menu/loader_menu.xml deleted file mode 100644 index 59a251dbf837..000000000000 --- a/tests/RenderScriptTests/PerfTest/res/menu/loader_menu.xml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ ---> - -<menu xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:id="@+id/benchmark_all" - android:title="@string/benchmark_all" /> - <item android:id="@+id/benchmark_one" - android:title="@string/benchmark_one" /> - <item android:id="@+id/debug_mode" - android:title="@string/debug_mode" /> -</menu> - diff --git a/tests/RenderScriptTests/PerfTest/res/raw/multitexf.glsl b/tests/RenderScriptTests/PerfTest/res/raw/multitexf.glsl deleted file mode 100644 index e492a477ff5b..000000000000 --- a/tests/RenderScriptTests/PerfTest/res/raw/multitexf.glsl +++ /dev/null @@ -1,13 +0,0 @@ -varying vec2 varTex0; - -void main() { - vec2 t0 = varTex0.xy; - lowp vec4 col0 = texture2D(UNI_Tex0, t0).rgba; - lowp vec4 col1 = texture2D(UNI_Tex1, t0*4.0).rgba; - lowp vec4 col2 = texture2D(UNI_Tex2, t0).rgba; - col0.xyz = col0.xyz*col1.xyz*1.5; - col0.xyz = mix(col0.xyz, col2.xyz, col2.w); - col0.w = 0.5; - gl_FragColor = col0; -} - diff --git a/tests/RenderScriptTests/PerfTest/res/raw/shader2f.glsl b/tests/RenderScriptTests/PerfTest/res/raw/shader2f.glsl deleted file mode 100644 index 5fc05f14a812..000000000000 --- a/tests/RenderScriptTests/PerfTest/res/raw/shader2f.glsl +++ /dev/null @@ -1,29 +0,0 @@ -varying vec3 varWorldPos; -varying vec3 varWorldNormal; -varying vec2 varTex0; - -void main() { - - vec3 V = normalize(-varWorldPos.xyz); - vec3 worldNorm = normalize(varWorldNormal); - - vec3 light0Vec = normalize(UNI_light0_Posision.xyz - varWorldPos); - vec3 light0R = -reflect(light0Vec, worldNorm); - float light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0) * UNI_light0_Diffuse; - float light0Spec = clamp(dot(light0R, V), 0.001, 1.0); - float light0_Specular = pow(light0Spec, UNI_light0_CosinePower) * UNI_light0_Specular; - - vec3 light1Vec = normalize(UNI_light1_Posision.xyz - varWorldPos); - vec3 light1R = reflect(light1Vec, worldNorm); - float light1_Diffuse = clamp(dot(worldNorm, light1Vec), 0.0, 1.0) * UNI_light1_Diffuse; - float light1Spec = clamp(dot(light1R, V), 0.001, 1.0); - float light1_Specular = pow(light1Spec, UNI_light1_CosinePower) * UNI_light1_Specular; - - vec2 t0 = varTex0.xy; - lowp vec4 col = texture2D(UNI_Tex0, t0).rgba; - col.xyz = col.xyz * (light0_Diffuse * UNI_light0_DiffuseColor.xyz + light1_Diffuse * UNI_light1_DiffuseColor.xyz); - col.xyz += light0_Specular * UNI_light0_SpecularColor.xyz; - col.xyz += light1_Specular * UNI_light1_SpecularColor.xyz; - gl_FragColor = col; -} - diff --git a/tests/RenderScriptTests/PerfTest/res/raw/shader2movev.glsl b/tests/RenderScriptTests/PerfTest/res/raw/shader2movev.glsl deleted file mode 100644 index a2c807e838cc..000000000000 --- a/tests/RenderScriptTests/PerfTest/res/raw/shader2movev.glsl +++ /dev/null @@ -1,21 +0,0 @@ -varying vec3 varWorldPos; -varying vec3 varWorldNormal; -varying vec2 varTex0; - -// This is where actual shader code begins -void main() { - vec4 objPos = ATTRIB_position; - vec3 oldPos = objPos.xyz; - objPos.xyz += 0.1*sin(objPos.xyz*2.0 + UNI_time); - objPos.xyz += 0.05*sin(objPos.xyz*4.0 + UNI_time*0.5); - objPos.xyz += 0.02*sin(objPos.xyz*7.0 + UNI_time*0.75); - vec4 worldPos = UNI_model * objPos; - gl_Position = UNI_proj * worldPos; - - mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz); - vec3 worldNorm = model3 * (ATTRIB_normal + oldPos - objPos.xyz); - - varWorldPos = worldPos.xyz; - varWorldNormal = worldNorm; - varTex0 = ATTRIB_texture0; -} diff --git a/tests/RenderScriptTests/PerfTest/res/raw/shader2v.glsl b/tests/RenderScriptTests/PerfTest/res/raw/shader2v.glsl deleted file mode 100644 index e6885a38aca0..000000000000 --- a/tests/RenderScriptTests/PerfTest/res/raw/shader2v.glsl +++ /dev/null @@ -1,17 +0,0 @@ -varying vec3 varWorldPos; -varying vec3 varWorldNormal; -varying vec2 varTex0; - -// This is where actual shader code begins -void main() { - vec4 objPos = ATTRIB_position; - vec4 worldPos = UNI_model * objPos; - gl_Position = UNI_proj * worldPos; - - mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz); - vec3 worldNorm = model3 * ATTRIB_normal; - - varWorldPos = worldPos.xyz; - varWorldNormal = worldNorm; - varTex0 = ATTRIB_texture0; -} diff --git a/tests/RenderScriptTests/PerfTest/res/raw/shaderf.glsl b/tests/RenderScriptTests/PerfTest/res/raw/shaderf.glsl deleted file mode 100644 index d56e203496c3..000000000000 --- a/tests/RenderScriptTests/PerfTest/res/raw/shaderf.glsl +++ /dev/null @@ -1,16 +0,0 @@ - -varying lowp float light0_Diffuse; -varying lowp float light0_Specular; -varying lowp float light1_Diffuse; -varying lowp float light1_Specular; -varying vec2 varTex0; - -void main() { - vec2 t0 = varTex0.xy; - lowp vec4 col = texture2D(UNI_Tex0, t0).rgba; - col.xyz = col.xyz * (light0_Diffuse * UNI_light0_DiffuseColor.xyz + light1_Diffuse * UNI_light1_DiffuseColor.xyz); - col.xyz += light0_Specular * UNI_light0_SpecularColor.xyz; - col.xyz += light1_Specular * UNI_light1_SpecularColor.xyz; - gl_FragColor = col; -} - diff --git a/tests/RenderScriptTests/PerfTest/res/raw/shaderv.glsl b/tests/RenderScriptTests/PerfTest/res/raw/shaderv.glsl deleted file mode 100644 index f7d01de384cb..000000000000 --- a/tests/RenderScriptTests/PerfTest/res/raw/shaderv.glsl +++ /dev/null @@ -1,30 +0,0 @@ -varying float light0_Diffuse; -varying float light0_Specular; -varying float light1_Diffuse; -varying float light1_Specular; -varying vec2 varTex0; - -// This is where actual shader code begins -void main() { - vec4 worldPos = UNI_model * ATTRIB_position; - gl_Position = UNI_proj * worldPos; - - mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz); - vec3 worldNorm = model3 * ATTRIB_normal; - vec3 V = normalize(-worldPos.xyz); - - vec3 light0Vec = normalize(UNI_light0_Posision.xyz - worldPos.xyz); - vec3 light0R = -reflect(light0Vec, worldNorm); - light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0) * UNI_light0_Diffuse; - float light0Spec = clamp(dot(light0R, V), 0.001, 1.0); - light0_Specular = pow(light0Spec, UNI_light0_CosinePower) * UNI_light0_Specular; - - vec3 light1Vec = normalize(UNI_light1_Posision.xyz - worldPos.xyz); - vec3 light1R = reflect(light1Vec, worldNorm); - light1_Diffuse = clamp(dot(worldNorm, light1Vec), 0.0, 1.0) * UNI_light1_Diffuse; - float light1Spec = clamp(dot(light1R, V), 0.001, 1.0); - light1_Specular = pow(light1Spec, UNI_light1_CosinePower) * UNI_light1_Specular; - - gl_PointSize = 1.0; - varTex0 = ATTRIB_texture0; -} diff --git a/tests/RenderScriptTests/PerfTest/res/raw/singletexf.glsl b/tests/RenderScriptTests/PerfTest/res/raw/singletexf.glsl deleted file mode 100644 index 83dfc7f4b1f5..000000000000 --- a/tests/RenderScriptTests/PerfTest/res/raw/singletexf.glsl +++ /dev/null @@ -1,8 +0,0 @@ -varying vec2 varTex0; - -void main() { - lowp vec3 col0 = texture2D(UNI_Tex0, varTex0).rgb; - gl_FragColor.xyz = col0; - gl_FragColor.w = 0.5; -} - diff --git a/tests/RenderScriptTests/PerfTest/res/raw/singletexfm.glsl b/tests/RenderScriptTests/PerfTest/res/raw/singletexfm.glsl deleted file mode 100644 index 656961c5b2e5..000000000000 --- a/tests/RenderScriptTests/PerfTest/res/raw/singletexfm.glsl +++ /dev/null @@ -1,8 +0,0 @@ -varying vec2 varTex0; - -void main() { - lowp vec3 col0 = texture2D(UNI_Tex0, varTex0).rgb; - gl_FragColor.xyz = col0 * UNI_modulate.rgb; - gl_FragColor.w = UNI_modulate.a; -} - diff --git a/tests/RenderScriptTests/PerfTest/res/raw/torus.a3d b/tests/RenderScriptTests/PerfTest/res/raw/torus.a3d Binary files differdeleted file mode 100644 index 0322b01be8a8..000000000000 --- a/tests/RenderScriptTests/PerfTest/res/raw/torus.a3d +++ /dev/null diff --git a/tests/RenderScriptTests/PerfTest/res/values/strings.xml b/tests/RenderScriptTests/PerfTest/res/values/strings.xml deleted file mode 100644 index ce9819e8d815..000000000000 --- a/tests/RenderScriptTests/PerfTest/res/values/strings.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ ---> - -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <skip /> - <string name="benchmark_all">Benchmark All</string> - <string name="benchmark_one">Benchmark One</string> - <string name="debug_mode">Debug Mode</string> -</resources> - diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/FillTest.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/FillTest.java deleted file mode 100644 index 41f664a0414b..000000000000 --- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/FillTest.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.perftest; - -import android.os.Environment; -import android.content.res.Resources; -import android.renderscript.*; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; - - -import android.util.Log; - - -public class FillTest implements RsBenchBaseTest{ - - private static final String TAG = "FillTest"; - private RenderScriptGL mRS; - private Resources mRes; - - // Custom shaders - private ProgramFragment mProgFragmentMultitex; - private ProgramFragment mProgFragmentSingletex; - private ProgramFragment mProgFragmentSingletexModulate; - private final BitmapFactory.Options mOptionsARGB = new BitmapFactory.Options(); - int mBenchmarkDimX; - int mBenchmarkDimY; - - private ScriptC_fill_test mFillScript; - ScriptField_TestScripts_s.Item[] mTests; - ScriptField_FillTestFragData_s mFragData; - - private final String[] mNames = { - "Fill screen 10x singletexture", - "Fill screen 10x 3tex multitexture", - "Fill screen 10x blended singletexture", - "Fill screen 10x blended 3tex multitexture", - "Fill screen 3x modulate blended singletexture", - "Fill screen 1x modulate blended singletexture", - }; - - public FillTest() { - mOptionsARGB.inScaled = false; - mOptionsARGB.inPreferredConfig = Bitmap.Config.ARGB_8888; - mBenchmarkDimX = 1280; - mBenchmarkDimY = 720; - } - - void addTest(int index, int testId, int blend, int quadCount) { - mTests[index] = new ScriptField_TestScripts_s.Item(); - mTests[index].testScript = mFillScript; - mTests[index].testName = Allocation.createFromString(mRS, - mNames[index], - Allocation.USAGE_SCRIPT); - mTests[index].debugName = RsBenchRS.createZeroTerminatedAlloc(mRS, - mNames[index], - Allocation.USAGE_SCRIPT); - - ScriptField_FillTestData_s.Item dataItem = new ScriptField_FillTestData_s.Item(); - dataItem.testId = testId; - dataItem.blend = blend; - dataItem.quadCount = quadCount; - ScriptField_FillTestData_s testData = new ScriptField_FillTestData_s(mRS, 1); - testData.set(dataItem, 0, true); - mTests[index].testData = testData.getAllocation(); - } - - public boolean init(RenderScriptGL rs, Resources res) { - mRS = rs; - mRes = res; - initCustomShaders(); - initFillScript(); - mTests = new ScriptField_TestScripts_s.Item[mNames.length]; - - int index = 0; - - addTest(index++, 1 /*testId*/, 0 /*blend*/, 10 /*quadCount*/); - addTest(index++, 0 /*testId*/, 0 /*blend*/, 10 /*quadCount*/); - addTest(index++, 1 /*testId*/, 1 /*blend*/, 10 /*quadCount*/); - addTest(index++, 0 /*testId*/, 1 /*blend*/, 10 /*quadCount*/); - addTest(index++, 2 /*testId*/, 1 /*blend*/, 3 /*quadCount*/); - addTest(index++, 2 /*testId*/, 1 /*blend*/, 1 /*quadCount*/); - - return true; - } - - public ScriptField_TestScripts_s.Item[] getTests() { - return mTests; - } - - public String[] getTestNames() { - return mNames; - } - - private void initCustomShaders() { - ProgramFragment.Builder pfbCustom = new ProgramFragment.Builder(mRS); - pfbCustom.setShader(mRes, R.raw.multitexf); - for (int texCount = 0; texCount < 3; texCount ++) { - pfbCustom.addTexture(Program.TextureType.TEXTURE_2D); - } - mProgFragmentMultitex = pfbCustom.create(); - - pfbCustom = new ProgramFragment.Builder(mRS); - pfbCustom.setShader(mRes, R.raw.singletexf); - pfbCustom.addTexture(Program.TextureType.TEXTURE_2D); - mProgFragmentSingletex = pfbCustom.create(); - - pfbCustom = new ProgramFragment.Builder(mRS); - pfbCustom.setShader(mRes, R.raw.singletexfm); - pfbCustom.addTexture(Program.TextureType.TEXTURE_2D); - mFragData = new ScriptField_FillTestFragData_s(mRS, 1); - pfbCustom.addConstant(mFragData.getType()); - mProgFragmentSingletexModulate = pfbCustom.create(); - mProgFragmentSingletexModulate.bindConstants(mFragData.getAllocation(), 0); - } - - private Allocation loadTextureARGB(int id) { - Bitmap b = BitmapFactory.decodeResource(mRes, id, mOptionsARGB); - return Allocation.createFromBitmap(mRS, b, - Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, - Allocation.USAGE_GRAPHICS_TEXTURE); - } - - private Allocation loadTextureRGB(int id) { - return Allocation.createFromBitmapResource(mRS, mRes, id, - Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, - Allocation.USAGE_GRAPHICS_TEXTURE); - } - - void initFillScript() { - mFillScript = new ScriptC_fill_test(mRS, mRes, R.raw.fill_test); - - ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS); - ProgramVertexFixedFunction progVertex = pvb.create(); - ProgramVertexFixedFunction.Constants PVA = new ProgramVertexFixedFunction.Constants(mRS); - ((ProgramVertexFixedFunction)progVertex).bindConstants(PVA); - Matrix4f proj = new Matrix4f(); - proj.loadOrthoWindow(mBenchmarkDimX, mBenchmarkDimY); - PVA.setProjection(proj); - mFillScript.set_gProgVertex(progVertex); - - mFillScript.set_gProgFragmentTexture(mProgFragmentSingletex); - mFillScript.set_gProgFragmentTextureModulate(mProgFragmentSingletexModulate); - mFillScript.set_gProgFragmentMultitex(mProgFragmentMultitex); - mFillScript.set_gProgStoreBlendNone(ProgramStore.BLEND_NONE_DEPTH_NONE(mRS)); - mFillScript.set_gProgStoreBlendAlpha(ProgramStore.BLEND_ALPHA_DEPTH_NONE(mRS)); - - mFillScript.set_gLinearClamp(Sampler.CLAMP_LINEAR(mRS)); - mFillScript.set_gLinearWrap(Sampler.WRAP_LINEAR(mRS)); - mFillScript.set_gTexTorus(loadTextureRGB(R.drawable.torusmap)); - mFillScript.set_gTexOpaque(loadTextureRGB(R.drawable.data)); - mFillScript.set_gTexTransparent(loadTextureARGB(R.drawable.leaf)); - mFillScript.set_gTexChecker(loadTextureRGB(R.drawable.checker)); - - mFillScript.bind_gFragData(mFragData); - } -} diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/MeshTest.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/MeshTest.java deleted file mode 100644 index cdb443514eb0..000000000000 --- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/MeshTest.java +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.perftest; - -import android.os.Environment; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.renderscript.*; -import android.renderscript.Element.DataKind; -import android.renderscript.Element.DataType; -import android.renderscript.Allocation.MipmapControl; -import android.renderscript.Program.TextureType; -import android.renderscript.RenderScript.RSMessageHandler; -import android.renderscript.Mesh.Primitive; -import android.renderscript.Matrix4f; -import android.renderscript.ProgramVertexFixedFunction; - -import android.util.Log; - - -public class MeshTest implements RsBenchBaseTest{ - - private static final String TAG = "MeshTest"; - private RenderScriptGL mRS; - private Resources mRes; - - int mBenchmarkDimX; - int mBenchmarkDimY; - - private Mesh m10by10Mesh; - private Mesh m100by100Mesh; - private Mesh mWbyHMesh; - - private ScriptC_mesh_test mGeoScript; - - private final BitmapFactory.Options mOptionsARGB = new BitmapFactory.Options(); - - ScriptField_TestScripts_s.Item[] mTests; - - private final String[] mNames = { - "Full screen mesh 10 by 10", - "Full screen mesh 100 by 100", - "Full screen mesh W / 4 by H / 4" - }; - - public MeshTest() { - mBenchmarkDimX = 1280; - mBenchmarkDimY = 720; - } - - void addTest(int index, int meshNum) { - mTests[index] = new ScriptField_TestScripts_s.Item(); - mTests[index].testScript = mGeoScript; - mTests[index].testName = Allocation.createFromString(mRS, - mNames[index], - Allocation.USAGE_SCRIPT); - mTests[index].debugName = RsBenchRS.createZeroTerminatedAlloc(mRS, - mNames[index], - Allocation.USAGE_SCRIPT); - - ScriptField_MeshTestData_s.Item dataItem = new ScriptField_MeshTestData_s.Item(); - dataItem.meshNum = meshNum; - ScriptField_MeshTestData_s testData = new ScriptField_MeshTestData_s(mRS, 1); - testData.set(dataItem, 0, true); - mTests[index].testData = testData.getAllocation(); - } - - public boolean init(RenderScriptGL rs, Resources res) { - mRS = rs; - mRes = res; - initGeoScript(); - mTests = new ScriptField_TestScripts_s.Item[mNames.length]; - - int index = 0; - addTest(index++, 0 /*meshNum*/); - addTest(index++, 1 /*meshNum*/); - addTest(index++, 2 /*meshNum*/); - - return true; - } - - public ScriptField_TestScripts_s.Item[] getTests() { - return mTests; - } - - public String[] getTestNames() { - return mNames; - } - - private Mesh getMbyNMesh(float width, float height, int wResolution, int hResolution) { - - Mesh.TriangleMeshBuilder tmb = new Mesh.TriangleMeshBuilder(mRS, - 2, Mesh.TriangleMeshBuilder.TEXTURE_0); - - for (int y = 0; y <= hResolution; y++) { - final float normalizedY = (float)y / hResolution; - final float yOffset = (normalizedY - 0.5f) * height; - for (int x = 0; x <= wResolution; x++) { - float normalizedX = (float)x / wResolution; - float xOffset = (normalizedX - 0.5f) * width; - tmb.setTexture((float)x % 2, (float)y % 2); - tmb.addVertex(xOffset, yOffset); - } - } - - for (int y = 0; y < hResolution; y++) { - final int curY = y * (wResolution + 1); - final int belowY = (y + 1) * (wResolution + 1); - for (int x = 0; x < wResolution; x++) { - int curV = curY + x; - int belowV = belowY + x; - tmb.addTriangle(curV, belowV, curV + 1); - tmb.addTriangle(belowV, belowV + 1, curV + 1); - } - } - - return tmb.create(true); - } - - private Allocation loadTextureRGB(int id) { - return Allocation.createFromBitmapResource(mRS, mRes, id, - Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, - Allocation.USAGE_GRAPHICS_TEXTURE); - } - - void initGeoScript() { - mGeoScript = new ScriptC_mesh_test(mRS, mRes, R.raw.mesh_test); - - ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS); - ProgramVertexFixedFunction progVertex = pvb.create(); - ProgramVertexFixedFunction.Constants PVA = new ProgramVertexFixedFunction.Constants(mRS); - ((ProgramVertexFixedFunction)progVertex).bindConstants(PVA); - Matrix4f proj = new Matrix4f(); - proj.loadOrthoWindow(mBenchmarkDimX, mBenchmarkDimY); - PVA.setProjection(proj); - - mGeoScript.set_gProgVertex(progVertex); - ProgramFragmentFixedFunction.Builder texBuilder = new ProgramFragmentFixedFunction.Builder(mRS); - texBuilder.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE, - ProgramFragmentFixedFunction.Builder.Format.RGBA, 0); - mGeoScript.set_gProgFragmentTexture(texBuilder.create()); - mGeoScript.set_gProgStoreBlendNone(ProgramStore.BLEND_NONE_DEPTH_NONE(mRS)); - - mGeoScript.set_gLinearClamp(Sampler.CLAMP_LINEAR(mRS)); - mGeoScript.set_gTexOpaque(loadTextureRGB(R.drawable.data)); - - m10by10Mesh = getMbyNMesh(mBenchmarkDimX, mBenchmarkDimY, 10, 10); - m100by100Mesh = getMbyNMesh(mBenchmarkDimX, mBenchmarkDimY, 100, 100); - mWbyHMesh= getMbyNMesh(mBenchmarkDimX, mBenchmarkDimY, mBenchmarkDimX/4, mBenchmarkDimY/4); - - mGeoScript.set_g10by10Mesh(m10by10Mesh); - mGeoScript.set_g100by100Mesh(m100by100Mesh); - mGeoScript.set_gWbyHMesh(mWbyHMesh); - } -} diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBench.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBench.java deleted file mode 100644 index 0dceafe73520..000000000000 --- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBench.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.perftest; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; - -import android.app.Activity; -import android.content.res.Configuration; -import android.content.Intent; -import android.net.Uri; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.provider.Settings.System; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.MenuInflater; -import android.view.View; -import android.view.Window; -import android.widget.Button; -import android.widget.ListView; -import android.app.AlertDialog; -import android.content.DialogInterface; -import android.widget.Toast; - -import java.lang.Runtime; - -public class RsBench extends Activity { - private final String TAG = "RsBench"; - public RsBenchView mView; - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - int iterations = 0; - Intent intent = getIntent(); - Uri uri = intent.getData(); - if (uri != null) { - // when lauched from instrumentation - String scheme = uri.getScheme(); - if ("iterations".equals(scheme)) { - iterations = Integer.parseInt(uri.getSchemeSpecificPart()); - } - } - // Create our Preview view and set it as the content of our - // Activity - mView = new RsBenchView(this); - setContentView(mView); - mView.setLoops(iterations); - } - - @Override - protected void onResume() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity loses focus - super.onResume(); - mView.resume(); - } - - @Override - protected void onPause() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity loses focus - super.onPause(); - mView.pause(); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.loader_menu, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle item selection - switch (item.getItemId()) { - case R.id.benchmark_all: - mView.setBenchmarkMode(-1); - mView.suspendRendering(false); - return true; - case R.id.benchmark_one: - mView.suspendRendering(true); - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle("Pick a Test"); - builder.setItems(mView.getTestNames(), - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int item) { - Toast.makeText(getApplicationContext(), - "Starting to benchmark: " + mView.getTestNames()[item], - Toast.LENGTH_SHORT).show(); - mView.setBenchmarkMode(item); - mView.suspendRendering(false); - } - }); - builder.show(); - return true; - case R.id.debug_mode: - mView.suspendRendering(true); - AlertDialog.Builder debugBuilder = new AlertDialog.Builder(this); - debugBuilder.setTitle("Pick a Test"); - debugBuilder.setItems(mView.getTestNames(), - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int item) { - Toast.makeText(getApplicationContext(), - "Switching to: " + mView.getTestNames()[item], - Toast.LENGTH_SHORT).show(); - mView.setDebugMode(item); - mView.suspendRendering(false); - } - }); - debugBuilder.show(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } -} diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchBaseTest.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchBaseTest.java deleted file mode 100644 index a9e1777f436a..000000000000 --- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchBaseTest.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.perftest; -import android.renderscript.*; -import android.content.res.Resources; - -interface RsBenchBaseTest { - boolean init(RenderScriptGL rs, Resources res); - - ScriptField_TestScripts_s.Item[] getTests(); - String[] getTestNames(); -} diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchRS.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchRS.java deleted file mode 100644 index 4ac7dd5a9b70..000000000000 --- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchRS.java +++ /dev/null @@ -1,328 +0,0 @@ -/* - * Copyright (C) 2010-2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.perftest; - -import java.io.Writer; -import java.io.BufferedWriter; -import java.io.FileWriter; -import java.io.IOException; -import java.io.File; -import java.io.FileOutputStream; -import java.io.OutputStream; - -import android.os.Environment; -import android.content.res.Resources; -import android.renderscript.*; -import android.renderscript.Element.DataKind; -import android.renderscript.Element.DataType; -import android.renderscript.Allocation.MipmapControl; -import android.renderscript.Program.TextureType; -import android.renderscript.RenderScript.RSMessageHandler; -import android.renderscript.Sampler.Value; -import android.renderscript.Mesh.Primitive; -import android.renderscript.Matrix4f; -import android.renderscript.ProgramVertexFixedFunction; - -import android.util.Log; - - -public class RsBenchRS { - - private static final String TAG = "RsBenchRS"; - int mWidth; - int mHeight; - int mLoops; - int mCurrentLoop; - - int mBenchmarkDimX; - int mBenchmarkDimY; - - public RsBenchRS() { - } - - public void init(RenderScriptGL rs, Resources res, int width, int height, int loops) { - mRS = rs; - mRes = res; - mWidth = width; - mHeight = height; - mMode = 0; - mLoops = loops; - mCurrentLoop = 0; - mBenchmarkDimX = 1280; - mBenchmarkDimY = 720; - initRS(); - } - - private boolean stopTest = false; - - private Resources mRes; - private RenderScriptGL mRS; - - private ProgramStore mProgStoreBlendNone; - private ProgramStore mProgStoreBlendAlpha; - - private ProgramFragment mProgFragmentTexture; - private ProgramFragment mProgFragmentColor; - - private ProgramVertex mProgVertex; - private ProgramVertexFixedFunction.Constants mPVA; - private ProgramVertexFixedFunction.Constants mPvProjectionAlloc; - - private ScriptC_rsbench mScript; - - ScriptField_TestScripts_s.Item[] mIndividualTests; - - int mMode; - - String[] mTestNames; - float[] mLocalTestResults; - - static Allocation createZeroTerminatedAlloc(RenderScript rs, - String str, - int usage) { - byte[] allocArray = null; - try { - allocArray = str.getBytes("UTF-8"); - byte[] allocArrayZero = new byte[allocArray.length + 1]; - System.arraycopy(allocArray, 0, allocArrayZero, 0, allocArray.length); - allocArrayZero[allocArrayZero.length - 1] = '\0'; - Allocation alloc = Allocation.createSized(rs, Element.U8(rs), - allocArrayZero.length, usage); - alloc.copyFrom(allocArrayZero); - return alloc; - } - catch (Exception e) { - throw new RSRuntimeException("Could not convert string to utf-8."); - } - - } - - void appendTests(RsBenchBaseTest testSet) { - ScriptField_TestScripts_s.Item[] newTests = testSet.getTests(); - if (mIndividualTests != null) { - ScriptField_TestScripts_s.Item[] combined; - combined = new ScriptField_TestScripts_s.Item[newTests.length + mIndividualTests.length]; - System.arraycopy(mIndividualTests, 0, combined, 0, mIndividualTests.length); - System.arraycopy(newTests, 0, combined, mIndividualTests.length, newTests.length); - mIndividualTests = combined; - } else { - mIndividualTests = newTests; - } - - String[] newNames = testSet.getTestNames(); - if (mTestNames != null) { - String[] combinedNames; - combinedNames = new String[newNames.length + mTestNames.length]; - System.arraycopy(mTestNames, 0, combinedNames, 0, mTestNames.length); - System.arraycopy(newNames, 0, combinedNames, mTestNames.length, newNames.length); - mTestNames = combinedNames; - } else { - mTestNames = newNames; - } - } - - void createTestAllocation() { - int numTests = mIndividualTests.length; - mLocalTestResults = new float[numTests]; - ScriptField_TestScripts_s allTests; - allTests = new ScriptField_TestScripts_s(mRS, numTests); - for (int i = 0; i < numTests; i ++) { - allTests.set(mIndividualTests[i], i, false); - } - allTests.copyAll(); - mScript.bind_gTestScripts(allTests); - } - - private void saveTestResults() { - String state = Environment.getExternalStorageState(); - if (!Environment.MEDIA_MOUNTED.equals(state)) { - Log.v(TAG, "sdcard is read only"); - return; - } - File sdCard = Environment.getExternalStorageDirectory(); - if (!sdCard.canWrite()) { - Log.v(TAG, "ssdcard is read only"); - return; - } - - File resultFile = new File(sdCard, "rsbench_result" + mCurrentLoop + ".csv"); - resultFile.setWritable(true, false); - - try { - BufferedWriter results = new BufferedWriter(new FileWriter(resultFile)); - for (int i = 0; i < mLocalTestResults.length; i ++) { - results.write(mTestNames[i] + ", " + mLocalTestResults[i] + ",\n"); - } - results.close(); - Log.v(TAG, "Saved results in: " + resultFile.getAbsolutePath()); - } catch (IOException e) { - Log.v(TAG, "Unable to write result file " + e.getMessage()); - } - } - - /** - * Create a message handler to handle message sent from the script - */ - protected RSMessageHandler mRsMessage = new RSMessageHandler() { - public void run() { - if (mID == mScript.get_RS_MSG_RESULTS_READY()) { - for (int i = 0; i < mLocalTestResults.length; i ++) { - mLocalTestResults[i] = Float.intBitsToFloat(mData[i]); - } - saveTestResults(); - if (mLoops > 0) { - mCurrentLoop ++; - mCurrentLoop = mCurrentLoop % mLoops; - } - return; - - } else if (mID == mScript.get_RS_MSG_TEST_DONE()) { - synchronized(this) { - stopTest = true; - this.notifyAll(); - } - return; - } else { - Log.v(TAG, "Perf test got unexpected message"); - return; - } - } - }; - - /** - * Wait for message from the script - */ - public boolean testIsFinished() { - synchronized(this) { - while (true) { - if (stopTest) { - return true; - } else { - try { - this.wait(60*1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - } - } - - private void initProgramFragment() { - - ProgramFragmentFixedFunction.Builder texBuilder = new ProgramFragmentFixedFunction.Builder(mRS); - texBuilder.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE, - ProgramFragmentFixedFunction.Builder.Format.RGBA, 0); - mProgFragmentTexture = texBuilder.create(); - mProgFragmentTexture.bindSampler(Sampler.CLAMP_LINEAR(mRS), 0); - - ProgramFragmentFixedFunction.Builder colBuilder = new ProgramFragmentFixedFunction.Builder(mRS); - colBuilder.setVaryingColor(false); - mProgFragmentColor = colBuilder.create(); - - mScript.set_gProgFragmentTexture(mProgFragmentTexture); - } - - private void initProgramVertex() { - ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS); - mProgVertex = pvb.create(); - - mPVA = new ProgramVertexFixedFunction.Constants(mRS); - ((ProgramVertexFixedFunction)mProgVertex).bindConstants(mPVA); - Matrix4f proj = new Matrix4f(); - proj.loadOrthoWindow(mBenchmarkDimX, mBenchmarkDimY); - mPVA.setProjection(proj); - - mScript.set_gProgVertex(mProgVertex); - } - - private int strlen(byte[] array) { - int count = 0; - while(count < array.length && array[count] != 0) { - count ++; - } - return count; - } - - public void setDebugMode(int num) { - mScript.invoke_setDebugMode(num); - } - - public void setBenchmarkMode(int benchNum) { - mScript.invoke_setBenchmarkMode(benchNum); - } - - public void pause(boolean pause) { - mScript.set_gPauseRendering(pause); - } - - private void initRS() { - - mScript = new ScriptC_rsbench(mRS, mRes, R.raw.rsbench); - mRS.bindRootScript(mScript); - - mRS.setMessageHandler(mRsMessage); - - mScript.set_gMaxLoops(mLoops); - - initProgramVertex(); - initProgramFragment(); - mScript.set_gFontSerif(Font.create(mRS, mRes, "serif", Font.Style.NORMAL, 8)); - - Type.Builder b = new Type.Builder(mRS, Element.RGBA_8888(mRS)); - b.setX(mBenchmarkDimX).setY(mBenchmarkDimY); - Allocation offscreen = Allocation.createTyped(mRS, - b.create(), - Allocation.USAGE_GRAPHICS_TEXTURE | - Allocation.USAGE_GRAPHICS_RENDER_TARGET); - mScript.set_gRenderBufferColor(offscreen); - - b = new Type.Builder(mRS, - Element.createPixel(mRS, DataType.UNSIGNED_16, - DataKind.PIXEL_DEPTH)); - b.setX(mBenchmarkDimX).setY(mBenchmarkDimY); - offscreen = Allocation.createTyped(mRS, - b.create(), - Allocation.USAGE_GRAPHICS_RENDER_TARGET); - mScript.set_gRenderBufferDepth(offscreen); - mScript.set_gLinearClamp(Sampler.CLAMP_LINEAR(mRS)); - - RsBenchBaseTest test = new TextTest(); - if (test.init(mRS, mRes)) { - appendTests(test); - } - test = new FillTest(); - if (test.init(mRS, mRes)) { - appendTests(test); - } - test = new MeshTest(); - if (test.init(mRS, mRes)) { - appendTests(test); - } - test = new TorusTest(); - if (test.init(mRS, mRes)) { - appendTests(test); - } - test = new UiTest(); - if (test.init(mRS, mRes)) { - appendTests(test); - } - createTestAllocation(); - - mScript.set_gLoadComplete(true); - } -} diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchTest.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchTest.java deleted file mode 100644 index 199200b71b5f..000000000000 --- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchTest.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.perftest; - -import android.app.Instrumentation; -import android.content.Context; -import android.content.Intent; -import android.net.Uri; -import android.test.ActivityInstrumentationTestCase2; -import android.test.TouchUtils; -import android.test.suitebuilder.annotation.LargeTest; -import android.util.Log; - -/** - * To run the test, please use command - * - * adb shell am instrument -w com.android.perftest/.RsPerfTestRunner - * - */ -public class RsBenchTest extends ActivityInstrumentationTestCase2<RsBench> { - private String TAG = "RsBenchTest"; - private int iterations = 0; - private RsBench mAct; - - public RsBenchTest() { - super(RsBench.class); - } - - @Override - public void setUp() throws Exception { - super.setUp(); - Instrumentation mInst = getInstrumentation(); - RsPerfTestRunner mRunner = (RsPerfTestRunner) getInstrumentation(); - iterations = mRunner.iterations; - Log.v(TAG, "Run benchmark for " + iterations + " iterations."); - - Uri data = Uri.fromParts("iterations", Integer.toString(iterations), null); - Intent intent = new Intent(Intent.ACTION_MAIN); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.setClassName("com.android.perftest", "com.android.perftest.RsBench"); - intent.setData(data); - mAct = (RsBench) mInst.startActivitySync(intent); - mInst.waitForIdleSync(); - - } - - @Override - public void tearDown() throws Exception { - mAct.finish(); - super.tearDown(); - } - - /** - * Run tests and wait until the test has been run for iterations. - */ - @LargeTest - public void testRsBench() { - if (mAct.mView.testIsFinished()) { - return; - } else { - fail("test didn't stop correctly"); - } - } -} diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchView.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchView.java deleted file mode 100644 index 124071e59590..000000000000 --- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchView.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.perftest; - -import java.io.Writer; -import java.util.ArrayList; -import java.util.concurrent.Semaphore; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; -import android.renderscript.RenderScriptGL; -import android.renderscript.RenderScript.RSMessageHandler; - -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; -import android.os.Handler; -import android.os.Message; -import android.util.AttributeSet; -import android.util.Log; -import android.view.Surface; -import android.view.SurfaceHolder; -import android.view.SurfaceView; -import android.view.KeyEvent; -import android.view.MotionEvent; - -public class RsBenchView extends RSSurfaceView { - - public RsBenchView(Context context) { - super(context); - } - - private RenderScriptGL mRS; - private RsBenchRS mRender; - private int mLoops = 0; - - public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { - super.surfaceChanged(holder, format, w, h); - if (mRS == null) { - RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); - sc.setDepth(16, 24); - mRS = createRenderScriptGL(sc); - mRS.setSurface(holder, w, h); - mRender = new RsBenchRS(); - Log.v("RsBenchView", "mLoops = " + mLoops); - mRender.init(mRS, getResources(), w, h, mLoops); - } - } - - @Override - protected void onDetachedFromWindow() { - if (mRS != null) { - mRS = null; - destroyRenderScriptGL(); - } - } - - /** - * Set the total number of loops the benchmark tests will run - * before the test results are collected. - */ - public void setLoops(int iterations) { - if (iterations > 0) { - mLoops = iterations; - } - } - - /** - * Wait for message from the script - */ - public boolean testIsFinished() { - return mRender.testIsFinished(); - } - - void setBenchmarkMode(int benchNum) { - mRender.setBenchmarkMode(benchNum); - } - - void suspendRendering(boolean pause) { - mRender.pause(pause); - } - - void setDebugMode(int num) { - mRender.setDebugMode(num); - } - - String[] getTestNames() { - return mRender.mTestNames; - } -} diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsPerfTestRunner.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsPerfTestRunner.java deleted file mode 100644 index 031af6a08c10..000000000000 --- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsPerfTestRunner.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.perftest; - -//import com.android.perftest.RsBenchTest; - -import android.os.Bundle; -import android.test.InstrumentationTestRunner; -import android.test.InstrumentationTestSuite; - -import junit.framework.TestSuite; - -/** - * Run the RenderScript Performance Test - * adb shell am instrument -w com.android.perftest/.RsPerfTestRunner - * - * with specified iterations: - * adb shell am instrument -e iterations <n> -w com.android.perftest/.RsPerfTestRunner - * - */ -public class RsPerfTestRunner extends InstrumentationTestRunner { - public int iterations = 10; - - @Override - public TestSuite getAllTests() { - TestSuite suite = new InstrumentationTestSuite(this); - suite.addTestSuite(RsBenchTest.class); - return suite; - } - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - String strValue = (String)icicle.get("iterations"); - if (strValue != null) { - int intValue = Integer.parseInt(strValue); - if (iterations > 0) { - iterations = intValue; - } - } - } -} diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/TextTest.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/TextTest.java deleted file mode 100644 index 3ca279280e06..000000000000 --- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/TextTest.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.perftest; - -import android.os.Environment; -import android.content.res.Resources; -import android.renderscript.*; -import android.util.DisplayMetrics; - -import android.util.Log; - - -public class TextTest implements RsBenchBaseTest{ - - private static final String TAG = "TextTest"; - private RenderScriptGL mRS; - private Resources mRes; - - private ScriptC_text_test mTextScript; - ScriptField_TestScripts_s.Item[] mTests; - - private final String[] mNames = { - "Fill screen with text 1 time", - "Fill screen with text 3 times", - "Fill screen with text 5 times" - }; - - public TextTest() { - } - - void addTest(int index, int fillNum) { - mTests[index] = new ScriptField_TestScripts_s.Item(); - mTests[index].testScript = mTextScript; - mTests[index].testName = Allocation.createFromString(mRS, - mNames[index], - Allocation.USAGE_SCRIPT); - mTests[index].debugName = RsBenchRS.createZeroTerminatedAlloc(mRS, - mNames[index], - Allocation.USAGE_SCRIPT); - - ScriptField_TextTestData_s.Item dataItem = new ScriptField_TextTestData_s.Item(); - dataItem.fillNum = fillNum; - ScriptField_TextTestData_s testData = new ScriptField_TextTestData_s(mRS, 1); - testData.set(dataItem, 0, true); - mTests[index].testData = testData.getAllocation(); - } - - public boolean init(RenderScriptGL rs, Resources res) { - mRS = rs; - mRes = res; - initTextScript(); - mTests = new ScriptField_TestScripts_s.Item[mNames.length]; - - int index = 0; - addTest(index++, 1 /*fillNum*/); - addTest(index++, 3 /*fillNum*/); - addTest(index++, 5 /*fillNum*/); - - return true; - } - - public ScriptField_TestScripts_s.Item[] getTests() { - return mTests; - } - - public String[] getTestNames() { - return mNames; - } - - void initTextScript() { - DisplayMetrics metrics = mRes.getDisplayMetrics(); - - mTextScript = new ScriptC_text_test(mRS, mRes, R.raw.text_test); - mTextScript.set_gFontSans(Font.create(mRS, mRes, "sans-serif", - Font.Style.NORMAL, 8.0f / metrics.density)); - mTextScript.set_gFontSerif(Font.create(mRS, mRes, "serif", - Font.Style.NORMAL, 8.0f / metrics.density)); - } -} diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/TorusTest.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/TorusTest.java deleted file mode 100644 index 5c9ecd5048dd..000000000000 --- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/TorusTest.java +++ /dev/null @@ -1,272 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.perftest; - -import android.os.Environment; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.renderscript.*; -import android.renderscript.Element.DataKind; -import android.renderscript.Element.DataType; -import android.renderscript.Allocation.MipmapControl; -import android.renderscript.Program.TextureType; -import android.renderscript.RenderScript.RSMessageHandler; -import android.renderscript.Mesh.Primitive; -import android.renderscript.Matrix4f; -import android.renderscript.ProgramVertexFixedFunction; - -import android.util.Log; - - -public class TorusTest implements RsBenchBaseTest{ - - private static final String TAG = "TorusTest"; - private RenderScriptGL mRS; - private Resources mRes; - - private ProgramStore mProgStoreBlendNoneDepth; - private ProgramStore mProgStoreBlendNone; - private ProgramStore mProgStoreBlendAlpha; - - private ProgramFragment mProgFragmentTexture; - private ProgramFragment mProgFragmentColor; - - private ProgramVertex mProgVertex; - private ProgramVertexFixedFunction.Constants mPVA; - private ProgramVertexFixedFunction.Constants mPvProjectionAlloc; - - // Custom shaders - private ProgramVertex mProgVertexCustom; - private ProgramFragment mProgFragmentCustom; - private ProgramFragment mProgFragmentMultitex; - private ProgramVertex mProgVertexPixelLight; - private ProgramVertex mProgVertexPixelLightMove; - private ProgramFragment mProgFragmentPixelLight; - private ScriptField_VertexShaderConstants_s mVSConst; - private ScriptField_FragentShaderConstants_s mFSConst; - private ScriptField_VertexShaderConstants3_s mVSConstPixel; - private ScriptField_FragentShaderConstants3_s mFSConstPixel; - - private Allocation mTexTorus; - private Mesh mTorus; - - private ScriptC_torus_test mTorusScript; - - private final BitmapFactory.Options mOptionsARGB = new BitmapFactory.Options(); - - ScriptField_TestScripts_s.Item[] mTests; - - private final String[] mNames = { - "Geo test 25.6k flat color", - "Geo test 51.2k flat color", - "Geo test 204.8k small tries flat color", - "Geo test 25.6k single texture", - "Geo test 51.2k single texture", - "Geo test 204.8k small tries single texture", - "Geo test 25.6k geo heavy vertex", - "Geo test 51.2k geo heavy vertex", - "Geo test 204.8k geo raster load heavy vertex", - "Geo test 25.6k heavy fragment", - "Geo test 51.2k heavy fragment", - "Geo test 204.8k small tries heavy fragment", - "Geo test 25.6k heavy fragment heavy vertex", - "Geo test 51.2k heavy fragment heavy vertex", - "Geo test 204.8k small tries heavy fragment heavy vertex" - }; - - public TorusTest() { - } - - void addTest(int index, int testId, int user1, int user2) { - mTests[index] = new ScriptField_TestScripts_s.Item(); - mTests[index].testScript = mTorusScript; - mTests[index].testName = Allocation.createFromString(mRS, - mNames[index], - Allocation.USAGE_SCRIPT); - mTests[index].debugName = RsBenchRS.createZeroTerminatedAlloc(mRS, - mNames[index], - Allocation.USAGE_SCRIPT); - - ScriptField_TorusTestData_s.Item dataItem = new ScriptField_TorusTestData_s.Item(); - dataItem.testId = testId; - dataItem.user1 = user1; - dataItem.user2 = user2; - ScriptField_TorusTestData_s testData = new ScriptField_TorusTestData_s(mRS, 1); - testData.set(dataItem, 0, true); - mTests[index].testData = testData.getAllocation(); - } - - public boolean init(RenderScriptGL rs, Resources res) { - mRS = rs; - mRes = res; - initCustomShaders(); - loadImages(); - initMesh(); - initTorusScript(); - mTests = new ScriptField_TestScripts_s.Item[mNames.length]; - - int index = 0; - addTest(index++, 0, 0 /*useTexture*/, 1 /*numMeshes*/); - addTest(index++, 0, 0 /*useTexture*/, 2 /*numMeshes*/); - addTest(index++, 0, 0 /*useTexture*/, 8 /*numMeshes*/); - addTest(index++, 0, 1 /*useTexture*/, 1 /*numMeshes*/); - addTest(index++, 0, 1 /*useTexture*/, 2 /*numMeshes*/); - addTest(index++, 0, 1 /*useTexture*/, 8 /*numMeshes*/); - - // Secont test - addTest(index++, 1, 1 /*numMeshes*/, 0 /*unused*/); - addTest(index++, 1, 2 /*numMeshes*/, 0 /*unused*/); - addTest(index++, 1, 8 /*numMeshes*/, 0 /*unused*/); - - // Third test - addTest(index++, 2, 1 /*numMeshes*/, 0 /*heavyVertex*/); - addTest(index++, 2, 2 /*numMeshes*/, 0 /*heavyVertex*/); - addTest(index++, 2, 8 /*numMeshes*/, 0 /*heavyVertex*/); - addTest(index++, 2, 1 /*numMeshes*/, 1 /*heavyVertex*/); - addTest(index++, 2, 2 /*numMeshes*/, 1 /*heavyVertex*/); - addTest(index++, 2, 8 /*numMeshes*/, 1 /*heavyVertex*/); - - return true; - } - - public ScriptField_TestScripts_s.Item[] getTests() { - return mTests; - } - - public String[] getTestNames() { - return mNames; - } - - private void initCustomShaders() { - mVSConst = new ScriptField_VertexShaderConstants_s(mRS, 1); - mFSConst = new ScriptField_FragentShaderConstants_s(mRS, 1); - - mVSConstPixel = new ScriptField_VertexShaderConstants3_s(mRS, 1); - mFSConstPixel = new ScriptField_FragentShaderConstants3_s(mRS, 1); - - // Initialize the shader builder - ProgramVertex.Builder pvbCustom = new ProgramVertex.Builder(mRS); - // Specify the resource that contains the shader string - pvbCustom.setShader(mRes, R.raw.shaderv); - // Use a script field to specify the input layout - pvbCustom.addInput(ScriptField_VertexShaderInputs_s.createElement(mRS)); - // Define the constant input layout - pvbCustom.addConstant(mVSConst.getAllocation().getType()); - mProgVertexCustom = pvbCustom.create(); - // Bind the source of constant data - mProgVertexCustom.bindConstants(mVSConst.getAllocation(), 0); - - ProgramFragment.Builder pfbCustom = new ProgramFragment.Builder(mRS); - // Specify the resource that contains the shader string - pfbCustom.setShader(mRes, R.raw.shaderf); - // Tell the builder how many textures we have - pfbCustom.addTexture(Program.TextureType.TEXTURE_2D); - // Define the constant input layout - pfbCustom.addConstant(mFSConst.getAllocation().getType()); - mProgFragmentCustom = pfbCustom.create(); - // Bind the source of constant data - mProgFragmentCustom.bindConstants(mFSConst.getAllocation(), 0); - - pvbCustom = new ProgramVertex.Builder(mRS); - pvbCustom.setShader(mRes, R.raw.shader2v); - pvbCustom.addInput(ScriptField_VertexShaderInputs_s.createElement(mRS)); - pvbCustom.addConstant(mVSConstPixel.getAllocation().getType()); - mProgVertexPixelLight = pvbCustom.create(); - mProgVertexPixelLight.bindConstants(mVSConstPixel.getAllocation(), 0); - - pvbCustom = new ProgramVertex.Builder(mRS); - pvbCustom.setShader(mRes, R.raw.shader2movev); - pvbCustom.addInput(ScriptField_VertexShaderInputs_s.createElement(mRS)); - pvbCustom.addConstant(mVSConstPixel.getAllocation().getType()); - mProgVertexPixelLightMove = pvbCustom.create(); - mProgVertexPixelLightMove.bindConstants(mVSConstPixel.getAllocation(), 0); - - pfbCustom = new ProgramFragment.Builder(mRS); - pfbCustom.setShader(mRes, R.raw.shader2f); - pfbCustom.addTexture(Program.TextureType.TEXTURE_2D); - pfbCustom.addConstant(mFSConstPixel.getAllocation().getType()); - mProgFragmentPixelLight = pfbCustom.create(); - mProgFragmentPixelLight.bindConstants(mFSConstPixel.getAllocation(), 0); - - pfbCustom = new ProgramFragment.Builder(mRS); - pfbCustom.setShader(mRes, R.raw.multitexf); - for (int texCount = 0; texCount < 3; texCount ++) { - pfbCustom.addTexture(Program.TextureType.TEXTURE_2D); - } - mProgFragmentMultitex = pfbCustom.create(); - - ProgramFragmentFixedFunction.Builder colBuilder = new ProgramFragmentFixedFunction.Builder(mRS); - colBuilder.setVaryingColor(false); - mProgFragmentColor = colBuilder.create(); - - ProgramFragmentFixedFunction.Builder texBuilder = new ProgramFragmentFixedFunction.Builder(mRS); - texBuilder.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE, - ProgramFragmentFixedFunction.Builder.Format.RGBA, 0); - mProgFragmentTexture = texBuilder.create(); - - ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS); - mProgVertex = pvb.create(); - ProgramVertexFixedFunction.Constants PVA = new ProgramVertexFixedFunction.Constants(mRS); - ((ProgramVertexFixedFunction)mProgVertex).bindConstants(PVA); - Matrix4f proj = new Matrix4f(); - proj.loadOrthoWindow(1280, 720); - PVA.setProjection(proj); - } - - private Allocation loadTextureRGB(int id) { - return Allocation.createFromBitmapResource(mRS, mRes, id, - Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, - Allocation.USAGE_GRAPHICS_TEXTURE); - } - - private void loadImages() { - mTexTorus = loadTextureRGB(R.drawable.torusmap); - } - - private void initMesh() { - FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.torus); - FileA3D.IndexEntry entry = model.getIndexEntry(0); - if (entry == null || entry.getEntryType() != FileA3D.EntryType.MESH) { - Log.e("rs", "could not load model"); - } else { - mTorus = (Mesh)entry.getObject(); - } - } - - void initTorusScript() { - mTorusScript = new ScriptC_torus_test(mRS, mRes, R.raw.torus_test); - mTorusScript.set_gCullFront(ProgramRaster.CULL_FRONT(mRS)); - mTorusScript.set_gCullBack(ProgramRaster.CULL_BACK(mRS)); - mTorusScript.set_gLinearClamp(Sampler.CLAMP_LINEAR(mRS)); - mTorusScript.set_gTorusMesh(mTorus); - mTorusScript.set_gTexTorus(mTexTorus); - mTorusScript.set_gProgVertexCustom(mProgVertexCustom); - mTorusScript.set_gProgFragmentCustom(mProgFragmentCustom); - mTorusScript.set_gProgVertexPixelLight(mProgVertexPixelLight); - mTorusScript.set_gProgVertexPixelLightMove(mProgVertexPixelLightMove); - mTorusScript.set_gProgFragmentPixelLight(mProgFragmentPixelLight); - mTorusScript.bind_gVSConstPixel(mVSConstPixel); - mTorusScript.bind_gFSConstPixel(mFSConstPixel); - mTorusScript.bind_gVSConstants(mVSConst); - mTorusScript.bind_gFSConstants(mFSConst); - mTorusScript.set_gProgVertex(mProgVertex); - mTorusScript.set_gProgFragmentTexture(mProgFragmentTexture); - mTorusScript.set_gProgFragmentColor(mProgFragmentColor); - mTorusScript.set_gProgStoreBlendNoneDepth(mProgStoreBlendNoneDepth); - } -} diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/UiTest.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/UiTest.java deleted file mode 100644 index c8b58b29f63f..000000000000 --- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/UiTest.java +++ /dev/null @@ -1,337 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.perftest; - -import android.os.Environment; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.renderscript.*; -import android.renderscript.Element.DataKind; -import android.renderscript.Element.DataType; -import android.renderscript.Allocation.MipmapControl; -import android.renderscript.Program.TextureType; -import android.renderscript.ProgramStore.DepthFunc; -import android.renderscript.ProgramStore.BlendSrcFunc; -import android.renderscript.ProgramStore.BlendDstFunc; -import android.renderscript.RenderScript.RSMessageHandler; -import android.renderscript.Mesh.Primitive; -import android.renderscript.Matrix4f; -import android.renderscript.ProgramVertexFixedFunction; - -import android.util.Log; - - -public class UiTest implements RsBenchBaseTest{ - - private static final String TAG = "UiTest"; - private static final String SAMPLE_TEXT = "Bench Test"; - private static final String LIST_TEXT = - "This is a sample list of text to show in the list view"; - private static int PARTICLES_COUNT = 12000; - - private RenderScriptGL mRS; - private Resources mRes; - - Font mFontSans; - - private ScriptField_ListAllocs_s mTextureAllocs; - private ScriptField_ListAllocs_s mSampleTextAllocs; - private ScriptField_ListAllocs_s mSampleListViewAllocs; - private ScriptField_VpConsts mPvStarAlloc; - private ProgramVertexFixedFunction.Constants mPvProjectionAlloc; - - private Mesh mSingleMesh; - private Mesh mParticlesMesh; - - private ScriptC_ui_test mUiScript; - - private final BitmapFactory.Options mOptionsARGB = new BitmapFactory.Options(); - - ScriptField_TestScripts_s.Item[] mTests; - - private final String[] mNames = { - "UI test with icon display 10 by 10", - "UI test with icon display 100 by 100", - "UI test with image and text display 3 pages", - "UI test with image and text display 5 pages", - "UI test with list view", - "UI test with live wallpaper" - }; - - public UiTest() { - } - - void addTest(int index, int testId, int user1, int user2, int user3) { - mTests[index] = new ScriptField_TestScripts_s.Item(); - mTests[index].testScript = mUiScript; - mTests[index].testName = Allocation.createFromString(mRS, - mNames[index], - Allocation.USAGE_SCRIPT); - mTests[index].debugName = RsBenchRS.createZeroTerminatedAlloc(mRS, - mNames[index], - Allocation.USAGE_SCRIPT); - - ScriptField_UiTestData_s.Item dataItem = new ScriptField_UiTestData_s.Item(); - dataItem.testId = testId; - dataItem.user1 = user1; - dataItem.user2 = user2; - dataItem.user3 = user3; - ScriptField_UiTestData_s testData = new ScriptField_UiTestData_s(mRS, 1); - testData.set(dataItem, 0, true); - mTests[index].testData = testData.getAllocation(); - } - - public boolean init(RenderScriptGL rs, Resources res) { - mRS = rs; - mRes = res; - mFontSans = Font.create(mRS, mRes, "sans-serif", Font.Style.NORMAL, 8); - mSingleMesh = getSingleMesh(1, 1); // a unit size mesh - - initUiScript(); - mTests = new ScriptField_TestScripts_s.Item[mNames.length]; - - int index = 0; - - addTest(index++, 0, 0 /*meshMode*/, 0 /*unused*/, 0 /*unused*/); - addTest(index++, 0, 1 /*meshMode*/, 0 /*unused*/, 0 /*unused*/); - addTest(index++, 1, 7 /*wResolution*/, 5 /*hResolution*/, 0 /*meshMode*/); - addTest(index++, 1, 7 /*wResolution*/, 5 /*hResolution*/, 1 /*meshMode*/); - addTest(index++, 2, 0 /*unused*/, 0 /*unused*/, 0 /*unused*/); - addTest(index++, 3, 7 /*wResolution*/, 5 /*hResolution*/, 0 /*unused*/); - - return true; - } - - public ScriptField_TestScripts_s.Item[] getTests() { - return mTests; - } - - public String[] getTestNames() { - return mNames; - } - - private Allocation loadTextureRGB(int id) { - return Allocation.createFromBitmapResource(mRS, mRes, id, - Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, - Allocation.USAGE_GRAPHICS_TEXTURE); - } - - private Allocation loadTextureARGB(int id) { - Bitmap b = BitmapFactory.decodeResource(mRes, id, mOptionsARGB); - return Allocation.createFromBitmap(mRS, b, - Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, - Allocation.USAGE_GRAPHICS_TEXTURE); - } - - private void createParticlesMesh() { - ScriptField_Particle p = new ScriptField_Particle(mRS, PARTICLES_COUNT); - - final Mesh.AllocationBuilder meshBuilder = new Mesh.AllocationBuilder(mRS); - meshBuilder.addVertexAllocation(p.getAllocation()); - final int vertexSlot = meshBuilder.getCurrentVertexTypeIndex(); - meshBuilder.addIndexSetType(Primitive.POINT); - mParticlesMesh = meshBuilder.create(); - - mUiScript.set_gParticlesMesh(mParticlesMesh); - mUiScript.bind_Particles(p); - } - - /** - * Create a mesh with a single quad for the given width and height. - */ - private Mesh getSingleMesh(float width, float height) { - Mesh.TriangleMeshBuilder tmb = new Mesh.TriangleMeshBuilder(mRS, - 2, Mesh.TriangleMeshBuilder.TEXTURE_0); - float xOffset = width/2; - float yOffset = height/2; - tmb.setTexture(0, 0); - tmb.addVertex(-1.0f * xOffset, -1.0f * yOffset); - tmb.setTexture(1, 0); - tmb.addVertex(xOffset, -1.0f * yOffset); - tmb.setTexture(1, 1); - tmb.addVertex(xOffset, yOffset); - tmb.setTexture(0, 1); - tmb.addVertex(-1.0f * xOffset, yOffset); - tmb.addTriangle(0, 3, 1); - tmb.addTriangle(1, 3, 2); - return tmb.create(true); - } - - private Matrix4f getProjectionNormalized(int w, int h) { - // range -1,1 in the narrow axis at z = 0. - Matrix4f m1 = new Matrix4f(); - Matrix4f m2 = new Matrix4f(); - - if(w > h) { - float aspect = ((float)w) / h; - m1.loadFrustum(-aspect,aspect, -1,1, 1,100); - } else { - float aspect = ((float)h) / w; - m1.loadFrustum(-1,1, -aspect,aspect, 1,100); - } - - m2.loadRotate(180, 0, 1, 0); - m1.loadMultiply(m1, m2); - - m2.loadScale(-2, 2, 1); - m1.loadMultiply(m1, m2); - - m2.loadTranslate(0, 0, 2); - m1.loadMultiply(m1, m2); - return m1; - } - - private void updateProjectionMatrices() { - Matrix4f projNorm = getProjectionNormalized(1280, 720); - ScriptField_VpConsts.Item i = new ScriptField_VpConsts.Item(); - i.Proj = projNorm; - i.MVP = projNorm; - mPvStarAlloc.set(i, 0, true); - mPvProjectionAlloc.setProjection(projNorm); - } - - void initUiScript() { - mUiScript = new ScriptC_ui_test(mRS, mRes, R.raw.ui_test); - - ProgramFragmentFixedFunction.Builder colBuilder = new ProgramFragmentFixedFunction.Builder(mRS); - colBuilder.setVaryingColor(false); - ProgramFragmentFixedFunction.Builder texBuilder = new ProgramFragmentFixedFunction.Builder(mRS); - texBuilder.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE, - ProgramFragmentFixedFunction.Builder.Format.RGBA, 0); - - ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS); - ProgramVertexFixedFunction progVertex = pvb.create(); - ProgramVertexFixedFunction.Constants PVA = new ProgramVertexFixedFunction.Constants(mRS); - ((ProgramVertexFixedFunction)progVertex).bindConstants(PVA); - Matrix4f proj = new Matrix4f(); - proj.loadOrthoWindow(1280, 720); - PVA.setProjection(proj); - - mUiScript.set_gProgVertex(progVertex); - mUiScript.set_gProgFragmentColor(colBuilder.create()); - mUiScript.set_gProgFragmentTexture(texBuilder.create()); - mUiScript.set_gProgStoreBlendAlpha(ProgramStore.BLEND_ALPHA_DEPTH_NONE(mRS)); - - mUiScript.set_gLinearClamp(Sampler.CLAMP_LINEAR(mRS)); - - mUiScript.set_gTexTorus(loadTextureRGB(R.drawable.torusmap)); - mUiScript.set_gTexOpaque(loadTextureRGB(R.drawable.data)); - mUiScript.set_gTexGlobe(loadTextureRGB(R.drawable.globe)); - mUiScript.set_gSingleMesh(mSingleMesh); - - // For GALAXY - ProgramStore.Builder psb = new ProgramStore.Builder(mRS); - psb.setBlendFunc(BlendSrcFunc.ONE, BlendDstFunc.ZERO); - mRS.bindProgramStore(psb.create()); - - psb.setBlendFunc(BlendSrcFunc.SRC_ALPHA, BlendDstFunc.ONE); - mUiScript.set_gPSLights(psb.create()); - - // For Galaxy live wallpaper drawing - ProgramFragmentFixedFunction.Builder builder = new ProgramFragmentFixedFunction.Builder(mRS); - builder.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE, - ProgramFragmentFixedFunction.Builder.Format.RGB, 0); - ProgramFragment pfb = builder.create(); - pfb.bindSampler(Sampler.WRAP_NEAREST(mRS), 0); - mUiScript.set_gPFBackground(pfb); - - builder = new ProgramFragmentFixedFunction.Builder(mRS); - builder.setPointSpriteTexCoordinateReplacement(true); - builder.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.MODULATE, - ProgramFragmentFixedFunction.Builder.Format.RGBA, 0); - builder.setVaryingColor(true); - ProgramFragment pfs = builder.create(); - pfs.bindSampler(Sampler.WRAP_LINEAR_MIP_LINEAR(mRS), 0); - mUiScript.set_gPFStars(pfs); - - mTextureAllocs = new ScriptField_ListAllocs_s(mRS, 100); - for (int i = 0; i < 100; i++) { - ScriptField_ListAllocs_s.Item texElem = new ScriptField_ListAllocs_s.Item(); - texElem.item = loadTextureRGB(R.drawable.globe); - mTextureAllocs.set(texElem, i, false); - } - mTextureAllocs.copyAll(); - mUiScript.bind_gTexList100(mTextureAllocs); - - mSampleTextAllocs = new ScriptField_ListAllocs_s(mRS, 100); - for (int i = 0; i < 100; i++) { - ScriptField_ListAllocs_s.Item textElem = new ScriptField_ListAllocs_s.Item(); - textElem.item = Allocation.createFromString(mRS, SAMPLE_TEXT, Allocation.USAGE_SCRIPT); - mSampleTextAllocs.set(textElem, i, false); - } - mSampleTextAllocs.copyAll(); - mUiScript.bind_gSampleTextList100(mSampleTextAllocs); - - mSampleListViewAllocs = new ScriptField_ListAllocs_s(mRS, 1000); - for (int i = 0; i < 1000; i++) { - ScriptField_ListAllocs_s.Item textElem = new ScriptField_ListAllocs_s.Item(); - textElem.item = Allocation.createFromString(mRS, LIST_TEXT, Allocation.USAGE_SCRIPT); - mSampleListViewAllocs.set(textElem, i, false); - } - mSampleListViewAllocs.copyAll(); - mUiScript.bind_gListViewText(mSampleListViewAllocs); - - // For galaxy live wallpaper - mPvStarAlloc = new ScriptField_VpConsts(mRS, 1); - mUiScript.bind_vpConstants(mPvStarAlloc); - mPvProjectionAlloc = new ProgramVertexFixedFunction.Constants(mRS); - updateProjectionMatrices(); - - pvb = new ProgramVertexFixedFunction.Builder(mRS); - ProgramVertex pvbp = pvb.create(); - ((ProgramVertexFixedFunction)pvbp).bindConstants(mPvProjectionAlloc); - mUiScript.set_gPVBkProj(pvbp); - - createParticlesMesh(); - - ProgramVertex.Builder sb = new ProgramVertex.Builder(mRS); - String t = "varying vec4 varColor;\n" + - "varying vec2 varTex0;\n" + - "void main() {\n" + - " float dist = ATTRIB_position.y;\n" + - " float angle = ATTRIB_position.x;\n" + - " float x = dist * sin(angle);\n" + - " float y = dist * cos(angle) * 0.892;\n" + - " float p = dist * 5.5;\n" + - " float s = cos(p);\n" + - " float t = sin(p);\n" + - " vec4 pos;\n" + - " pos.x = t * x + s * y;\n" + - " pos.y = s * x - t * y;\n" + - " pos.z = ATTRIB_position.z;\n" + - " pos.w = 1.0;\n" + - " gl_Position = UNI_MVP * pos;\n" + - " gl_PointSize = ATTRIB_color.a * 10.0;\n" + - " varColor.rgb = ATTRIB_color.rgb;\n" + - " varColor.a = 1.0;\n" + - "}\n"; - sb.setShader(t); - sb.addInput(mParticlesMesh.getVertexAllocation(0).getType().getElement()); - sb.addConstant(mPvStarAlloc.getType()); - ProgramVertex pvs = sb.create(); - pvs.bindConstants(mPvStarAlloc.getAllocation(), 0); - mUiScript.set_gPVStars(pvs); - - // For Galaxy live wallpaper - mUiScript.set_gTSpace(loadTextureRGB(R.drawable.space)); - mUiScript.set_gTLight1(loadTextureRGB(R.drawable.light1)); - mUiScript.set_gTFlares(loadTextureARGB(R.drawable.flares)); - - mUiScript.set_gFontSans(mFontSans); - } -} diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/fill_test.rs b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/fill_test.rs deleted file mode 100644 index 281f830d328a..000000000000 --- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/fill_test.rs +++ /dev/null @@ -1,158 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.perftest) - -#include "rs_graphics.rsh" -#include "subtest_def.rsh" - -rs_program_vertex gProgVertex; -rs_program_fragment gProgFragmentTexture; -rs_program_fragment gProgFragmentTextureModulate; -rs_program_fragment gProgFragmentMultitex; - -rs_program_store gProgStoreBlendNone; -rs_program_store gProgStoreBlendAlpha; - -rs_allocation gTexOpaque; -rs_allocation gTexTorus; -rs_allocation gTexTransparent; -rs_allocation gTexChecker; - -rs_sampler gLinearClamp; -rs_sampler gLinearWrap; - -typedef struct FillTestData_s { - int testId; - int blend; - int quadCount; -} FillTestData; -FillTestData *gData; - -typedef struct FillTestFragData_s { - float4 modulate; -} FillTestFragData; -FillTestFragData *gFragData; - -static float gDt = 0.0f; - -void init() { -} - -static int gRenderSurfaceW = 1280; -static int gRenderSurfaceH = 720; - -static void bindProgramVertexOrtho() { - // Default vertex shader - rsgBindProgramVertex(gProgVertex); - // Setup the projection matrix - rs_matrix4x4 proj; - rsMatrixLoadOrtho(&proj, 0, gRenderSurfaceW, gRenderSurfaceH, 0, -500, 500); - rsgProgramVertexLoadProjectionMatrix(&proj); -} - -static void displaySingletexFill(bool blend, int quadCount, bool modulate) { - bindProgramVertexOrtho(); - rs_matrix4x4 matrix; - rsMatrixLoadIdentity(&matrix); - rsgProgramVertexLoadModelMatrix(&matrix); - - // Fragment shader with texture - if (!blend) { - rsgBindProgramStore(gProgStoreBlendNone); - } else { - rsgBindProgramStore(gProgStoreBlendAlpha); - } - if (modulate) { - rsgBindProgramFragment(gProgFragmentTextureModulate); - rsgBindSampler(gProgFragmentTextureModulate, 0, gLinearClamp); - rsgBindTexture(gProgFragmentTextureModulate, 0, gTexOpaque); - - gFragData->modulate.r = 0.8f; - gFragData->modulate.g = 0.7f; - gFragData->modulate.b = 0.8f; - gFragData->modulate.a = 0.5f; - rsgAllocationSyncAll(rsGetAllocation(gFragData)); - } else { - rsgBindProgramFragment(gProgFragmentTexture); - rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp); - rsgBindTexture(gProgFragmentTexture, 0, gTexOpaque); - } - - for (int i = 0; i < quadCount; i ++) { - float startX = 5 * i, startY = 5 * i; - float width = gRenderSurfaceW - startX, height = gRenderSurfaceH - startY; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 0, - startX, startY + height, 0, 0, 1, - startX + width, startY + height, 0, 1, 1, - startX + width, startY, 0, 1, 0); - } -} - -static void displayMultitextureSample(bool blend, int quadCount) { - bindProgramVertexOrtho(); - rs_matrix4x4 matrix; - rsMatrixLoadIdentity(&matrix); - rsgProgramVertexLoadModelMatrix(&matrix); - - // Fragment shader with texture - if (!blend) { - rsgBindProgramStore(gProgStoreBlendNone); - } else { - rsgBindProgramStore(gProgStoreBlendAlpha); - } - rsgBindProgramFragment(gProgFragmentMultitex); - rsgBindSampler(gProgFragmentMultitex, 0, gLinearClamp); - rsgBindSampler(gProgFragmentMultitex, 1, gLinearWrap); - rsgBindSampler(gProgFragmentMultitex, 2, gLinearClamp); - rsgBindTexture(gProgFragmentMultitex, 0, gTexChecker); - rsgBindTexture(gProgFragmentMultitex, 1, gTexTorus); - rsgBindTexture(gProgFragmentMultitex, 2, gTexTransparent); - - for (int i = 0; i < quadCount; i ++) { - float startX = 10 * i, startY = 10 * i; - float width = gRenderSurfaceW - startX, height = gRenderSurfaceH - startY; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 0, - startX, startY + height, 0, 0, 1, - startX + width, startY + height, 0, 1, 1, - startX + width, startY, 0, 1, 0); - } -} - - -void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32_t y) { - TestData *testData = (TestData*)usrData; - gRenderSurfaceW = testData->renderSurfaceW; - gRenderSurfaceH = testData->renderSurfaceH; - gDt = testData->dt; - - gData = (FillTestData*)v_in; - - switch(gData->testId) { - case 0: - displayMultitextureSample(gData->blend == 1 ? true : false, gData->quadCount); - break; - case 1: - displaySingletexFill(gData->blend == 1 ? true : false, gData->quadCount, false); - break; - case 2: - displaySingletexFill(gData->blend == 1 ? true : false, gData->quadCount, true); - break; - default: - rsDebug("Wrong test number", 0); - break; - } -} diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/mesh_test.rs b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/mesh_test.rs deleted file mode 100644 index d7e4857208c9..000000000000 --- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/mesh_test.rs +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.perftest) - -#include "rs_graphics.rsh" -#include "shader_def.rsh" -#include "subtest_def.rsh" - -rs_program_vertex gProgVertex; -rs_program_fragment gProgFragmentTexture; - -rs_program_store gProgStoreBlendNone; - -rs_allocation gTexOpaque; - -rs_mesh g10by10Mesh; -rs_mesh g100by100Mesh; -rs_mesh gWbyHMesh; - -rs_sampler gLinearClamp; -static int gRenderSurfaceW; -static int gRenderSurfaceH; - -static float gDt = 0; - -typedef struct MeshTestData_s { - int meshNum; -} MeshTestData; -MeshTestData *gData; - -void init() { -} - -static void bindProgramVertexOrtho() { - // Default vertex shader - rsgBindProgramVertex(gProgVertex); - // Setup the projection matrix - rs_matrix4x4 proj; - rsMatrixLoadOrtho(&proj, 0, gRenderSurfaceW, gRenderSurfaceH, 0, -500, 500); - rsgProgramVertexLoadProjectionMatrix(&proj); -} - -static void displayMeshSamples(int meshNum) { - - bindProgramVertexOrtho(); - rs_matrix4x4 matrix; - rsMatrixLoadTranslate(&matrix, gRenderSurfaceW/2, gRenderSurfaceH/2, 0); - rsgProgramVertexLoadModelMatrix(&matrix); - - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendNone); - rsgBindProgramFragment(gProgFragmentTexture); - rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp); - - rsgBindTexture(gProgFragmentTexture, 0, gTexOpaque); - - if (meshNum == 0) { - rsgDrawMesh(g10by10Mesh); - } else if (meshNum == 1) { - rsgDrawMesh(g100by100Mesh); - } else if (meshNum == 2) { - rsgDrawMesh(gWbyHMesh); - } -} - -void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32_t y) { - TestData *testData = (TestData*)usrData; - gRenderSurfaceW = testData->renderSurfaceW; - gRenderSurfaceH = testData->renderSurfaceH; - gDt = testData->dt; - - gData = (MeshTestData*)v_in; - - displayMeshSamples(gData->meshNum); -} diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/rsbench.rs b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/rsbench.rs deleted file mode 100644 index 43cf4e0634a8..000000000000 --- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/rsbench.rs +++ /dev/null @@ -1,270 +0,0 @@ -// Copyright (C) 2010-2011 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.perftest) - -#include "rs_graphics.rsh" -#include "shader_def.rsh" -#include "subtest_def.rsh" - -/* Message sent from script to renderscript */ -const int RS_MSG_TEST_DONE = 100; -const int RS_MSG_RESULTS_READY = 101; - -static const int gMaxModes = 64; -int gMaxLoops = 1; -int gDisplayMode = 1; - -// Allocation to write the results into -static float gResultBuffer[gMaxModes]; - -rs_font gFontSerif; -rs_sampler gLinearClamp; - -rs_program_vertex gProgVertex; -rs_program_fragment gProgFragmentTexture; - -rs_allocation gRenderBufferColor; -rs_allocation gRenderBufferDepth; - -VertexShaderInputs *gVSInputs; - -typedef struct TestScripts_s { - rs_allocation testData; - rs_allocation testName; - rs_allocation debugName; - rs_script testScript; -} TestScripts; -TestScripts *gTestScripts; - -bool gLoadComplete = false; -bool gPauseRendering = false; - -static float gDt = 0; - -void init() { -} - -static int gRenderSurfaceW; -static int gRenderSurfaceH; - -static void fillSurfaceParams(TestData *testData) { - testData->renderSurfaceW = gRenderSurfaceW; - testData->renderSurfaceH = gRenderSurfaceH; - testData->dt = gDt; -} - -static void setupOffscreenTarget() { - rsgBindColorTarget(gRenderBufferColor, 0); - rsgBindDepthTarget(gRenderBufferDepth); -} - -static void bindProgramVertexOrtho() { - // Default vertex shader - rsgBindProgramVertex(gProgVertex); - // Setup the projection matrix - rs_matrix4x4 proj; - rsMatrixLoadOrtho(&proj, 0, gRenderSurfaceW, gRenderSurfaceH, 0, -500, 500); - rsgProgramVertexLoadProjectionMatrix(&proj); -} - -static void runSubTest(int index) { - TestData testData; - fillSurfaceParams(&testData); - - rs_allocation null_alloc = {0}; - rsForEach(gTestScripts[index].testScript, - gTestScripts[index].testData, - null_alloc, - &testData, - sizeof(testData)); -} - - -static bool checkInit() { - - static int countdown = 3; - - // Perform all the uploads so we only measure rendered time - if(countdown > 1) { - int testCount = rsAllocationGetDimX(rsGetAllocation(gTestScripts)); - for(int i = 0; i < testCount; i ++) { - rsgClearColor(0.2f, 0.2f, 0.2f, 0.0f); - runSubTest(i); - rsgFinish(); - } - countdown --; - rsgClearColor(0.2f, 0.2f, 0.2f, 0.0f); - - rsgFontColor(0.9f, 0.9f, 0.95f, 1.0f); - rsgBindFont(gFontSerif); - if (countdown == 1) { - rsgDrawText("Rendering", 50, 50); - } else { - rsgDrawText("Initializing", 50, 50); - } - - return false; - } - - return true; -} - -static int benchMode = 0; -static bool benchmarkSingleTest = false; -static int runningLoops = 0; -static bool sendMsgFlag = false; - -static bool gIsDebugMode = false; -void setDebugMode(int testNumber) { - gIsDebugMode = true; - benchMode = testNumber; - rsgClearAllRenderTargets(); -} - -void setBenchmarkMode(int testNumber) { - gIsDebugMode = false; - if (testNumber == -1) { - benchmarkSingleTest = false; - benchMode = 0; - } else { - benchmarkSingleTest = true; - benchMode = testNumber; - } - - runningLoops = 0; -} - -static void drawOffscreenResult(int posX, int posY, int width, int height) { - bindProgramVertexOrtho(); - - rs_matrix4x4 matrix; - rsMatrixLoadIdentity(&matrix); - rsgProgramVertexLoadModelMatrix(&matrix); - - rsgBindProgramFragment(gProgFragmentTexture); - - rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp); - rsgBindTexture(gProgFragmentTexture, 0, gRenderBufferColor); - - float startX = posX, startY = posY; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 1, - startX, startY + height, 0, 0, 0, - startX + width, startY + height, 0, 1, 0, - startX + width, startY, 0, 1, 1); -} - -static void benchmark() { - - gDt = 1.0f / 60.0f; - - rsgFinish(); - int64_t start = rsUptimeMillis(); - - int drawPos = 0; - int frameCount = 100; - for(int i = 0; i < frameCount; i ++) { - setupOffscreenTarget(); - gRenderSurfaceW = rsAllocationGetDimX(gRenderBufferColor); - gRenderSurfaceH = rsAllocationGetDimY(gRenderBufferColor); - rsgClearColor(0.1f, 0.1f, 0.1f, 1.0f); - rsgClearDepth(1.0f); - - runSubTest(benchMode); - rsgClearAllRenderTargets(); - gRenderSurfaceW = rsgGetWidth(); - gRenderSurfaceH = rsgGetHeight(); - int size = 8; - // draw each frame at (8, 3/4 gRenderSurfaceH) with size - drawOffscreenResult((drawPos+=size)%gRenderSurfaceW, (gRenderSurfaceH * 3) / 4, size, size); - } - - rsgFinish(); - - int64_t end = rsUptimeMillis(); - float fps = (float)(frameCount) / ((float)(end - start)*0.001f); - const char *testName = rsGetElementAt(gTestScripts[benchMode].debugName, 0); - rsDebug(testName, fps); - - gResultBuffer[benchMode] = fps; - int bufferW = rsAllocationGetDimX(gRenderBufferColor); - int bufferH = rsAllocationGetDimY(gRenderBufferColor); - - int quadW = gRenderSurfaceW / 2; - int quadH = (quadW * bufferH) / bufferW; - drawOffscreenResult(0, 0, quadW, quadH); - - int left = 0, right = 0, top = 0, bottom = 0; - uint height = rsgGetHeight(); - rsgFontColor(0.9f, 0.9f, 0.95f, 1.0f); - rsgBindFont(gFontSerif); - rsgMeasureText(gTestScripts[benchMode].testName, &left, &right, &top, &bottom); - rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgDrawText(gTestScripts[benchMode].testName, 2 -left, height - 2 + bottom); - - if (benchmarkSingleTest) { - return; - } - - benchMode ++; - int testCount = rsAllocationGetDimX(rsGetAllocation(gTestScripts)); - if (benchMode == testCount) { - rsSendToClientBlocking(RS_MSG_RESULTS_READY, gResultBuffer, testCount*sizeof(float)); - benchMode = 0; - runningLoops++; - if ((gMaxLoops > 0) && (runningLoops > gMaxLoops) && !sendMsgFlag) { - //Notifiy the test to stop and get results - rsDebug("gMaxLoops and runningLoops: ", gMaxLoops, runningLoops); - rsSendToClientBlocking(RS_MSG_TEST_DONE); - sendMsgFlag = true; - } - } -} - -static void debug() { - gDt = rsGetDt(); - runSubTest(benchMode); -} - -int root(void) { - gRenderSurfaceW = rsgGetWidth(); - gRenderSurfaceH = rsgGetHeight(); - rsgClearColor(0.2f, 0.2f, 0.2f, 1.0f); - rsgClearDepth(1.0f); - - if (!gLoadComplete) { - rsgFontColor(0.9f, 0.9f, 0.95f, 1.0f); - rsgBindFont(gFontSerif); - rsgDrawText("Loading", 50, 50); - return 0; - } - - if(!checkInit()) { - return 1; - } - - if (gPauseRendering) { - rsgDrawText("Paused", 50, 50); - return 30; - } - if (gIsDebugMode) { - debug(); - } else { - benchmark(); - } - - return 1; -} diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/shader_def.rsh b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/shader_def.rsh deleted file mode 100644 index 648359c09385..000000000000 --- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/shader_def.rsh +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright (C) 2009 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.perftest) - -typedef struct VertexShaderConstants_s { - rs_matrix4x4 model; - rs_matrix4x4 proj; - float4 light0_Posision; - float light0_Diffuse; - float light0_Specular; - float light0_CosinePower; - - float4 light1_Posision; - float light1_Diffuse; - float light1_Specular; - float light1_CosinePower; -} VertexShaderConstants; - -typedef struct VertexShaderConstants3_s { - rs_matrix4x4 model; - rs_matrix4x4 proj; - float time; -} VertexShaderConstants3; - - -typedef struct FragentShaderConstants_s { - float4 light0_DiffuseColor; - float4 light0_SpecularColor; - - float4 light1_DiffuseColor; - float4 light1_SpecularColor; -} FragentShaderConstants; - -typedef struct FragentShaderConstants2_s { - float4 light_DiffuseColor[2]; - float4 light_SpecularColor[2]; -} FragentShaderConstants2; - -typedef struct FragentShaderConstants3_s { - float4 light0_DiffuseColor; - float4 light0_SpecularColor; - float4 light0_Posision; - float light0_Diffuse; - float light0_Specular; - float light0_CosinePower; - - float4 light1_DiffuseColor; - float4 light1_SpecularColor; - float4 light1_Posision; - float light1_Diffuse; - float light1_Specular; - float light1_CosinePower; -} FragentShaderConstants3; - -typedef struct VertexShaderInputs_s { - float4 position; - float3 normal; - float2 texture0; -} VertexShaderInputs; - diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/subtest_def.rsh b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/subtest_def.rsh deleted file mode 100644 index 43658b15a2cf..000000000000 --- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/subtest_def.rsh +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.perftest) - -typedef struct TestData_s { - int renderSurfaceW; - int renderSurfaceH; - float dt; -} TestData; - diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/text_test.rs b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/text_test.rs deleted file mode 100644 index 0f50828cd0b8..000000000000 --- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/text_test.rs +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.perftest) - -#include "rs_graphics.rsh" -#include "subtest_def.rsh" - -rs_font gFontSans; -rs_font gFontSerif; - -typedef struct TextTestData_s { - int fillNum; -} TextTestData; -TextTestData *gData; - -void init() { -} - -static int gRenderSurfaceW = 1280; -static int gRenderSurfaceH = 720; - -static const char *sampleText = "This is a sample of small text for performace"; -// Offsets for multiple layer of text -static int textOffsets[] = { 0, 0, -5, -5, 5, 5, -8, -8, 8, 8}; -static float textColors[] = {1.0f, 1.0f, 1.0f, 1.0f, - 0.5f, 0.7f, 0.5f, 1.0f, - 0.7f, 0.5f, 0.5f, 1.0f, - 0.5f, 0.5f, 0.7f, 1.0f, - 0.5f, 0.6f, 0.7f, 1.0f, -}; - -static void displayFontSamples(int fillNum) { - - rs_font fonts[5]; - fonts[0] = gFontSans; - fonts[1] = gFontSerif; - fonts[2] = gFontSans; - fonts[3] = gFontSerif; - fonts[4] = gFontSans; - - uint height = gRenderSurfaceH; - int left = 0, right = 0, top = 0, bottom = 0; - rsgMeasureText(sampleText, &left, &right, &top, &bottom); - - int textHeight = top - bottom; - int textWidth = right - left; - int numVerticalLines = height / textHeight; - int yPos = top; - - int xOffset = 0, yOffset = 0; - for(int fillI = 0; fillI < fillNum; fillI ++) { - rsgBindFont(fonts[fillI]); - xOffset = textOffsets[fillI * 2]; - yOffset = textOffsets[fillI * 2 + 1]; - float *colPtr = textColors + fillI * 4; - rsgFontColor(colPtr[0], colPtr[1], colPtr[2], colPtr[3]); - for (int h = 0; h < 4; h ++) { - yPos = top + yOffset; - for (int v = 0; v < numVerticalLines; v ++) { - rsgDrawText(sampleText, xOffset + textWidth * h, yPos); - yPos += textHeight; - } - } - } -} - -void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32_t y) { - TestData *testData = (TestData*)usrData; - gRenderSurfaceW = testData->renderSurfaceW; - gRenderSurfaceH = testData->renderSurfaceH; - - gData = (TextTestData*)v_in; - - displayFontSamples(gData->fillNum); -} diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/torus_test.rs b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/torus_test.rs deleted file mode 100644 index 853a05d1c874..000000000000 --- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/torus_test.rs +++ /dev/null @@ -1,295 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.perftest) - -#include "rs_graphics.rsh" -#include "subtest_def.rsh" -#include "shader_def.rsh" - -rs_program_vertex gProgVertex; -rs_program_fragment gProgFragmentColor; -rs_program_fragment gProgFragmentTexture; - -rs_program_store gProgStoreBlendNoneDepth; -rs_mesh gTorusMesh; - -rs_program_raster gCullBack; -rs_program_raster gCullFront; - -// Custom vertex shader compunents -VertexShaderConstants *gVSConstants; -FragentShaderConstants *gFSConstants; -VertexShaderConstants3 *gVSConstPixel; -FragentShaderConstants3 *gFSConstPixel; - -// Custom shaders we use for lighting -rs_program_vertex gProgVertexCustom; -rs_program_fragment gProgFragmentCustom; - -rs_sampler gLinearClamp; -rs_allocation gTexTorus; - -rs_program_vertex gProgVertexPixelLight; -rs_program_vertex gProgVertexPixelLightMove; -rs_program_fragment gProgFragmentPixelLight; - -typedef struct TorusTestData_s { - int testId; - int user1; - int user2; -} TorusTestData; -TorusTestData *gData; - -static float gDt = 0.0f; - -static int gRenderSurfaceW; -static int gRenderSurfaceH; - - -static float gTorusRotation = 0; -static void updateModelMatrix(rs_matrix4x4 *matrix, void *buffer) { - if (buffer == 0) { - rsgProgramVertexLoadModelMatrix(matrix); - } else { - rsgAllocationSyncAll(rsGetAllocation(buffer)); - } -} - -static void drawToruses(int numMeshes, rs_matrix4x4 *matrix, void *buffer) { - - if (numMeshes == 1) { - rsMatrixLoadTranslate(matrix, 0.0f, 0.0f, -7.5f); - rsMatrixRotate(matrix, gTorusRotation, 1.0f, 0.0f, 0.0f); - updateModelMatrix(matrix, buffer); - rsgDrawMesh(gTorusMesh); - return; - } - - if (numMeshes == 2) { - rsMatrixLoadTranslate(matrix, -1.6f, 0.0f, -7.5f); - rsMatrixRotate(matrix, gTorusRotation, 1.0f, 0.0f, 0.0f); - updateModelMatrix(matrix, buffer); - rsgDrawMesh(gTorusMesh); - - rsMatrixLoadTranslate(matrix, 1.6f, 0.0f, -7.5f); - rsMatrixRotate(matrix, gTorusRotation, 1.0f, 0.0f, 0.0f); - updateModelMatrix(matrix, buffer); - rsgDrawMesh(gTorusMesh); - return; - } - - float startX = -5.0f; - float startY = -1.5f; - float startZ = -15.0f; - float dist = 3.2f; - - for (int h = 0; h < 4; h ++) { - for (int v = 0; v < 2; v ++) { - // Position our model on the screen - rsMatrixLoadTranslate(matrix, startX + dist * h, startY + dist * v, startZ); - rsMatrixRotate(matrix, gTorusRotation, 1.0f, 0.0f, 0.0f); - updateModelMatrix(matrix, buffer); - rsgDrawMesh(gTorusMesh); - } - } -} - - -// Quick hack to get some geometry numbers -static void displaySimpleGeoSamples(bool useTexture, int numMeshes) { - rsgBindProgramVertex(gProgVertex); - rsgBindProgramRaster(gCullBack); - // Setup the projection matrix with 30 degree field of view - rs_matrix4x4 proj; - float aspect = (float)gRenderSurfaceW / (float)gRenderSurfaceH; - rsMatrixLoadPerspective(&proj, 30.0f, aspect, 0.1f, 100.0f); - rsgProgramVertexLoadProjectionMatrix(&proj); - - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendNoneDepth); - if (useTexture) { - rsgBindProgramFragment(gProgFragmentTexture); - } else { - rsgBindProgramFragment(gProgFragmentColor); - rsgProgramFragmentConstantColor(gProgFragmentColor, 0.1, 0.7, 0.1, 1); - } - rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp); - rsgBindTexture(gProgFragmentTexture, 0, gTexTorus); - - // Apply a rotation to our mesh - gTorusRotation += 50.0f * gDt; - if (gTorusRotation > 360.0f) { - gTorusRotation -= 360.0f; - } - - rs_matrix4x4 matrix; - drawToruses(numMeshes, &matrix, 0); -} - -float gLight0Rotation = 0; -float gLight1Rotation = 0; - -static void setupCustomShaderLights() { - float4 light0Pos = {-5.0f, 5.0f, -10.0f, 1.0f}; - float4 light1Pos = {2.0f, 5.0f, 15.0f, 1.0f}; - float4 light0DiffCol = {0.9f, 0.7f, 0.7f, 1.0f}; - float4 light0SpecCol = {0.9f, 0.6f, 0.6f, 1.0f}; - float4 light1DiffCol = {0.5f, 0.5f, 0.9f, 1.0f}; - float4 light1SpecCol = {0.5f, 0.5f, 0.9f, 1.0f}; - - gLight0Rotation += 50.0f * gDt; - if (gLight0Rotation > 360.0f) { - gLight0Rotation -= 360.0f; - } - gLight1Rotation -= 50.0f * gDt; - if (gLight1Rotation > 360.0f) { - gLight1Rotation -= 360.0f; - } - - rs_matrix4x4 l0Mat; - rsMatrixLoadRotate(&l0Mat, gLight0Rotation, 1.0f, 0.0f, 0.0f); - light0Pos = rsMatrixMultiply(&l0Mat, light0Pos); - rs_matrix4x4 l1Mat; - rsMatrixLoadRotate(&l1Mat, gLight1Rotation, 0.0f, 0.0f, 1.0f); - light1Pos = rsMatrixMultiply(&l1Mat, light1Pos); - - // Set light 0 properties - gVSConstants->light0_Posision = light0Pos; - gVSConstants->light0_Diffuse = 1.0f; - gVSConstants->light0_Specular = 0.5f; - gVSConstants->light0_CosinePower = 10.0f; - // Set light 1 properties - gVSConstants->light1_Posision = light1Pos; - gVSConstants->light1_Diffuse = 1.0f; - gVSConstants->light1_Specular = 0.7f; - gVSConstants->light1_CosinePower = 25.0f; - rsgAllocationSyncAll(rsGetAllocation(gVSConstants)); - - // Update fragment shader constants - // Set light 0 colors - gFSConstants->light0_DiffuseColor = light0DiffCol; - gFSConstants->light0_SpecularColor = light0SpecCol; - // Set light 1 colors - gFSConstants->light1_DiffuseColor = light1DiffCol; - gFSConstants->light1_SpecularColor = light1SpecCol; - rsgAllocationSyncAll(rsGetAllocation(gFSConstants)); - - // Set light 0 properties for per pixel lighting - gFSConstPixel->light0_Posision = light0Pos; - gFSConstPixel->light0_Diffuse = 1.0f; - gFSConstPixel->light0_Specular = 0.5f; - gFSConstPixel->light0_CosinePower = 10.0f; - gFSConstPixel->light0_DiffuseColor = light0DiffCol; - gFSConstPixel->light0_SpecularColor = light0SpecCol; - // Set light 1 properties - gFSConstPixel->light1_Posision = light1Pos; - gFSConstPixel->light1_Diffuse = 1.0f; - gFSConstPixel->light1_Specular = 0.7f; - gFSConstPixel->light1_CosinePower = 25.0f; - gFSConstPixel->light1_DiffuseColor = light1DiffCol; - gFSConstPixel->light1_SpecularColor = light1SpecCol; - rsgAllocationSyncAll(rsGetAllocation(gFSConstPixel)); -} - -static void displayCustomShaderSamples(int numMeshes) { - - // Update vertex shader constants - // Load model matrix - // Apply a rotation to our mesh - gTorusRotation += 50.0f * gDt; - if (gTorusRotation > 360.0f) { - gTorusRotation -= 360.0f; - } - - // Setup the projection matrix - float aspect = (float)gRenderSurfaceW / (float)gRenderSurfaceH; - rsMatrixLoadPerspective(&gVSConstants->proj, 30.0f, aspect, 0.1f, 100.0f); - setupCustomShaderLights(); - - rsgBindProgramVertex(gProgVertexCustom); - - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendNoneDepth); - rsgBindProgramFragment(gProgFragmentCustom); - rsgBindSampler(gProgFragmentCustom, 0, gLinearClamp); - rsgBindTexture(gProgFragmentCustom, 0, gTexTorus); - - // Use back face culling - rsgBindProgramRaster(gCullBack); - - drawToruses(numMeshes, &gVSConstants->model, gVSConstants); -} - -static void displayPixelLightSamples(int numMeshes, bool heavyVertex) { - - // Update vertex shader constants - // Load model matrix - // Apply a rotation to our mesh - gTorusRotation += 30.0f * gDt; - if (gTorusRotation > 360.0f) { - gTorusRotation -= 360.0f; - } - - gVSConstPixel->time = rsUptimeMillis()*0.005; - - // Setup the projection matrix - float aspect = (float)gRenderSurfaceW / (float)gRenderSurfaceH; - rsMatrixLoadPerspective(&gVSConstPixel->proj, 30.0f, aspect, 0.1f, 100.0f); - setupCustomShaderLights(); - - if (heavyVertex) { - rsgBindProgramVertex(gProgVertexPixelLightMove); - } else { - rsgBindProgramVertex(gProgVertexPixelLight); - } - - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendNoneDepth); - rsgBindProgramFragment(gProgFragmentPixelLight); - rsgBindSampler(gProgFragmentPixelLight, 0, gLinearClamp); - rsgBindTexture(gProgFragmentPixelLight, 0, gTexTorus); - - // Use back face culling - rsgBindProgramRaster(gCullBack); - - drawToruses(numMeshes, &gVSConstPixel->model, gVSConstPixel); -} - - -void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32_t y) { - TestData *testData = (TestData*)usrData; - gRenderSurfaceW = testData->renderSurfaceW; - gRenderSurfaceH = testData->renderSurfaceH; - gDt = testData->dt; - - gData = (TorusTestData*)v_in; - - switch(gData->testId) { - case 0: - displaySimpleGeoSamples(gData->user1 == 1 ? true : false, gData->user2); - break; - case 1: - displayCustomShaderSamples(gData->user1); - break; - case 2: - displayPixelLightSamples(gData->user1, gData->user2 == 1 ? true : false); - break; - default: - rsDebug("Wrong test number", gData->testId); - break; - } -} diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/ui_test.rs b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/ui_test.rs deleted file mode 100644 index e87db39d1966..000000000000 --- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/ui_test.rs +++ /dev/null @@ -1,442 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.perftest) - -#include "rs_graphics.rsh" -#include "shader_def.rsh" -#include "subtest_def.rsh" - -// Parameters for galaxy live wallpaper -rs_allocation gTSpace; -rs_allocation gTLight1; -rs_allocation gTFlares; -rs_mesh gParticlesMesh; - -rs_program_fragment gPFBackground; -rs_program_fragment gPFStars; -rs_program_vertex gPVStars; -rs_program_vertex gPVBkProj; -rs_program_store gPSLights; - -float gXOffset = 0.5f; - -#define ELLIPSE_RATIO 0.892f -#define PI 3.1415f -#define TWO_PI 6.283f -#define ELLIPSE_TWIST 0.023333333f - -static float angle = 50.f; -static int gOldWidth; -static int gOldHeight; -static int gWidth; -static int gHeight; -static float gSpeed[12000]; -static int gGalaxyRadius = 300; -static rs_allocation gParticlesBuffer; - -typedef struct __attribute__((packed, aligned(4))) Particle { - uchar4 color; - float3 position; -} Particle_t; -Particle_t *Particles; - -typedef struct VpConsts { - rs_matrix4x4 Proj; - rs_matrix4x4 MVP; -} VpConsts_t; -VpConsts_t *vpConstants; -// End of parameters for galaxy live wallpaper - -rs_program_vertex gProgVertex; -rs_program_fragment gProgFragmentColor; -rs_program_fragment gProgFragmentTexture; - -rs_program_store gProgStoreBlendAlpha; - -rs_allocation gTexOpaque; -rs_allocation gTexTorus; -rs_allocation gTexGlobe; - -typedef struct ListAllocs_s { - rs_allocation item; -} ListAllocs; - -ListAllocs *gTexList100; -ListAllocs *gSampleTextList100; -ListAllocs *gListViewText; - -rs_mesh gSingleMesh; - -rs_font gFontSans; - -rs_sampler gLinearClamp; - -typedef struct UiTestData_s { - int testId; - int user1; - int user2; - int user3; -} UiTestData; -UiTestData *gData; - -static float gDt = 0; - - -void init() { -} - -static int gRenderSurfaceW; -static int gRenderSurfaceH; - -static void bindProgramVertexOrtho() { - // Default vertex shader - rsgBindProgramVertex(gProgVertex); - // Setup the projection matrix - rs_matrix4x4 proj; - rsMatrixLoadOrtho(&proj, 0, gRenderSurfaceW, gRenderSurfaceH, 0, -500, 500); - rsgProgramVertexLoadProjectionMatrix(&proj); -} - -/** - * Methods to draw the galaxy live wall paper - */ -static float mapf(float minStart, float minStop, float maxStart, float maxStop, float value) { - return maxStart + (maxStart - maxStop) * ((value - minStart) / (minStop - minStart)); -} - -/** - * Helper function to generate the stars. - */ -static float randomGauss() { - float x1; - float x2; - float w = 2.f; - - while (w >= 1.0f) { - x1 = rsRand(2.0f) - 1.0f; - x2 = rsRand(2.0f) - 1.0f; - w = x1 * x1 + x2 * x2; - } - - w = sqrt(-2.0f * log(w) / w); - return x1 * w; -} - -/** - * Generates the properties for a given star. - */ -static void createParticle(Particle_t *part, int idx, float scale) { - float d = fabs(randomGauss()) * gGalaxyRadius * 0.5f + rsRand(64.0f); - float id = d / gGalaxyRadius; - float z = randomGauss() * 0.4f * (1.0f - id); - - if (d < gGalaxyRadius * 0.33f) { - part->color.x = (uchar) (220 + id * 35); - part->color.y = 220; - part->color.z = 220; - } else { - part->color.x = 180; - part->color.y = 180; - part->color.z = (uchar) clamp(140.f + id * 115.f, 140.f, 255.f); - } - // Stash point size * 10 in Alpha - part->color.w = (uchar) (rsRand(1.2f, 2.1f) * 60); - - if (d > gGalaxyRadius * 0.15f) { - z *= 0.6f * (1.0f - id); - } else { - z *= 0.72f; - } - - // Map to the projection coordinates (viewport.x = -1.0 -> 1.0) - d = mapf(-4.0f, gGalaxyRadius + 4.0f, 0.0f, scale, d); - - part->position.x = rsRand(TWO_PI); - part->position.y = d; - gSpeed[idx] = rsRand(0.0015f, 0.0025f) * (0.5f + (scale / d)) * 0.8f; - - part->position.z = z / 5.0f; -} - -/** - * Initialize all the starts, called from Java - */ -void initParticles() { - Particle_t *part = Particles; - float scale = gGalaxyRadius / (gWidth * 0.5f); - int count = rsAllocationGetDimX(gParticlesBuffer); - for (int i = 0; i < count; i ++) { - createParticle(part, i, scale); - part++; - } -} - -static void drawSpace() { - rsgBindProgramFragment(gPFBackground); - rsgBindTexture(gPFBackground, 0, gTSpace); - rsgDrawQuadTexCoords( - 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, - gWidth, 0.0f, 0.0f, 2.0f, 1.0f, - gWidth, gHeight, 0.0f, 2.0f, 0.0f, - 0.0f, gHeight, 0.0f, 0.0f, 0.0f); -} - -static void drawLights() { - rsgBindProgramVertex(gPVBkProj); - rsgBindProgramFragment(gPFBackground); - rsgBindTexture(gPFBackground, 0, gTLight1); - - float scale = 512.0f / gWidth; - float x = -scale - scale * 0.05f; - float y = -scale; - - scale *= 2.0f; - - rsgDrawQuad(x, y, 0.0f, - x + scale * 1.1f, y, 0.0f, - x + scale * 1.1f, y + scale, 0.0f, - x, y + scale, 0.0f); -} - -static void drawParticles(float offset) { - float a = offset * angle; - float absoluteAngle = fabs(a); - - rs_matrix4x4 matrix; - rsMatrixLoadTranslate(&matrix, 0.0f, 0.0f, 10.0f - 6.0f * absoluteAngle / 50.0f); - if (gHeight > gWidth) { - rsMatrixScale(&matrix, 6.6f, 6.0f, 1.0f); - } else { - rsMatrixScale(&matrix, 12.6f, 12.0f, 1.0f); - } - rsMatrixRotate(&matrix, absoluteAngle, 1.0f, 0.0f, 0.0f); - rsMatrixRotate(&matrix, a, 0.0f, 0.4f, 0.1f); - rsMatrixLoad(&vpConstants->MVP, &vpConstants->Proj); - rsMatrixMultiply(&vpConstants->MVP, &matrix); - rsgAllocationSyncAll(rsGetAllocation(vpConstants)); - - rsgBindProgramVertex(gPVStars); - rsgBindProgramFragment(gPFStars); - rsgBindProgramStore(gPSLights); - rsgBindTexture(gPFStars, 0, gTFlares); - - Particle_t *vtx = Particles; - int count = rsAllocationGetDimX(gParticlesBuffer); - for (int i = 0; i < count; i++) { - vtx->position.x = vtx->position.x + gSpeed[i]; - vtx++; - } - - rsgDrawMesh(gParticlesMesh); -} -/* end of methods for drawing galaxy */ - -// Display sample images in a mesh with different texture -static void displayIcons(int meshMode) { - bindProgramVertexOrtho(); - - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendAlpha); - rsgBindProgramFragment(gProgFragmentTexture); - rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp); - rsgBindTexture(gProgFragmentTexture, 0, gTexTorus); - rsgDrawQuadTexCoords( - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, gRenderSurfaceH, 0.0f, 0.0f, 1.0f, - gRenderSurfaceW, gRenderSurfaceH, 0.0f, 1.0f, 1.0f, - gRenderSurfaceW, 0.0f, 0.0f, 1.0f, 0.0f); - - int meshCount = (int)pow(10.0f, (float)(meshMode + 1)); - - float wSize = gRenderSurfaceW/(float)meshCount; - float hSize = gRenderSurfaceH/(float)meshCount; - rs_matrix4x4 matrix; - rsMatrixLoadScale(&matrix, wSize, hSize, 1.0); - - float yPos = 0; - float yPad = hSize / 2; - float xPad = wSize / 2; - for (int y = 0; y < meshCount; y++) { - yPos = y * hSize + yPad; - float xPos = 0; - for (int x = 0; x < meshCount; x++) { - xPos = x * wSize + xPad; - rs_matrix4x4 transMatrix; - rsMatrixLoadTranslate(&transMatrix, xPos, yPos, 0); - rsMatrixMultiply(&transMatrix, &matrix); - rsgProgramVertexLoadModelMatrix(&transMatrix); - int i = (x + y * meshCount) % 100; - rsgBindTexture(gProgFragmentTexture, 0, gTexList100[i].item); - rsgDrawMesh(gSingleMesh); - } - } -} - -// Draw meshes in a single page with top left corner coordinates (xStart, yStart) -static void drawMeshInPage(float xStart, float yStart, int wResolution, int hResolution) { - // Draw wResolution * hResolution meshes in one page - float wMargin = 100.0f; - float hMargin = 100.0f; - float xPad = 50.0f; - float yPad = 20.0f; - float size = 100.0f; // size of images - - // font info - rs_font font = gFontSans; - rsgBindFont(font); - rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f); - - // Measure text size - int left = 0, right = 0, top = 0, bottom = 0; - rsgMeasureText(gSampleTextList100[0].item, &left, &right, &top, &bottom); - float textHeight = (float)(top - bottom); - - rs_matrix4x4 matrix; - rsMatrixLoadScale(&matrix, size, size, 1.0); - - for (int y = 0; y < hResolution; y++) { - float yPos = yStart + hMargin + y * size + y * yPad; - for (int x = 0; x < wResolution; x++) { - float xPos = xStart + wMargin + x * size + x * xPad; - - rs_matrix4x4 transMatrix; - rsMatrixLoadTranslate(&transMatrix, xPos + size/2, yPos + size/2, 0); - rsMatrixMultiply(&transMatrix, &matrix); // scale the mesh - rsgProgramVertexLoadModelMatrix(&transMatrix); - - int i = (y * wResolution + x) % 100; - rsgBindTexture(gProgFragmentTexture, 0, gTexList100[i].item); - rsgDrawMesh(gSingleMesh); - rsgDrawText(gSampleTextList100[i].item, xPos, yPos + size + yPad/2 + textHeight); - } - } -} - -// Display both images and text as shown in launcher and homepage -// meshMode will decide how many pages we draw -// meshMode = 0: draw 3 pages of meshes -// meshMode = 1: draw 5 pages of meshes -static void displayImageWithText(int wResolution, int hResolution, int meshMode) { - bindProgramVertexOrtho(); - - // Fragment shader with texture - rsgBindProgramStore(gProgStoreBlendAlpha); - rsgBindProgramFragment(gProgFragmentTexture); - rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp); - - drawMeshInPage(0, 0, wResolution, hResolution); - drawMeshInPage(-1.0f*gRenderSurfaceW, 0, wResolution, hResolution); - drawMeshInPage(1.0f*gRenderSurfaceW, 0, wResolution, hResolution); - if (meshMode == 1) { - // draw another two pages of meshes - drawMeshInPage(-2.0f*gRenderSurfaceW, 0, wResolution, hResolution); - drawMeshInPage(2.0f*gRenderSurfaceW, 0, wResolution, hResolution); - } -} - -// Display a list of text as the list view -static void displayListView() { - // set text color - rsgFontColor(0.9f, 0.9f, 0.9f, 1.0f); - rsgBindFont(gFontSans); - - // get the size of the list - rs_allocation textAlloc; - textAlloc = rsGetAllocation(gListViewText); - int allocSize = rsAllocationGetDimX(textAlloc); - - int listItemHeight = 80; - int yOffset = listItemHeight; - - // set the color for the list divider - rsgBindProgramFragment(gProgFragmentColor); - rsgProgramFragmentConstantColor(gProgFragmentColor, 1.0, 1.0, 1.0, 1); - - // draw the list with divider - for (int i = 0; i < allocSize; i++) { - if (yOffset - listItemHeight > gRenderSurfaceH) { - break; - } - rsgDrawRect(0, yOffset - 1, gRenderSurfaceW, yOffset, 0); - rsgDrawText(gListViewText[i].item, 20, yOffset - 10); - yOffset += listItemHeight; - } -} - -static void drawGalaxy() { - rsgClearColor(0.f, 0.f, 0.f, 1.f); - gParticlesBuffer = rsGetAllocation(Particles); - rsgBindProgramFragment(gPFBackground); - - gWidth = rsgGetWidth(); - gHeight = rsgGetHeight(); - if ((gWidth != gOldWidth) || (gHeight != gOldHeight)) { - initParticles(); - gOldWidth = gWidth; - gOldHeight = gHeight; - } - - float offset = mix(-1.0f, 1.0f, gXOffset); - drawSpace(); - drawParticles(offset); - drawLights(); -} - -// Display images and text with live wallpaper in the background -static void displayLiveWallPaper(int wResolution, int hResolution) { - bindProgramVertexOrtho(); - - drawGalaxy(); - - rsgBindProgramVertex(gProgVertex); - rsgBindProgramStore(gProgStoreBlendAlpha); - rsgBindProgramFragment(gProgFragmentTexture); - rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp); - - drawMeshInPage(0, 0, wResolution, hResolution); - drawMeshInPage(-1.0f*gRenderSurfaceW, 0, wResolution, hResolution); - drawMeshInPage(1.0f*gRenderSurfaceW, 0, wResolution, hResolution); - drawMeshInPage(-2.0f*gRenderSurfaceW, 0, wResolution, hResolution); - drawMeshInPage(2.0f*gRenderSurfaceW, 0, wResolution, hResolution); -} - -void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32_t y) { - TestData *testData = (TestData*)usrData; - gRenderSurfaceW = testData->renderSurfaceW; - gRenderSurfaceH = testData->renderSurfaceH; - gDt = testData->dt; - - gData = (UiTestData*)v_in; - - switch(gData->testId) { - case 0: - displayIcons(gData->user1); - break; - case 1: - displayImageWithText(gData->user1, gData->user2, gData->user3); - break; - case 2: - displayListView(); - break; - case 3: - displayLiveWallPaper(gData->user1, gData->user2); - break; - default: - rsDebug("Wrong test number", 0); - break; - } -} diff --git a/tests/RenderScriptTests/SceneGraph/Android.mk b/tests/RenderScriptTests/SceneGraph/Android.mk deleted file mode 100644 index 6047305ceb70..000000000000 --- a/tests/RenderScriptTests/SceneGraph/Android.mk +++ /dev/null @@ -1,28 +0,0 @@ -# -# Copyright (C) 2011 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := tests - -LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src) - -LOCAL_SDK_VERSION := 17 - -LOCAL_PACKAGE_NAME := SceneGraphTest - -include $(BUILD_PACKAGE) diff --git a/tests/RenderScriptTests/SceneGraph/AndroidManifest.xml b/tests/RenderScriptTests/SceneGraph/AndroidManifest.xml deleted file mode 100644 index 67af0fa04f53..000000000000 --- a/tests/RenderScriptTests/SceneGraph/AndroidManifest.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.testapp"> - <uses-permission - android:name="android.permission.INTERNET" /> - <application android:label="SceneGraphTest"> - <activity android:name="TestApp" - android:label="SceneGraphTest"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - <activity android:name="SimpleApp" - android:label="SimpleSceneGraph"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - <activity android:name="FileSelector" - android:label="FileSelector" - android:hardwareAccelerated="true"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - </intent-filter> - </activity> - </application> -</manifest> diff --git a/tests/RenderScriptTests/SceneGraph/assets/blue.jpg b/tests/RenderScriptTests/SceneGraph/assets/blue.jpg Binary files differdeleted file mode 100644 index 494e77a199e1..000000000000 --- a/tests/RenderScriptTests/SceneGraph/assets/blue.jpg +++ /dev/null diff --git a/tests/RenderScriptTests/SceneGraph/assets/carbonfiber.jpg b/tests/RenderScriptTests/SceneGraph/assets/carbonfiber.jpg Binary files differdeleted file mode 100644 index 2fcecb0be1f5..000000000000 --- a/tests/RenderScriptTests/SceneGraph/assets/carbonfiber.jpg +++ /dev/null diff --git a/tests/RenderScriptTests/SceneGraph/assets/green.jpg b/tests/RenderScriptTests/SceneGraph/assets/green.jpg Binary files differdeleted file mode 100644 index a86a754fe2e3..000000000000 --- a/tests/RenderScriptTests/SceneGraph/assets/green.jpg +++ /dev/null diff --git a/tests/RenderScriptTests/SceneGraph/assets/grey.jpg b/tests/RenderScriptTests/SceneGraph/assets/grey.jpg Binary files differdeleted file mode 100644 index 5870b1af055e..000000000000 --- a/tests/RenderScriptTests/SceneGraph/assets/grey.jpg +++ /dev/null diff --git a/tests/RenderScriptTests/SceneGraph/assets/orange.jpg b/tests/RenderScriptTests/SceneGraph/assets/orange.jpg Binary files differdeleted file mode 100644 index 7dbe942af1a8..000000000000 --- a/tests/RenderScriptTests/SceneGraph/assets/orange.jpg +++ /dev/null diff --git a/tests/RenderScriptTests/SceneGraph/assets/orientation_test.a3d b/tests/RenderScriptTests/SceneGraph/assets/orientation_test.a3d Binary files differdeleted file mode 100644 index 07318ae11249..000000000000 --- a/tests/RenderScriptTests/SceneGraph/assets/orientation_test.a3d +++ /dev/null diff --git a/tests/RenderScriptTests/SceneGraph/assets/orientation_test.dae b/tests/RenderScriptTests/SceneGraph/assets/orientation_test.dae deleted file mode 100644 index 7eef443fa0e2..000000000000 --- a/tests/RenderScriptTests/SceneGraph/assets/orientation_test.dae +++ /dev/null @@ -1,1102 +0,0 @@ -<?xml version="1.0" ?> -<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1"> - <asset> - <contributor> - <author>alexst</author> - <authoring_tool>OpenCOLLADA2010</authoring_tool> - <comments>ColladaMaya export options: bakeTransforms=0;relativePaths=0;copyTextures=0;exportTriangles=1;exportCgfxFileReferences=0; isSampling=0;curveConstrainSampling=0;removeStaticCurves=1;exportPolygonMeshes=1;exportLights=1; exportCameras=1;exportJointsAndSkin=1;exportAnimations=0;exportInvisibleNodes=0;exportDefaultCameras=0; exportTexCoords=1;exportNormals=1;exportNormalsPerVertex=1;exportVertexColors=0;exportVertexColorsPerVertex=0; exportTexTangents=0;exportTangents=0;exportReferencedMaterials=1;exportMaterialsOnly=0; exportXRefs=1;dereferenceXRefs=1;exportCameraAsLookat=0;cameraXFov=0;cameraYFov=1;doublePrecision=0</comments> - <source_data>file:///Volumes/Android/art/orientation_test.mb</source_data> - </contributor> - <created>2011-09-30T15:31:38</created> - <modified>2011-09-30T15:31:38</modified> - <unit meter="0.01" name="centimeter" /> - <up_axis>Y_UP</up_axis> - </asset> - <library_cameras> - <camera id="cameraShape1" name="cameraShape1"> - <optics> - <technique_common> - <perspective> - <yfov>37.8493</yfov> - <aspect_ratio>1.5</aspect_ratio> - <znear>1</znear> - <zfar>400</zfar> - </perspective> - </technique_common> - </optics> - <extra> - <technique profile="OpenCOLLADAMaya"> - <film_fit>0</film_fit> - <film_fit_offset>0</film_fit_offset> - <film_offsetX>0</film_offsetX> - <film_offsetY>0</film_offsetY> - <horizontal_aperture>3.599993</horizontal_aperture> - <lens_squeeze>1</lens_squeeze> - <originalMayaNodeId>cameraShape1</originalMayaNodeId> - <vertical_aperture>2.399995</vertical_aperture> - </technique> - </extra> - </camera> - <camera id="CameraDistShape" name="CameraDistShape"> - <optics> - <technique_common> - <perspective> - <yfov>37.8493</yfov> - <aspect_ratio>1.5</aspect_ratio> - <znear>1</znear> - <zfar>1000</zfar> - </perspective> - </technique_common> - </optics> - <extra> - <technique profile="OpenCOLLADAMaya"> - <film_fit>0</film_fit> - <film_fit_offset>0</film_fit_offset> - <film_offsetX>0</film_offsetX> - <film_offsetY>0</film_offsetY> - <horizontal_aperture>3.599993</horizontal_aperture> - <lens_squeeze>1</lens_squeeze> - <originalMayaNodeId>CameraDistShape</originalMayaNodeId> - <vertical_aperture>2.399995</vertical_aperture> - </technique> - </extra> - </camera> - </library_cameras> - <library_materials> - <material id="Paint1" name="Paint1"> - <instance_effect url="#Paint1-fx" /> - </material> - <material id="lambert2" name="lambert2"> - <instance_effect url="#lambert2-fx" /> - </material> - <material id="Plastic" name="Plastic"> - <instance_effect url="#Plastic-fx" /> - </material> - <material id="Metal" name="Metal"> - <instance_effect url="#Metal-fx" /> - </material> - <material id="PlasticCenter" name="PlasticCenter"> - <instance_effect url="#PlasticCenter-fx" /> - </material> - <material id="PlasticRed" name="PlasticRed"> - <instance_effect url="#PlasticRed-fx" /> - </material> - <material id="lambert10" name="lambert10"> - <instance_effect url="#lambert10-fx" /> - </material> - <material id="lambert11" name="lambert11"> - <instance_effect url="#lambert11-fx" /> - </material> - </library_materials> - <library_effects> - <effect id="Metal-fx"> - <profile_COMMON> - <newparam sid="file23-surface"> - <surface type="2D"> - <init_from>file23</init_from> - </surface> - </newparam> - <newparam sid="file23-sampler"> - <sampler2D> - <source>file23-surface</source> - </sampler2D> - </newparam> - <technique sid="common"> - <lambert> - <emission> - <color>0 0 0 1</color> - </emission> - <ambient> - <color>0 0 0 1</color> - </ambient> - <diffuse> - <texture texture="file23-sampler" texcoord="TEX0"> - <extra> - <technique profile="OpenCOLLADAMaya"> - <blend_mode>NONE</blend_mode> - <coverageU>1</coverageU> - <coverageV>1</coverageV> - <fast>0</fast> - <mirrorU>0</mirrorU> - <mirrorV>0</mirrorV> - <noiseU>0</noiseU> - <noiseV>0</noiseV> - <offsetU>0</offsetU> - <offsetV>0</offsetV> - <repeatU>1</repeatU> - <repeatV>1</repeatV> - <rotateFrame>0</rotateFrame> - <rotateUV>0</rotateUV> - <stagger>0</stagger> - <translateFrameU>0</translateFrameU> - <translateFrameV>0</translateFrameV> - <wrapU>1</wrapU> - <wrapV>1</wrapV> - </technique> - </extra> - </texture> - </diffuse> - <transparent opaque="RGB_ZERO"> - <color>0 0 0 1</color> - </transparent> - <transparency> - <float>1</float> - </transparency> - </lambert> - </technique> - </profile_COMMON> - </effect> - <effect id="Paint1-fx"> - <profile_COMMON> - <newparam sid="file25-surface"> - <surface type="2D"> - <init_from>file25</init_from> - </surface> - </newparam> - <newparam sid="file25-sampler"> - <sampler2D> - <source>file25-surface</source> - </sampler2D> - </newparam> - <technique sid="common"> - <lambert> - <emission> - <color>0 0 0 1</color> - </emission> - <ambient> - <color>0 0 0 1</color> - </ambient> - <diffuse> - <texture texture="file25-sampler" texcoord="TEX0"> - <extra> - <technique profile="OpenCOLLADAMaya"> - <blend_mode>NONE</blend_mode> - <coverageU>1</coverageU> - <coverageV>1</coverageV> - <fast>0</fast> - <mirrorU>0</mirrorU> - <mirrorV>0</mirrorV> - <noiseU>0</noiseU> - <noiseV>0</noiseV> - <offsetU>0</offsetU> - <offsetV>0</offsetV> - <repeatU>1</repeatU> - <repeatV>1</repeatV> - <rotateFrame>0</rotateFrame> - <rotateUV>0</rotateUV> - <stagger>0</stagger> - <translateFrameU>0</translateFrameU> - <translateFrameV>0</translateFrameV> - <wrapU>1</wrapU> - <wrapV>1</wrapV> - </technique> - </extra> - </texture> - </diffuse> - <transparent opaque="RGB_ZERO"> - <color>0 0 0 1</color> - </transparent> - <transparency> - <float>1</float> - </transparency> - </lambert> - </technique> - </profile_COMMON> - </effect> - <effect id="Plastic-fx"> - <profile_COMMON> - <newparam sid="file24-surface"> - <surface type="2D"> - <init_from>file24</init_from> - </surface> - </newparam> - <newparam sid="file24-sampler"> - <sampler2D> - <source>file24-surface</source> - </sampler2D> - </newparam> - <technique sid="common"> - <lambert> - <emission> - <color>0 0 0 1</color> - </emission> - <ambient> - <color>0 0 0 1</color> - </ambient> - <diffuse> - <texture texture="file24-sampler" texcoord="TEX0"> - <extra> - <technique profile="OpenCOLLADAMaya"> - <blend_mode>NONE</blend_mode> - <coverageU>1</coverageU> - <coverageV>1</coverageV> - <fast>0</fast> - <mirrorU>0</mirrorU> - <mirrorV>0</mirrorV> - <noiseU>0</noiseU> - <noiseV>0</noiseV> - <offsetU>0</offsetU> - <offsetV>0</offsetV> - <repeatU>1</repeatU> - <repeatV>1</repeatV> - <rotateFrame>0</rotateFrame> - <rotateUV>0</rotateUV> - <stagger>0</stagger> - <translateFrameU>0</translateFrameU> - <translateFrameV>0</translateFrameV> - <wrapU>1</wrapU> - <wrapV>1</wrapV> - </technique> - </extra> - </texture> - </diffuse> - <transparent opaque="RGB_ZERO"> - <color>0 0 0 1</color> - </transparent> - <transparency> - <float>1</float> - </transparency> - </lambert> - </technique> - </profile_COMMON> - </effect> - <effect id="PlasticCenter-fx"> - <profile_COMMON> - <newparam sid="file24-surface"> - <surface type="2D"> - <init_from>file24</init_from> - </surface> - </newparam> - <newparam sid="file24-sampler"> - <sampler2D> - <source>file24-surface</source> - </sampler2D> - </newparam> - <technique sid="common"> - <lambert> - <emission> - <color>0 0 0 1</color> - </emission> - <ambient> - <color>0 0 0 1</color> - </ambient> - <diffuse> - <texture texture="file24-sampler" texcoord="TEX0"> - <extra> - <technique profile="OpenCOLLADAMaya"> - <blend_mode>NONE</blend_mode> - <coverageU>1</coverageU> - <coverageV>1</coverageV> - <fast>0</fast> - <mirrorU>0</mirrorU> - <mirrorV>0</mirrorV> - <noiseU>0</noiseU> - <noiseV>0</noiseV> - <offsetU>0</offsetU> - <offsetV>0</offsetV> - <repeatU>1</repeatU> - <repeatV>1</repeatV> - <rotateFrame>0</rotateFrame> - <rotateUV>0</rotateUV> - <stagger>0</stagger> - <translateFrameU>0</translateFrameU> - <translateFrameV>0</translateFrameV> - <wrapU>1</wrapU> - <wrapV>1</wrapV> - </technique> - </extra> - </texture> - </diffuse> - <transparent opaque="RGB_ZERO"> - <color>0 0 0 1</color> - </transparent> - <transparency> - <float>1</float> - </transparency> - </lambert> - </technique> - </profile_COMMON> - </effect> - <effect id="PlasticRed-fx"> - <profile_COMMON> - <newparam sid="file23-surface"> - <surface type="2D"> - <init_from>file23</init_from> - </surface> - </newparam> - <newparam sid="file23-sampler"> - <sampler2D> - <source>file23-surface</source> - </sampler2D> - </newparam> - <technique sid="common"> - <lambert> - <emission> - <color>0 0 0 1</color> - </emission> - <ambient> - <color>0 0 0 1</color> - </ambient> - <diffuse> - <texture texture="file23-sampler" texcoord="TEX0"> - <extra> - <technique profile="OpenCOLLADAMaya"> - <blend_mode>NONE</blend_mode> - <coverageU>1</coverageU> - <coverageV>1</coverageV> - <fast>0</fast> - <mirrorU>0</mirrorU> - <mirrorV>0</mirrorV> - <noiseU>0</noiseU> - <noiseV>0</noiseV> - <offsetU>0</offsetU> - <offsetV>0</offsetV> - <repeatU>1</repeatU> - <repeatV>1</repeatV> - <rotateFrame>0</rotateFrame> - <rotateUV>0</rotateUV> - <stagger>0</stagger> - <translateFrameU>0</translateFrameU> - <translateFrameV>0</translateFrameV> - <wrapU>1</wrapU> - <wrapV>1</wrapV> - </technique> - </extra> - </texture> - </diffuse> - <transparent opaque="RGB_ZERO"> - <color>0 0 0 1</color> - </transparent> - <transparency> - <float>1</float> - </transparency> - </lambert> - </technique> - </profile_COMMON> - </effect> - <effect id="lambert10-fx"> - <profile_COMMON> - <newparam sid="file28-surface"> - <surface type="2D"> - <init_from>file28</init_from> - </surface> - </newparam> - <newparam sid="file28-sampler"> - <sampler2D> - <source>file28-surface</source> - </sampler2D> - </newparam> - <technique sid="common"> - <lambert> - <emission> - <color>0 0 0 1</color> - </emission> - <ambient> - <color>0 0 0 1</color> - </ambient> - <diffuse> - <texture texture="file28-sampler" texcoord="TEX0"> - <extra> - <technique profile="OpenCOLLADAMaya"> - <blend_mode>NONE</blend_mode> - <coverageU>1</coverageU> - <coverageV>1</coverageV> - <fast>0</fast> - <mirrorU>0</mirrorU> - <mirrorV>0</mirrorV> - <noiseU>0</noiseU> - <noiseV>0</noiseV> - <offsetU>0</offsetU> - <offsetV>0</offsetV> - <repeatU>1</repeatU> - <repeatV>1</repeatV> - <rotateFrame>0</rotateFrame> - <rotateUV>0</rotateUV> - <stagger>0</stagger> - <translateFrameU>0</translateFrameU> - <translateFrameV>0</translateFrameV> - <wrapU>1</wrapU> - <wrapV>1</wrapV> - </technique> - </extra> - </texture> - </diffuse> - <transparent opaque="RGB_ZERO"> - <color>0 0 0 1</color> - </transparent> - <transparency> - <float>1</float> - </transparency> - </lambert> - </technique> - </profile_COMMON> - </effect> - <effect id="lambert11-fx"> - <profile_COMMON> - <newparam sid="file29-surface"> - <surface type="2D"> - <init_from>file29</init_from> - </surface> - </newparam> - <newparam sid="file29-sampler"> - <sampler2D> - <source>file29-surface</source> - </sampler2D> - </newparam> - <technique sid="common"> - <lambert> - <emission> - <color>0 0 0 1</color> - </emission> - <ambient> - <color>0 0 0 1</color> - </ambient> - <diffuse> - <texture texture="file29-sampler" texcoord="TEX0"> - <extra> - <technique profile="OpenCOLLADAMaya"> - <blend_mode>NONE</blend_mode> - <coverageU>1</coverageU> - <coverageV>1</coverageV> - <fast>0</fast> - <mirrorU>0</mirrorU> - <mirrorV>0</mirrorV> - <noiseU>0</noiseU> - <noiseV>0</noiseV> - <offsetU>0</offsetU> - <offsetV>0</offsetV> - <repeatU>1</repeatU> - <repeatV>1</repeatV> - <rotateFrame>0</rotateFrame> - <rotateUV>0</rotateUV> - <stagger>0</stagger> - <translateFrameU>0</translateFrameU> - <translateFrameV>0</translateFrameV> - <wrapU>1</wrapU> - <wrapV>1</wrapV> - </technique> - </extra> - </texture> - </diffuse> - <transparent opaque="RGB_ZERO"> - <color>0 0 0 1</color> - </transparent> - <transparency> - <float>1</float> - </transparency> - </lambert> - </technique> - </profile_COMMON> - </effect> - <effect id="lambert2-fx"> - <profile_COMMON> - <newparam sid="file22-surface"> - <surface type="2D"> - <init_from>file22</init_from> - </surface> - </newparam> - <newparam sid="file22-sampler"> - <sampler2D> - <source>file22-surface</source> - </sampler2D> - </newparam> - <technique sid="common"> - <lambert> - <emission> - <color>0 0 0 1</color> - </emission> - <ambient> - <color>0 0 0 1</color> - </ambient> - <diffuse> - <texture texture="file22-sampler" texcoord="TEX0"> - <extra> - <technique profile="OpenCOLLADAMaya"> - <blend_mode>NONE</blend_mode> - <coverageU>1</coverageU> - <coverageV>1</coverageV> - <fast>0</fast> - <mirrorU>0</mirrorU> - <mirrorV>0</mirrorV> - <noiseU>0</noiseU> - <noiseV>0</noiseV> - <offsetU>0</offsetU> - <offsetV>0</offsetV> - <repeatU>1</repeatU> - <repeatV>1</repeatV> - <rotateFrame>0</rotateFrame> - <rotateUV>0</rotateUV> - <stagger>0</stagger> - <translateFrameU>0</translateFrameU> - <translateFrameV>0</translateFrameV> - <wrapU>1</wrapU> - <wrapV>1</wrapV> - </technique> - </extra> - </texture> - </diffuse> - <transparent opaque="RGB_ZERO"> - <color>0 0 0 1</color> - </transparent> - <transparency> - <float>1</float> - </transparency> - </lambert> - </technique> - </profile_COMMON> - </effect> - </library_effects> - <library_images> - <image id="file29" name="file29" height="0" width="0"> - <init_from>file:///Volumes/Android/Sanity/SceneGraph/assets/blue.jpg</init_from> - <extra> - <technique profile="OpenCOLLADAMaya"> - <dgnode_type>kFile</dgnode_type> - <image_sequence>0</image_sequence> - <originalMayaNodeId>file29</originalMayaNodeId> - </technique> - </extra> - </image> - <image id="file25" name="file25" height="0" width="0"> - <init_from>file:///Volumes/Android/Sanity/SceneGraph/assets/carbonfiber.jpg</init_from> - <extra> - <technique profile="OpenCOLLADAMaya"> - <dgnode_type>kFile</dgnode_type> - <image_sequence>0</image_sequence> - <originalMayaNodeId>file25</originalMayaNodeId> - </technique> - </extra> - </image> - <image id="file28" name="file28" height="0" width="0"> - <init_from>file:///Volumes/Android/Sanity/SceneGraph/assets/green.jpg</init_from> - <extra> - <technique profile="OpenCOLLADAMaya"> - <dgnode_type>kFile</dgnode_type> - <image_sequence>0</image_sequence> - <originalMayaNodeId>file28</originalMayaNodeId> - </technique> - </extra> - </image> - <image id="file22" name="file22" height="0" width="0"> - <init_from>file:///Volumes/Android/Sanity/SceneGraph/assets/grey.jpg</init_from> - <extra> - <technique profile="OpenCOLLADAMaya"> - <dgnode_type>kFile</dgnode_type> - <image_sequence>0</image_sequence> - <originalMayaNodeId>file22</originalMayaNodeId> - </technique> - </extra> - </image> - <image id="file24" name="file24" height="0" width="0"> - <init_from>file:///Volumes/Android/Sanity/SceneGraph/assets/orange.jpg</init_from> - <extra> - <technique profile="OpenCOLLADAMaya"> - <dgnode_type>kFile</dgnode_type> - <image_sequence>0</image_sequence> - <originalMayaNodeId>file24</originalMayaNodeId> - </technique> - </extra> - </image> - <image id="file23" name="file23" height="0" width="0"> - <init_from>file:///Volumes/Android/Sanity/SceneGraph/assets/red.jpg</init_from> - <extra> - <technique profile="OpenCOLLADAMaya"> - <dgnode_type>kFile</dgnode_type> - <image_sequence>0</image_sequence> - <originalMayaNodeId>file23</originalMayaNodeId> - </technique> - </extra> - </image> - </library_images> - <library_visual_scenes> - <visual_scene id="VisualSceneNode" name="orientation_test"> - <node id="camera1" name="camera1"> - <translate sid="translate">24.5791 14.1321 31.4654</translate> - <rotate sid="rotateZ">0 0 1 0</rotate> - <rotate sid="rotateY">0 1 0 42</rotate> - <rotate sid="rotateX">1 0 0 -16.2</rotate> - <scale sid="scale">1 1 1</scale> - <instance_camera url="#cameraShape1" /> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>camera1</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="CameraAim" name="CameraAim"> - <translate sid="translate">0.0209301 3.68542 2.06912</translate> - <rotate sid="rotateY">0 1 0 43.2561</rotate> - <rotate sid="rotateX">1 0 0 -20</rotate> - <scale sid="scale">1 1 1</scale> - <node id="CameraDist" name="CameraDist"> - <translate sid="translate">0 0 45</translate> - <scale sid="scale">1 1 1</scale> - <instance_camera url="#CameraDistShape" /> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>CameraDist</originalMayaNodeId> - </technique> - </extra> - </node> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>CameraAim</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pSphere4" name="pSphere4"> - <translate sid="translate">-9.69237 0 7.70498</translate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pSphereShape4"> - <bind_material> - <technique_common> - <instance_material symbol="lambert7SG" target="#Paint1"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pSphere4</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pSphere1" name="pSphere1"> - <translate sid="translate">13.0966 0 5.76254</translate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pSphereShape1"> - <bind_material> - <technique_common> - <instance_material symbol="lambert7SG" target="#Paint1"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pSphere1</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pSphere2" name="pSphere2"> - <translate sid="translate">21.7661 0 -13.6375</translate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pSphereShape2"> - <bind_material> - <technique_common> - <instance_material symbol="lambert7SG" target="#Paint1"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pSphere2</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pSphere3" name="pSphere3"> - <translate sid="translate">-13.862 0 -13.6154</translate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pSphereShape3"> - <bind_material> - <technique_common> - <instance_material symbol="lambert7SG" target="#Paint1"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pSphere3</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pSphere5" name="pSphere5"> - <translate sid="translate">31.0862 0 18.5992</translate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pSphereShape5"> - <bind_material> - <technique_common> - <instance_material symbol="lambert7SG" target="#Paint1"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pSphere5</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pCube1" name="pCube1"> - <translate sid="translate">0 0 0</translate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pCubeShape1"> - <bind_material> - <technique_common> - <instance_material symbol="lambert4SG" target="#lambert2"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pCube1</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="group1" name="group1"> - <translate sid="translate">0 0 0</translate> - <rotate sid="rotateZ">0 0 1 -162.693</rotate> - <rotate sid="rotateY">0 1 0 21.3345</rotate> - <rotate sid="rotateX">1 0 0 -100.567</rotate> - <scale sid="scale">1 1 1</scale> - <node id="pSphere6" name="pSphere6"> - <translate sid="translate">-13.862 0 -13.6154</translate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pSphereShape6"> - <bind_material> - <technique_common> - <instance_material symbol="lambert6SG" target="#Plastic"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pSphere6</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pSphere7" name="pSphere7"> - <translate sid="translate">-9.69237 0 7.70498</translate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pSphereShape7"> - <bind_material> - <technique_common> - <instance_material symbol="lambert6SG" target="#Plastic"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pSphere7</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pSphere8" name="pSphere8"> - <translate sid="translate">21.7661 0 -13.6375</translate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pSphereShape8"> - <bind_material> - <technique_common> - <instance_material symbol="lambert6SG" target="#Plastic"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pSphere8</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pSphere9" name="pSphere9"> - <translate sid="translate">13.0966 0 5.76254</translate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pSphereShape9"> - <bind_material> - <technique_common> - <instance_material symbol="lambert6SG" target="#Plastic"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pSphere9</originalMayaNodeId> - </technique> - </extra> - </node> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>group1</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="group2" name="group2"> - <translate sid="translate">0 0 0</translate> - <rotate sid="rotateZ">0 0 1 45.4017</rotate> - <rotate sid="rotateY">0 1 0 79.393</rotate> - <rotate sid="rotateX">1 0 0 5.10889</rotate> - <scale sid="scale">1 1 1</scale> - <node id="pSphere10" name="pSphere10"> - <translate sid="translate">31.0862 0 18.5992</translate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pSphereShape10"> - <bind_material> - <technique_common> - <instance_material symbol="lambert5SG" target="#Metal"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pSphere10</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pSphere11" name="pSphere11"> - <translate sid="translate">13.0966 0 5.76254</translate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pSphereShape11"> - <bind_material> - <technique_common> - <instance_material symbol="lambert5SG" target="#Metal"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pSphere11</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pSphere12" name="pSphere12"> - <translate sid="translate">7.4784 16.3496 7.36882</translate> - <rotate sid="rotateZ">0 0 1 17.3073</rotate> - <rotate sid="rotateY">0 1 0 158.666</rotate> - <rotate sid="rotateX">1 0 0 79.4335</rotate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pSphereShape12"> - <bind_material> - <technique_common> - <instance_material symbol="lambert5SG" target="#Metal"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pSphere12</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pSphere13" name="pSphere13"> - <translate sid="translate">-9.69237 0 7.70498</translate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pSphereShape13"> - <bind_material> - <technique_common> - <instance_material symbol="lambert5SG" target="#Metal"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pSphere13</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pSphere14" name="pSphere14"> - <translate sid="translate">11.3635 -4.3926 2.21012</translate> - <rotate sid="rotateZ">0 0 1 17.3073</rotate> - <rotate sid="rotateY">0 1 0 158.666</rotate> - <rotate sid="rotateX">1 0 0 79.4335</rotate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pSphereShape14"> - <bind_material> - <technique_common> - <instance_material symbol="lambert5SG" target="#Metal"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pSphere14</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pSphere15" name="pSphere15"> - <translate sid="translate">21.7661 0 -13.6375</translate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pSphereShape15"> - <bind_material> - <technique_common> - <instance_material symbol="lambert5SG" target="#Metal"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pSphere15</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pSphere16" name="pSphere16"> - <translate sid="translate">-9.5945 -8.92317 -5.74901</translate> - <rotate sid="rotateZ">0 0 1 17.3073</rotate> - <rotate sid="rotateY">0 1 0 158.666</rotate> - <rotate sid="rotateX">1 0 0 79.4335</rotate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pSphereShape16"> - <bind_material> - <technique_common> - <instance_material symbol="lambert5SG" target="#Metal"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pSphere16</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pSphere17" name="pSphere17"> - <translate sid="translate">-13.862 0 -13.6154</translate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pSphereShape17"> - <bind_material> - <technique_common> - <instance_material symbol="lambert5SG" target="#Metal"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pSphere17</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pSphere18" name="pSphere18"> - <translate sid="translate">-24.2135 6.497 -5.58935</translate> - <rotate sid="rotateZ">0 0 1 17.3073</rotate> - <rotate sid="rotateY">0 1 0 158.666</rotate> - <rotate sid="rotateX">1 0 0 79.4335</rotate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pSphereShape18"> - <bind_material> - <technique_common> - <instance_material symbol="lambert5SG" target="#Metal"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pSphere18</originalMayaNodeId> - </technique> - </extra> - </node> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>group2</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pCube2" name="pCube2"> - <translate sid="translate">0 0 0</translate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pCubeShape2"> - <bind_material> - <technique_common> - <instance_material symbol="lambert8SG" target="#PlasticCenter"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pCube2</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pCube3" name="pCube3"> - <translate sid="translate">15 0 0</translate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pCubeShape3"> - <bind_material> - <technique_common> - <instance_material symbol="lambert9SG" target="#PlasticRed"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pCube3</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pCube4" name="pCube4"> - <translate sid="translate">0 15 0</translate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pCubeShape4"> - <bind_material> - <technique_common> - <instance_material symbol="lambert10SG" target="#lambert10"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pCube4</originalMayaNodeId> - </technique> - </extra> - </node> - <node id="pCube5" name="pCube5"> - <translate sid="translate">0 0 15</translate> - <scale sid="scale">1 1 1</scale> - <instance_geometry url="#pCubeShape5"> - <bind_material> - <technique_common> - <instance_material symbol="lambert11SG" target="#lambert11"> - <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" /> - </instance_material> - </technique_common> - </bind_material> - </instance_geometry> - <extra> - <technique profile="OpenCOLLADAMaya"> - <originalMayaNodeId>pCube5</originalMayaNodeId> - </technique> - </extra> - </node> - </visual_scene> - </library_visual_scenes> - <scene> - <instance_visual_scene url="#VisualSceneNode" /> - </scene> -</COLLADA> diff --git a/tests/RenderScriptTests/SceneGraph/assets/paint.jpg b/tests/RenderScriptTests/SceneGraph/assets/paint.jpg Binary files differdeleted file mode 100644 index 0791045b5c18..000000000000 --- a/tests/RenderScriptTests/SceneGraph/assets/paint.jpg +++ /dev/null diff --git a/tests/RenderScriptTests/SceneGraph/assets/red.jpg b/tests/RenderScriptTests/SceneGraph/assets/red.jpg Binary files differdeleted file mode 100644 index 320a2a6ad187..000000000000 --- a/tests/RenderScriptTests/SceneGraph/assets/red.jpg +++ /dev/null diff --git a/tests/RenderScriptTests/SceneGraph/res/drawable-nodpi/icon.png b/tests/RenderScriptTests/SceneGraph/res/drawable-nodpi/icon.png Binary files differdeleted file mode 100644 index ff34a7ffcc4f..000000000000 --- a/tests/RenderScriptTests/SceneGraph/res/drawable-nodpi/icon.png +++ /dev/null diff --git a/tests/RenderScriptTests/SceneGraph/res/drawable-nodpi/robot.png b/tests/RenderScriptTests/SceneGraph/res/drawable-nodpi/robot.png Binary files differdeleted file mode 100644 index f7353fd61c5b..000000000000 --- a/tests/RenderScriptTests/SceneGraph/res/drawable-nodpi/robot.png +++ /dev/null diff --git a/tests/RenderScriptTests/SceneGraph/res/menu/loader_menu.xml b/tests/RenderScriptTests/SceneGraph/res/menu/loader_menu.xml deleted file mode 100644 index 9ea3010759b6..000000000000 --- a/tests/RenderScriptTests/SceneGraph/res/menu/loader_menu.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ ---> - -<menu xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:id="@+id/load_model" - android:title="@string/load_model" /> - <item android:id="@+id/use_blur" - android:title="@string/use_blur" /> -</menu> diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/blur_h.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/blur_h.glsl deleted file mode 100644 index c34adc9e334d..000000000000 --- a/tests/RenderScriptTests/SceneGraph/res/raw/blur_h.glsl +++ /dev/null @@ -1,15 +0,0 @@ -varying vec2 varTex0; - -void main() { - vec2 blurCoord = varTex0; - blurCoord.x = varTex0.x + UNI_blurOffset0; - vec3 col = texture2D(UNI_color, blurCoord).rgb; - blurCoord.x = varTex0.x + UNI_blurOffset1; - col += texture2D(UNI_color, blurCoord).rgb; - blurCoord.x = varTex0.x + UNI_blurOffset2; - col += texture2D(UNI_color, blurCoord).rgb; - blurCoord.x = varTex0.x + UNI_blurOffset3; - col += texture2D(UNI_color, blurCoord).rgb; - - gl_FragColor = vec4(col * 0.25, 0.0); -} diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/blur_v.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/blur_v.glsl deleted file mode 100644 index ade05a27920d..000000000000 --- a/tests/RenderScriptTests/SceneGraph/res/raw/blur_v.glsl +++ /dev/null @@ -1,17 +0,0 @@ -varying vec2 varTex0; - -void main() { - vec2 blurCoord = varTex0; - blurCoord.y = varTex0.y + UNI_blurOffset0; - vec3 col = texture2D(UNI_color, blurCoord).rgb; - blurCoord.y = varTex0.y + UNI_blurOffset1; - col += texture2D(UNI_color, blurCoord).rgb; - blurCoord.y = varTex0.y + UNI_blurOffset2; - col += texture2D(UNI_color, blurCoord).rgb; - blurCoord.y = varTex0.y + UNI_blurOffset3; - col += texture2D(UNI_color, blurCoord).rgb; - - col = col * 0.25; - - gl_FragColor = vec4(col, 0.0); -} diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/blur_vertex.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/blur_vertex.glsl deleted file mode 100644 index bc824b6eb77e..000000000000 --- a/tests/RenderScriptTests/SceneGraph/res/raw/blur_vertex.glsl +++ /dev/null @@ -1,7 +0,0 @@ -varying vec2 varTex0; - -void main() { - gl_Position = ATTRIB_position; - varTex0 = ATTRIB_texture0; -} - diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/diffuse.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/diffuse.glsl deleted file mode 100644 index 2eb102872afd..000000000000 --- a/tests/RenderScriptTests/SceneGraph/res/raw/diffuse.glsl +++ /dev/null @@ -1,19 +0,0 @@ -varying vec3 varWorldPos; -varying vec3 varWorldNormal; -varying vec2 varTex0; - -void main() { - - vec3 V = normalize(UNI_cameraPos.xyz - varWorldPos.xyz); - vec3 worldNorm = (varWorldNormal); - - vec3 light0Vec = V; - vec3 light0R = reflect(light0Vec, worldNorm); - float light0_Diffuse = dot(worldNorm, light0Vec); - - vec2 t0 = varTex0.xy; - lowp vec4 col = texture2D(UNI_diffuse, t0).rgba; - col.xyz = col.xyz * light0_Diffuse * 1.2; - gl_FragColor = col; -} - diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/diffuse_lights.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/diffuse_lights.glsl deleted file mode 100644 index ef93e1c27ad2..000000000000 --- a/tests/RenderScriptTests/SceneGraph/res/raw/diffuse_lights.glsl +++ /dev/null @@ -1,22 +0,0 @@ -varying vec3 varWorldPos; -varying vec3 varWorldNormal; -varying vec2 varTex0; - -void main() { - - vec3 V = normalize(UNI_cameraPos.xyz - varWorldPos.xyz); - vec3 worldNorm = normalize(varWorldNormal); - - vec3 light0Vec = normalize(UNI_lightPos_0.xyz - varWorldPos.xyz); - float light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0); - - vec3 light1Vec = normalize(UNI_lightPos_1.xyz - varWorldPos.xyz); - float light1_Diffuse = clamp(dot(worldNorm, light1Vec), 0.0, 1.0); - - vec2 t0 = varTex0.xy; - lowp vec4 col = UNI_diffuse; - col.xyz = col.xyz * (light0_Diffuse * UNI_lightColor_0.xyz + - light1_Diffuse * UNI_lightColor_1.xyz); - gl_FragColor = col; -} - diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/metal.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/metal.glsl deleted file mode 100644 index b90a7b27354c..000000000000 --- a/tests/RenderScriptTests/SceneGraph/res/raw/metal.glsl +++ /dev/null @@ -1,23 +0,0 @@ -varying vec3 varWorldPos; -varying vec3 varWorldNormal; -varying vec2 varTex0; - -void main() { - - vec3 V = normalize(UNI_cameraPos.xyz - varWorldPos.xyz); - vec3 worldNorm = normalize(varWorldNormal); - - vec3 light0Vec = V; - vec3 light0R = reflect(light0Vec, worldNorm); - float light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0); - float light0Spec = clamp(dot(-light0R, V), 0.001, 1.0); - float light0_Specular = pow(light0Spec, 15.0) * 0.5; - - vec2 t0 = varTex0.xy; - lowp vec4 col = texture2D(UNI_diffuse, t0).rgba; - col.xyz = col.xyz * (textureCube(UNI_reflection, worldNorm).rgb * 0.5 + vec3(light0_Diffuse)); - col.xyz += light0_Specular * vec3(0.8, 0.8, 1.0); - - gl_FragColor = col; -} - diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/paintf.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/paintf.glsl deleted file mode 100644 index f3b89ede5369..000000000000 --- a/tests/RenderScriptTests/SceneGraph/res/raw/paintf.glsl +++ /dev/null @@ -1,26 +0,0 @@ -varying vec3 varWorldPos; -varying vec3 varWorldNormal; -varying vec2 varTex0; - -void main() { - - vec3 V = normalize(UNI_cameraPos.xyz - varWorldPos.xyz); - vec3 worldNorm = normalize(varWorldNormal); - - vec3 light0Vec = V; - vec3 light0R = reflect(light0Vec, worldNorm); - float light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.01, 0.99); - float light0Spec = clamp(dot(-light0R, V), 0.001, 1.0); - float light0_Specular = pow(light0Spec, 150.0) * 0.5; - - vec2 t0 = varTex0.xy; - lowp vec4 col = texture2D(UNI_diffuse, t0).rgba; - col.xyz = col.xyz * light0_Diffuse * 1.1; - col.xyz += light0_Specular * vec3(0.8, 0.8, 1.0); - - float fresnel = mix(pow(1.0 - light0_Diffuse, 15.0), 1.0, 0.1); - col.xyz = mix(col.xyz, textureCube(UNI_reflection, -light0R).rgb * 2.4, fresnel); - col.w = 0.8; - gl_FragColor = col; -} - diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/plastic.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/plastic.glsl deleted file mode 100644 index 56f7151f22af..000000000000 --- a/tests/RenderScriptTests/SceneGraph/res/raw/plastic.glsl +++ /dev/null @@ -1,22 +0,0 @@ -varying vec3 varWorldPos; -varying vec3 varWorldNormal; -varying vec2 varTex0; - -void main() { - - vec3 V = normalize(UNI_cameraPos.xyz - varWorldPos.xyz); - vec3 worldNorm = normalize(varWorldNormal); - - vec3 light0Vec = V; - vec3 light0R = reflect(light0Vec, worldNorm); - float light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0); - float light0Spec = clamp(dot(-light0R, V), 0.001, 1.0); - float light0_Specular = pow(light0Spec, 10.0) * 0.5; - - vec2 t0 = varTex0.xy; - lowp vec4 col = texture2D(UNI_diffuse, t0).rgba; - col.xyz = col.xyz * light0_Diffuse * 1.2; - col.xyz += light0_Specular * vec3(0.8, 0.8, 1.0); - gl_FragColor = col; -} - diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/plastic_lights.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/plastic_lights.glsl deleted file mode 100644 index b2536226afb7..000000000000 --- a/tests/RenderScriptTests/SceneGraph/res/raw/plastic_lights.glsl +++ /dev/null @@ -1,29 +0,0 @@ -varying vec3 varWorldPos; -varying vec3 varWorldNormal; -varying vec2 varTex0; - -void main() { - - vec3 V = normalize(UNI_cameraPos.xyz - varWorldPos.xyz); - vec3 worldNorm = normalize(varWorldNormal); - - vec3 light0Vec = normalize(UNI_lightPos_0.xyz - varWorldPos.xyz); - vec3 light0R = reflect(light0Vec, worldNorm); - float light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0); - float light0Spec = clamp(dot(-light0R, V), 0.001, 1.0); - float light0_Specular = pow(light0Spec, 10.0) * 0.7; - - vec3 light1Vec = normalize(UNI_lightPos_1.xyz - varWorldPos.xyz); - vec3 light1R = reflect(light1Vec, worldNorm); - float light1_Diffuse = clamp(dot(worldNorm, light1Vec), 0.0, 1.0); - float light1Spec = clamp(dot(-light1R, V), 0.001, 1.0); - float light1_Specular = pow(light1Spec, 10.0) * 0.7; - - vec2 t0 = varTex0.xy; - lowp vec4 col = UNI_diffuse; - col.xyz = col.xyz * (light0_Diffuse * UNI_lightColor_0.xyz + - light1_Diffuse * UNI_lightColor_1.xyz); - col.xyz += (light0_Specular + light1_Specular); - gl_FragColor = col; -} - diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/robot.a3d b/tests/RenderScriptTests/SceneGraph/res/raw/robot.a3d Binary files differdeleted file mode 100644 index f48895cd8451..000000000000 --- a/tests/RenderScriptTests/SceneGraph/res/raw/robot.a3d +++ /dev/null diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/select_color.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/select_color.glsl deleted file mode 100644 index 1a927cab6236..000000000000 --- a/tests/RenderScriptTests/SceneGraph/res/raw/select_color.glsl +++ /dev/null @@ -1,13 +0,0 @@ -varying vec2 varTex0; - -void main() { - vec3 col = texture2D(UNI_color, varTex0).rgb; - - vec3 desat = vec3(0.299, 0.587, 0.114); - float lum = dot(desat, col); - float stepVal = step(lum, 0.8); - col = mix(col, vec3(0.0), stepVal)*0.5; - - gl_FragColor = vec4(col, 0.0); -} - diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/shader2v.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/shader2v.glsl deleted file mode 100644 index 7910a5448675..000000000000 --- a/tests/RenderScriptTests/SceneGraph/res/raw/shader2v.glsl +++ /dev/null @@ -1,22 +0,0 @@ -/* - rs_matrix4x4 model; - rs_matrix4x4 viewProj; -*/ - -varying vec3 varWorldPos; -varying vec3 varWorldNormal; -varying vec2 varTex0; - -// This is where actual shader code begins -void main() { - vec4 objPos = ATTRIB_position; - vec4 worldPos = UNI_model * objPos; - gl_Position = UNI_viewProj * worldPos; - - mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz); - vec3 worldNorm = model3 * ATTRIB_normal; - - varWorldPos = worldPos.xyz; - varWorldNormal = worldNorm; - varTex0 = ATTRIB_texture0; -} diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/texture.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/texture.glsl deleted file mode 100644 index 662ecd852af2..000000000000 --- a/tests/RenderScriptTests/SceneGraph/res/raw/texture.glsl +++ /dev/null @@ -1,7 +0,0 @@ -varying vec2 varTex0; - -void main() { - lowp vec4 col = texture2D(UNI_color, varTex0).rgba; - gl_FragColor = col; -} - diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/unit_obj.a3d b/tests/RenderScriptTests/SceneGraph/res/raw/unit_obj.a3d Binary files differdeleted file mode 100644 index 56eff046c696..000000000000 --- a/tests/RenderScriptTests/SceneGraph/res/raw/unit_obj.a3d +++ /dev/null diff --git a/tests/RenderScriptTests/SceneGraph/res/values/strings.xml b/tests/RenderScriptTests/SceneGraph/res/values/strings.xml deleted file mode 100644 index c916d791c143..000000000000 --- a/tests/RenderScriptTests/SceneGraph/res/values/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ ---> - -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <skip /> - <string name="load_model">Load Model</string> - <string name="use_blur">Use Blur</string> -</resources> diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Camera.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Camera.java deleted file mode 100644 index 42f2be5e1f59..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Camera.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; -import java.util.ArrayList; - -import com.android.scenegraph.SceneManager; - -import android.renderscript.*; -import android.renderscript.Matrix4f; -import android.renderscript.RenderScriptGL; -import android.util.Log; - -/** - * @hide - */ -public class Camera extends SceneGraphBase { - - Transform mTransform; - - ScriptField_Camera_s.Item mData; - ScriptField_Camera_s mField; - - public Camera() { - mData = new ScriptField_Camera_s.Item(); - mData.near = 0.1f; - mData.far = 1000.0f; - mData.horizontalFOV = 60.0f; - mData.aspect = 0; - } - - public void setTransform(Transform t) { - mTransform = t; - if (mField != null) { - mField.set_transformMatrix(0, mTransform.getRSData().getAllocation(), true); - mField.set_isDirty(0, 1, true); - } - } - public void setFOV(float fov) { - mData.horizontalFOV = fov; - if (mField != null) { - mField.set_horizontalFOV(0, fov, true); - mField.set_isDirty(0, 1, true); - } - } - - public void setNear(float n) { - mData.near = n; - if (mField != null) { - mField.set_near(0, n, true); - mField.set_isDirty(0, 1, true); - } - } - - public void setFar(float f) { - mData.far = f; - if (mField != null) { - mField.set_far(0, f, true); - mField.set_isDirty(0, 1, true); - } - } - - public void setName(String n) { - super.setName(n); - if (mField != null) { - RenderScriptGL rs = SceneManager.getRS(); - mData.name = getNameAlloc(rs); - mField.set_name(0, mData.name, true); - mField.set_isDirty(0, 1, true); - } - } - - ScriptField_Camera_s getRSData() { - if (mField != null) { - return mField; - } - - RenderScriptGL rs = SceneManager.getRS(); - if (rs == null) { - return null; - } - - if (mTransform == null) { - throw new RuntimeException("Cameras without transforms are invalid"); - } - - mField = new ScriptField_Camera_s(rs, 1); - - mData.transformMatrix = mTransform.getRSData().getAllocation(); - mData.transformTimestamp = 1; - mData.timestamp = 1; - mData.isDirty = 1; - mData.name = getNameAlloc(rs); - mField.set(mData, 0, true); - - return mField; - } -} - - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/ColladaParser.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/ColladaParser.java deleted file mode 100644 index b4b6fb9b795b..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/ColladaParser.java +++ /dev/null @@ -1,563 +0,0 @@ -/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-import com.android.scenegraph.CompoundTransform.TranslateComponent;
-import com.android.scenegraph.CompoundTransform.RotateComponent;
-import com.android.scenegraph.CompoundTransform.ScaleComponent;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.StringTokenizer;
-import java.util.HashMap;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
-
-import android.renderscript.*;
-import android.util.Log;
-
-public class ColladaParser {
- static final String TAG = "ColladaParser";
- Document mDom;
-
- HashMap<String, LightBase> mLights;
- HashMap<String, Camera> mCameras;
- HashMap<String, ArrayList<ShaderParam> > mEffectsParams;
- HashMap<String, Texture2D> mImages;
- HashMap<String, Texture2D> mSamplerImageMap;
- HashMap<String, String> mMeshIdNameMap;
- Scene mScene;
-
- String mRootDir;
-
- String toString(Float3 v) {
- String valueStr = v.x + " " + v.y + " " + v.z;
- return valueStr;
- }
-
- String toString(Float4 v) {
- String valueStr = v.x + " " + v.y + " " + v.z + " " + v.w;
- return valueStr;
- }
-
- public ColladaParser(){
- mLights = new HashMap<String, LightBase>();
- mCameras = new HashMap<String, Camera>();
- mEffectsParams = new HashMap<String, ArrayList<ShaderParam> >();
- mImages = new HashMap<String, Texture2D>();
- mMeshIdNameMap = new HashMap<String, String>();
- }
-
- public void init(InputStream is, String rootDir) {
- mLights.clear();
- mCameras.clear();
- mEffectsParams.clear();
-
- mRootDir = rootDir;
-
- long start = System.currentTimeMillis();
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- try {
- DocumentBuilder db = dbf.newDocumentBuilder();
- mDom = db.parse(is);
- } catch(ParserConfigurationException e) {
- e.printStackTrace();
- } catch(SAXException e) {
- e.printStackTrace();
- } catch(IOException e) {
- e.printStackTrace();
- }
- long end = System.currentTimeMillis();
- Log.v("TIMER", " Parse time: " + (end - start));
- exportSceneData();
- }
-
- Scene getScene() {
- return mScene;
- }
-
- private void exportSceneData(){
- mScene = new Scene();
-
- Element docEle = mDom.getDocumentElement();
- NodeList nl = docEle.getElementsByTagName("light");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element l = (Element)nl.item(i);
- convertLight(l);
- }
- }
-
- nl = docEle.getElementsByTagName("camera");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element c = (Element)nl.item(i);
- convertCamera(c);
- }
- }
-
- nl = docEle.getElementsByTagName("image");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element img = (Element)nl.item(i);
- convertImage(img);
- }
- }
-
- nl = docEle.getElementsByTagName("effect");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element e = (Element)nl.item(i);
- convertEffects(e);
- }
- }
-
- // Material is just a link to the effect
- nl = docEle.getElementsByTagName("material");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element m = (Element)nl.item(i);
- convertMaterials(m);
- }
- }
-
- // Look through the geometry list and build up a correlation between id's and names
- nl = docEle.getElementsByTagName("geometry");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element m = (Element)nl.item(i);
- convertGeometries(m);
- }
- }
-
-
- nl = docEle.getElementsByTagName("visual_scene");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element s = (Element)nl.item(i);
- getScene(s);
- }
- }
- }
-
- private void getRenderable(Element shape, Transform t) {
- String geoURL = shape.getAttribute("url").substring(1);
- String geoName = mMeshIdNameMap.get(geoURL);
- if (geoName != null) {
- geoURL = geoName;
- }
- //RenderableGroup group = new RenderableGroup();
- //group.setName(geoURL.substring(1));
- //mScene.appendRenderable(group);
- NodeList nl = shape.getElementsByTagName("instance_material");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element materialRef = (Element)nl.item(i);
- String meshIndexName = materialRef.getAttribute("symbol");
- String materialName = materialRef.getAttribute("target");
-
- Renderable d = new Renderable();
- d.setMesh(geoURL, meshIndexName);
- d.setMaterialName(materialName.substring(1));
- d.setName(geoURL);
-
- //Log.v(TAG, "Created drawable geo " + geoURL + " index " + meshIndexName + " material " + materialName);
-
- d.setTransform(t);
- //Log.v(TAG, "Set source param " + t.getName());
-
- // Now find all the parameters that exist on the material
- ArrayList<ShaderParam> materialParams;
- materialParams = mEffectsParams.get(materialName.substring(1));
- for (int pI = 0; pI < materialParams.size(); pI ++) {
- d.appendSourceParams(materialParams.get(pI));
- //Log.v(TAG, "Set source param i: " + pI + " name " + materialParams.get(pI).getParamName());
- }
- mScene.appendRenderable(d);
- //group.appendChildren(d);
- }
- }
- }
-
- private void updateLight(Element shape, Transform t) {
- String lightURL = shape.getAttribute("url");
- // collada uses a uri structure to link things,
- // but we ignore it for now and do a simple search
- LightBase light = mLights.get(lightURL.substring(1));
- if (light != null) {
- light.setTransform(t);
- //Log.v(TAG, "Set Light " + light.getName() + " " + t.getName());
- }
- }
-
- private void updateCamera(Element shape, Transform t) {
- String camURL = shape.getAttribute("url");
- // collada uses a uri structure to link things,
- // but we ignore it for now and do a simple search
- Camera cam = mCameras.get(camURL.substring(1));
- if (cam != null) {
- cam.setTransform(t);
- //Log.v(TAG, "Set Camera " + cam.getName() + " " + t.getName());
- }
- }
-
- private void getNode(Element node, Transform parent, String indent) {
- String name = node.getAttribute("name");
- String id = node.getAttribute("id");
- CompoundTransform current = new CompoundTransform();
- current.setName(name);
- if (parent != null) {
- parent.appendChild(current);
- } else {
- mScene.appendTransform(current);
- }
-
- mScene.addToTransformMap(current);
-
- //Log.v(TAG, indent + "|");
- //Log.v(TAG, indent + "[" + name + "]");
-
- Node childNode = node.getFirstChild();
- while (childNode != null) {
- if (childNode.getNodeType() == Node.ELEMENT_NODE) {
- Element field = (Element)childNode;
- String fieldName = field.getTagName();
- String description = field.getAttribute("sid");
- if (fieldName.equals("translate")) {
- Float3 value = getFloat3(field);
- current.addTranslate(description, value);
- //Log.v(TAG, indent + " translate " + description + toString(value));
- } else if (fieldName.equals("rotate")) {
- Float4 value = getFloat4(field);
- //Log.v(TAG, indent + " rotate " + description + toString(value));
- Float3 axis = new Float3(value.x, value.y, value.z);
- current.addRotate(description, axis, value.w);
- } else if (fieldName.equals("scale")) {
- Float3 value = getFloat3(field);
- //Log.v(TAG, indent + " scale " + description + toString(value));
- current.addScale(description, value);
- } else if (fieldName.equals("instance_geometry")) {
- getRenderable(field, current);
- } else if (fieldName.equals("instance_light")) {
- updateLight(field, current);
- } else if (fieldName.equals("instance_camera")) {
- updateCamera(field, current);
- } else if (fieldName.equals("node")) {
- getNode(field, current, indent + " ");
- }
- }
- childNode = childNode.getNextSibling();
- }
- }
-
- // This will find the actual texture node, which is sometimes hidden behind a sampler
- // and sometimes referenced directly
- Texture2D getTexture(String samplerName) {
- String texName = samplerName;
-
- // Check to see if the image file is hidden by a sampler surface link combo
- Element sampler = mDom.getElementById(samplerName);
- if (sampler != null) {
- NodeList nl = sampler.getElementsByTagName("source");
- if (nl != null && nl.getLength() == 1) {
- Element ref = (Element)nl.item(0);
- String surfaceName = getString(ref);
- if (surfaceName == null) {
- return null;
- }
-
- Element surface = mDom.getElementById(surfaceName);
- if (surface == null) {
- return null;
- }
- nl = surface.getElementsByTagName("init_from");
- if (nl != null && nl.getLength() == 1) {
- ref = (Element)nl.item(0);
- texName = getString(ref);
- }
- }
- }
-
- //Log.v(TAG, "Extracted texture name " + texName);
- return mImages.get(texName);
- }
-
- void extractParams(Element fx, ArrayList<ShaderParam> params) {
- Node paramNode = fx.getFirstChild();
- while (paramNode != null) {
- if (paramNode.getNodeType() == Node.ELEMENT_NODE) {
- String name = paramNode.getNodeName();
- // Now find what type it is
- Node typeNode = paramNode.getFirstChild();
- while (typeNode != null && typeNode.getNodeType() != Node.ELEMENT_NODE) {
- typeNode = typeNode.getNextSibling();
- }
- String paramType = typeNode.getNodeName();
- Element typeElem = (Element)typeNode;
- ShaderParam sceneParam = null;
- if (paramType.equals("color")) {
- Float4Param f4p = new Float4Param(name);
- Float4 value = getFloat4(typeElem);
- f4p.setValue(value);
- sceneParam = f4p;
- //Log.v(TAG, "Extracted " + sceneParam.getParamName() + " value " + toString(value));
- } else if (paramType.equals("float")) {
- Float4Param f4p = new Float4Param(name);
- float value = getFloat(typeElem);
- f4p.setValue(new Float4(value, value, value, value));
- sceneParam = f4p;
- //Log.v(TAG, "Extracted " + sceneParam.getParamName() + " value " + value);
- } else if (paramType.equals("texture")) {
- String samplerName = typeElem.getAttribute("texture");
- Texture2D tex = getTexture(samplerName);
- TextureParam texP = new TextureParam(name);
- texP.setTexture(tex);
- sceneParam = texP;
- //Log.v(TAG, "Extracted texture " + tex);
- }
- if (sceneParam != null) {
- params.add(sceneParam);
- }
- }
- paramNode = paramNode.getNextSibling();
- }
- }
-
- private void convertMaterials(Element mat) {
- String id = mat.getAttribute("id");
- NodeList nl = mat.getElementsByTagName("instance_effect");
- if (nl != null && nl.getLength() == 1) {
- Element ref = (Element)nl.item(0);
- String url = ref.getAttribute("url");
- ArrayList<ShaderParam> params = mEffectsParams.get(url.substring(1));
- mEffectsParams.put(id, params);
- }
- }
-
- private void convertGeometries(Element geo) {
- String id = geo.getAttribute("id");
- String name = geo.getAttribute("name");
- if (!id.equals(name)) {
- mMeshIdNameMap.put(id, name);
- }
- }
-
- private void convertEffects(Element fx) {
- String id = fx.getAttribute("id");
- ArrayList<ShaderParam> params = new ArrayList<ShaderParam>();
-
- NodeList nl = fx.getElementsByTagName("newparam");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element field = (Element)nl.item(i);
- field.setIdAttribute("sid", true);
- }
- }
-
- nl = fx.getElementsByTagName("blinn");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element field = (Element)nl.item(i);
- //Log.v(TAG, "blinn");
- extractParams(field, params);
- }
- }
- nl = fx.getElementsByTagName("lambert");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element field = (Element)nl.item(i);
- //Log.v(TAG, "lambert");
- extractParams(field, params);
- }
- }
- nl = fx.getElementsByTagName("phong");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element field = (Element)nl.item(i);
- //Log.v(TAG, "phong");
- extractParams(field, params);
- }
- }
- mEffectsParams.put(id, params);
- }
-
- private void convertLight(Element light) {
- String name = light.getAttribute("name");
- String id = light.getAttribute("id");
-
- // Determine type
- String[] knownTypes = { "point", "spot", "directional" };
- final int POINT_LIGHT = 0;
- final int SPOT_LIGHT = 1;
- final int DIR_LIGHT = 2;
- int type = -1;
- for (int i = 0; i < knownTypes.length; i ++) {
- NodeList nl = light.getElementsByTagName(knownTypes[i]);
- if (nl != null && nl.getLength() != 0) {
- type = i;
- break;
- }
- }
-
- //Log.v(TAG, "Found Light Type " + type);
-
- LightBase sceneLight = null;
- switch (type) {
- case POINT_LIGHT:
- sceneLight = new PointLight();
- break;
- case SPOT_LIGHT: // TODO: finish light types
- break;
- case DIR_LIGHT: // TODO: finish light types
- break;
- }
-
- if (sceneLight == null) {
- return;
- }
-
- Float3 color = getFloat3(light, "color");
- sceneLight.setColor(color.x, color.y, color.z);
- sceneLight.setName(name);
- mScene.appendLight(sceneLight);
- mLights.put(id, sceneLight);
-
- //Log.v(TAG, "Light " + name + " color " + toString(color));
- }
-
- private void convertCamera(Element camera) {
- String name = camera.getAttribute("name");
- String id = camera.getAttribute("id");
- float fov = 30.0f;
- if (getString(camera, "yfov") != null) {
- fov = getFloat(camera, "yfov");
- } else if(getString(camera, "xfov") != null) {
- float aspect = getFloat(camera, "aspect_ratio");
- fov = getFloat(camera, "xfov") / aspect;
- }
-
- float near = getFloat(camera, "znear");
- float far = getFloat(camera, "zfar");
-
- Camera sceneCamera = new Camera();
- sceneCamera.setFOV(fov);
- sceneCamera.setNear(near);
- sceneCamera.setFar(far);
- sceneCamera.setName(name);
- mScene.appendCamera(sceneCamera);
- mCameras.put(id, sceneCamera);
- }
-
- private void convertImage(Element img) {
- String name = img.getAttribute("name");
- String id = img.getAttribute("id");
- String file = getString(img, "init_from");
-
- Texture2D tex = new Texture2D();
- tex.setFileName(file);
- tex.setFileDir(mRootDir);
- mScene.appendTextures(tex);
- mImages.put(id, tex);
- }
-
- private void getScene(Element scene) {
- String name = scene.getAttribute("name");
- String id = scene.getAttribute("id");
-
- Node childNode = scene.getFirstChild();
- while (childNode != null) {
- if (childNode.getNodeType() == Node.ELEMENT_NODE) {
- String indent = "";
- getNode((Element)childNode, null, indent);
- }
- childNode = childNode.getNextSibling();
- }
- }
-
- private String getString(Element elem, String name) {
- String text = null;
- NodeList nl = elem.getElementsByTagName(name);
- if (nl != null && nl.getLength() != 0) {
- text = ((Element)nl.item(0)).getFirstChild().getNodeValue();
- }
- return text;
- }
-
- private String getString(Element elem) {
- String text = null;
- text = elem.getFirstChild().getNodeValue();
- return text;
- }
-
- private int getInt(Element elem, String name) {
- return Integer.parseInt(getString(elem, name));
- }
-
- private float getFloat(Element elem, String name) {
- return Float.parseFloat(getString(elem, name));
- }
-
- private float getFloat(Element elem) {
- return Float.parseFloat(getString(elem));
- }
-
- private Float3 parseFloat3(String valueString) {
- StringTokenizer st = new StringTokenizer(valueString);
- float x = Float.parseFloat(st.nextToken());
- float y = Float.parseFloat(st.nextToken());
- float z = Float.parseFloat(st.nextToken());
- return new Float3(x, y, z);
- }
-
- private Float4 parseFloat4(String valueString) {
- StringTokenizer st = new StringTokenizer(valueString);
- float x = Float.parseFloat(st.nextToken());
- float y = Float.parseFloat(st.nextToken());
- float z = Float.parseFloat(st.nextToken());
- float w = Float.parseFloat(st.nextToken());
- return new Float4(x, y, z, w);
- }
-
- private Float3 getFloat3(Element elem, String name) {
- String valueString = getString(elem, name);
- return parseFloat3(valueString);
- }
-
- private Float4 getFloat4(Element elem, String name) {
- String valueString = getString(elem, name);
- return parseFloat4(valueString);
- }
-
- private Float3 getFloat3(Element elem) {
- String valueString = getString(elem);
- return parseFloat3(valueString);
- }
-
- private Float4 getFloat4(Element elem) {
- String valueString = getString(elem);
- return parseFloat4(valueString);
- }
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/ColladaScene.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/ColladaScene.java deleted file mode 100644 index 301075e52441..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/ColladaScene.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -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 com.android.scenegraph.SceneManager.SceneLoadedCallback; - - -public class ColladaScene { - - private String modelName; - private static String TAG = "ColladaScene"; - private final int STATE_LAST_FOCUS = 1; - boolean mLoadFromSD = false; - - SceneLoadedCallback mCallback; - - public ColladaScene(String name, SceneLoadedCallback cb) { - modelName = name; - mCallback = cb; - } - - public void init(RenderScriptGL rs, Resources res) { - mRS = rs; - mRes = res; - - mLoadFromSD = SceneManager.isSDCardPath(modelName); - - new ColladaLoaderTask().execute(modelName); - } - - private Resources mRes; - private RenderScriptGL mRS; - Scene mActiveScene; - - private class ColladaLoaderTask extends AsyncTask<String, Void, Boolean> { - ColladaParser sceneSource; - protected Boolean doInBackground(String... names) { - String rootDir = names[0].substring(0, names[0].lastIndexOf('/') + 1); - long start = System.currentTimeMillis(); - sceneSource = new ColladaParser(); - InputStream is = null; - try { - if (!mLoadFromSD) { - is = mRes.getAssets().open(names[0]); - } else { - File f = new File(names[0]); - is = new BufferedInputStream(new FileInputStream(f)); - } - } catch (IOException e) { - Log.e(TAG, "Could not open collada file"); - return new Boolean(false); - } - long end = System.currentTimeMillis(); - Log.v("TIMER", "Stream load time: " + (end - start)); - - start = System.currentTimeMillis(); - sceneSource.init(is, rootDir); - end = System.currentTimeMillis(); - Log.v("TIMER", "Collada parse time: " + (end - start)); - return new Boolean(true); - } - - protected void onPostExecute(Boolean result) { - mActiveScene = sceneSource.getScene(); - if (mCallback != null) { - mCallback.mLoadedScene = mActiveScene; - mCallback.run(); - } - - String shortName = modelName.substring(0, modelName.lastIndexOf('.')); - new A3DLoaderTask().execute(shortName + ".a3d"); - } - } - - private class A3DLoaderTask extends AsyncTask<String, Void, Boolean> { - protected Boolean doInBackground(String... names) { - long start = System.currentTimeMillis(); - FileA3D model; - if (!mLoadFromSD) { - model = FileA3D.createFromAsset(mRS, mRes.getAssets(), names[0]); - } else { - model = FileA3D.createFromFile(mRS, names[0]); - } - int numModels = model.getIndexEntryCount(); - for (int i = 0; i < numModels; i ++) { - FileA3D.IndexEntry entry = model.getIndexEntry(i); - if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) { - mActiveScene.meshLoaded(entry.getMesh()); - } - } - long end = System.currentTimeMillis(); - Log.v("TIMER", "A3D load time: " + (end - start)); - return new Boolean(true); - } - - protected void onPostExecute(Boolean result) { - } - } - -} - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/CompoundTransform.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/CompoundTransform.java deleted file mode 100644 index 9274b171b62c..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/CompoundTransform.java +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; -import java.util.ArrayList; - -import com.android.scenegraph.SceneManager; - -import android.renderscript.*; -import android.renderscript.Float3; -import android.renderscript.Matrix4f; -import android.util.Log; - -/** - * @hide - */ -public class CompoundTransform extends Transform { - - public static abstract class Component { - String mName; - CompoundTransform mParent; - int mParentIndex; - protected ScriptField_TransformComponent_s.Item mData; - - Component(int type, String name) { - mData = new ScriptField_TransformComponent_s.Item(); - mData.type = type; - mName = name; - } - - void setNameAlloc() { - RenderScriptGL rs = SceneManager.getRS(); - if (mData.name != null) { - return; - } - mData.name = SceneManager.getCachedAlloc(getName()); - if (mData.name == null) { - mData.name = SceneManager.getStringAsAllocation(rs, getName()); - SceneManager.cacheAlloc(getName(), mData.name); - } - } - - ScriptField_TransformComponent_s.Item getRSData() { - setNameAlloc(); - return mData; - } - - protected void update() { - if (mParent != null) { - mParent.updateRSComponent(this); - } - } - - public String getName() { - return mName; - } - } - - public static class TranslateComponent extends Component { - public TranslateComponent(String name, Float3 translate) { - super(ScriptC_export.const_Transform_TRANSLATE, name); - setValue(translate); - } - public Float3 getValue() { - return new Float3(mData.value.x, mData.value.y, mData.value.z); - } - public void setValue(Float3 val) { - mData.value.x = val.x; - mData.value.y = val.y; - mData.value.z = val.z; - update(); - } - } - - public static class RotateComponent extends Component { - public RotateComponent(String name, Float3 axis, float angle) { - super(ScriptC_export.const_Transform_ROTATE, name); - setAxis(axis); - setAngle(angle); - } - public Float3 getAxis() { - return new Float3(mData.value.x, mData.value.y, mData.value.z); - } - public float getAngle() { - return mData.value.w; - } - public void setAxis(Float3 val) { - mData.value.x = val.x; - mData.value.y = val.y; - mData.value.z = val.z; - update(); - } - public void setAngle(float val) { - mData.value.w = val; - update(); - } - } - - public static class ScaleComponent extends Component { - public ScaleComponent(String name, Float3 scale) { - super(ScriptC_export.const_Transform_SCALE, name); - setValue(scale); - } - public Float3 getValue() { - return new Float3(mData.value.x, mData.value.y, mData.value.z); - } - public void setValue(Float3 val) { - mData.value.x = val.x; - mData.value.y = val.y; - mData.value.z = val.z; - update(); - } - } - - ScriptField_TransformComponent_s mComponentField; - public ArrayList<Component> mTransformComponents; - - public CompoundTransform() { - mTransformComponents = new ArrayList<Component>(); - } - - public TranslateComponent addTranslate(String name, Float3 translate) { - TranslateComponent c = new TranslateComponent(name, translate); - addComponent(c); - return c; - } - - public RotateComponent addRotate(String name, Float3 axis, float angle) { - RotateComponent c = new RotateComponent(name, axis, angle); - addComponent(c); - return c; - } - - public ScaleComponent addScale(String name, Float3 scale) { - ScaleComponent c = new ScaleComponent(name, scale); - addComponent(c); - return c; - } - - public void addComponent(Component c) { - if (c.mParent != null) { - throw new IllegalArgumentException("Transform components may not be shared"); - } - c.mParent = this; - c.mParentIndex = mTransformComponents.size(); - mTransformComponents.add(c); - updateRSComponentAllocation(); - } - - public void setComponent(int index, Component c) { - if (c.mParent != null) { - throw new IllegalArgumentException("Transform components may not be shared"); - } - if (index >= mTransformComponents.size()) { - throw new IllegalArgumentException("Invalid component index"); - } - c.mParent = this; - c.mParentIndex = index; - mTransformComponents.set(index, c); - updateRSComponent(c); - } - - void updateRSComponent(Component c) { - if (mField == null || mComponentField == null) { - return; - } - mComponentField.set(c.getRSData(), c.mParentIndex, true); - mField.set_isDirty(0, 1, true); - } - - void updateRSComponentAllocation() { - if (mField == null) { - return; - } - initLocalData(); - - mField.set_components(0, mTransformData.components, false); - mField.set_isDirty(0, 1, true); - } - - void initLocalData() { - RenderScriptGL rs = SceneManager.getRS(); - int numComponenets = mTransformComponents.size(); - if (numComponenets > 0) { - mComponentField = new ScriptField_TransformComponent_s(rs, numComponenets); - for (int i = 0; i < numComponenets; i ++) { - Component ith = mTransformComponents.get(i); - mComponentField.set(ith.getRSData(), i, false); - } - mComponentField.copyAll(); - - mTransformData.components = mComponentField.getAllocation(); - } - } -} - - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Float4Param.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Float4Param.java deleted file mode 100644 index 15024588cad9..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Float4Param.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; -import java.util.ArrayList; - -import com.android.scenegraph.Scene; -import com.android.scenegraph.SceneManager; - -import android.renderscript.Element; -import android.renderscript.Float4; -import android.renderscript.Matrix4f; -import android.renderscript.ProgramFragment; -import android.renderscript.ProgramStore; -import android.renderscript.ProgramVertex; -import android.renderscript.RenderScriptGL; -import android.util.Log; - -/** - * @hide - */ -public class Float4Param extends ShaderParam { - private static String TAG = "Float4Param"; - - LightBase mLight; - - public Float4Param(String name) { - super(name); - } - - public Float4Param(String name, float x) { - super(name); - set(x, 0, 0, 0); - } - - public Float4Param(String name, float x, float y) { - super(name); - set(x, y, 0, 0); - } - - public Float4Param(String name, float x, float y, float z) { - super(name); - set(x, y, z, 0); - } - - public Float4Param(String name, float x, float y, float z, float w) { - super(name); - set(x, y, z, w); - } - - void set(float x, float y, float z, float w) { - mData.float_value.x = x; - mData.float_value.y = y; - mData.float_value.z = z; - mData.float_value.w = w; - if (mField != null) { - mField.set_float_value(0, mData.float_value, true); - } - incTimestamp(); - } - - public void setValue(Float4 v) { - set(v.x, v.y, v.z, v.w); - } - - public Float4 getValue() { - return mData.float_value; - } - - public void setLight(LightBase l) { - mLight = l; - if (mField != null) { - mData.light = mLight.getRSData().getAllocation(); - mField.set_light(0, mData.light, true); - } - incTimestamp(); - } - - boolean findLight(String property) { - String indexStr = mParamName.substring(property.length() + 1); - if (indexStr == null) { - Log.e(TAG, "Invalid light index."); - return false; - } - int index = Integer.parseInt(indexStr); - if (index == -1) { - return false; - } - Scene parentScene = SceneManager.getInstance().getActiveScene(); - ArrayList<LightBase> allLights = parentScene.getLights(); - if (index >= allLights.size()) { - return false; - } - mLight = allLights.get(index); - if (mLight == null) { - return false; - } - return true; - } - - int getTypeFromName() { - int paramType = ScriptC_export.const_ShaderParam_FLOAT4_DATA; - if (mParamName.equalsIgnoreCase(cameraPos)) { - paramType = ScriptC_export.const_ShaderParam_FLOAT4_CAMERA_POS; - } else if(mParamName.equalsIgnoreCase(cameraDir)) { - paramType = ScriptC_export.const_ShaderParam_FLOAT4_CAMERA_DIR; - } else if(mParamName.startsWith(lightColor) && findLight(lightColor)) { - paramType = ScriptC_export.const_ShaderParam_FLOAT4_LIGHT_COLOR; - } else if(mParamName.startsWith(lightPos) && findLight(lightPos)) { - paramType = ScriptC_export.const_ShaderParam_FLOAT4_LIGHT_POS; - } else if(mParamName.startsWith(lightDir) && findLight(lightDir)) { - paramType = ScriptC_export.const_ShaderParam_FLOAT4_LIGHT_DIR; - } - return paramType; - } - - void initLocalData() { - mData.type = getTypeFromName(); - if (mCamera != null) { - mData.camera = mCamera.getRSData().getAllocation(); - } - if (mLight != null) { - mData.light = mLight.getRSData().getAllocation(); - } - } -} - - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/FragmentShader.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/FragmentShader.java deleted file mode 100644 index 8a468db9a1cf..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/FragmentShader.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; -import java.util.ArrayList; - -import com.android.scenegraph.TextureBase; - -import android.content.res.Resources; -import android.renderscript.*; -import android.renderscript.ProgramFragment.Builder; -import android.util.Log; - -/** - * @hide - */ -public class FragmentShader extends Shader { - ProgramFragment mProgram; - ScriptField_FragmentShader_s mField; - - public static class Builder { - - FragmentShader mShader; - ProgramFragment.Builder mBuilder; - - public Builder(RenderScriptGL rs) { - mShader = new FragmentShader(); - mBuilder = new ProgramFragment.Builder(rs); - } - - public Builder setShader(Resources resources, int resourceID) { - mBuilder.setShader(resources, resourceID); - return this; - } - - public Builder setShader(String code) { - mBuilder.setShader(code); - return this; - } - - public Builder setObjectConst(Type type) { - mShader.mPerObjConstants = type; - return this; - } - - public Builder setShaderConst(Type type) { - mShader.mPerShaderConstants = type; - return this; - } - - public Builder addShaderTexture(Program.TextureType texType, String name) { - mShader.mShaderTextureNames.add(name); - mShader.mShaderTextureTypes.add(texType); - return this; - } - - public Builder addTexture(Program.TextureType texType, String name) { - mShader.mTextureNames.add(name); - mShader.mTextureTypes.add(texType); - return this; - } - - public FragmentShader create() { - if (mShader.mPerShaderConstants != null) { - mBuilder.addConstant(mShader.mPerShaderConstants); - } - if (mShader.mPerObjConstants != null) { - mBuilder.addConstant(mShader.mPerObjConstants); - } - for (int i = 0; i < mShader.mTextureTypes.size(); i ++) { - mBuilder.addTexture(mShader.mTextureTypes.get(i), - mShader.mTextureNames.get(i)); - } - for (int i = 0; i < mShader.mShaderTextureTypes.size(); i ++) { - mBuilder.addTexture(mShader.mShaderTextureTypes.get(i), - mShader.mShaderTextureNames.get(i)); - } - - mShader.mProgram = mBuilder.create(); - return mShader; - } - } - - public ProgramFragment getProgram() { - return mProgram; - } - - ScriptField_ShaderParam_s getTextureParams() { - RenderScriptGL rs = SceneManager.getRS(); - Resources res = SceneManager.getRes(); - if (rs == null || res == null) { - return null; - } - - ArrayList<ScriptField_ShaderParam_s.Item> paramList; - paramList = new ArrayList<ScriptField_ShaderParam_s.Item>(); - - int shaderTextureStart = mTextureTypes.size(); - for (int i = 0; i < mShaderTextureNames.size(); i ++) { - ShaderParam sp = mSourceParams.get(mShaderTextureNames.get(i)); - if (sp != null && sp instanceof TextureParam) { - TextureParam p = (TextureParam)sp; - ScriptField_ShaderParam_s.Item paramRS = new ScriptField_ShaderParam_s.Item(); - paramRS.bufferOffset = shaderTextureStart + i; - paramRS.transformTimestamp = 0; - paramRS.dataTimestamp = 0; - paramRS.data = p.getRSData().getAllocation(); - paramList.add(paramRS); - } - } - - ScriptField_ShaderParam_s rsParams = null; - int paramCount = paramList.size(); - if (paramCount != 0) { - rsParams = new ScriptField_ShaderParam_s(rs, paramCount); - for (int i = 0; i < paramCount; i++) { - rsParams.set(paramList.get(i), i, false); - } - rsParams.copyAll(); - } - return rsParams; - } - - ScriptField_FragmentShader_s getRSData() { - if (mField != null) { - return mField; - } - - RenderScriptGL rs = SceneManager.getRS(); - Resources res = SceneManager.getRes(); - if (rs == null || res == null) { - return null; - } - - ScriptField_FragmentShader_s.Item item = new ScriptField_FragmentShader_s.Item(); - item.program = mProgram; - - ScriptField_ShaderParam_s texParams = getTextureParams(); - if (texParams != null) { - item.shaderTextureParams = texParams.getAllocation(); - } - - linkConstants(rs); - if (mPerShaderConstants != null) { - item.shaderConst = mConstantBuffer; - item.shaderConstParams = mConstantBufferParams.getAllocation(); - mProgram.bindConstants(item.shaderConst, 0); - } - - item.objectConstIndex = -1; - if (mPerObjConstants != null) { - item.objectConstIndex = mPerShaderConstants != null ? 1 : 0; - } - - mField = new ScriptField_FragmentShader_s(rs, 1); - mField.set(item, 0, true); - return mField; - } -} diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/LightBase.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/LightBase.java deleted file mode 100644 index 8f5e2e78c33f..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/LightBase.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; -import java.util.ArrayList; - -import android.renderscript.Float3; -import android.renderscript.Float4; -import android.renderscript.Matrix4f; -import android.renderscript.RenderScriptGL; -import android.util.Log; - -/** - * @hide - */ -public abstract class LightBase extends SceneGraphBase { - static final int RS_LIGHT_POINT = 0; - static final int RS_LIGHT_DIRECTIONAL = 1; - - ScriptField_Light_s mField; - ScriptField_Light_s.Item mFieldData; - Transform mTransform; - Float4 mColor; - float mIntensity; - public LightBase() { - mColor = new Float4(0.0f, 0.0f, 0.0f, 0.0f); - mIntensity = 1.0f; - } - - public void setTransform(Transform t) { - mTransform = t; - updateRSData(); - } - - public void setColor(float r, float g, float b) { - mColor.x = r; - mColor.y = g; - mColor.z = b; - updateRSData(); - } - - public void setColor(Float3 c) { - setColor(c.x, c.y, c.z); - } - - public void setIntensity(float i) { - mIntensity = i; - updateRSData(); - } - - public void setName(String n) { - super.setName(n); - updateRSData(); - } - - protected void updateRSData() { - if (mField == null) { - return; - } - RenderScriptGL rs = SceneManager.getRS(); - mFieldData.transformMatrix = mTransform.getRSData().getAllocation(); - mFieldData.name = getNameAlloc(rs); - mFieldData.color = mColor; - mFieldData.intensity = mIntensity; - - initLocalData(); - - mField.set(mFieldData, 0, true); - } - - abstract void initLocalData(); - - ScriptField_Light_s getRSData() { - if (mField != null) { - return mField; - } - - RenderScriptGL rs = SceneManager.getRS(); - if (rs == null) { - return null; - } - if (mField == null) { - mField = new ScriptField_Light_s(rs, 1); - mFieldData = new ScriptField_Light_s.Item(); - } - - updateRSData(); - - return mField; - } -} - - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/MatrixTransform.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/MatrixTransform.java deleted file mode 100644 index 6d70bc9e4cf4..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/MatrixTransform.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; -import java.util.ArrayList; - -import android.renderscript.Matrix4f; -import android.util.Log; - -/** - * @hide - */ -public class MatrixTransform extends Transform { - - Matrix4f mLocalMatrix; - public MatrixTransform() { - mLocalMatrix = new Matrix4f(); - } - - public void setMatrix(Matrix4f matrix) { - mLocalMatrix = matrix; - updateRSData(); - } - - public Matrix4f getMatrix() { - return new Matrix4f(mLocalMatrix.getArray()); - } - - void initLocalData() { - mTransformData.localMat = mLocalMatrix; - } - - void updateRSData() { - if (mField == null) { - return; - } - mField.set_localMat(0, mLocalMatrix, false); - mField.set_isDirty(0, 1, true); - } -} - - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/PointLight.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/PointLight.java deleted file mode 100644 index 574bafc4173c..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/PointLight.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; -import java.util.ArrayList; - -import android.renderscript.Matrix4f; -import android.renderscript.ProgramFragment; -import android.renderscript.ProgramStore; -import android.renderscript.ProgramVertex; -import android.util.Log; - -/** - * @hide - */ -public class PointLight extends LightBase { - public PointLight() { - } - - void initLocalData() { - mFieldData.type = RS_LIGHT_POINT; - } -} - - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderPass.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderPass.java deleted file mode 100644 index 02fd69d20078..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderPass.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; -import java.util.ArrayList; - -import android.util.Log; - -import android.renderscript.*; -import android.content.res.Resources; - -/** - * @hide - */ -public class RenderPass extends SceneGraphBase { - - TextureRenderTarget mColorTarget; - Float4 mClearColor; - boolean mShouldClearColor; - - TextureRenderTarget mDepthTarget; - float mClearDepth; - boolean mShouldClearDepth; - - ArrayList<RenderableBase> mObjectsToDraw; - - Camera mCamera; - - ScriptField_RenderPass_s.Item mRsField; - - public RenderPass() { - mObjectsToDraw = new ArrayList<RenderableBase>(); - mClearColor = new Float4(0.0f, 0.0f, 0.0f, 0.0f); - mShouldClearColor = true; - mClearDepth = 1.0f; - mShouldClearDepth = true; - } - - public void appendRenderable(Renderable d) { - mObjectsToDraw.add(d); - } - - public void setCamera(Camera c) { - mCamera = c; - } - - public void setColorTarget(TextureRenderTarget colorTarget) { - mColorTarget = colorTarget; - } - public void setClearColor(Float4 clearColor) { - mClearColor = clearColor; - } - public void setShouldClearColor(boolean shouldClearColor) { - mShouldClearColor = shouldClearColor; - } - - public void setDepthTarget(TextureRenderTarget depthTarget) { - mDepthTarget = depthTarget; - } - public void setClearDepth(float clearDepth) { - mClearDepth = clearDepth; - } - public void setShouldClearDepth(boolean shouldClearDepth) { - mShouldClearDepth = shouldClearDepth; - } - - public ArrayList<RenderableBase> getRenderables() { - return mObjectsToDraw; - } - - ScriptField_RenderPass_s.Item getRsField(RenderScriptGL rs, Resources res) { - if (mRsField != null) { - return mRsField; - } - - mRsField = new ScriptField_RenderPass_s.Item(); - if (mColorTarget != null) { - mRsField.color_target = mColorTarget.getRsData(true).get_texture(0); - } - if (mColorTarget != null) { - mRsField.depth_target = mDepthTarget.getRsData(true).get_texture(0); - } - mRsField.camera = mCamera != null ? mCamera.getRSData().getAllocation() : null; - - if (mObjectsToDraw.size() != 0) { - Allocation drawableData = Allocation.createSized(rs, - Element.ALLOCATION(rs), - mObjectsToDraw.size()); - Allocation[] drawableAllocs = new Allocation[mObjectsToDraw.size()]; - for (int i = 0; i < mObjectsToDraw.size(); i ++) { - Renderable dI = (Renderable)mObjectsToDraw.get(i); - drawableAllocs[i] = dI.getRsField(rs, res).getAllocation(); - } - drawableData.copyFrom(drawableAllocs); - mRsField.objects = drawableData; - } - - mRsField.clear_color = mClearColor; - mRsField.clear_depth = mClearDepth; - mRsField.should_clear_color = mShouldClearColor; - mRsField.should_clear_depth = mShouldClearDepth; - return mRsField; - } -} - - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderState.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderState.java deleted file mode 100644 index c08a72283a9e..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderState.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; -import java.util.ArrayList; -import android.content.res.Resources; - -import android.renderscript.Allocation; -import android.renderscript.Element; -import android.renderscript.Matrix4f; -import android.renderscript.ProgramFragment; -import android.renderscript.ProgramRaster; -import android.renderscript.ProgramStore; -import android.renderscript.ProgramVertex; -import android.renderscript.RSRuntimeException; -import android.renderscript.RenderScript; -import android.renderscript.RenderScriptGL; -import android.util.Log; - -/** - * @hide - */ -public class RenderState extends SceneGraphBase { - VertexShader mVertex; - FragmentShader mFragment; - ProgramStore mStore; - ProgramRaster mRaster; - - ScriptField_RenderState_s mField; - - public RenderState(VertexShader pv, - FragmentShader pf, - ProgramStore ps, - ProgramRaster pr) { - mVertex = pv; - mFragment = pf; - mStore = ps; - mRaster = pr; - } - - public RenderState(RenderState r) { - mVertex = r.mVertex; - mFragment = r.mFragment; - mStore = r.mStore; - mRaster = r.mRaster; - } - - public void setProgramVertex(VertexShader pv) { - mVertex = pv; - updateRSData(); - } - - public void setProgramFragment(FragmentShader pf) { - mFragment = pf; - updateRSData(); - } - - public void setProgramStore(ProgramStore ps) { - mStore = ps; - updateRSData(); - } - - public void setProgramRaster(ProgramRaster pr) { - mRaster = pr; - updateRSData(); - } - - void updateRSData() { - if (mField == null) { - return; - } - ScriptField_RenderState_s.Item item = new ScriptField_RenderState_s.Item(); - item.pv = mVertex.getRSData().getAllocation(); - item.pf = mFragment.getRSData().getAllocation(); - item.ps = mStore; - item.pr = mRaster; - - mField.set(item, 0, true); - } - - public ScriptField_RenderState_s getRSData() { - if (mField != null) { - return mField; - } - - RenderScriptGL rs = SceneManager.getRS(); - if (rs == null) { - return null; - } - - mField = new ScriptField_RenderState_s(rs, 1); - updateRSData(); - - return mField; - } -} diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Renderable.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Renderable.java deleted file mode 100644 index 9266f3058cf7..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Renderable.java +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; - -import com.android.scenegraph.Float4Param; -import com.android.scenegraph.MatrixTransform; -import com.android.scenegraph.SceneManager; -import com.android.scenegraph.ShaderParam; -import com.android.scenegraph.TransformParam; - -import android.content.res.Resources; -import android.renderscript.Allocation; -import android.renderscript.Element; -import android.renderscript.Element.DataType; -import android.renderscript.Matrix4f; -import android.renderscript.Mesh; -import android.renderscript.ProgramFragment; -import android.renderscript.ProgramStore; -import android.renderscript.ProgramVertex; -import android.renderscript.RenderScriptGL; -import android.util.Log; - -/** - * @hide - */ -public class Renderable extends RenderableBase { - HashMap<String, ShaderParam> mSourceParams; - - RenderState mRenderState; - Transform mTransform; - - String mMeshName; - String mMeshIndexName; - - public String mMaterialName; - - ScriptField_Renderable_s mField; - ScriptField_Renderable_s.Item mData; - - public Renderable() { - mSourceParams = new HashMap<String, ShaderParam>(); - mData = new ScriptField_Renderable_s.Item(); - } - - public void setCullType(int cull) { - mData.cullType = cull; - } - - public void setRenderState(RenderState renderState) { - mRenderState = renderState; - if (mField != null) { - RenderScriptGL rs = SceneManager.getRS(); - updateFieldItem(rs); - mField.set(mData, 0, true); - } - } - - public void setMesh(Mesh mesh) { - mData.mesh = mesh; - if (mField != null) { - mField.set_mesh(0, mData.mesh, true); - } - } - - public void setMesh(String mesh, String indexName) { - mMeshName = mesh; - mMeshIndexName = indexName; - } - - public void setMaterialName(String name) { - mMaterialName = name; - } - - public Transform getTransform() { - return mTransform; - } - - public void setTransform(Transform t) { - mTransform = t; - if (mField != null) { - RenderScriptGL rs = SceneManager.getRS(); - updateFieldItem(rs); - mField.set(mData, 0, true); - } - } - - public void appendSourceParams(ShaderParam p) { - mSourceParams.put(p.getParamName(), p); - // Possibly lift this restriction later - if (mField != null) { - throw new RuntimeException("Can't add source params to objects that are rendering"); - } - } - - public void resolveMeshData(Mesh mesh) { - mData.mesh = mesh; - if (mData.mesh == null) { - Log.v("DRAWABLE: ", "*** NO MESH *** " + mMeshName); - return; - } - int subIndexCount = mData.mesh.getPrimitiveCount(); - if (subIndexCount == 1 || mMeshIndexName == null) { - mData.meshIndex = 0; - } else { - for (int i = 0; i < subIndexCount; i ++) { - if (mData.mesh.getIndexSetAllocation(i).getName().equals(mMeshIndexName)) { - mData.meshIndex = i; - break; - } - } - } - if (mField != null) { - mField.set(mData, 0, true); - } - } - - void updateTextures(RenderScriptGL rs) { - Iterator<ShaderParam> allParamsIter = mSourceParams.values().iterator(); - int paramIndex = 0; - while (allParamsIter.hasNext()) { - ShaderParam sp = allParamsIter.next(); - if (sp instanceof TextureParam) { - TextureParam p = (TextureParam)sp; - TextureBase tex = p.getTexture(); - if (tex != null) { - mData.pf_textures[paramIndex++] = tex.getRsData(false).getAllocation(); - } - } - } - ProgramFragment pf = mRenderState.mFragment.mProgram; - mData.pf_num_textures = pf != null ? Math.min(pf.getTextureCount(), paramIndex) : 0; - if (mField != null) { - mField.set_pf_textures(0, mData.pf_textures, true); - mField.set_pf_num_textures(0, mData.pf_num_textures, true); - } - } - - public void setVisible(boolean vis) { - mData.cullType = vis ? 0 : 2; - if (mField != null) { - mField.set_cullType(0, mData.cullType, true); - } - } - - ScriptField_Renderable_s getRsField(RenderScriptGL rs, Resources res) { - if (mField != null) { - return mField; - } - updateFieldItem(rs); - updateTextures(rs); - - mField = new ScriptField_Renderable_s(rs, 1); - mField.set(mData, 0, true); - - return mField; - } - - void updateVertexConstants(RenderScriptGL rs) { - Allocation pvParams = null, vertexConstants = null; - VertexShader pv = mRenderState.mVertex; - if (pv != null && pv.getObjectConstants() != null) { - vertexConstants = Allocation.createTyped(rs, pv.getObjectConstants()); - Element vertexConst = vertexConstants.getType().getElement(); - pvParams = ShaderParam.fillInParams(vertexConst, mSourceParams, - mTransform).getAllocation(); - } - mData.pv_const = vertexConstants; - mData.pv_constParams = pvParams; - } - - void updateFragmentConstants(RenderScriptGL rs) { - Allocation pfParams = null, fragmentConstants = null; - FragmentShader pf = mRenderState.mFragment; - if (pf != null && pf.getObjectConstants() != null) { - fragmentConstants = Allocation.createTyped(rs, pf.getObjectConstants()); - Element fragmentConst = fragmentConstants.getType().getElement(); - pfParams = ShaderParam.fillInParams(fragmentConst, mSourceParams, - mTransform).getAllocation(); - } - mData.pf_const = fragmentConstants; - mData.pf_constParams = pfParams; - } - - void updateFieldItem(RenderScriptGL rs) { - if (mRenderState == null) { - mRenderState = SceneManager.getDefaultState(); - } - if (mTransform == null) { - mTransform = SceneManager.getDefaultTransform(); - } - updateVertexConstants(rs); - updateFragmentConstants(rs); - - mData.transformMatrix = mTransform.getRSData().getAllocation(); - - mData.name = getNameAlloc(rs); - mData.render_state = mRenderState.getRSData().getAllocation(); - mData.bVolInitialized = 0; - } -} - - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderableBase.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderableBase.java deleted file mode 100644 index 74535dd94987..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderableBase.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; -import java.util.ArrayList; - -import android.renderscript.Matrix4f; -import android.renderscript.ProgramFragment; -import android.renderscript.ProgramStore; -import android.renderscript.ProgramVertex; -import android.util.Log; - -/** - * @hide - */ -public class RenderableBase extends SceneGraphBase { - public RenderableBase() { - } -} - - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderableGroup.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderableGroup.java deleted file mode 100644 index 590bbab9c5f8..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderableGroup.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; -import java.util.ArrayList; - -import android.renderscript.Matrix4f; -import android.renderscript.ProgramFragment; -import android.renderscript.ProgramStore; -import android.renderscript.ProgramVertex; -import android.util.Log; - -/** - * @hide - */ -public class RenderableGroup extends RenderableBase { - - ArrayList<RenderableBase> mChildren; - - public RenderableGroup() { - mChildren = new ArrayList<RenderableBase>(); - } - - public void appendChildren(RenderableBase d) { - mChildren.add(d); - } -} - - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Scene.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Scene.java deleted file mode 100644 index 27336abd5849..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Scene.java +++ /dev/null @@ -1,373 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import com.android.scenegraph.Camera; -import com.android.scenegraph.CompoundTransform; -import com.android.scenegraph.RenderPass; -import com.android.scenegraph.Renderable; -import com.android.scenegraph.SceneManager; -import com.android.scenegraph.TextureBase; - -import android.content.res.Resources; -import android.os.AsyncTask; -import android.renderscript.*; -import android.renderscript.Mesh; -import android.renderscript.RenderScriptGL; -import android.util.Log; - -/** - * @hide - */ -public class Scene extends SceneGraphBase { - private static String TIMER_TAG = "TIMER"; - - CompoundTransform mRootTransforms; - HashMap<String, Transform> mTransformMap; - ArrayList<RenderPass> mRenderPasses; - ArrayList<LightBase> mLights; - ArrayList<Camera> mCameras; - ArrayList<FragmentShader> mFragmentShaders; - ArrayList<VertexShader> mVertexShaders; - ArrayList<RenderableBase> mRenderables; - HashMap<String, RenderableBase> mRenderableMap; - ArrayList<Texture2D> mTextures; - - HashMap<String, ArrayList<Renderable> > mRenderableMeshMap; - - // RS Specific stuff - ScriptField_SgTransform mTransformRSData; - - RenderScriptGL mRS; - Resources mRes; - - ScriptField_RenderPass_s mRenderPassAlloc; - - public Scene() { - mRenderPasses = new ArrayList<RenderPass>(); - mLights = new ArrayList<LightBase>(); - mCameras = new ArrayList<Camera>(); - mFragmentShaders = new ArrayList<FragmentShader>(); - mVertexShaders = new ArrayList<VertexShader>(); - mRenderables = new ArrayList<RenderableBase>(); - mRenderableMap = new HashMap<String, RenderableBase>(); - mRenderableMeshMap = new HashMap<String, ArrayList<Renderable> >(); - mTextures = new ArrayList<Texture2D>(); - mRootTransforms = new CompoundTransform(); - mRootTransforms.setName("_scene_root_"); - mTransformMap = new HashMap<String, Transform>(); - } - - public void appendTransform(Transform t) { - if (t == null) { - throw new RuntimeException("Adding null object"); - } - mRootTransforms.appendChild(t); - } - - public CompoundTransform appendNewCompoundTransform() { - CompoundTransform t = new CompoundTransform(); - appendTransform(t); - return t; - } - - public MatrixTransform appendNewMatrixTransform() { - MatrixTransform t = new MatrixTransform(); - appendTransform(t); - return t; - } - - // temporary - public void addToTransformMap(Transform t) { - mTransformMap.put(t.getName(), t); - } - - public Transform getTransformByName(String name) { - return mTransformMap.get(name); - } - - public void appendRenderPass(RenderPass p) { - if (p == null) { - throw new RuntimeException("Adding null object"); - } - mRenderPasses.add(p); - } - - public RenderPass appendNewRenderPass() { - RenderPass p = new RenderPass(); - appendRenderPass(p); - return p; - } - - public void clearRenderPasses() { - mRenderPasses.clear(); - } - - public void appendLight(LightBase l) { - if (l == null) { - throw new RuntimeException("Adding null object"); - } - mLights.add(l); - } - - public void appendCamera(Camera c) { - if (c == null) { - throw new RuntimeException("Adding null object"); - } - mCameras.add(c); - } - - public Camera appendNewCamera() { - Camera c = new Camera(); - appendCamera(c); - return c; - } - - public void appendShader(FragmentShader f) { - if (f == null) { - throw new RuntimeException("Adding null object"); - } - mFragmentShaders.add(f); - } - - public void appendShader(VertexShader v) { - if (v == null) { - throw new RuntimeException("Adding null object"); - } - mVertexShaders.add(v); - } - - public ArrayList<Camera> getCameras() { - return mCameras; - } - - public ArrayList<LightBase> getLights() { - return mLights; - } - - public void appendRenderable(RenderableBase d) { - if (d == null) { - throw new RuntimeException("Adding null object"); - } - mRenderables.add(d); - if (d.getName() != null) { - mRenderableMap.put(d.getName(), d); - } - } - - public Renderable appendNewRenderable() { - Renderable r = new Renderable(); - appendRenderable(r); - return r; - } - - public ArrayList<RenderableBase> getRenderables() { - return mRenderables; - } - - public RenderableBase getRenderableByName(String name) { - return mRenderableMap.get(name); - } - - public void appendTextures(Texture2D tex) { - if (tex == null) { - throw new RuntimeException("Adding null object"); - } - mTextures.add(tex); - } - - public void assignRenderStateToMaterial(RenderState renderState, String regex) { - Pattern pattern = Pattern.compile(regex); - int numRenderables = mRenderables.size(); - for (int i = 0; i < numRenderables; i ++) { - Renderable shape = (Renderable)mRenderables.get(i); - Matcher m = pattern.matcher(shape.mMaterialName); - if (m.find()) { - shape.setRenderState(renderState); - } - } - } - - public void assignRenderState(RenderState renderState) { - int numRenderables = mRenderables.size(); - for (int i = 0; i < numRenderables; i ++) { - Renderable shape = (Renderable)mRenderables.get(i); - shape.setRenderState(renderState); - } - } - - public void meshLoaded(Mesh m) { - ArrayList<Renderable> entries = mRenderableMeshMap.get(m.getName()); - int numEntries = entries.size(); - for (int i = 0; i < numEntries; i++) { - Renderable d = entries.get(i); - d.resolveMeshData(m); - } - } - - void addToMeshMap(Renderable d) { - ArrayList<Renderable> entries = mRenderableMeshMap.get(d.mMeshName); - if (entries == null) { - entries = new ArrayList<Renderable>(); - mRenderableMeshMap.put(d.mMeshName, entries); - } - entries.add(d); - } - - public void destroyRS() { - SceneManager sceneManager = SceneManager.getInstance(); - mTransformRSData = null; - sceneManager.mRenderLoop.bind_gRootNode(mTransformRSData); - sceneManager.mRenderLoop.set_gRenderableObjects(null); - mRenderPassAlloc = null; - sceneManager.mRenderLoop.set_gRenderPasses(null); - sceneManager.mRenderLoop.bind_gFrontToBack(null); - sceneManager.mRenderLoop.bind_gBackToFront(null); - sceneManager.mRenderLoop.set_gCameras(null); - - mTransformMap = null; - mRenderPasses = null; - mLights = null; - mCameras = null; - mRenderables = null; - mRenderableMap = null; - mTextures = null; - mRenderableMeshMap = null; - mRootTransforms = null; - } - - public void initRenderPassRS(RenderScriptGL rs, SceneManager sceneManager) { - if (mRenderPasses.size() != 0) { - mRenderPassAlloc = new ScriptField_RenderPass_s(mRS, mRenderPasses.size()); - for (int i = 0; i < mRenderPasses.size(); i ++) { - mRenderPassAlloc.set(mRenderPasses.get(i).getRsField(mRS, mRes), i, false); - } - mRenderPassAlloc.copyAll(); - sceneManager.mRenderLoop.set_gRenderPasses(mRenderPassAlloc.getAllocation()); - } - } - - private void addDrawables(RenderScriptGL rs, Resources res, SceneManager sceneManager) { - Allocation drawableData = Allocation.createSized(rs, - Element.ALLOCATION(rs), - mRenderables.size()); - Allocation[] drawableAllocs = new Allocation[mRenderables.size()]; - for (int i = 0; i < mRenderables.size(); i ++) { - Renderable dI = (Renderable)mRenderables.get(i); - addToMeshMap(dI); - drawableAllocs[i] = dI.getRsField(rs, res).getAllocation(); - } - drawableData.copyFrom(drawableAllocs); - sceneManager.mRenderLoop.set_gRenderableObjects(drawableData); - - initRenderPassRS(rs, sceneManager); - } - - private void addShaders(RenderScriptGL rs, Resources res, SceneManager sceneManager) { - if (mVertexShaders.size() > 0) { - Allocation shaderData = Allocation.createSized(rs, Element.ALLOCATION(rs), - mVertexShaders.size()); - Allocation[] shaderAllocs = new Allocation[mVertexShaders.size()]; - for (int i = 0; i < mVertexShaders.size(); i ++) { - VertexShader sI = mVertexShaders.get(i); - shaderAllocs[i] = sI.getRSData().getAllocation(); - } - shaderData.copyFrom(shaderAllocs); - sceneManager.mRenderLoop.set_gVertexShaders(shaderData); - } - - if (mFragmentShaders.size() > 0) { - Allocation shaderData = Allocation.createSized(rs, Element.ALLOCATION(rs), - mFragmentShaders.size()); - Allocation[] shaderAllocs = new Allocation[mFragmentShaders.size()]; - for (int i = 0; i < mFragmentShaders.size(); i ++) { - FragmentShader sI = mFragmentShaders.get(i); - shaderAllocs[i] = sI.getRSData().getAllocation(); - } - shaderData.copyFrom(shaderAllocs); - sceneManager.mRenderLoop.set_gFragmentShaders(shaderData); - } - } - - public void initRS() { - SceneManager sceneManager = SceneManager.getInstance(); - mRS = SceneManager.getRS(); - mRes = SceneManager.getRes(); - long start = System.currentTimeMillis(); - mTransformRSData = mRootTransforms.getRSData(); - long end = System.currentTimeMillis(); - Log.v(TIMER_TAG, "Transform init time: " + (end - start)); - - start = System.currentTimeMillis(); - - sceneManager.mRenderLoop.bind_gRootNode(mTransformRSData); - end = System.currentTimeMillis(); - Log.v(TIMER_TAG, "Script init time: " + (end - start)); - - start = System.currentTimeMillis(); - addDrawables(mRS, mRes, sceneManager); - end = System.currentTimeMillis(); - Log.v(TIMER_TAG, "Renderable init time: " + (end - start)); - - addShaders(mRS, mRes, sceneManager); - - Allocation opaqueBuffer = null; - if (mRenderables.size() > 0) { - opaqueBuffer = Allocation.createSized(mRS, Element.U32(mRS), mRenderables.size()); - } - Allocation transparentBuffer = null; - if (mRenderables.size() > 0) { - transparentBuffer = Allocation.createSized(mRS, Element.U32(mRS), mRenderables.size()); - } - - sceneManager.mRenderLoop.bind_gFrontToBack(opaqueBuffer); - sceneManager.mRenderLoop.bind_gBackToFront(transparentBuffer); - - if (mCameras.size() > 0) { - Allocation cameraData; - cameraData = Allocation.createSized(mRS, Element.ALLOCATION(mRS), mCameras.size()); - Allocation[] cameraAllocs = new Allocation[mCameras.size()]; - for (int i = 0; i < mCameras.size(); i ++) { - cameraAllocs[i] = mCameras.get(i).getRSData().getAllocation(); - } - cameraData.copyFrom(cameraAllocs); - sceneManager.mRenderLoop.set_gCameras(cameraData); - } - - if (mLights.size() > 0) { - Allocation lightData = Allocation.createSized(mRS, - Element.ALLOCATION(mRS), - mLights.size()); - Allocation[] lightAllocs = new Allocation[mLights.size()]; - for (int i = 0; i < mLights.size(); i ++) { - lightAllocs[i] = mLights.get(i).getRSData().getAllocation(); - } - lightData.copyFrom(lightAllocs); - sceneManager.mRenderLoop.set_gLights(lightData); - } - } -} - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/SceneGraphBase.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/SceneGraphBase.java deleted file mode 100644 index 412ffbf77900..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/SceneGraphBase.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; -import java.util.ArrayList; - -import com.android.scenegraph.SceneManager; - -import android.renderscript.Allocation; -import android.renderscript.Element; -import android.renderscript.Matrix4f; -import android.renderscript.ProgramFragment; -import android.renderscript.ProgramStore; -import android.renderscript.ProgramVertex; -import android.renderscript.RSRuntimeException; -import android.renderscript.RenderScript; -import android.renderscript.RenderScriptGL; -import android.util.Log; - -/** - * @hide - */ -public abstract class SceneGraphBase { - String mName; - Allocation mNameAlloc; - public void setName(String n) { - mName = n; - mNameAlloc = null; - } - - public String getName() { - return mName; - } - - Allocation getNameAlloc(RenderScriptGL rs) { - if (mNameAlloc == null) { - mNameAlloc = SceneManager.getStringAsAllocation(rs, getName()); - } - return mNameAlloc; - } -} - - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/SceneManager.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/SceneManager.java deleted file mode 100644 index 4ff2c8b09371..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/SceneManager.java +++ /dev/null @@ -1,503 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.io.BufferedInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.Writer; -import java.lang.Math; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import com.android.scenegraph.Camera; -import com.android.scenegraph.FragmentShader; -import com.android.scenegraph.MatrixTransform; -import com.android.scenegraph.Scene; -import com.android.scenegraph.VertexShader; -import com.android.testapp.R; - -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.Mesh; -import android.renderscript.RenderScriptGL; -import android.util.Log; -import android.view.SurfaceHolder; - -/** - * @hide - */ -public class SceneManager extends SceneGraphBase { - - HashMap<String, Allocation> mAllocationMap; - - ScriptC_render mRenderLoop; - ScriptC mCameraScript; - ScriptC mLightScript; - ScriptC mObjectParamsScript; - ScriptC mFragmentParamsScript; - ScriptC mVertexParamsScript; - ScriptC mCullScript; - ScriptC_transform mTransformScript; - ScriptC_export mExportScript; - - RenderScriptGL mRS; - Resources mRes; - Mesh mQuad; - int mWidth; - int mHeight; - - Scene mActiveScene; - private static SceneManager sSceneManager; - - private Allocation mDefault2D; - private Allocation mDefaultCube; - - private FragmentShader mColor; - private FragmentShader mTexture; - private VertexShader mDefaultVertex; - - private RenderState mDefaultState; - private Transform mDefaultTransform; - - private static Allocation getDefault(boolean isCube) { - final int dimension = 4; - final int bytesPerPixel = 4; - int arraySize = dimension * dimension * bytesPerPixel; - - RenderScriptGL rs = sSceneManager.mRS; - Type.Builder b = new Type.Builder(rs, Element.RGBA_8888(rs)); - b.setX(dimension).setY(dimension); - if (isCube) { - b.setFaces(true); - arraySize *= 6; - } - Type bitmapType = b.create(); - - Allocation.MipmapControl mip = Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE; - int usage = Allocation.USAGE_GRAPHICS_TEXTURE; - Allocation defaultImage = Allocation.createTyped(rs, bitmapType, mip, usage); - - byte imageData[] = new byte[arraySize]; - defaultImage.copyFrom(imageData); - return defaultImage; - } - - static Allocation getDefaultTex2D() { - if (sSceneManager == null) { - return null; - } - if (sSceneManager.mDefault2D == null) { - sSceneManager.mDefault2D = getDefault(false); - } - return sSceneManager.mDefault2D; - } - - static Allocation getDefaultTexCube() { - if (sSceneManager == null) { - return null; - } - if (sSceneManager.mDefaultCube == null) { - sSceneManager.mDefaultCube = getDefault(true); - } - return sSceneManager.mDefaultCube; - } - - public static boolean isSDCardPath(String path) { - int sdCardIndex = path.indexOf("sdcard/"); - // We are looking for /sdcard/ or sdcard/ - if (sdCardIndex == 0 || sdCardIndex == 1) { - return true; - } - sdCardIndex = path.indexOf("mnt/sdcard/"); - if (sdCardIndex == 0 || sdCardIndex == 1) { - return true; - } - return false; - } - - static Bitmap loadBitmap(String name, Resources res) { - InputStream is = null; - boolean loadFromSD = isSDCardPath(name); - try { - if (!loadFromSD) { - is = res.getAssets().open(name); - } else { - File f = new File(name); - is = new BufferedInputStream(new FileInputStream(f)); - } - } catch (IOException e) { - Log.e("ImageLoaderTask", " Message: " + e.getMessage()); - return null; - } - - Bitmap b = BitmapFactory.decodeStream(is); - try { - is.close(); - } catch (IOException e) { - Log.e("ImageLoaderTask", " Message: " + e.getMessage()); - } - return b; - } - - static Allocation createFromBitmap(Bitmap b, RenderScriptGL rs, boolean isCube) { - if (b == null) { - return null; - } - MipmapControl mip = MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE; - int usage = Allocation.USAGE_GRAPHICS_TEXTURE; - if (isCube) { - return Allocation.createCubemapFromBitmap(rs, b, mip, usage); - } - return Allocation.createFromBitmap(rs, b, mip, usage); - } - - public static Allocation loadCubemap(String name, RenderScriptGL rs, Resources res) { - return createFromBitmap(loadBitmap(name, res), rs, true); - } - - public static Allocation loadCubemap(int id, RenderScriptGL rs, Resources res) { - return createFromBitmap(BitmapFactory.decodeResource(res, id), rs, true); - } - - public static Allocation loadTexture2D(String name, RenderScriptGL rs, Resources res) { - return createFromBitmap(loadBitmap(name, res), rs, false); - } - - public static Allocation loadTexture2D(int id, RenderScriptGL rs, Resources res) { - return createFromBitmap(BitmapFactory.decodeResource(res, id), rs, false); - } - - public static ProgramStore BLEND_ADD_DEPTH_NONE(RenderScript rs) { - ProgramStore.Builder builder = new ProgramStore.Builder(rs); - builder.setDepthFunc(ProgramStore.DepthFunc.ALWAYS); - builder.setBlendFunc(ProgramStore.BlendSrcFunc.ONE, ProgramStore.BlendDstFunc.ONE); - builder.setDitherEnabled(false); - builder.setDepthMaskEnabled(false); - return builder.create(); - } - - static Allocation getStringAsAllocation(RenderScript rs, String str) { - if (str == null) { - return null; - } - if (str.length() == 0) { - return null; - } - byte[] allocArray = null; - byte[] nullChar = new byte[1]; - nullChar[0] = 0; - try { - allocArray = str.getBytes("UTF-8"); - Allocation alloc = Allocation.createSized(rs, Element.U8(rs), - allocArray.length + 1, - Allocation.USAGE_SCRIPT); - alloc.copy1DRangeFrom(0, allocArray.length, allocArray); - alloc.copy1DRangeFrom(allocArray.length, 1, nullChar); - return alloc; - } - catch (Exception e) { - throw new RSRuntimeException("Could not convert string to utf-8."); - } - } - - static Allocation getCachedAlloc(String str) { - if (sSceneManager == null) { - throw new RuntimeException("Scene manager not initialized"); - } - return sSceneManager.mAllocationMap.get(str); - } - - static void cacheAlloc(String str, Allocation alloc) { - if (sSceneManager == null) { - throw new RuntimeException("Scene manager not initialized"); - } - sSceneManager.mAllocationMap.put(str, alloc); - } - - public static class SceneLoadedCallback implements Runnable { - public Scene mLoadedScene; - public String mName; - public void run() { - } - } - - public Scene getActiveScene() { - return mActiveScene; - } - - public void setActiveScene(Scene s) { - mActiveScene = s; - - if (mActiveScene == null) { - return; - } - - // Do some sanity checking - if (mActiveScene.getCameras().size() == 0) { - Matrix4f camPos = new Matrix4f(); - camPos.translate(0, 0, 10); - MatrixTransform cameraTransform = new MatrixTransform(); - cameraTransform.setName("_DefaultCameraTransform"); - cameraTransform.setMatrix(camPos); - mActiveScene.appendTransform(cameraTransform); - Camera cam = new Camera(); - cam.setName("_DefaultCamera"); - cam.setTransform(cameraTransform); - mActiveScene.appendCamera(cam); - } - - mActiveScene.appendShader(getDefaultVS()); - mActiveScene.appendTransform(getDefaultTransform()); - } - - static RenderScriptGL getRS() { - if (sSceneManager == null) { - return null; - } - return sSceneManager.mRS; - } - - static Resources getRes() { - if (sSceneManager == null) { - return null; - } - return sSceneManager.mRes; - } - - // Provides the folowing inputs to fragment shader - // Assigned by default if nothing is present - // vec3 varWorldPos; - // vec3 varWorldNormal; - // vec2 varTex0; - public static VertexShader getDefaultVS() { - if (sSceneManager == null) { - return null; - } - - if (sSceneManager.mDefaultVertex == null) { - RenderScriptGL rs = getRS(); - Element.Builder b = new Element.Builder(rs); - b.add(Element.MATRIX_4X4(rs), "model"); - Type.Builder objConstBuilder = new Type.Builder(rs, b.create()); - - b = new Element.Builder(rs); - b.add(Element.MATRIX_4X4(rs), "viewProj"); - Type.Builder shaderConstBuilder = new Type.Builder(rs, b.create()); - - b = new Element.Builder(rs); - b.add(Element.F32_4(rs), "position"); - b.add(Element.F32_2(rs), "texture0"); - b.add(Element.F32_3(rs), "normal"); - Element defaultIn = b.create(); - - final String code = "\n" + - "varying vec3 varWorldPos;\n" + - "varying vec3 varWorldNormal;\n" + - "varying vec2 varTex0;\n" + - "void main() {" + - " vec4 objPos = ATTRIB_position;\n" + - " vec4 worldPos = UNI_model * objPos;\n" + - " gl_Position = UNI_viewProj * worldPos;\n" + - " mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz);\n" + - " vec3 worldNorm = model3 * ATTRIB_normal;\n" + - " varWorldPos = worldPos.xyz;\n" + - " varWorldNormal = worldNorm;\n" + - " varTex0 = ATTRIB_texture0;\n" + - "}\n"; - - VertexShader.Builder sb = new VertexShader.Builder(rs); - sb.addInput(defaultIn); - sb.setObjectConst(objConstBuilder.setX(1).create()); - sb.setShaderConst(shaderConstBuilder.setX(1).create()); - sb.setShader(code); - sSceneManager.mDefaultVertex = sb.create(); - } - - return sSceneManager.mDefaultVertex; - } - - public static FragmentShader getColorFS() { - if (sSceneManager == null) { - return null; - } - if (sSceneManager.mColor == null) { - RenderScriptGL rs = getRS(); - Element.Builder b = new Element.Builder(rs); - b.add(Element.F32_4(rs), "color"); - Type.Builder objConstBuilder = new Type.Builder(rs, b.create()); - - final String code = "\n" + - "varying vec2 varTex0;\n" + - "void main() {\n" + - " lowp vec4 col = UNI_color;\n" + - " gl_FragColor = col;\n" + - "}\n"; - FragmentShader.Builder fb = new FragmentShader.Builder(rs); - fb.setShader(code); - fb.setObjectConst(objConstBuilder.create()); - sSceneManager.mColor = fb.create(); - } - - return sSceneManager.mColor; - } - - public static FragmentShader getTextureFS() { - if (sSceneManager == null) { - return null; - } - if (sSceneManager.mTexture == null) { - RenderScriptGL rs = getRS(); - - final String code = "\n" + - "varying vec2 varTex0;\n" + - "void main() {\n" + - " lowp vec4 col = texture2D(UNI_color, varTex0).rgba;\n" + - " gl_FragColor = col;\n" + - "}\n"; - - FragmentShader.Builder fb = new FragmentShader.Builder(rs); - fb.setShader(code); - fb.addTexture(Program.TextureType.TEXTURE_2D, "color"); - sSceneManager.mTexture = fb.create(); - sSceneManager.mTexture.mProgram.bindSampler(Sampler.CLAMP_LINEAR_MIP_LINEAR(rs), 0); - } - - return sSceneManager.mTexture; - } - - static RenderState getDefaultState() { - if (sSceneManager == null) { - return null; - } - if (sSceneManager.mDefaultState == null) { - sSceneManager.mDefaultState = new RenderState(getDefaultVS(), getColorFS(), null, null); - sSceneManager.mDefaultState.setName("__DefaultState"); - } - return sSceneManager.mDefaultState; - } - - static Transform getDefaultTransform() { - if (sSceneManager == null) { - return null; - } - if (sSceneManager.mDefaultTransform == null) { - sSceneManager.mDefaultTransform = new MatrixTransform(); - sSceneManager.mDefaultTransform.setName("__DefaultTransform"); - } - return sSceneManager.mDefaultTransform; - } - - public static SceneManager getInstance() { - if (sSceneManager == null) { - sSceneManager = new SceneManager(); - } - return sSceneManager; - } - - protected SceneManager() { - } - - public void loadModel(String name, SceneLoadedCallback cb) { - ColladaScene scene = new ColladaScene(name, cb); - scene.init(mRS, mRes); - } - - public Mesh getScreenAlignedQuad() { - if (mQuad != null) { - return mQuad; - } - - Mesh.TriangleMeshBuilder tmb = new Mesh.TriangleMeshBuilder(mRS, - 3, Mesh.TriangleMeshBuilder.TEXTURE_0); - - tmb.setTexture(0.0f, 1.0f).addVertex(-1.0f, 1.0f, 1.0f); - tmb.setTexture(0.0f, 0.0f).addVertex(-1.0f, -1.0f, 1.0f); - tmb.setTexture(1.0f, 0.0f).addVertex(1.0f, -1.0f, 1.0f); - tmb.setTexture(1.0f, 1.0f).addVertex(1.0f, 1.0f, 1.0f); - - tmb.addTriangle(0, 1, 2); - tmb.addTriangle(2, 3, 0); - - mQuad = tmb.create(true); - return mQuad; - } - - public Renderable getRenderableQuad(String name, RenderState state) { - Renderable quad = new Renderable(); - quad.setTransform(new MatrixTransform()); - quad.setMesh(getScreenAlignedQuad()); - quad.setName(name); - quad.setRenderState(state); - quad.setCullType(1); - return quad; - } - - public void initRS(RenderScriptGL rs, Resources res, int w, int h) { - mRS = rs; - mRes = res; - mAllocationMap = new HashMap<String, Allocation>(); - - mQuad = null; - mDefault2D = null; - mDefaultCube = null; - mDefaultVertex = null; - mColor = null; - mTexture = null; - mDefaultState = null; - mDefaultTransform = null; - - mExportScript = new ScriptC_export(rs, res, R.raw.export); - - mTransformScript = new ScriptC_transform(rs, res, R.raw.transform); - mTransformScript.set_gTransformScript(mTransformScript); - - mCameraScript = new ScriptC_camera(rs, res, R.raw.camera); - mLightScript = new ScriptC_light(rs, res, R.raw.light); - mObjectParamsScript = new ScriptC_object_params(rs, res, R.raw.object_params); - mFragmentParamsScript = new ScriptC_object_params(rs, res, R.raw.fragment_params); - mVertexParamsScript = new ScriptC_object_params(rs, res, R.raw.vertex_params); - mCullScript = new ScriptC_cull(rs, res, R.raw.cull); - - mRenderLoop = new ScriptC_render(rs, res, R.raw.render); - mRenderLoop.set_gTransformScript(mTransformScript); - mRenderLoop.set_gCameraScript(mCameraScript); - mRenderLoop.set_gLightScript(mLightScript); - mRenderLoop.set_gObjectParamsScript(mObjectParamsScript); - mRenderLoop.set_gFragmentParamsScript(mFragmentParamsScript); - mRenderLoop.set_gVertexParamsScript(mVertexParamsScript); - mRenderLoop.set_gCullScript(mCullScript); - - mRenderLoop.set_gPFSBackground(ProgramStore.BLEND_NONE_DEPTH_TEST(mRS)); - } - - public ScriptC getRenderLoop() { - return mRenderLoop; - } -} - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Shader.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Shader.java deleted file mode 100644 index 497511437115..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Shader.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; -import java.util.ArrayList; -import java.util.HashMap; - -import com.android.scenegraph.SceneGraphBase; -import com.android.scenegraph.ShaderParam; - -import android.renderscript.*; -import android.renderscript.ProgramFragment.Builder; -import android.util.Log; - -/** - * @hide - */ -public abstract class Shader extends SceneGraphBase { - protected Type mPerObjConstants; - protected Type mPerShaderConstants; - - protected HashMap<String, ShaderParam> mSourceParams; - protected ArrayList<String> mShaderTextureNames; - protected ArrayList<Program.TextureType > mShaderTextureTypes; - protected ArrayList<String> mTextureNames; - protected ArrayList<Program.TextureType > mTextureTypes; - - protected Allocation mConstantBuffer; - protected ScriptField_ShaderParam_s mConstantBufferParams; - - public Shader() { - mSourceParams = new HashMap<String, ShaderParam>(); - mShaderTextureNames = new ArrayList<String>(); - mShaderTextureTypes = new ArrayList<Program.TextureType>(); - mTextureNames = new ArrayList<String>(); - mTextureTypes = new ArrayList<Program.TextureType>(); - } - - public void appendSourceParams(ShaderParam p) { - mSourceParams.put(p.getParamName(), p); - } - - public Type getObjectConstants() { - return mPerObjConstants; - } - - public Type getShaderConstants() { - return mPerObjConstants; - } - - void linkConstants(RenderScriptGL rs) { - if (mPerShaderConstants == null) { - return; - } - - Element constElem = mPerShaderConstants.getElement(); - mConstantBufferParams = ShaderParam.fillInParams(constElem, mSourceParams, null); - - mConstantBuffer = Allocation.createTyped(rs, mPerShaderConstants); - } -} diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/ShaderParam.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/ShaderParam.java deleted file mode 100644 index 3dd41cabe4c5..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/ShaderParam.java +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; -import java.util.ArrayList; -import java.util.HashMap; - -import com.android.scenegraph.SceneManager; -import com.android.scenegraph.Transform; - -import android.renderscript.Element; -import android.renderscript.Matrix4f; -import android.renderscript.ProgramFragment; -import android.renderscript.ProgramStore; -import android.renderscript.ProgramVertex; -import android.renderscript.RenderScriptGL; -import android.util.Log; - -/** - * @hide - */ -public abstract class ShaderParam extends SceneGraphBase { - - static final String cameraPos = "cameraPos"; - static final String cameraDir = "cameraDir"; - - static final String lightColor = "lightColor"; - static final String lightPos = "lightPos"; - static final String lightDir = "lightDir"; - - static final String view = "view"; - static final String proj = "proj"; - static final String viewProj = "viewProj"; - static final String model = "model"; - static final String modelView = "modelView"; - static final String modelViewProj = "modelViewProj"; - - static final long sMaxTimeStamp = 0xffffffffL; - - ScriptField_ShaderParamData_s.Item mData; - ScriptField_ShaderParamData_s mField; - - String mParamName; - Camera mCamera; - - static ScriptField_ShaderParam_s fillInParams(Element constantElem, - HashMap<String, ShaderParam> sourceParams, - Transform transform) { - RenderScriptGL rs = SceneManager.getRS(); - ArrayList<ScriptField_ShaderParam_s.Item> paramList; - paramList = new ArrayList<ScriptField_ShaderParam_s.Item>(); - - int subElemCount = constantElem.getSubElementCount(); - for (int i = 0; i < subElemCount; i ++) { - String inputName = constantElem.getSubElementName(i); - int offset = constantElem.getSubElementOffsetBytes(i); - - ShaderParam matchingParam = sourceParams.get(inputName); - Element subElem = constantElem.getSubElement(i); - // Make one if it's not there - if (matchingParam == null) { - if (subElem.getDataType() == Element.DataType.FLOAT_32) { - matchingParam = new Float4Param(inputName, 0.5f, 0.5f, 0.5f, 0.5f); - } else if (subElem.getDataType() == Element.DataType.MATRIX_4X4) { - TransformParam trParam = new TransformParam(inputName); - trParam.setTransform(transform); - matchingParam = trParam; - } - } - ScriptField_ShaderParam_s.Item paramRS = new ScriptField_ShaderParam_s.Item(); - paramRS.bufferOffset = offset; - paramRS.transformTimestamp = 0; - paramRS.dataTimestamp = 0; - paramRS.data = matchingParam.getRSData().getAllocation(); - if (subElem.getDataType() == Element.DataType.FLOAT_32) { - paramRS.float_vecSize = subElem.getVectorSize(); - } - - paramList.add(paramRS); - } - - ScriptField_ShaderParam_s rsParams = null; - int paramCount = paramList.size(); - if (paramCount != 0) { - rsParams = new ScriptField_ShaderParam_s(rs, paramCount); - for (int i = 0; i < paramCount; i++) { - rsParams.set(paramList.get(i), i, false); - } - rsParams.copyAll(); - } - return rsParams; - } - - public ShaderParam(String name) { - mParamName = name; - mData = new ScriptField_ShaderParamData_s.Item(); - } - - public String getParamName() { - return mParamName; - } - - public void setCamera(Camera c) { - mCamera = c; - if (mField != null) { - mData.camera = mCamera.getRSData().getAllocation(); - mField.set_camera(0, mData.camera, true); - } - } - - protected void incTimestamp() { - if (mField != null) { - mData.timestamp ++; - mData.timestamp %= sMaxTimeStamp; - mField.set_timestamp(0, mData.timestamp, true); - } - } - - abstract void initLocalData(); - - public ScriptField_ShaderParamData_s getRSData() { - if (mField != null) { - return mField; - } - - RenderScriptGL rs = SceneManager.getRS(); - mField = new ScriptField_ShaderParamData_s(rs, 1); - - if (mParamName != null) { - mData.paramName = SceneManager.getCachedAlloc(mParamName); - if (mData.paramName == null) { - mData.paramName = SceneManager.getStringAsAllocation(rs, mParamName); - SceneManager.cacheAlloc(mParamName, mData.paramName); - } - } - initLocalData(); - mData.timestamp = 1; - - mField.set(mData, 0, true); - return mField; - } -} - - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Texture2D.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Texture2D.java deleted file mode 100644 index b53ab883708e..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Texture2D.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; - -import com.android.scenegraph.SceneManager; - -import android.content.res.Resources; -import android.renderscript.*; -import android.util.Log; - -/** - * @hide - */ -public class Texture2D extends TextureBase { - String mFileName; - String mFileDir; - int mResourceID; - - public Texture2D() { - super(ScriptC_export.const_TextureType_TEXTURE_2D); - } - - public Texture2D(Allocation tex) { - super(ScriptC_export.const_TextureType_TEXTURE_2D); - setTexture(tex); - } - - public Texture2D(String dir, String file) { - super(ScriptC_export.const_TextureType_TEXTURE_CUBE); - setFileDir(dir); - setFileName(file); - } - - public Texture2D(int resourceID) { - super(ScriptC_export.const_TextureType_TEXTURE_2D); - mResourceID = resourceID; - } - - public void setFileDir(String dir) { - mFileDir = dir; - } - - public void setFileName(String file) { - mFileName = file; - } - - public String getFileName() { - return mFileName; - } - - public void setTexture(Allocation tex) { - mData.texture = tex != null ? tex : SceneManager.getDefaultTex2D(); - if (mField != null) { - mField.set_texture(0, mData.texture, true); - } - } - - void load() { - RenderScriptGL rs = SceneManager.getRS(); - Resources res = SceneManager.getRes(); - if (mFileName != null && mFileName.length() > 0) { - String shortName = mFileName.substring(mFileName.lastIndexOf('/') + 1); - setTexture(SceneManager.loadTexture2D(mFileDir + shortName, rs, res)); - } else if (mResourceID != 0) { - setTexture(SceneManager.loadTexture2D(mResourceID, rs, res)); - } - } - - ScriptField_Texture_s getRsData(boolean loadNow) { - if (mField != null) { - return mField; - } - - RenderScriptGL rs = SceneManager.getRS(); - Resources res = SceneManager.getRes(); - if (rs == null || res == null) { - return null; - } - - mField = new ScriptField_Texture_s(rs, 1); - - if (loadNow) { - load(); - } else { - mData.texture = SceneManager.getDefaultTex2D(); - new SingleImageLoaderTask().execute(this); - } - - mField.set(mData, 0, true); - return mField; - } -} - - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureBase.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureBase.java deleted file mode 100644 index ba49d4e2cc0e..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureBase.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; - -import com.android.scenegraph.SceneManager; -import android.os.AsyncTask; -import android.content.res.Resources; -import android.renderscript.*; -import android.util.Log; - -/** - * @hide - */ -public abstract class TextureBase extends SceneGraphBase { - - class SingleImageLoaderTask extends AsyncTask<TextureBase, Void, Boolean> { - protected Boolean doInBackground(TextureBase... objects) { - TextureBase tex = objects[0]; - tex.load(); - return new Boolean(true); - } - protected void onPostExecute(Boolean result) { - } - } - - ScriptField_Texture_s.Item mData; - ScriptField_Texture_s mField; - TextureBase(int type) { - mData = new ScriptField_Texture_s.Item(); - mData.type = type; - } - - protected Allocation mRsTexture; - abstract ScriptField_Texture_s getRsData(boolean loadNow); - abstract void load(); -} - - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureCube.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureCube.java deleted file mode 100644 index 1269e3caa06a..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureCube.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; - -import com.android.scenegraph.SceneManager; -import com.android.scenegraph.TextureBase; - -import android.content.res.Resources; -import android.renderscript.*; -import android.util.Log; - -/** - * @hide - */ -public class TextureCube extends TextureBase { - String mFileName; - String mFileDir; - int mResourceID; - - public TextureCube() { - super(ScriptC_export.const_TextureType_TEXTURE_CUBE); - } - - public TextureCube(Allocation tex) { - super(ScriptC_export.const_TextureType_TEXTURE_CUBE); - setTexture(tex); - } - - public TextureCube(String dir, String file) { - super(ScriptC_export.const_TextureType_TEXTURE_CUBE); - setFileDir(dir); - setFileName(file); - } - - public TextureCube(int resourceID) { - super(ScriptC_export.const_TextureType_TEXTURE_2D); - mResourceID = resourceID; - } - - public void setFileDir(String dir) { - mFileDir = dir; - } - - public void setFileName(String file) { - mFileName = file; - } - - public String getFileName() { - return mFileName; - } - - public void setTexture(Allocation tex) { - mData.texture = tex != null ? tex : SceneManager.getDefaultTexCube(); - if (mField != null) { - mField.set_texture(0, mData.texture, true); - } - } - - void load() { - RenderScriptGL rs = SceneManager.getRS(); - Resources res = SceneManager.getRes(); - if (mFileName != null && mFileName.length() > 0) { - String shortName = mFileName.substring(mFileName.lastIndexOf('/') + 1); - setTexture(SceneManager.loadCubemap(mFileDir + shortName, rs, res)); - } else if (mResourceID != 0) { - setTexture(SceneManager.loadCubemap(mResourceID , rs, res)); - } - } - - ScriptField_Texture_s getRsData(boolean loadNow) { - if (mField != null) { - return mField; - } - - RenderScriptGL rs = SceneManager.getRS(); - Resources res = SceneManager.getRes(); - if (rs == null || res == null) { - return null; - } - - mField = new ScriptField_Texture_s(rs, 1); - - if (loadNow) { - load(); - } else { - mData.texture = SceneManager.getDefaultTexCube(); - new SingleImageLoaderTask().execute(this); - } - - mField.set(mData, 0, true); - return mField; - } -} - - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureParam.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureParam.java deleted file mode 100644 index e656ed264409..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureParam.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; -import java.util.ArrayList; - -import android.graphics.Camera; -import android.renderscript.RenderScriptGL; -import android.renderscript.Float4; -import android.renderscript.Matrix4f; -import android.renderscript.ProgramFragment; -import android.renderscript.ProgramStore; -import android.renderscript.ProgramVertex; -import android.renderscript.Element; -import android.util.Log; - -/** - * @hide - */ -public class TextureParam extends ShaderParam { - - TextureBase mTexture; - - public TextureParam(String name) { - super(name); - } - - public TextureParam(String name, TextureBase t) { - super(name); - setTexture(t); - } - - public void setTexture(TextureBase t) { - mTexture = t; - } - - public TextureBase getTexture() { - return mTexture; - } - - void initLocalData() { - mData.type = ScriptC_export.const_ShaderParam_TEXTURE; - if (mTexture != null) { - mData.texture = mTexture.getRsData(false).getAllocation(); - } - } -} - - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureRenderTarget.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureRenderTarget.java deleted file mode 100644 index 6aa29a53ecc4..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureRenderTarget.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; - -import com.android.scenegraph.SceneManager; - -import android.content.res.Resources; -import android.renderscript.*; -import android.util.Log; - -/** - * @hide - */ -public class TextureRenderTarget extends TextureBase { - public TextureRenderTarget() { - super(ScriptC_export.const_TextureType_TEXTURE_RENDER_TARGET); - } - - public TextureRenderTarget(Allocation tex) { - super(ScriptC_export.const_TextureType_TEXTURE_RENDER_TARGET); - setTexture(tex); - } - - public void setTexture(Allocation tex) { - mData.texture = tex; - if (mField != null) { - mField.set_texture(0, mData.texture, true); - } - } - - void load() { - } - - ScriptField_Texture_s getRsData(boolean loadNow) { - if (mField != null) { - return mField; - } - - RenderScriptGL rs = SceneManager.getRS(); - if (rs == null) { - return null; - } - - mField = new ScriptField_Texture_s(rs, 1); - mField.set(mData, 0, true); - return mField; - } -} - - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Transform.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Transform.java deleted file mode 100644 index 8180bd071636..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Transform.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; -import java.util.ArrayList; - -import android.renderscript.*; -import android.renderscript.Matrix4f; -import android.util.Log; - -/** - * @hide - */ -public abstract class Transform extends SceneGraphBase { - Transform mParent; - ArrayList<Transform> mChildren; - - ScriptField_SgTransform mField; - ScriptField_SgTransform.Item mTransformData; - - public Transform() { - mChildren = new ArrayList<Transform>(); - mParent = null; - } - - public void appendChild(Transform t) { - mChildren.add(t); - t.mParent = this; - updateRSChildData(true); - } - - abstract void initLocalData(); - - void updateRSChildData(boolean copyData) { - if (mField == null) { - return; - } - RenderScriptGL rs = SceneManager.getRS(); - if (mChildren.size() != 0) { - Allocation childRSData = Allocation.createSized(rs, Element.ALLOCATION(rs), - mChildren.size()); - mTransformData.children = childRSData; - - Allocation[] childrenAllocs = new Allocation[mChildren.size()]; - for (int i = 0; i < mChildren.size(); i ++) { - Transform child = mChildren.get(i); - childrenAllocs[i] = child.getRSData().getAllocation(); - } - childRSData.copyFrom(childrenAllocs); - } - if (copyData) { - mField.set(mTransformData, 0, true); - } - } - - ScriptField_SgTransform getRSData() { - if (mField != null) { - return mField; - } - - RenderScriptGL rs = SceneManager.getRS(); - if (rs == null) { - return null; - } - mField = new ScriptField_SgTransform(rs, 1); - - mTransformData = new ScriptField_SgTransform.Item(); - mTransformData.name = getNameAlloc(rs); - mTransformData.isDirty = 1; - mTransformData.timestamp = 1; - - initLocalData(); - updateRSChildData(false); - - mField.set(mTransformData, 0, true); - return mField; - } -} - - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TransformParam.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TransformParam.java deleted file mode 100644 index d120d5d9b97d..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TransformParam.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; -import java.util.ArrayList; - -import android.renderscript.RenderScriptGL; -import android.renderscript.Matrix4f; -import android.renderscript.ProgramFragment; -import android.renderscript.ProgramStore; -import android.renderscript.ProgramVertex; -import android.renderscript.Element; -import android.util.Log; - -/** - * @hide - */ -public class TransformParam extends ShaderParam { - - Transform mTransform; - LightBase mLight; - - public TransformParam(String name) { - super(name); - } - - public void setTransform(Transform t) { - mTransform = t; - if (mField != null && mTransform != null) { - mData.transform = mTransform.getRSData().getAllocation(); - } - incTimestamp(); - } - - int getTypeFromName() { - int paramType = ScriptC_export.const_ShaderParam_TRANSFORM_DATA; - if (mParamName.equalsIgnoreCase(view)) { - paramType = ScriptC_export.const_ShaderParam_TRANSFORM_VIEW; - } else if(mParamName.equalsIgnoreCase(proj)) { - paramType = ScriptC_export.const_ShaderParam_TRANSFORM_PROJ; - } else if(mParamName.equalsIgnoreCase(viewProj)) { - paramType = ScriptC_export.const_ShaderParam_TRANSFORM_VIEW_PROJ; - } else if(mParamName.equalsIgnoreCase(model)) { - paramType = ScriptC_export.const_ShaderParam_TRANSFORM_MODEL; - } else if(mParamName.equalsIgnoreCase(modelView)) { - paramType = ScriptC_export.const_ShaderParam_TRANSFORM_MODEL_VIEW; - } else if(mParamName.equalsIgnoreCase(modelViewProj)) { - paramType = ScriptC_export.const_ShaderParam_TRANSFORM_MODEL_VIEW_PROJ; - } - return paramType; - } - - void initLocalData() { - mData.type = getTypeFromName(); - if (mTransform != null) { - mData.transform = mTransform.getRSData().getAllocation(); - } - if (mCamera != null) { - mData.camera = mCamera.getRSData().getAllocation(); - } - if (mLight != null) { - mData.light = mLight.getRSData().getAllocation(); - } - } -} - - - - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/VertexShader.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/VertexShader.java deleted file mode 100644 index 4efaff7bbb12..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/VertexShader.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.scenegraph; - -import java.lang.Math; -import java.util.ArrayList; - -import android.content.res.Resources; -import android.renderscript.*; -import android.util.Log; - -/** - * @hide - */ -public class VertexShader extends Shader { - ProgramVertex mProgram; - ScriptField_VertexShader_s mField; - - public static class Builder { - VertexShader mShader; - ProgramVertex.Builder mBuilder; - - public Builder(RenderScriptGL rs) { - mShader = new VertexShader(); - mBuilder = new ProgramVertex.Builder(rs); - } - - public Builder setShader(Resources resources, int resourceID) { - mBuilder.setShader(resources, resourceID); - return this; - } - - public Builder setShader(String code) { - mBuilder.setShader(code); - return this; - } - - public Builder setObjectConst(Type type) { - mShader.mPerObjConstants = type; - return this; - } - - public Builder setShaderConst(Type type) { - mShader.mPerShaderConstants = type; - return this; - } - - public Builder addInput(Element e) { - mBuilder.addInput(e); - return this; - } - - public VertexShader create() { - if (mShader.mPerShaderConstants != null) { - mBuilder.addConstant(mShader.mPerShaderConstants); - } - if (mShader.mPerObjConstants != null) { - mBuilder.addConstant(mShader.mPerObjConstants); - } - mShader.mProgram = mBuilder.create(); - return mShader; - } - } - - public ProgramVertex getProgram() { - return mProgram; - } - - ScriptField_VertexShader_s getRSData() { - if (mField != null) { - return mField; - } - - RenderScriptGL rs = SceneManager.getRS(); - Resources res = SceneManager.getRes(); - if (rs == null || res == null) { - return null; - } - - ScriptField_VertexShader_s.Item item = new ScriptField_VertexShader_s.Item(); - item.program = mProgram; - - linkConstants(rs); - if (mPerShaderConstants != null) { - item.shaderConst = mConstantBuffer; - item.shaderConstParams = mConstantBufferParams.getAllocation(); - mProgram.bindConstants(item.shaderConst, 0); - } - - item.objectConstIndex = -1; - if (mPerObjConstants != null) { - item.objectConstIndex = mPerShaderConstants != null ? 1 : 0; - } - - mField = new ScriptField_VertexShader_s(rs, 1); - mField.set(item, 0, true); - return mField; - } -} diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/camera.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/camera.rs deleted file mode 100644 index dc0a885a685d..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/camera.rs +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.scenegraph) - -//#define DEBUG_CAMERA -#include "scenegraph_objects.rsh" - -void root(const rs_allocation *v_in, rs_allocation *v_out, const float *usrData) { - - SgCamera *cam = (SgCamera *)rsGetElementAt(*v_in, 0); - float aspect = *usrData; - if (cam->aspect != aspect) { - cam->isDirty = 1; - cam->aspect = aspect; - } - if (cam->isDirty) { - rsMatrixLoadPerspective(&cam->proj, cam->horizontalFOV, cam->aspect, cam->near, cam->far); - } - - const SgTransform *camTransform = (const SgTransform *)rsGetElementAt(cam->transformMatrix, 0); - //rsDebug("Camera stamp", cam->transformTimestamp); - //rsDebug("Transform stamp", camTransform->timestamp); - if (camTransform->timestamp != cam->transformTimestamp || cam->isDirty) { - cam->isDirty = 1; - rs_matrix4x4 camPosMatrix; - rsMatrixLoad(&camPosMatrix, &camTransform->globalMat); - float4 zero = {0.0f, 0.0f, 0.0f, 1.0f}; - cam->position = rsMatrixMultiply(&camPosMatrix, zero); - - rsMatrixInverse(&camPosMatrix); - rsMatrixLoad(&cam->view, &camPosMatrix); - - rsMatrixLoad(&cam->viewProj, &cam->proj); - rsMatrixMultiply(&cam->viewProj, &cam->view); - - rsExtractFrustumPlanes(&cam->viewProj, - &cam->frustumPlanes[0], &cam->frustumPlanes[1], - &cam->frustumPlanes[2], &cam->frustumPlanes[3], - &cam->frustumPlanes[3], &cam->frustumPlanes[4]); - } - - if (cam->isDirty) { - cam->timestamp ++; - } - - cam->isDirty = 0; - cam->transformTimestamp = camTransform->timestamp; - -#ifdef DEBUG_CAMERA - printCameraInfo(cam); -#endif //DEBUG_CAMERA -} diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/cull.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/cull.rs deleted file mode 100644 index 024e026b69df..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/cull.rs +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright (C) 2012 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.scenegraph) - -#include "scenegraph_objects.rsh" - -static void getTransformedSphere(SgRenderable *obj) { - obj->worldBoundingSphere = obj->boundingSphere; - obj->worldBoundingSphere.w = 1.0f; - const SgTransform *objTransform = (const SgTransform *)rsGetElementAt(obj->transformMatrix, 0); - obj->worldBoundingSphere = rsMatrixMultiply(&objTransform->globalMat, obj->worldBoundingSphere); - - const float4 unitVec = {0.57735f, 0.57735f, 0.57735f, 0.0f}; - float4 scaledVec = rsMatrixMultiply(&objTransform->globalMat, unitVec); - scaledVec.w = 0.0f; - obj->worldBoundingSphere.w = obj->boundingSphere.w * length(scaledVec); -} - -static bool frustumCulled(SgRenderable *obj, SgCamera *cam) { - if (!obj->bVolInitialized) { - float minX, minY, minZ, maxX, maxY, maxZ; - rsgMeshComputeBoundingBox(obj->mesh, - &minX, &minY, &minZ, - &maxX, &maxY, &maxZ); - //rsDebug("min", minX, minY, minZ); - //rsDebug("max", maxX, maxY, maxZ); - float4 sphere; - sphere.x = (maxX + minX) * 0.5f; - sphere.y = (maxY + minY) * 0.5f; - sphere.z = (maxZ + minZ) * 0.5f; - float3 radius; - radius.x = (maxX - sphere.x); - radius.y = (maxY - sphere.y); - radius.z = (maxZ - sphere.z); - - sphere.w = length(radius); - obj->boundingSphere = sphere; - obj->bVolInitialized = 1; - //rsDebug("Sphere", sphere); - } - - getTransformedSphere(obj); - - return !rsIsSphereInFrustum(&obj->worldBoundingSphere, - &cam->frustumPlanes[0], &cam->frustumPlanes[1], - &cam->frustumPlanes[2], &cam->frustumPlanes[3], - &cam->frustumPlanes[4], &cam->frustumPlanes[5]); -} - - -void root(rs_allocation *v_out, const void *usrData) { - - SgRenderable *drawable = (SgRenderable *)rsGetElementAt(*v_out, 0); - const SgCamera *camera = (const SgCamera*)usrData; - - drawable->isVisible = 0; - // Not loaded yet - if (!rsIsObject(drawable->mesh) || drawable->cullType == CULL_ALWAYS) { - return; - } - - // check to see if we are culling this object and if it's - // outside the frustum - if (drawable->cullType == CULL_FRUSTUM && frustumCulled(drawable, (SgCamera*)camera)) { -#ifdef DEBUG_RENDERABLES - rsDebug("Culled", drawable); - printName(drawable->name); -#endif // DEBUG_RENDERABLES - return; - } - drawable->isVisible = 1; -} diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/export.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/export.rs deleted file mode 100644 index b438a43abaab..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/export.rs +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.scenegraph) - -// The sole purpose of this script is to have various structs exposed -// so that java reflected classes are generated -#include "scenegraph_objects.rsh" - -// Export our native constants to java so that we don't have parallel definitions -const int ShaderParam_FLOAT4_DATA = SHADER_PARAM_FLOAT4_DATA; -const int ShaderParam_TRANSFORM_DATA = SHADER_PARAM_TRANSFORM_DATA; -const int ShaderParam_TRANSFORM_MODEL = SHADER_PARAM_TRANSFORM_MODEL; - -const int ShaderParam_FLOAT4_CAMERA_POS = SHADER_PARAM_FLOAT4_CAMERA_POS; -const int ShaderParam_FLOAT4_CAMERA_DIR = SHADER_PARAM_FLOAT4_CAMERA_DIR; -const int ShaderParam_TRANSFORM_VIEW = SHADER_PARAM_TRANSFORM_VIEW; -const int ShaderParam_TRANSFORM_PROJ = SHADER_PARAM_TRANSFORM_PROJ; -const int ShaderParam_TRANSFORM_VIEW_PROJ = SHADER_PARAM_TRANSFORM_VIEW_PROJ; -const int ShaderParam_TRANSFORM_MODEL_VIEW = SHADER_PARAM_TRANSFORM_MODEL_VIEW; -const int ShaderParam_TRANSFORM_MODEL_VIEW_PROJ = SHADER_PARAM_TRANSFORM_MODEL_VIEW_PROJ; - -const int ShaderParam_FLOAT4_LIGHT_COLOR = SHADER_PARAM_FLOAT4_LIGHT_COLOR; -const int ShaderParam_FLOAT4_LIGHT_POS = SHADER_PARAM_FLOAT4_LIGHT_POS; -const int ShaderParam_FLOAT4_LIGHT_DIR = SHADER_PARAM_FLOAT4_LIGHT_DIR; - -const int ShaderParam_TEXTURE = SHADER_PARAM_TEXTURE; - -const int Transform_TRANSLATE = TRANSFORM_TRANSLATE; -const int Transform_ROTATE = TRANSFORM_ROTATE; -const int Transform_SCALE = TRANSFORM_SCALE; - -const int TextureType_TEXTURE_2D = TEXTURE_2D; -const int TextureType_TEXTURE_CUBE = TEXTURE_CUBE; -const int TextureType_TEXTURE_RENDER_TARGET = TEXTURE_RENDER_TARGET; - -SgTransform *exportPtr; -SgTransformComponent *componentPtr; -SgRenderState *sExport; -SgRenderable *drExport; -SgRenderPass *pExport; -SgCamera *exportPtrCam; -SgLight *exportPtrLight; -SgShaderParam *spExport; -SgShaderParamData *spDataExport; -SgVertexShader *pvExport; -SgFragmentShader *pfExport; -SgTexture *texExport; diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/fragment_params.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/fragment_params.rs deleted file mode 100644 index 7202285c247e..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/fragment_params.rs +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (C) 2012 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.scenegraph) - -#include "scenegraph_objects.rsh" - -//#define DEBUG_PARAMS - -#include "params.rsh" - -void root(rs_allocation *v_out, const void *usrData) { - SgFragmentShader *shader = (SgFragmentShader *)rsGetElementAt(*v_out, 0); - const SgCamera *camera = (const SgCamera*)usrData; - processAllParams(shader->shaderConst, shader->shaderConstParams, camera); - processTextureParams(shader); -} diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/light.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/light.rs deleted file mode 100644 index e11979f27ff8..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/light.rs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.scenegraph) - -//#define DEBUG_LIGHT -#include "scenegraph_objects.rsh" - -void root(const rs_allocation *v_in, rs_allocation *v_out) { - - SgLight *light = (SgLight *)rsGetElementAt(*v_in, 0); - const SgTransform *lTransform = (const SgTransform *)rsGetElementAt(light->transformMatrix, 0); - - float4 zero = {0.0f, 0.0f, 0.0f, 1.0f}; - light->position = rsMatrixMultiply(&lTransform->globalMat, zero); - -#ifdef DEBUG_LIGHT - printLightInfo(light); -#endif //DEBUG_LIGHT -} diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/object_params.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/object_params.rs deleted file mode 100644 index 0d524a663150..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/object_params.rs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (C) 2012 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.scenegraph) - -#include "scenegraph_objects.rsh" - -//#define DEBUG_PARAMS - -#include "params.rsh" - -void root(rs_allocation *v_out, const void *usrData) { - - SgRenderable *drawable = (SgRenderable *)rsGetElementAt(*v_out, 0); - // Visibility flag was set earlier in the cull stage - if (!drawable->isVisible) { - return; - } - - const SgCamera *camera = (const SgCamera*)usrData; - processAllParams(drawable->pf_const, drawable->pf_constParams, camera); - processAllParams(drawable->pv_const, drawable->pv_constParams, camera); -} diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/params.rsh b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/params.rsh deleted file mode 100644 index 00793c0ab301..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/params.rsh +++ /dev/null @@ -1,192 +0,0 @@ -// Copyright (C) 2012 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.scenegraph) - -#include "scenegraph_objects.rsh" - -//#define DEBUG_PARAMS -static inline void debugParam(SgShaderParam *p, SgShaderParamData *pData) { - rsDebug("____________ Param ____________", p); - printName(pData->paramName); - rsDebug("bufferOffset", p->bufferOffset); - rsDebug("type ", pData->type); - rsDebug("data timestamp ", pData->timestamp); - rsDebug("param timestamp", p->dataTimestamp); - - const SgTransform *pTransform = NULL; - if (rsIsObject(pData->transform)) { - pTransform = (const SgTransform *)rsGetElementAt(pData->transform, 0); - - rsDebug("transform", pTransform); - printName(pTransform->name); - rsDebug("timestamp", pTransform->timestamp); - rsDebug("param timestamp", p->transformTimestamp); - } - - const SgLight *pLight = NULL; - if (rsIsObject(pData->light)) { - pLight = (const SgLight *)rsGetElementAt(pData->light, 0); - printLightInfo(pLight); - } -} - -static inline void writeFloatData(float *ptr, const float4 *input, uint32_t vecSize) { -#ifdef DEBUG_PARAMS - rsDebug("Writing value ", *input); - rsDebug("Writing vec size ", vecSize); -#endif // DEBUG_PARAMS - - switch (vecSize) { - case 1: - *ptr = input->x; - break; - case 2: - *((float2*)ptr) = (*input).xy; - break; - case 3: - *((float3*)ptr) = (*input).xyz; - break; - case 4: - *((float4*)ptr) = *input; - break; - } -} - -static inline bool processParam(SgShaderParam *p, SgShaderParamData *pData, - uint8_t *constantBuffer, - const SgCamera *currentCam, - SgFragmentShader *shader) { - bool isDataOnly = (pData->type > SHADER_PARAM_DATA_ONLY); - const SgTransform *pTransform = NULL; - if (rsIsObject(pData->transform)) { - pTransform = (const SgTransform *)rsGetElementAt(pData->transform, 0); - } - - if (isDataOnly) { - // If we are a transform param and our transform is unchanged, nothing to do - if (pTransform) { - if (p->transformTimestamp == pTransform->timestamp) { - return false; - } - p->transformTimestamp = pTransform->timestamp; - } else { - if (p->dataTimestamp == pData->timestamp) { - return false; - } - p->dataTimestamp = pData->timestamp; - } - } - - const SgLight *pLight = NULL; - if (rsIsObject(pData->light)) { - pLight = (const SgLight *)rsGetElementAt(pData->light, 0); - } - - uint8_t *dataPtr = NULL; - const SgTexture *tex = NULL; - if (pData->type == SHADER_PARAM_TEXTURE) { - tex = rsGetElementAt(pData->texture, 0); - } else { - dataPtr = constantBuffer + p->bufferOffset; - } - - switch (pData->type) { - case SHADER_PARAM_TEXTURE: - rsgBindTexture(shader->program, p->bufferOffset, tex->texture); - break; - case SHADER_PARAM_FLOAT4_DATA: - writeFloatData((float*)dataPtr, &pData->float_value, p->float_vecSize); - break; - case SHADER_PARAM_FLOAT4_CAMERA_POS: - writeFloatData((float*)dataPtr, ¤tCam->position, p->float_vecSize); - break; - case SHADER_PARAM_FLOAT4_CAMERA_DIR: break; - case SHADER_PARAM_FLOAT4_LIGHT_COLOR: - writeFloatData((float*)dataPtr, &pLight->color, p->float_vecSize); - break; - case SHADER_PARAM_FLOAT4_LIGHT_POS: - writeFloatData((float*)dataPtr, &pLight->position, p->float_vecSize); - break; - case SHADER_PARAM_FLOAT4_LIGHT_DIR: break; - - case SHADER_PARAM_TRANSFORM_DATA: - rsMatrixLoad((rs_matrix4x4*)dataPtr, &pTransform->globalMat); - break; - case SHADER_PARAM_TRANSFORM_VIEW: - rsMatrixLoad((rs_matrix4x4*)dataPtr, ¤tCam->view); - break; - case SHADER_PARAM_TRANSFORM_PROJ: - rsMatrixLoad((rs_matrix4x4*)dataPtr, ¤tCam->proj); - break; - case SHADER_PARAM_TRANSFORM_VIEW_PROJ: - rsMatrixLoad((rs_matrix4x4*)dataPtr, ¤tCam->viewProj); - break; - case SHADER_PARAM_TRANSFORM_MODEL: - rsMatrixLoad((rs_matrix4x4*)dataPtr, &pTransform->globalMat); - break; - case SHADER_PARAM_TRANSFORM_MODEL_VIEW: - rsMatrixLoad((rs_matrix4x4*)dataPtr, ¤tCam->view); - rsMatrixLoadMultiply((rs_matrix4x4*)dataPtr, - (rs_matrix4x4*)dataPtr, - &pTransform->globalMat); - break; - case SHADER_PARAM_TRANSFORM_MODEL_VIEW_PROJ: - rsMatrixLoad((rs_matrix4x4*)dataPtr, ¤tCam->viewProj); - rsMatrixLoadMultiply((rs_matrix4x4*)dataPtr, - (rs_matrix4x4*)dataPtr, - &pTransform->globalMat); - break; - } - return true; -} - -static inline void processAllParams(rs_allocation shaderConst, - rs_allocation allParams, - const SgCamera *camera) { - if (rsIsObject(shaderConst)) { - uint8_t *constantBuffer = (uint8_t*)rsGetElementAt(shaderConst, 0); - - int numParams = 0; - if (rsIsObject(allParams)) { - numParams = rsAllocationGetDimX(allParams); - } - bool updated = false; - for (int i = 0; i < numParams; i ++) { - SgShaderParam *current = (SgShaderParam*)rsGetElementAt(allParams, i); - SgShaderParamData *currentData = (SgShaderParamData*)rsGetElementAt(current->data, 0); -#ifdef DEBUG_PARAMS - debugParam(current, currentData); -#endif // DEBUG_PARAMS - updated = processParam(current, currentData, constantBuffer, camera, NULL) || updated; - } - } -} - -static inline void processTextureParams(SgFragmentShader *shader) { - int numParams = 0; - if (rsIsObject(shader->shaderTextureParams)) { - numParams = rsAllocationGetDimX(shader->shaderTextureParams); - } - for (int i = 0; i < numParams; i ++) { - SgShaderParam *current = (SgShaderParam*)rsGetElementAt(shader->shaderTextureParams, i); - SgShaderParamData *currentData = (SgShaderParamData*)rsGetElementAt(current->data, 0); -#ifdef DEBUG_PARAMS - debugParam(current, currentData); -#endif // DEBUG_PARAMS - processParam(current, currentData, NULL, NULL, shader); - } -} diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/render.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/render.rs deleted file mode 100644 index 205b2cb8c767..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/render.rs +++ /dev/null @@ -1,244 +0,0 @@ -// Copyright (C) 2011-2012 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.scenegraph) - -#include "rs_graphics.rsh" -#include "scenegraph_objects.rsh" - -rs_script gTransformScript; -rs_script gCameraScript; -rs_script gLightScript; -rs_script gObjectParamsScript; -rs_script gFragmentParamsScript; -rs_script gVertexParamsScript; -rs_script gCullScript; - -SgTransform *gRootNode; -rs_allocation gCameras; -rs_allocation gLights; -rs_allocation gFragmentShaders; -rs_allocation gVertexShaders; -rs_allocation gRenderableObjects; - -rs_allocation gRenderPasses; - -// Temporary shaders -rs_program_store gPFSBackground; - -uint32_t *gFrontToBack; -static uint32_t gFrontToBackCount = 0; -uint32_t *gBackToFront; -static uint32_t gBackToFrontCount = 0; - -static SgCamera *gActiveCamera = NULL; - -static rs_allocation nullAlloc; - -// #define DEBUG_RENDERABLES -static void draw(SgRenderable *obj) { -#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); - - if (pv->objectConstIndex != -1) { - rsgBindConstant(pv->program, pv->objectConstIndex, obj->pv_const); - } - if (pf->objectConstIndex != -1) { - rsgBindConstant(pf->program, pf->objectConstIndex, obj->pf_const); - } - - if (rsIsObject(renderState->ps)) { - rsgBindProgramStore(renderState->ps); - } else { - rsgBindProgramStore(gPFSBackground); - } - - if (rsIsObject(renderState->pr)) { - rsgBindProgramRaster(renderState->pr); - } else { - rs_program_raster pr = {0}; - rsgBindProgramRaster(pr); - } - - rsgBindProgramVertex(pv->program); - rsgBindProgramFragment(pf->program); - - for (uint32_t i = 0; i < obj->pf_num_textures; i ++) { - const SgTexture *tex = rsGetElementAt(obj->pf_textures[i], 0); - rsgBindTexture(pf->program, i, tex->texture); - } - - rsgDrawMesh(obj->mesh, obj->meshIndex); -} - -static void sortToBucket(SgRenderable *obj) { - const SgRenderState *renderState = (const SgRenderState *)rsGetElementAt(obj->render_state, 0); - if (rsIsObject(renderState->ps)) { - bool isOpaque = false; - if (isOpaque) { - gFrontToBack[gFrontToBackCount++] = (uint32_t)obj; - } else { - gBackToFront[gBackToFrontCount++] = (uint32_t)obj; - } - } else { - gFrontToBack[gFrontToBackCount++] = (uint32_t)obj; - } -} - -static void updateActiveCamera(rs_allocation cam) { - gActiveCamera = (SgCamera *)rsGetElementAt(cam, 0); -} - -static void prepareCameras() { - // now compute all the camera matrices - if (rsIsObject(gCameras)) { - float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); - rsForEach(gCameraScript, gCameras, nullAlloc, &aspect, sizeof(aspect)); - } -} - -static void prepareLights() { - if (rsIsObject(gLights)) { - rsForEach(gLightScript, gLights, nullAlloc); - } -} - -static void drawSorted() { - for (int i = 0; i < gFrontToBackCount; i ++) { - SgRenderable *current = (SgRenderable*)gFrontToBack[i]; - draw(current); - } - - for (int i = 0; i < gBackToFrontCount; i ++) { - SgRenderable *current = (SgRenderable*)gBackToFront[i]; - draw(current); - } -} - -static void drawAllObjects(rs_allocation allObj) { - if (!rsIsObject(allObj)) { - return; - } - - if (rsIsObject(gVertexShaders)) { - rsForEach(gVertexParamsScript, nullAlloc, gVertexShaders, - gActiveCamera, sizeof(gActiveCamera)); - } - if (rsIsObject(gFragmentShaders)) { - rsForEach(gFragmentParamsScript, nullAlloc, gFragmentShaders, - gActiveCamera, sizeof(gActiveCamera)); - } - - // Run the params and cull script - rsForEach(gCullScript, nullAlloc, allObj, gActiveCamera, sizeof(gActiveCamera)); - rsForEach(gObjectParamsScript, nullAlloc, allObj, gActiveCamera, sizeof(gActiveCamera)); - - int numRenderables = rsAllocationGetDimX(allObj); - for (int i = 0; i < numRenderables; i ++) { - rs_allocation *drawAlloc = (rs_allocation*)rsGetElementAt(allObj, i); - SgRenderable *current = (SgRenderable*)rsGetElementAt(*drawAlloc, 0); - if (current->isVisible) { - sortToBucket(current); - } - } - drawSorted(); -} - -int root(void) { -#ifdef DEBUG_RENDERABLES - rsDebug("=============================================================================", 0); -#endif // DEBUG_RENDERABLES - - // first step is to update the transform hierachy - if (gRootNode && rsIsObject(gRootNode->children)) { - rsForEach(gTransformScript, gRootNode->children, nullAlloc, 0, 0); - } - - prepareCameras(); - prepareLights(); - - if (rsIsObject(gRenderPasses)) { - rsgClearDepth(1.0f); - int numPasses = rsAllocationGetDimX(gRenderPasses); - for (uint i = 0; i < numPasses; i ++) { - gFrontToBackCount = 0; - gBackToFrontCount = 0; - SgRenderPass *pass = (SgRenderPass*)rsGetElementAt(gRenderPasses, i); - if (rsIsObject(pass->color_target)) { - rsgBindColorTarget(pass->color_target, 0); - } - if (rsIsObject(pass->depth_target)) { - rsgBindDepthTarget(pass->depth_target); - } - if (!rsIsObject(pass->color_target) && - !rsIsObject(pass->depth_target)) { - rsgClearAllRenderTargets(); - } - updateActiveCamera(pass->camera); - if (pass->should_clear_color) { - rsgClearColor(pass->clear_color.x, pass->clear_color.y, - pass->clear_color.z, pass->clear_color.w); - } - if (pass->should_clear_depth) { - rsgClearDepth(pass->clear_depth); - } - drawAllObjects(pass->objects); - } - } else { - gFrontToBackCount = 0; - gBackToFrontCount = 0; - rsgClearColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgClearDepth(1.0f); - - if (rsIsObject(gCameras)) { - rs_allocation *camAlloc = (rs_allocation*)rsGetElementAt(gCameras, 0); - updateActiveCamera(*camAlloc); - } - drawAllObjects(gRenderableObjects); - } - return 10; -} - -// Search through sorted and culled objects -void pick(int screenX, int screenY) { - float3 pnt, vec; - getCameraRay(gActiveCamera, screenX, screenY, &pnt, &vec); - - for (int i = 0; i < gFrontToBackCount; i ++) { - SgRenderable *current = (SgRenderable*)gFrontToBack[i]; - bool isPicked = intersect(current, pnt, vec); - if (isPicked) { - current->cullType = CULL_ALWAYS; - } - } - - for (int i = 0; i < gBackToFrontCount; i ++) { - SgRenderable *current = (SgRenderable*)gBackToFront[i]; - bool isPicked = intersect(current, pnt, vec); - if (isPicked) { - current->cullType = CULL_ALWAYS; - } - } -} diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/scenegraph_objects.rsh b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/scenegraph_objects.rsh deleted file mode 100644 index 90ae2129d6e7..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/scenegraph_objects.rsh +++ /dev/null @@ -1,323 +0,0 @@ -// Copyright (C) 2011-2012 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.scenegraph) - -#ifndef _TRANSFORM_DEF_ -#define _TRANSFORM_DEF_ - -#include "rs_graphics.rsh" - -#define TRANSFORM_NONE 0 -#define TRANSFORM_TRANSLATE 1 -#define TRANSFORM_ROTATE 2 -#define TRANSFORM_SCALE 3 - -#define CULL_FRUSTUM 0 -#define CULL_ALWAYS 2 - -#define LIGHT_POINT 0 -#define LIGHT_DIRECTIONAL 1 - -// Shader params that involve only data -#define SHADER_PARAM_DATA_ONLY 10000 -#define SHADER_PARAM_FLOAT4_DATA 10001 -#define SHADER_PARAM_TRANSFORM_DATA 10002 -#define SHADER_PARAM_TRANSFORM_MODEL 10003 - -// Shader params that involve camera -#define SHADER_PARAM_CAMERA 1000 -#define SHADER_PARAM_FLOAT4_CAMERA_POS 1001 -#define SHADER_PARAM_FLOAT4_CAMERA_DIR 1002 -#define SHADER_PARAM_TRANSFORM_VIEW 1003 -#define SHADER_PARAM_TRANSFORM_PROJ 1004 -#define SHADER_PARAM_TRANSFORM_VIEW_PROJ 1005 -#define SHADER_PARAM_TRANSFORM_MODEL_VIEW 1006 -#define SHADER_PARAM_TRANSFORM_MODEL_VIEW_PROJ 1007 - -// Shader Params that only involve lights -#define SHADER_PARAM_LIGHT 100 -#define SHADER_PARAM_FLOAT4_LIGHT_COLOR 103 -#define SHADER_PARAM_FLOAT4_LIGHT_POS 104 -#define SHADER_PARAM_FLOAT4_LIGHT_DIR 105 - -#define SHADER_PARAM_TEXTURE 10 - -#define TEXTURE_NONE 0 -#define TEXTURE_2D 1 -#define TEXTURE_CUBE 2 -#define TEXTURE_RENDER_TARGET 3 - -typedef struct TransformComponent_s { - float4 value; - int type; - rs_allocation name; -} SgTransformComponent; - -typedef struct __attribute__((packed, aligned(4))) SgTransform { - rs_matrix4x4 globalMat; - rs_matrix4x4 localMat; - - rs_allocation components; - int isDirty; - - rs_allocation children; - rs_allocation name; - - // Used to check whether transform params need to be updated - uint32_t timestamp; -} SgTransform; - -typedef struct VertexShader_s { - rs_program_vertex program; - // Buffer with vertex constant data - rs_allocation shaderConst; - // ShaderParam's that populate data - rs_allocation shaderConstParams; - // location of the per object constants on the buffer - int objectConstIndex; -} SgVertexShader; - -typedef struct FragmentShader_s { - rs_program_fragment program; - // Buffer with vertex constant data - rs_allocation shaderConst; - // ShaderParam's that populate data - rs_allocation shaderConstParams; - // ShaderParam's that set textures - rs_allocation shaderTextureParams; - // location of the per object constants on the buffer - int objectConstIndex; -} SgFragmentShader; - -typedef struct RenderState_s { - rs_allocation pv; // VertexShader struct - rs_allocation pf; // FragmentShader struct - rs_program_store ps; - rs_program_raster pr; -} SgRenderState; - -typedef struct Renderable_s { - rs_allocation render_state; - // Buffer with vertex constant data - rs_allocation pv_const; - // ShaderParam's that populate data - rs_allocation pv_constParams; - // Buffer with fragment constant data - rs_allocation pf_const; - // ShaderParam's that populate data - rs_allocation pf_constParams; - rs_allocation pf_textures[8]; - int pf_num_textures; - rs_mesh mesh; - int meshIndex; - rs_allocation transformMatrix; - rs_allocation name; - float4 boundingSphere; - float4 worldBoundingSphere; - int bVolInitialized; - int cullType; // specifies whether to frustum cull - int isVisible; -} SgRenderable; - -typedef struct RenderPass_s { - rs_allocation color_target; - rs_allocation depth_target; - rs_allocation camera; - rs_allocation objects; - - float4 clear_color; - float clear_depth; - bool should_clear_color; - bool should_clear_depth; -} SgRenderPass; - -typedef struct Camera_s { - rs_matrix4x4 proj; - rs_matrix4x4 view; - rs_matrix4x4 viewProj; - float4 position; - float near; - float far; - float horizontalFOV; - float aspect; - rs_allocation name; - rs_allocation transformMatrix; - float4 frustumPlanes[6]; - - int isDirty; - // Timestamp of the camera itself to signal params if anything changes - uint32_t timestamp; - // Timestamp of our transform - uint32_t transformTimestamp; -} SgCamera; - -typedef struct Light_s { - float4 position; - float4 color; - float intensity; - int type; - rs_allocation name; - rs_allocation transformMatrix; -} SgLight; - -// This represents the shader parameter data needed to set a float or transform data -typedef struct ShaderParamData_s { - int type; - float4 float_value; - uint32_t timestamp; - rs_allocation paramName; - rs_allocation camera; - rs_allocation light; - rs_allocation transform; - rs_allocation texture; -} SgShaderParamData; - -// This represents a shader parameter that knows how to update itself for a given -// renderable or shader and contains a timestamp for the last time this buffer was updated -typedef struct ShaderParam_s { - // Used to check whether transform params need to be updated - uint32_t transformTimestamp; - // Used to check whether data params need to be updated - // These are used when somebody set the matrix of float value directly in java - uint32_t dataTimestamp; - // Specifies where in the constant buffer data gets written to - int bufferOffset; - // An instance of SgShaderParamData that could be shared by multiple objects - rs_allocation data; - // How many components of the vector we need to write - int float_vecSize; -} SgShaderParam; - -// This represents a texture object -typedef struct Texture_s { - uint32_t type; - rs_allocation texture; -} SgTexture; - -static inline void printName(rs_allocation name) { - if (!rsIsObject(name)) { - rsDebug("no name", 0); - return; - } - - rsDebug((const char*)rsGetElementAt(name, 0), 0); -} - -static inline void printCameraInfo(const SgCamera *cam) { - rsDebug("***** Camera information. ptr:", cam); - printName(cam->name); - const SgTransform *camTransform = (const SgTransform *)rsGetElementAt(cam->transformMatrix, 0); - rsDebug("Transform name:", camTransform); - printName(camTransform->name); - - rsDebug("Aspect: ", cam->aspect); - rsDebug("Near: ", cam->near); - rsDebug("Far: ", cam->far); - rsDebug("Fov: ", cam->horizontalFOV); - rsDebug("Position: ", cam->position); - rsDebug("Proj: ", &cam->proj); - rsDebug("View: ", &cam->view); -} - -static inline void printLightInfo(const SgLight *light) { - rsDebug("***** Light information. ptr:", light); - printName(light->name); - const SgTransform *lTransform = (const SgTransform *)rsGetElementAt(light->transformMatrix, 0); - rsDebug("Transform name:", lTransform); - printName(lTransform->name); - - rsDebug("Position: ", light->position); - rsDebug("Color : ", light->color); - rsDebug("Intensity: ", light->intensity); - rsDebug("Type: ", light->type); -} - -static inline void getCameraRay(const SgCamera *cam, int screenX, int screenY, float3 *pnt, float3 *vec) { - rsDebug("=================================", screenX); - rsDebug("Point X", screenX); - rsDebug("Point Y", screenY); - - rs_matrix4x4 mvpInv; - rsMatrixLoad(&mvpInv, &cam->viewProj); - rsMatrixInverse(&mvpInv); - - float width = (float)rsgGetWidth(); - float height = (float)rsgGetHeight(); - - float4 pos = {(float)screenX, height - (float)screenY, 0.0f, 1.0f}; - - pos.x /= width; - pos.y /= height; - - rsDebug("Pre Norm X", pos.x); - rsDebug("Pre Norm Y", pos.y); - - pos.xy = pos.xy * 2.0f - 1.0f; - - rsDebug("Norm X", pos.x); - rsDebug("Norm Y", pos.y); - - pos = rsMatrixMultiply(&mvpInv, pos); - float oneOverW = 1.0f / pos.w; - pos.xyz *= oneOverW; - - rsDebug("World X", pos.x); - rsDebug("World Y", pos.y); - rsDebug("World Z", pos.z); - - rsDebug("Cam X", cam->position.x); - rsDebug("Cam Y", cam->position.y); - rsDebug("Cam Z", cam->position.z); - - *vec = normalize(pos.xyz - cam->position.xyz); - rsDebug("Vec X", vec->x); - rsDebug("Vec Y", vec->y); - rsDebug("Vec Z", vec->z); - *pnt = cam->position.xyz; -} - -static inline 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/scenegraph/transform.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/transform.rs deleted file mode 100644 index 1d0b5be73722..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/transform.rs +++ /dev/null @@ -1,129 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.modelviewer) - -#include "scenegraph_objects.rsh" - -rs_script gTransformScript; - -typedef struct { - int changed; - rs_matrix4x4 *mat; -} ParentData; - -//#define DEBUG_TRANSFORMS -/* Unused function: -static void debugTransform(SgTransform *data, const ParentData *parent) { - rsDebug("****** <Transform> ******", (int)data); - printName(data->name); - rsDebug("isDirty", data->isDirty); - rsDebug("parent", (int)parent); - rsDebug("child ", rsIsObject(data->children)); - - // Refresh matrices if dirty - if (data->isDirty && rsIsObject(data->components)) { - uint32_t numComponenets = rsAllocationGetDimX(data->components); - for (int i = 0; i < numComponenets; i ++) { - const SgTransformComponent *comp = NULL; - comp = (const SgTransformComponent *)rsGetElementAt(data->components, i); - - if (rsIsObject(comp->name)) { - rsDebug((const char*)rsGetElementAt(comp->name, 0), comp->value); - rsDebug("Type", comp->type); - } else { - rsDebug("no name", comp->value); - rsDebug("Type", comp->type); - } - } - } - - rsDebug("timestamp", data->timestamp); - rsDebug("****** </Transform> ******", (int)data); -} -*/ - -static void appendTransformation(int type, float4 data, rs_matrix4x4 *mat) { - rs_matrix4x4 temp; - - switch (type) { - case TRANSFORM_TRANSLATE: - rsMatrixLoadTranslate(&temp, data.x, data.y, data.z); - break; - case TRANSFORM_ROTATE: - rsMatrixLoadRotate(&temp, data.w, data.x, data.y, data.z); - break; - case TRANSFORM_SCALE: - rsMatrixLoadScale(&temp, data.x, data.y, data.z); - break; - } - rsMatrixMultiply(mat, &temp); -} - -void root(const rs_allocation *v_in, rs_allocation *v_out, const void *usrData) { - - SgTransform *data = (SgTransform *)rsGetElementAt(*v_in, 0); - const ParentData *parent = (const ParentData *)usrData; - -#ifdef DEBUG_TRANSFORMS - debugTransform(data, parent); -#endif //DEBUG_TRANSFORMS - - rs_matrix4x4 *localMat = &data->localMat; - rs_matrix4x4 *globalMat = &data->globalMat; - - // Refresh matrices if dirty - if (data->isDirty && rsIsObject(data->components)) { - bool resetLocal = false; - uint32_t numComponenets = rsAllocationGetDimX(data->components); - for (int i = 0; i < numComponenets; i ++) { - if (!resetLocal) { - // Reset our local matrix only for component transforms - rsMatrixLoadIdentity(localMat); - resetLocal = true; - } - const SgTransformComponent *comp = NULL; - comp = (const SgTransformComponent *)rsGetElementAt(data->components, i); - appendTransformation(comp->type, comp->value, localMat); - } - } - - if (parent) { - data->isDirty = (parent->changed || data->isDirty) ? 1 : 0; - if (data->isDirty) { - rsMatrixLoad(globalMat, parent->mat); - rsMatrixMultiply(globalMat, localMat); - } - } else if (data->isDirty) { - rsMatrixLoad(globalMat, localMat); - } - - ParentData toChild; - toChild.changed = 0; - toChild.mat = globalMat; - - if (data->isDirty) { - toChild.changed = 1; - data->timestamp ++; - } - - if (rsIsObject(data->children)) { - rs_allocation nullAlloc = {0}; - rsForEach(gTransformScript, data->children, nullAlloc, &toChild, sizeof(toChild)); - } - - data->isDirty = 0; -} diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/vertex_params.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/vertex_params.rs deleted file mode 100644 index 88955a88ffdd..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/vertex_params.rs +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (C) 2012 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.scenegraph) - -#include "scenegraph_objects.rsh" - -//#define DEBUG_PARAMS - -#include "params.rsh" - -void root(rs_allocation *v_out, const void *usrData) { - SgVertexShader *shader = (SgVertexShader *)rsGetElementAt(*v_out, 0); - const SgCamera *camera = (const SgCamera*)usrData; - processAllParams(shader->shaderConst, shader->shaderConstParams, camera); -} diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/FileSelector.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/FileSelector.java deleted file mode 100644 index 420e1330d88a..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/FileSelector.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.testapp; - -import java.io.File; -import java.io.FileFilter; -import java.util.ArrayList; -import java.util.List; - -import android.app.ListActivity; -import android.content.Intent; -import android.net.Uri; -import android.os.Bundle; -import android.view.View; -import android.widget.ArrayAdapter; -import android.widget.ListView; - -/** - * A list view where the last item the user clicked is placed in - * the "activated" state, causing its background to highlight. - */ -public class FileSelector extends ListActivity { - - File[] mCurrentSubList; - File mCurrentFile; - - class DAEFilter implements FileFilter { - public boolean accept(File file) { - if (file.isDirectory()) { - return true; - } - return file.getName().endsWith(".dae"); - } - } - - private void populateList(File file) { - - mCurrentFile = file; - setTitle(mCurrentFile.getAbsolutePath() + "/*.dae"); - List<String> names = new ArrayList<String>(); - names.add(".."); - - mCurrentSubList = mCurrentFile.listFiles(new DAEFilter()); - - if (mCurrentSubList != null) { - for (int i = 0; i < mCurrentSubList.length; i ++) { - String fileName = mCurrentSubList[i].getName(); - if (mCurrentSubList[i].isDirectory()) { - fileName = "/" + fileName; - } - names.add(fileName); - } - } - - // Use the built-in layout for showing a list item with a single - // line of text whose background is changes when activated. - setListAdapter(new ArrayAdapter<String>(this, - android.R.layout.simple_list_item_activated_1, names)); - getListView().setTextFilterEnabled(true); - - // Tell the list view to show one checked/activated item at a time. - getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - populateList(new File("/sdcard/")); - } - - @Override - protected void onListItemClick(ListView l, View v, int position, long id) { - if (position == 0) { - File parent = mCurrentFile.getParentFile(); - if (parent == null) { - return; - } - populateList(parent); - return; - } - - // the first thing in list is parent directory - File selectedFile = mCurrentSubList[position - 1]; - if (selectedFile.isDirectory()) { - populateList(selectedFile); - return; - } - - Intent resultIntent = new Intent(); - resultIntent.setData(Uri.fromFile(selectedFile)); - setResult(RESULT_OK, resultIntent); - finish(); - } - -} diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/FullscreenBlur.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/FullscreenBlur.java deleted file mode 100644 index 28f916c864c7..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/FullscreenBlur.java +++ /dev/null @@ -1,192 +0,0 @@ -/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-package com.android.testapp;
-
-import java.util.ArrayList;
-
-import com.android.scenegraph.*;
-
-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;
-
-class FullscreenBlur {
-
- static TextureRenderTarget sRenderTargetBlur0Color;
- static TextureRenderTarget sRenderTargetBlur0Depth;
- static TextureRenderTarget sRenderTargetBlur1Color;
- static TextureRenderTarget sRenderTargetBlur1Depth;
- static TextureRenderTarget sRenderTargetBlur2Color;
- static TextureRenderTarget sRenderTargetBlur2Depth;
-
- static FragmentShader mPF_BlurH;
- static FragmentShader mPF_BlurV;
- static FragmentShader mPF_SelectColor;
- static FragmentShader mPF_Texture;
- static VertexShader mPV_Paint;
- static VertexShader mPV_Blur;
-
- static int targetWidth;
- static int targetHeight;
-
- // This is only used when full screen blur is enabled
- // Basically, it's the offscreen render targets
- static void createRenderTargets(RenderScriptGL rs, int w, int h) {
- targetWidth = w/8;
- targetHeight = h/8;
- Type.Builder b = new Type.Builder(rs, Element.RGBA_8888(rs));
- Type renderType = b.setX(targetWidth).setY(targetHeight).create();
- int usage = Allocation.USAGE_GRAPHICS_TEXTURE | Allocation.USAGE_GRAPHICS_RENDER_TARGET;
- sRenderTargetBlur0Color = new TextureRenderTarget(Allocation.createTyped(rs, renderType, usage));
- sRenderTargetBlur1Color = new TextureRenderTarget(Allocation.createTyped(rs, renderType, usage));
- sRenderTargetBlur2Color = new TextureRenderTarget(Allocation.createTyped(rs, renderType, usage));
-
- b = new Type.Builder(rs, Element.createPixel(rs, Element.DataType.UNSIGNED_16,
- Element.DataKind.PIXEL_DEPTH));
- renderType = b.setX(targetWidth).setY(targetHeight).create();
- usage = Allocation.USAGE_GRAPHICS_RENDER_TARGET;
- sRenderTargetBlur0Depth = new TextureRenderTarget(Allocation.createTyped(rs, renderType, usage));
- sRenderTargetBlur1Depth = new TextureRenderTarget(Allocation.createTyped(rs, renderType, usage));
- sRenderTargetBlur2Depth = new TextureRenderTarget(Allocation.createTyped(rs, renderType, usage));
- }
-
- static void addOffsets(Renderable quad, float advance) {
- quad.appendSourceParams(new Float4Param("blurOffset0", - advance * 2.5f));
- quad.appendSourceParams(new Float4Param("blurOffset1", - advance * 0.5f));
- quad.appendSourceParams(new Float4Param("blurOffset2", advance * 1.5f));
- quad.appendSourceParams(new Float4Param("blurOffset3", advance * 3.5f));
- }
-
- static RenderPass addPass(Scene scene, Camera cam, TextureRenderTarget color, TextureRenderTarget depth) {
- RenderPass pass = new RenderPass();
- pass.setColorTarget(color);
- pass.setDepthTarget(depth);
- pass.setShouldClearColor(false);
- pass.setShouldClearDepth(false);
- pass.setCamera(cam);
- scene.appendRenderPass(pass);
- return pass;
- }
-
- static void addBlurPasses(Scene scene, RenderScriptGL rs, Camera cam) {
- SceneManager sceneManager = SceneManager.getInstance();
- ArrayList<RenderableBase> allDraw = scene.getRenderables();
- int numDraw = allDraw.size();
-
- ProgramRaster cullNone = ProgramRaster.CULL_NONE(rs);
- ProgramStore blendAdd = SceneManager.BLEND_ADD_DEPTH_NONE(rs);
- ProgramStore blendNone = ProgramStore.BLEND_NONE_DEPTH_NONE(rs);
-
- RenderState drawTex = new RenderState(mPV_Blur, mPF_Texture, blendAdd, cullNone);
- RenderState selectCol = new RenderState(mPV_Blur, mPF_SelectColor, blendNone, cullNone);
- RenderState hBlur = new RenderState(mPV_Blur, mPF_BlurH, blendNone, cullNone);
- RenderState vBlur = new RenderState(mPV_Blur, mPF_BlurV, blendNone, cullNone);
-
- // Renders the scene off screen
- RenderPass blurSourcePass = addPass(scene, cam,
- sRenderTargetBlur0Color,
- sRenderTargetBlur0Depth);
- blurSourcePass.setClearColor(new Float4(1.0f, 1.0f, 1.0f, 1.0f));
- blurSourcePass.setShouldClearColor(true);
- blurSourcePass.setClearDepth(1.0f);
- blurSourcePass.setShouldClearDepth(true);
- for (int i = 0; i < numDraw; i ++) {
- blurSourcePass.appendRenderable((Renderable)allDraw.get(i));
- }
-
- // Pass for selecting bright colors
- RenderPass selectColorPass = addPass(scene, cam,
- sRenderTargetBlur2Color,
- sRenderTargetBlur2Depth);
- Renderable quad = sceneManager.getRenderableQuad("ScreenAlignedQuadS", selectCol);
- quad.appendSourceParams(new TextureParam("color", sRenderTargetBlur0Color));
- selectColorPass.appendRenderable(quad);
-
- // Horizontal blur
- RenderPass horizontalBlurPass = addPass(scene, cam,
- sRenderTargetBlur1Color,
- sRenderTargetBlur1Depth);
- quad = sceneManager.getRenderableQuad("ScreenAlignedQuadH", hBlur);
- quad.appendSourceParams(new TextureParam("color", sRenderTargetBlur2Color));
- addOffsets(quad, 1.0f / (float)targetWidth);
- horizontalBlurPass.appendRenderable(quad);
-
- // Vertical Blur
- RenderPass verticalBlurPass = addPass(scene, cam,
- sRenderTargetBlur2Color,
- sRenderTargetBlur2Depth);
- quad = sceneManager.getRenderableQuad("ScreenAlignedQuadV", vBlur);
- quad.appendSourceParams(new TextureParam("color", sRenderTargetBlur1Color));
- addOffsets(quad, 1.0f / (float)targetHeight);
- verticalBlurPass.appendRenderable(quad);
- }
-
- // Additively renders the blurred colors on top of the scene
- static void addCompositePass(Scene scene, RenderScriptGL rs, Camera cam) {
- SceneManager sceneManager = SceneManager.getInstance();
- RenderState drawTex = new RenderState(mPV_Blur, mPF_Texture,
- SceneManager.BLEND_ADD_DEPTH_NONE(rs),
- ProgramRaster.CULL_NONE(rs));
-
- RenderPass compositePass = addPass(scene, cam, null, null);
- Renderable quad = sceneManager.getRenderableQuad("ScreenAlignedQuadComposite", drawTex);
- quad.appendSourceParams(new TextureParam("color", sRenderTargetBlur2Color));
- compositePass.appendRenderable(quad);
- }
-
- static private FragmentShader getShader(Resources res, RenderScriptGL rs,
- int resID, Type constants) {
- FragmentShader.Builder fb = new FragmentShader.Builder(rs);
- fb.setShader(res, resID);
- fb.addTexture(TextureType.TEXTURE_2D, "color");
- if (constants != null) {
- fb.setObjectConst(constants);
- }
- FragmentShader prog = fb.create();
- prog.getProgram().bindSampler(Sampler.CLAMP_LINEAR(rs), 0);
- return prog;
- }
-
- static void initShaders(Resources res, RenderScriptGL rs) {
- ScriptField_BlurOffsets blurConst = new ScriptField_BlurOffsets(rs, 1);
- VertexShader.Builder vb = new VertexShader.Builder(rs);
- vb.addInput(ScriptField_VertexShaderInputs.createElement(rs));
- vb.setShader(res, R.raw.blur_vertex);
- mPV_Blur = vb.create();
-
- mPF_Texture = getShader(res, rs, R.raw.texture, null);
- mPF_Texture.getProgram().bindSampler(Sampler.WRAP_LINEAR_MIP_LINEAR(rs), 0);
- mPF_BlurH = getShader(res, rs, R.raw.blur_h, blurConst.getAllocation().getType());
- mPF_BlurV = getShader(res, rs, R.raw.blur_v, blurConst.getAllocation().getType());
- mPF_SelectColor = getShader(res, rs, R.raw.select_color, null);
- }
-
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/SimpleApp.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/SimpleApp.java deleted file mode 100644 index 314db80f2a31..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/SimpleApp.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.testapp; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; - -import android.app.Activity; -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.view.Window; -import android.view.Window; -import android.net.Uri; - -import java.lang.Runtime; - -public class SimpleApp extends Activity { - - private SimpleAppView mView; - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - // Create our Preview view and set it as the content of our - // Activity - mView = new SimpleAppView(this); - setContentView(mView); - } -} - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/SimpleAppRS.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/SimpleAppRS.java deleted file mode 100644 index fff6f3407a92..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/SimpleAppRS.java +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.testapp; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; -import java.util.Vector; - -import com.android.scenegraph.*; -import com.android.scenegraph.SceneManager.SceneLoadedCallback; - -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.os.AsyncTask; -import android.renderscript.*; -import android.renderscript.Program.TextureType; -import android.util.Log; - -// This is where the scenegraph and the rendered objects are initialized and used -public class SimpleAppRS { - SceneManager mSceneManager; - - RenderScriptGL mRS; - Resources mRes; - - Scene mScene; - Mesh mSimpleMesh; - Mesh mSphereMesh; - Mesh mCubeMesh; - - public void init(RenderScriptGL rs, Resources res, int width, int height) { - mRS = rs; - mRes = res; - mSceneManager = SceneManager.getInstance(); - mSceneManager.initRS(mRS, mRes, width, height); - - mScene = new Scene(); - - setupGeometry(); - setupColoredQuad(); - setupTexturedQuad(); - setupShadedGeometry(); - setupCamera(); - setupRenderPass(); - - mSceneManager.setActiveScene(mScene); - - mScene.initRS(); - mRS.bindRootScript(mSceneManager.getRenderLoop()); - } - - private void setupGeometry() { - Mesh.TriangleMeshBuilder tmb = new Mesh.TriangleMeshBuilder(mRS, 3, - Mesh.TriangleMeshBuilder.TEXTURE_0); - - // Create four vertices with texture coordinates - tmb.setTexture(0.0f, 1.0f).addVertex(-1.0f, 1.0f, 0.0f); - tmb.setTexture(0.0f, 0.0f).addVertex(-1.0f, -1.0f, 0.0f); - tmb.setTexture(1.0f, 0.0f).addVertex(1.0f, -1.0f, 0.0f); - tmb.setTexture(1.0f, 1.0f).addVertex(1.0f, 1.0f, 0.0f); - - tmb.addTriangle(0, 1, 2); - tmb.addTriangle(2, 3, 0); - mSimpleMesh = tmb.create(true); - - // Load a file that constains two pieces of geometry, a sphere and a cube - FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.unit_obj); - for (int i = 0; i < model.getIndexEntryCount(); i ++) { - FileA3D.IndexEntry entry = model.getIndexEntry(i); - if (entry != null && entry.getName().equals("CubeMesh")) { - mCubeMesh = entry.getMesh(); - } else if (entry != null && entry.getName().equals("SphereMesh")) { - mSphereMesh = entry.getMesh(); - } - } - } - - private void setupColoredQuad() { - // Built-in shader that provides position, texcoord and normal - VertexShader genericV = SceneManager.getDefaultVS(); - // Built-in shader that displays a color - FragmentShader colorF = SceneManager.getColorFS(); - RenderState colorRS = new RenderState(genericV, colorF, null, null); - - // Draw a simple colored quad - Renderable quad = mScene.appendNewRenderable(); - quad.setMesh(mSimpleMesh); - // Our shader has a constant input called "color" - // This tells the scenegraph to assign the following float3 to that input - quad.appendSourceParams(new Float4Param("color", 0.2f, 0.3f, 0.4f)); - quad.setRenderState(colorRS); - } - - private void setupTexturedQuad() { - // Built-in shader that provides position, texcoord and normal - VertexShader genericV = SceneManager.getDefaultVS(); - // Built-in shader that displays a texture - FragmentShader textureF = SceneManager.getTextureFS(); - // We want to use transparency based on the alpha channel of the texture - ProgramStore alphaBlend = ProgramStore.BLEND_ALPHA_DEPTH_TEST(mRS); - RenderState texRS = new RenderState(genericV, textureF, alphaBlend, null); - - // Draw a textured quad - Renderable quad = mScene.appendNewRenderable(); - quad.setMesh(mSimpleMesh); - // Make a transform to position the quad - CompoundTransform t = mScene.appendNewCompoundTransform(); - t.addTranslate("position", new Float3(2, 2, 0)); - quad.setTransform(t); - // Our fragment shader has a constant texture input called "color" - // This will assign an icon from drawables to that input - quad.appendSourceParams(new TextureParam("color", new Texture2D(R.drawable.icon))); - quad.setRenderState(texRS); - } - - private FragmentShader createLambertShader() { - // Describe what constant inputs our shader wants - Element.Builder b = new Element.Builder(mRS); - b.add(Element.F32_4(mRS), "cameraPos"); - - // Create a shader from a text file in resources - FragmentShader.Builder fb = new FragmentShader.Builder(mRS); - // Tell the shader what constants we want - fb.setShaderConst(new Type.Builder(mRS, b.create()).setX(1).create()); - // Shader code location - fb.setShader(mRes, R.raw.diffuse); - // We want a texture called diffuse on our shader - fb.addTexture(TextureType.TEXTURE_2D, "diffuse"); - FragmentShader shader = fb.create(); - mScene.appendShader(shader); - return shader; - } - - private void setupShadedGeometry() { - // Built-in shader that provides position, texcoord and normal - VertexShader genericV = SceneManager.getDefaultVS(); - // Custom shader - FragmentShader diffuseF = createLambertShader(); - RenderState diffuseRS = new RenderState(genericV, diffuseF, null, null); - - // Draw a sphere - Renderable sphere = mScene.appendNewRenderable(); - // Use the sphere geometry loaded earlier - sphere.setMesh(mSphereMesh); - // Make a transform to position the sphere - CompoundTransform t = mScene.appendNewCompoundTransform(); - t.addTranslate("position", new Float3(-1, 2, 3)); - t.addScale("scale", new Float3(1.4f, 1.4f, 1.4f)); - sphere.setTransform(t); - // Tell the renderable which texture to use when we draw - // This will mean a texture param in the shader called "diffuse" - // will be assigned a texture called red.jpg - sphere.appendSourceParams(new TextureParam("diffuse", new Texture2D("", "red.jpg"))); - sphere.setRenderState(diffuseRS); - - // Draw a cube - Renderable cube = mScene.appendNewRenderable(); - cube.setMesh(mCubeMesh); - t = mScene.appendNewCompoundTransform(); - t.addTranslate("position", new Float3(-2, -2.1f, 0)); - t.addRotate("rotateX", new Float3(1, 0, 0), 30); - t.addRotate("rotateY", new Float3(0, 1, 0), 30); - t.addScale("scale", new Float3(2, 2, 2)); - cube.setTransform(t); - cube.appendSourceParams(new TextureParam("diffuse", new Texture2D("", "orange.jpg"))); - cube.setRenderState(diffuseRS); - } - - private void setupCamera() { - Camera camera = mScene.appendNewCamera(); - camera.setFar(200); - camera.setNear(0.1f); - camera.setFOV(60); - CompoundTransform cameraTransform = mScene.appendNewCompoundTransform(); - cameraTransform.addTranslate("camera", new Float3(0, 0, 10)); - camera.setTransform(cameraTransform); - } - - private void setupRenderPass() { - RenderPass mainPass = mScene.appendNewRenderPass(); - mainPass.setClearColor(new Float4(1.0f, 1.0f, 1.0f, 1.0f)); - mainPass.setShouldClearColor(true); - mainPass.setClearDepth(1.0f); - mainPass.setShouldClearDepth(true); - mainPass.setCamera(mScene.getCameras().get(0)); - ArrayList<RenderableBase> allRender = mScene.getRenderables(); - for (RenderableBase renderable : allRender) { - mainPass.appendRenderable((Renderable)renderable); - } - } -} diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/SimpleAppView.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/SimpleAppView.java deleted file mode 100644 index 21121815c67d..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/SimpleAppView.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.testapp; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; -import android.renderscript.RenderScriptGL; - -import android.content.Context; -import android.content.res.Resources; -import android.util.Log; -import android.view.Surface; -import android.view.SurfaceHolder; -import android.view.SurfaceView; - -public class SimpleAppView extends RSSurfaceView { - - public SimpleAppView(Context context) { - super(context); - } - - private RenderScriptGL mRS; - SimpleAppRS mRender; - - public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { - super.surfaceChanged(holder, format, w, h); - if (mRS == null) { - RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); - sc.setDepth(16, 24); - sc.setSamples(1, 2, 1); - mRS = createRenderScriptGL(sc); - mRS.setSurface(holder, w, h); - mRender = new SimpleAppRS(); - mRender.init(mRS, getResources(), w, h); - } - } - - @Override - protected void onDetachedFromWindow() { - if (mRS != null) { - mRender = null; - mRS = null; - destroyRenderScriptGL(); - } - } -} - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestApp.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestApp.java deleted file mode 100644 index 385a7ab37d11..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestApp.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.testapp; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; - -import android.app.Activity; -import android.content.res.Configuration; -import android.content.Intent; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.provider.Settings.System; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.Window; -import android.widget.Button; -import android.widget.ListView; -import android.view.MenuInflater; -import android.view.Window; -import android.net.Uri; - -import java.lang.Runtime; - -public class TestApp extends Activity { - - private TestAppView mView; - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - // Create our Preview view and set it as the content of our - // Activity - mView = new TestAppView(this); - setContentView(mView); - } - - @Override - protected void onResume() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity looses focus - super.onResume(); - mView.resume(); - } - - @Override - protected void onPause() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity looses focus - super.onPause(); - mView.pause(); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.loader_menu, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle item selection - switch (item.getItemId()) { - case R.id.load_model: - loadModel(); - return true; - case R.id.use_blur: - mView.mRender.toggleBlur(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - - private static final int FIND_DAE_MODEL = 10; - public void onActivityResult(int requestCode, int resultCode, Intent data) { - if (resultCode == RESULT_OK) { - if (requestCode == FIND_DAE_MODEL) { - Uri selectedImageUri = data.getData(); - Log.e("Selected Path: ", selectedImageUri.getPath()); - mView.mRender.loadModel(selectedImageUri.getPath()); - } - } - } - - public void loadModel() { - Intent intent = new Intent(); - intent.setAction(Intent.ACTION_PICK); - intent.setClassName("com.android.testapp", - "com.android.testapp.FileSelector"); - startActivityForResult(intent, FIND_DAE_MODEL); - } - -} - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppLoadingScreen.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppLoadingScreen.java deleted file mode 100644 index 5bd8f0bccf16..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppLoadingScreen.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.testapp; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; -import java.util.Vector; - -import com.android.scenegraph.SceneManager; - -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; - -// This is where the scenegraph and the rendered objects are initialized and used -public class TestAppLoadingScreen { - - private static String TAG = "TestAppLoadingScreen"; - - private Resources mRes; - private RenderScriptGL mRS; - private ScriptC_test_app mScript; - - public TestAppLoadingScreen(RenderScriptGL rs, Resources res) { - mRS = rs; - mRes = res; - // Shows the loading screen with some text - renderLoading(); - // Adds a little 3D bugdroid model to the laoding screen asynchronously. - new LoadingScreenLoaderTask().execute(); - } - - public void showLoadingScreen(boolean show) { - if (show) { - mRS.bindRootScript(mScript); - } else { - mRS.bindRootScript(SceneManager.getInstance().getRenderLoop()); - } - } - - // The loading screen has some elements that shouldn't be loaded on the UI thread - private class LoadingScreenLoaderTask extends AsyncTask<String, Void, Boolean> { - Allocation robotTex; - Mesh robotMesh; - protected Boolean doInBackground(String... names) { - long start = System.currentTimeMillis(); - robotTex = Allocation.createFromBitmapResource(mRS, mRes, R.drawable.robot, - MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, - Allocation.USAGE_GRAPHICS_TEXTURE); - - FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.robot); - FileA3D.IndexEntry entry = model.getIndexEntry(0); - if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) { - robotMesh = entry.getMesh(); - } - - mScript.set_gPFSBackground(ProgramStore.BLEND_NONE_DEPTH_TEST(mRS)); - - ProgramFragmentFixedFunction.Builder b = new ProgramFragmentFixedFunction.Builder(mRS); - b.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE, - ProgramFragmentFixedFunction.Builder.Format.RGBA, 0); - ProgramFragment pfDefault = b.create(); - pfDefault.bindSampler(Sampler.CLAMP_LINEAR(mRS), 0); - mScript.set_gPFBackground(pfDefault); - - ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS); - ProgramVertexFixedFunction pvDefault = pvb.create(); - ProgramVertexFixedFunction.Constants va = new ProgramVertexFixedFunction.Constants(mRS); - ((ProgramVertexFixedFunction)pvDefault).bindConstants(va); - mScript.set_gPVBackground(pvDefault); - - long end = System.currentTimeMillis(); - Log.v("TIMER", "Loading load time: " + (end - start)); - return new Boolean(true); - } - - protected void onPostExecute(Boolean result) { - mScript.set_gRobotTex(robotTex); - mScript.set_gRobotMesh(robotMesh); - } - } - - // Creates a simple script to show a loding screen until everything is initialized - // Could also be used to do some custom renderscript work before handing things over - // to the scenegraph - void renderLoading() { - mScript = new ScriptC_test_app(mRS, mRes, R.raw.test_app); - mRS.bindRootScript(mScript); - } -} diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppRS.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppRS.java deleted file mode 100644 index 3aa80f4cad19..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppRS.java +++ /dev/null @@ -1,270 +0,0 @@ -/* - * Copyright (C) 2011-2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.testapp; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; -import java.util.Vector; - -import com.android.scenegraph.*; -import com.android.scenegraph.SceneManager.SceneLoadedCallback; - -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.os.AsyncTask; -import android.renderscript.*; -import android.renderscript.Program.TextureType; -import android.util.Log; - -// This is where the scenegraph and the rendered objects are initialized and used -public class TestAppRS { - - private static String modelName = "orientation_test.dae"; - private static String TAG = "TestAppRS"; - private static String mFilePath = ""; - - int mWidth; - int mHeight; - - boolean mUseBlur; - - TestAppLoadingScreen mLoadingScreen; - - // Used to asynchronously load scene elements like meshes and transform hierarchies - SceneLoadedCallback mLoadedCallback = new SceneLoadedCallback() { - public void run() { - prepareToRender(mLoadedScene); - } - }; - - // Top level class that initializes all the elements needed to use the scene graph - SceneManager mSceneManager; - - // Used to move the camera around in the 3D world - TouchHandler mTouchHandler; - - private Resources mRes; - private RenderScriptGL mRS; - - // Shaders - private FragmentShader mPaintF; - private FragmentShader mLightsF; - private FragmentShader mLightsDiffF; - private FragmentShader mAluminumF; - private FragmentShader mPlasticF; - private FragmentShader mDiffuseF; - private FragmentShader mTextureF; - private VertexShader mGenericV; - - Scene mActiveScene; - - // 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() { - mUseBlur = !mUseBlur; - - mActiveScene.clearRenderPasses(); - initRenderPasses(); - mActiveScene.initRenderPassRS(mRS, mSceneManager); - - // This is just a hardcoded object in the scene that gets turned on and off for the demo - // to make things look a bit better. This could be deleted in the cleanup - Renderable plane = (Renderable)mActiveScene.getRenderableByName("pPlaneShape1"); - if (plane != null) { - plane.setVisible(!mUseBlur); - } - } - - public void init(RenderScriptGL rs, Resources res, int width, int height) { - mUseBlur = false; - mRS = rs; - mRes = res; - mWidth = width; - mHeight = height; - - mTouchHandler = new TouchHandler(); - - mSceneManager = SceneManager.getInstance(); - // Initializes all the RS specific scenegraph elements - mSceneManager.initRS(mRS, mRes, mWidth, mHeight); - - mLoadingScreen = new TestAppLoadingScreen(mRS, mRes); - - // Initi renderscript stuff specific to the app. This will need to be abstracted out later. - FullscreenBlur.createRenderTargets(mRS, mWidth, mHeight); - initPaintShaders(); - - // Load a scene to render - mSceneManager.loadModel(mFilePath + modelName, mLoadedCallback); - } - - // 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.loadModel(path, mLoadedCallback); - } - - public void onActionDown(float x, float y) { - mTouchHandler.onActionDown(x, y); - } - - public void onActionScale(float scale) { - mTouchHandler.onActionScale(scale); - } - - public void onActionMove(float x, float y) { - mTouchHandler.onActionMove(x, y); - } - - FragmentShader createFromResource(int id, boolean addCubemap, Type constType) { - FragmentShader.Builder fb = new FragmentShader.Builder(mRS); - fb.setShaderConst(constType); - fb.setShader(mRes, id); - fb.addTexture(TextureType.TEXTURE_2D, "diffuse"); - if (addCubemap) { - fb.addShaderTexture(TextureType.TEXTURE_CUBE, "reflection"); - } - FragmentShader pf = fb.create(); - pf.getProgram().bindSampler(Sampler.WRAP_LINEAR_MIP_LINEAR(mRS), 0); - if (addCubemap) { - pf.getProgram().bindSampler(Sampler.CLAMP_LINEAR_MIP_LINEAR(mRS), 1); - } - return pf; - } - - private void initPaintShaders() { - mGenericV = SceneManager.getDefaultVS(); - - ScriptField_CameraParams camParams = new ScriptField_CameraParams(mRS, 1); - Type camParamType = camParams.getAllocation().getType(); - ScriptField_LightParams lightParams = new ScriptField_LightParams(mRS, 1); - - mPaintF = createFromResource(R.raw.paintf, true, camParamType); - // Assign a reflection map - TextureCube envCube = new TextureCube("sdcard/scenegraph/", "cube_env.png"); - mPaintF.appendSourceParams(new TextureParam("reflection", envCube)); - - mAluminumF = createFromResource(R.raw.metal, true, camParamType); - TextureCube diffCube = new TextureCube("sdcard/scenegraph/", "cube_spec.png"); - mAluminumF.appendSourceParams(new TextureParam("reflection", diffCube)); - - mPlasticF = createFromResource(R.raw.plastic, false, camParamType); - mDiffuseF = createFromResource(R.raw.diffuse, false, camParamType); - mTextureF = SceneManager.getTextureFS(); - - FragmentShader.Builder fb = new FragmentShader.Builder(mRS); - fb.setObjectConst(lightParams.getAllocation().getType()); - fb.setShader(mRes, R.raw.plastic_lights); - mLightsF = fb.create(); - - fb = new FragmentShader.Builder(mRS); - fb.setObjectConst(lightParams.getAllocation().getType()); - fb.setShader(mRes, R.raw.diffuse_lights); - mLightsDiffF = fb.create(); - - FullscreenBlur.initShaders(mRes, mRS); - } - - void initRenderPasses() { - ArrayList<RenderableBase> allDraw = mActiveScene.getRenderables(); - int numDraw = allDraw.size(); - - if (mUseBlur) { - FullscreenBlur.addBlurPasses(mActiveScene, mRS, mTouchHandler.getCamera()); - } - - RenderPass mainPass = new RenderPass(); - mainPass.setClearColor(new Float4(1.0f, 1.0f, 1.0f, 1.0f)); - mainPass.setShouldClearColor(true); - mainPass.setClearDepth(1.0f); - mainPass.setShouldClearDepth(true); - mainPass.setCamera(mTouchHandler.getCamera()); - for (int i = 0; i < numDraw; i ++) { - mainPass.appendRenderable((Renderable)allDraw.get(i)); - } - mActiveScene.appendRenderPass(mainPass); - - if (mUseBlur) { - FullscreenBlur.addCompositePass(mActiveScene, mRS, mTouchHandler.getCamera()); - } - } - - private void addShadersToScene() { - mActiveScene.appendShader(mPaintF); - mActiveScene.appendShader(mLightsF); - mActiveScene.appendShader(mLightsDiffF); - mActiveScene.appendShader(mAluminumF); - mActiveScene.appendShader(mPlasticF); - mActiveScene.appendShader(mDiffuseF); - mActiveScene.appendShader(mTextureF); - } - - public void prepareToRender(Scene s) { - mSceneManager.setActiveScene(s); - mActiveScene = s; - mTouchHandler.init(mActiveScene); - addShadersToScene(); - 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 diff_lights = new RenderState(mGenericV, mLightsDiffF, null, null); - RenderState diff_lights_no_cull = new RenderState(mGenericV, mLightsDiffF, null, - ProgramRaster.CULL_NONE(mRS)); - RenderState glassTransp = new RenderState(mGenericV, mPaintF, - ProgramStore.BLEND_ALPHA_DEPTH_TEST(mRS), null); - RenderState texState = new RenderState(mGenericV, mTextureF, null, null); - - initRenderPasses(); - - mActiveScene.assignRenderState(plastic); - - mActiveScene.assignRenderStateToMaterial(diffuse, "lambert2$"); - - mActiveScene.assignRenderStateToMaterial(paint, "^Paint"); - mActiveScene.assignRenderStateToMaterial(paint, "^Carbon"); - mActiveScene.assignRenderStateToMaterial(paint, "^Glass"); - mActiveScene.assignRenderStateToMaterial(paint, "^MainGlass"); - - mActiveScene.assignRenderStateToMaterial(aluminum, "^Metal"); - mActiveScene.assignRenderStateToMaterial(aluminum, "^Brake"); - - mActiveScene.assignRenderStateToMaterial(glassTransp, "^GlassLight"); - - mActiveScene.assignRenderStateToMaterial(lights, "^LightBlinn"); - mActiveScene.assignRenderStateToMaterial(diff_lights, "^LightLambert"); - mActiveScene.assignRenderStateToMaterial(diff_lights_no_cull, "^LightLambertNoCull"); - mActiveScene.assignRenderStateToMaterial(texState, "^TextureOnly"); - - Renderable plane = (Renderable)mActiveScene.getRenderableByName("pPlaneShape1"); - if (plane != null) { - plane.setRenderState(texState); - plane.setVisible(!mUseBlur); - } - - long start = System.currentTimeMillis(); - mActiveScene.initRS(); - long end = System.currentTimeMillis(); - Log.v("TIMER", "Scene init time: " + (end - start)); - - mLoadingScreen.showLoadingScreen(false); - } -} diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppView.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppView.java deleted file mode 100644 index 33ca1b85a70b..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppView.java +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.testapp; - -import java.io.Writer; -import java.util.ArrayList; -import java.util.concurrent.Semaphore; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; -import android.renderscript.RenderScriptGL; - -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; -import android.os.Handler; -import android.os.Message; -import android.util.AttributeSet; -import android.util.Log; -import android.view.Surface; -import android.view.SurfaceHolder; -import android.view.SurfaceView; -import android.view.KeyEvent; -import android.view.MotionEvent; -import android.view.ScaleGestureDetector; - -public class TestAppView extends RSSurfaceView { - - public TestAppView(Context context) { - super(context); - mScaleDetector = new ScaleGestureDetector(context, new ScaleListener()); - } - - private RenderScriptGL mRS; - TestAppRS mRender; - - private ScaleGestureDetector mScaleDetector; - private static final int INVALID_POINTER_ID = -1; - private int mActivePointerId = INVALID_POINTER_ID; - - public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { - super.surfaceChanged(holder, format, w, h); - if (mRS == null) { - RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); - sc.setDepth(16, 24); - sc.setSamples(1, 2, 1); - mRS = createRenderScriptGL(sc); - mRS.setSurface(holder, w, h); - mRender = new TestAppRS(); - mRender.init(mRS, getResources(), w, h); - } - } - - @Override - protected void onDetachedFromWindow() { - if (mRS != null) { - mRender = null; - mRS = null; - destroyRenderScriptGL(); - } - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) - { - // break point at here - // this method doesn't work when 'extends View' include 'extends ScrollView'. - return super.onKeyDown(keyCode, event); - } - - - @Override - public boolean onTouchEvent(MotionEvent ev) { - mScaleDetector.onTouchEvent(ev); - - boolean ret = false; - float x = ev.getX(); - float y = ev.getY(); - - final int action = ev.getAction(); - - switch (action & MotionEvent.ACTION_MASK) { - case MotionEvent.ACTION_DOWN: { - mRender.onActionDown(x, y); - mActivePointerId = ev.getPointerId(0); - ret = true; - break; - } - case MotionEvent.ACTION_MOVE: { - if (!mScaleDetector.isInProgress()) { - mRender.onActionMove(x, y); - } - mRender.onActionDown(x, y); - ret = true; - break; - } - - case MotionEvent.ACTION_UP: { - mActivePointerId = INVALID_POINTER_ID; - break; - } - - case MotionEvent.ACTION_CANCEL: { - mActivePointerId = INVALID_POINTER_ID; - break; - } - - case MotionEvent.ACTION_POINTER_UP: { - final int pointerIndex = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) - >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; - final int pointerId = ev.getPointerId(pointerIndex); - if (pointerId == mActivePointerId) { - // This was our active pointer going up. Choose a new - // active pointer and adjust accordingly. - final int newPointerIndex = pointerIndex == 0 ? 1 : 0; - x = ev.getX(newPointerIndex); - y = ev.getY(newPointerIndex); - mRender.onActionDown(x, y); - mActivePointerId = ev.getPointerId(newPointerIndex); - } - break; - } - } - - return ret; - } - - private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { - @Override - public boolean onScale(ScaleGestureDetector detector) { - mRender.onActionScale(detector.getScaleFactor()); - return true; - } - } -} - - diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TouchHandler.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TouchHandler.java deleted file mode 100644 index d0f979734c9e..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TouchHandler.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.testapp; - -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"; - - float mLastX; - float mLastY; - - float mRotateXValue; - float mRotateYValue; - Float3 mDistValue; - Float3 mPosValue; - - CompoundTransform mCameraRig; - RotateComponent mRotateX; - RotateComponent mRotateY; - TranslateComponent mDist; - TranslateComponent mPosition; - Camera mCamera; - - public void init(Scene scene) { - // Some initial values for camera position - mRotateXValue = -20; - mRotateYValue = 0; - mDistValue = new Float3(0, 0, 45); - mPosValue = new Float3(0, 4, 0); - - // Make a camera transform we can manipulate - mCameraRig = scene.appendNewCompoundTransform(); - mCameraRig.setName("CameraRig"); - - mPosition = mCameraRig.addTranslate("Position", mPosValue); - mRotateY = mCameraRig.addRotate("RotateY", new Float3(0, 1, 0), mRotateYValue); - mRotateX = mCameraRig.addRotate("RotateX", new Float3(1, 0, 0), mRotateXValue); - mDist = mCameraRig.addTranslate("Distance", mDistValue); - - mCamera = scene.appendNewCamera(); - mCamera.setTransform(mCameraRig); - } - - public Camera getCamera() { - return mCamera; - } - - public void onActionDown(float x, float y) { - mLastX = x; - mLastY = y; - } - - public void onActionScale(float scale) { - if (mDist == null) { - return; - } - mDistValue.z *= 1.0f / scale; - mDistValue.z = Math.max(10.0f, Math.min(mDistValue.z, 150.0f)); - mDist.setValue(mDistValue); - } - - public void onActionMove(float x, float y) { - if (mRotateX == null) { - return; - } - - float dx = mLastX - x; - float dy = mLastY - y; - - if (Math.abs(dy) <= 2.0f) { - dy = 0.0f; - } - if (Math.abs(dx) <= 2.0f) { - dx = 0.0f; - } - - mRotateYValue += dx * 0.25f; - mRotateYValue %= 360.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; - } -} diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rs deleted file mode 100644 index d94da52cca64..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rs +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.testapp) - -#include "rs_graphics.rsh" -#include "test_app.rsh" - -// Making sure these get reflected -FBlurOffsets *blurExport; -VShaderInputs *iExport; -FShaderParams *fConst; -FShaderLightParams *fConts2; -VSParams *vConst2; -VObjectParams *vConst3; - -rs_program_vertex gPVBackground; -rs_program_fragment gPFBackground; - -rs_allocation gRobotTex; -rs_mesh gRobotMesh; - -rs_program_store gPFSBackground; - -float gRotate; - -void init() { - gRotate = 0.0f; -} - -static float gRotateY = 120.0f; -static float gZoom = 50.0f; -static void displayLoading() { - if (rsIsObject(gRobotTex) && rsIsObject(gRobotMesh)) { - rsgBindProgramVertex(gPVBackground); - rs_matrix4x4 proj; - float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); - rsMatrixLoadPerspective(&proj, 30.0f, aspect, 1.0f, 100.0f); - rsgProgramVertexLoadProjectionMatrix(&proj); - - rsgBindProgramFragment(gPFBackground); - rsgBindProgramStore(gPFSBackground); - rsgBindTexture(gPFBackground, 0, gRobotTex); - - rs_matrix4x4 matrix; - rsMatrixLoadIdentity(&matrix); - // Position our models on the screen - gRotateY += rsGetDt()*100; - rsMatrixTranslate(&matrix, 0, 0, -gZoom); - rsMatrixRotate(&matrix, 20.0f, 1.0f, 0.0f, 0.0f); - rsMatrixRotate(&matrix, gRotateY, 0.0f, 1.0f, 0.0f); - rsMatrixScale(&matrix, 0.2f, 0.2f, 0.2f); - rsgProgramVertexLoadModelMatrix(&matrix); - rsgDrawMesh(gRobotMesh); - } - - uint width = rsgGetWidth(); - uint height = rsgGetHeight(); - int left = 0, right = 0, top = 0, bottom = 0; - const char* text = "Initializing..."; - rsgMeasureText(text, &left, &right, &top, &bottom); - int centeredPos = width / 2 - (right - left) / 2; - rsgDrawText(text, centeredPos, height / 2 + height / 10); -} - -int root(void) { - rsgClearColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgClearDepth(1.0f); - displayLoading(); - return 30; -} diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rsh b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rsh deleted file mode 100644 index 5fbcbb2ebb69..000000000000 --- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rsh +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (C) 2012 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.testapp) - -// Helpers -typedef struct ViewProjParams { - rs_matrix4x4 viewProj; -} VSParams; - -typedef struct ModelParams { - rs_matrix4x4 model; -} VObjectParams; - -typedef struct CameraParams { - float4 cameraPos; -} FShaderParams; - -typedef struct LightParams { - float4 lightPos_0; - float4 lightColor_0; - float4 lightPos_1; - float4 lightColor_1; - float4 cameraPos; - float4 diffuse; -} FShaderLightParams; - -typedef struct BlurOffsets { - float blurOffset0; - float blurOffset1; - float blurOffset2; - float blurOffset3; -} FBlurOffsets; - -typedef struct VertexShaderInputs { - float4 position; - float3 normal; - float2 texture0; -} VShaderInputs; diff --git a/tests/RenderScriptTests/ShadersTest/Android.mk b/tests/RenderScriptTests/ShadersTest/Android.mk deleted file mode 100644 index fb6356e4d81a..000000000000 --- a/tests/RenderScriptTests/ShadersTest/Android.mk +++ /dev/null @@ -1,28 +0,0 @@ -# -# Copyright (C) 2011 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := tests - -LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src) - -LOCAL_SDK_VERSION := 17 - -LOCAL_PACKAGE_NAME := ShadersTest - -include $(BUILD_PACKAGE) diff --git a/tests/RenderScriptTests/ShadersTest/AndroidManifest.xml b/tests/RenderScriptTests/ShadersTest/AndroidManifest.xml deleted file mode 100644 index 871200da6ad6..000000000000 --- a/tests/RenderScriptTests/ShadersTest/AndroidManifest.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2011 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.shaderstest"> - - <uses-permission android:name="android.permission.INTERNET" /> - - <application android:label="_ShadersTest"> - <activity android:name="ShadersTest" - android:label="_ShadersTest" - android:theme="@android:style/Theme.Black.NoTitleBar"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - </application> -</manifest> diff --git a/tests/RenderScriptTests/ShadersTest/res/drawable-nodpi/robot.png b/tests/RenderScriptTests/ShadersTest/res/drawable-nodpi/robot.png Binary files differdeleted file mode 100644 index f7353fd61c5b..000000000000 --- a/tests/RenderScriptTests/ShadersTest/res/drawable-nodpi/robot.png +++ /dev/null diff --git a/tests/RenderScriptTests/ShadersTest/res/raw/depth_fs.glsl b/tests/RenderScriptTests/ShadersTest/res/raw/depth_fs.glsl deleted file mode 100644 index 096843b1bb44..000000000000 --- a/tests/RenderScriptTests/ShadersTest/res/raw/depth_fs.glsl +++ /dev/null @@ -1,13 +0,0 @@ -void main() { - // Non-linear depth value - float z = gl_FragCoord.z; - // Near and far planes from the projection - // In practice, these values can be used to tweak - // the focus range - float n = UNI_near; - float f = UNI_far; - // Linear depth value - z = (2.0 * n) / (f + n - z * (f - n)); - - gl_FragColor = vec4(z, z, z, 1.0); -} diff --git a/tests/RenderScriptTests/ShadersTest/res/raw/robot.a3d b/tests/RenderScriptTests/ShadersTest/res/raw/robot.a3d Binary files differdeleted file mode 100644 index f48895cd8451..000000000000 --- a/tests/RenderScriptTests/ShadersTest/res/raw/robot.a3d +++ /dev/null diff --git a/tests/RenderScriptTests/ShadersTest/res/raw/vignette_fs.glsl b/tests/RenderScriptTests/ShadersTest/res/raw/vignette_fs.glsl deleted file mode 100644 index 2dc1ea31b9d6..000000000000 --- a/tests/RenderScriptTests/ShadersTest/res/raw/vignette_fs.glsl +++ /dev/null @@ -1,31 +0,0 @@ -#define CRT_MASK - -varying vec2 varTex0; - -void main() { - lowp vec4 color = texture2D(UNI_Tex0, varTex0); - - vec2 powers = pow(abs((gl_FragCoord.xy / vec2(UNI_width, UNI_height)) - 0.5), vec2(2.0)); - float gradient = smoothstep(UNI_size - UNI_feather, UNI_size + UNI_feather, - powers.x + powers.y); - - color = vec4(mix(color.rgb, vec3(0.0), gradient), 1.0); - -#ifdef CRT_MASK - float vShift = gl_FragCoord.y; - if (mod(gl_FragCoord.x, 6.0) >= 3.0) { - vShift += 2.0; - } - - lowp vec3 r = vec3(0.95, 0.0, 0.2); - lowp vec3 g = vec3(0.2, 0.95, 0.0); - lowp vec3 b = vec3(0.0, 0.2, 0.95); - int channel = int(floor(mod(gl_FragCoord.x, 3.0))); - lowp vec4 crt = vec4(r[channel], g[channel], b[channel], 1.0); - crt *= clamp(floor(mod(vShift, 4.0)), 0.0, 1.0); - - color = (crt * color * 1.25) + 0.05; -#endif - - gl_FragColor = color; -} diff --git a/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/ShadersTest.java b/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/ShadersTest.java deleted file mode 100644 index 6803fbbf4016..000000000000 --- a/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/ShadersTest.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.shaderstest; - -import android.app.Activity; -import android.os.Bundle; - -@SuppressWarnings({"UnusedDeclaration"}) -public class ShadersTest extends Activity { - - private ShadersTestView mView; - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - mView = new ShadersTestView(this); - setContentView(mView); - } - - @Override - protected void onResume() { - super.onResume(); - mView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mView.pause(); - } -} diff --git a/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/ShadersTestRS.java b/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/ShadersTestRS.java deleted file mode 100644 index dad97e20417d..000000000000 --- a/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/ShadersTestRS.java +++ /dev/null @@ -1,202 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.shaderstest; - -import android.content.res.Resources; -import android.renderscript.Allocation; -import android.renderscript.Element; -import android.renderscript.Element.DataKind; -import android.renderscript.Element.DataType; -import android.renderscript.FileA3D; -import android.renderscript.Mesh; -import android.renderscript.Program; -import android.renderscript.ProgramFragment; -import android.renderscript.ProgramFragmentFixedFunction; -import android.renderscript.ProgramStore; -import android.renderscript.ProgramStore.DepthFunc; -import android.renderscript.ProgramVertex; -import android.renderscript.ProgramVertexFixedFunction; -import android.renderscript.RSRuntimeException; -import android.renderscript.RenderScriptGL; -import android.renderscript.Sampler; -import android.renderscript.Type.Builder; - -@SuppressWarnings({"FieldCanBeLocal"}) -public class ShadersTestRS { - public ShadersTestRS() { - } - - public void init(RenderScriptGL rs, Resources res) { - mRS = rs; - mRes = res; - initRS(); - } - - public void surfaceChanged() { - initBuffers(mRS.getWidth(), mRS.getHeight()); - } - - private Resources mRes; - private RenderScriptGL mRS; - private Sampler mLinearClamp; - private Sampler mNearestClamp; - private ProgramStore mPSBackground; - private ProgramFragment mPFBackground; - private ProgramVertex mPVBackground; - private ProgramVertexFixedFunction.Constants mPVA; - - private ProgramFragment mPFVignette; - private ScriptField_VignetteConstants_s mFSVignetteConst; - - private Allocation mMeshTexture; - private Allocation mScreen; - private Allocation mScreenDepth; - - private ScriptField_MeshInfo mMeshes; - private ScriptC_shaderstest mScript; - - - public void onActionDown(float x, float y) { - mScript.invoke_onActionDown(x, y); - } - - public void onActionScale(float scale) { - mScript.invoke_onActionScale(scale); - } - - public void onActionMove(float x, float y) { - mScript.invoke_onActionMove(x, y); - } - - private void initPFS() { - ProgramStore.Builder b = new ProgramStore.Builder(mRS); - - b.setDepthFunc(DepthFunc.LESS); - b.setDitherEnabled(false); - b.setDepthMaskEnabled(true); - mPSBackground = b.create(); - - mScript.set_gPFSBackground(mPSBackground); - } - - private void initPF() { - mLinearClamp = Sampler.CLAMP_LINEAR(mRS); - mScript.set_gLinear(mLinearClamp); - - mNearestClamp = Sampler.CLAMP_NEAREST(mRS); - mScript.set_gNearest(mNearestClamp); - - ProgramFragmentFixedFunction.Builder b = new ProgramFragmentFixedFunction.Builder(mRS); - b.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE, - ProgramFragmentFixedFunction.Builder.Format.RGBA, 0); - mPFBackground = b.create(); - mPFBackground.bindSampler(mLinearClamp, 0); - mScript.set_gPFBackground(mPFBackground); - - mFSVignetteConst = new ScriptField_VignetteConstants_s(mRS, 1); - mScript.bind_gFSVignetteConstants(mFSVignetteConst); - - ProgramFragment.Builder fs; - - fs = new ProgramFragment.Builder(mRS); - fs.setShader(mRes, R.raw.vignette_fs); - fs.addConstant(mFSVignetteConst.getAllocation().getType()); - fs.addTexture(Program.TextureType.TEXTURE_2D); - mPFVignette = fs.create(); - mPFVignette.bindConstants(mFSVignetteConst.getAllocation(), 0); - mScript.set_gPFVignette(mPFVignette); - } - - private void initPV() { - ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS); - mPVBackground = pvb.create(); - - mPVA = new ProgramVertexFixedFunction.Constants(mRS); - ((ProgramVertexFixedFunction) mPVBackground).bindConstants(mPVA); - - mScript.set_gPVBackground(mPVBackground); - } - - private void loadImage() { - mMeshTexture = Allocation.createFromBitmapResource(mRS, mRes, R.drawable.robot, - Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, - Allocation.USAGE_GRAPHICS_TEXTURE); - mScript.set_gTMesh(mMeshTexture); - } - - private void initMeshes(FileA3D model) { - int numEntries = model.getIndexEntryCount(); - int numMeshes = 0; - for (int i = 0; i < numEntries; i ++) { - FileA3D.IndexEntry entry = model.getIndexEntry(i); - if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) { - numMeshes ++; - } - } - - if (numMeshes > 0) { - mMeshes = new ScriptField_MeshInfo(mRS, numMeshes); - - for (int i = 0; i < numEntries; i ++) { - FileA3D.IndexEntry entry = model.getIndexEntry(i); - if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) { - Mesh mesh = entry.getMesh(); - mMeshes.set_mMesh(i, mesh, false); - mMeshes.set_mNumIndexSets(i, mesh.getPrimitiveCount(), false); - } - } - mMeshes.copyAll(); - } else { - throw new RSRuntimeException("No valid meshes in file"); - } - - mScript.bind_gMeshes(mMeshes); - mScript.invoke_updateMeshInfo(); - } - - private void initRS() { - mScript = new ScriptC_shaderstest(mRS, mRes, R.raw.shaderstest); - - initPFS(); - initPF(); - initPV(); - - loadImage(); - - initBuffers(1, 1); - - FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.robot); - initMeshes(model); - - mRS.bindRootScript(mScript); - } - - private void initBuffers(int width, int height) { - Builder b; - b = new Builder(mRS, Element.RGBA_8888(mRS)); - b.setX(width).setY(height); - mScreen = Allocation.createTyped(mRS, b.create(), - Allocation.USAGE_GRAPHICS_TEXTURE | Allocation.USAGE_GRAPHICS_RENDER_TARGET); - mScript.set_gScreen(mScreen); - - b = new Builder(mRS, Element.createPixel(mRS, DataType.UNSIGNED_16, DataKind.PIXEL_DEPTH)); - b.setX(width).setY(height); - mScreenDepth = Allocation.createTyped(mRS, b.create(), - Allocation.USAGE_GRAPHICS_RENDER_TARGET); - mScript.set_gScreenDepth(mScreenDepth); - } -} diff --git a/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/ShadersTestView.java b/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/ShadersTestView.java deleted file mode 100644 index e0a540fb8c87..000000000000 --- a/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/ShadersTestView.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.shaderstest; - -import android.content.Context; -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScriptGL; -import android.view.MotionEvent; -import android.view.ScaleGestureDetector; -import android.view.SurfaceHolder; - -public class ShadersTestView extends RSSurfaceView { - - private RenderScriptGL mRS; - private ShadersTestRS mRender; - - private ScaleGestureDetector mScaleDetector; - - private static final int INVALID_POINTER_ID = -1; - private int mActivePointerId = INVALID_POINTER_ID; - - public ShadersTestView(Context context) { - super(context); - ensureRenderScript(); - mScaleDetector = new ScaleGestureDetector(context, new ScaleListener()); - } - - private void ensureRenderScript() { - if (mRS == null) { - RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); - sc.setDepth(16, 24); - mRS = createRenderScriptGL(sc); - mRender = new ShadersTestRS(); - mRender.init(mRS, getResources()); - } - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - ensureRenderScript(); - } - - @Override - public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { - super.surfaceChanged(holder, format, w, h); - mRender.surfaceChanged(); - } - - @Override - protected void onDetachedFromWindow() { - mRender = null; - if (mRS != null) { - mRS = null; - destroyRenderScriptGL(); - } - } - - @Override - public boolean onTouchEvent(MotionEvent ev) { - mScaleDetector.onTouchEvent(ev); - - boolean ret = false; - float x = ev.getX(); - float y = ev.getY(); - - final int action = ev.getAction(); - - switch (action & MotionEvent.ACTION_MASK) { - case MotionEvent.ACTION_DOWN: { - mRender.onActionDown(x, y); - mActivePointerId = ev.getPointerId(0); - ret = true; - break; - } - case MotionEvent.ACTION_MOVE: { - if (!mScaleDetector.isInProgress()) { - mRender.onActionMove(x, y); - } - mRender.onActionDown(x, y); - ret = true; - break; - } - - case MotionEvent.ACTION_UP: { - mActivePointerId = INVALID_POINTER_ID; - break; - } - - case MotionEvent.ACTION_CANCEL: { - mActivePointerId = INVALID_POINTER_ID; - break; - } - - case MotionEvent.ACTION_POINTER_UP: { - final int pointerIndex = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) - >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; - final int pointerId = ev.getPointerId(pointerIndex); - if (pointerId == mActivePointerId) { - // This was our active pointer going up. Choose a new - // active pointer and adjust accordingly. - final int newPointerIndex = pointerIndex == 0 ? 1 : 0; - x = ev.getX(newPointerIndex); - y = ev.getY(newPointerIndex); - mRender.onActionDown(x, y); - mActivePointerId = ev.getPointerId(newPointerIndex); - } - break; - } - } - - return ret; - } - - private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { - @Override - public boolean onScale(ScaleGestureDetector detector) { - mRender.onActionScale(detector.getScaleFactor()); - return true; - } - } -} - - diff --git a/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/shaderstest.rs b/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/shaderstest.rs deleted file mode 100644 index 735f6b911884..000000000000 --- a/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/shaderstest.rs +++ /dev/null @@ -1,200 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.shaderstest) - -#include "rs_graphics.rsh" - -rs_program_vertex gPVBackground; -rs_program_fragment gPFBackground; - -typedef struct VignetteConstants_s { - float size; - float feather; - float width; - float height; -} VignetteConstants; -VignetteConstants *gFSVignetteConstants; -rs_program_fragment gPFVignette; - -rs_allocation gTMesh; - -rs_sampler gLinear; -rs_sampler gNearest; - -rs_program_store gPFSBackground; - -rs_allocation gScreenDepth; -rs_allocation gScreen; - -typedef struct MeshInfo { - rs_mesh mMesh; - int mNumIndexSets; - float3 bBoxMin; - float3 bBoxMax; -} MeshInfo_t; -MeshInfo_t *gMeshes; - -static float3 gLookAt; - -static float gRotateX; -static float gRotateY; -static float gZoom; - -static float gLastX; -static float gLastY; - -static float3 toFloat3(float x, float y, float z) { - float3 f; - f.x = x; - f.y = y; - f.z = z; - return f; -} - -void onActionDown(float x, float y) { - gLastX = x; - gLastY = y; -} - -void onActionScale(float scale) { - - gZoom *= 1.0f / scale; - gZoom = max(0.1f, min(gZoom, 500.0f)); -} - -void onActionMove(float x, float y) { - float dx = gLastX - x; - float dy = gLastY - y; - - if (fabs(dy) <= 2.0f) { - dy = 0.0f; - } - if (fabs(dx) <= 2.0f) { - dx = 0.0f; - } - - gRotateY -= dx; - if (gRotateY > 360) { - gRotateY -= 360; - } - if (gRotateY < 0) { - gRotateY += 360; - } - - gRotateX -= dy; - gRotateX = min(gRotateX, 80.0f); - gRotateX = max(gRotateX, -80.0f); - - gLastX = x; - gLastY = y; -} - -void init() { - gRotateX = 0.0f; - gRotateY = 0.0f; - gZoom = 50.0f; - gLookAt = 0.0f; -} - -void updateMeshInfo() { - rs_allocation allMeshes = rsGetAllocation(gMeshes); - int size = rsAllocationGetDimX(allMeshes); - gLookAt = 0.0f; - float minX, minY, minZ, maxX, maxY, maxZ; - for (int i = 0; i < size; i++) { - MeshInfo_t *info = (MeshInfo_t*)rsGetElementAt(allMeshes, i); - rsgMeshComputeBoundingBox(info->mMesh, - &minX, &minY, &minZ, - &maxX, &maxY, &maxZ); - info->bBoxMin = toFloat3(minX, minY, minZ); - info->bBoxMax = toFloat3(maxX, maxY, maxZ); - gLookAt += (info->bBoxMin + info->bBoxMax)*0.5f; - } - gLookAt = gLookAt / (float)size; -} - -static void renderAllMeshes() { - rs_allocation allMeshes = rsGetAllocation(gMeshes); - int size = rsAllocationGetDimX(allMeshes); - gLookAt = 0.0f; - for (int i = 0; i < size; i++) { - MeshInfo_t *info = (MeshInfo_t*)rsGetElementAt(allMeshes, i); - rsgDrawMesh(info->mMesh); - } -} - -static void renderOffscreen() { - rsgBindProgramVertex(gPVBackground); - rs_matrix4x4 proj; - float aspect = (float) rsAllocationGetDimX(gScreen) / (float) rsAllocationGetDimY(gScreen); - rsMatrixLoadPerspective(&proj, 30.0f, aspect, 1.0f, 1000.0f); - rsgProgramVertexLoadProjectionMatrix(&proj); - - rsgBindProgramFragment(gPFBackground); - rsgBindTexture(gPFBackground, 0, gTMesh); - - rs_matrix4x4 matrix; - - rsMatrixLoadIdentity(&matrix); - rsMatrixTranslate(&matrix, gLookAt.x, gLookAt.y, gLookAt.z - gZoom); - rsMatrixRotate(&matrix, gRotateX, 1.0f, 0.0f, 0.0f); - rsMatrixRotate(&matrix, gRotateY, 0.0f, 1.0f, 0.0f); - rsgProgramVertexLoadModelMatrix(&matrix); - - renderAllMeshes(); -} - -static void drawOffscreenResult(int posX, int posY, float width, float height) { - // display the result d - rs_matrix4x4 proj, matrix; - rsMatrixLoadOrtho(&proj, 0, width, height, 0, -500, 500); - rsgProgramVertexLoadProjectionMatrix(&proj); - rsMatrixLoadIdentity(&matrix); - rsgProgramVertexLoadModelMatrix(&matrix); - float startX = posX, startY = posY; - rsgDrawQuadTexCoords(startX, startY, 0, 0, 1, - startX, startY + height, 0, 0, 0, - startX + width, startY + height, 0, 1, 0, - startX + width, startY, 0, 1, 1); -} - -int root(void) { - gFSVignetteConstants->size = 0.58f * 0.58f; - gFSVignetteConstants->feather = 0.2f; - gFSVignetteConstants->width = (float) rsAllocationGetDimX(gScreen); - gFSVignetteConstants->height = (float) rsAllocationGetDimY(gScreen); - - rsgBindProgramStore(gPFSBackground); - - // Render scene to fullscreenbuffer - rsgBindColorTarget(gScreen, 0); - rsgBindDepthTarget(gScreenDepth); - rsgClearDepth(1.0f); - rsgClearColor(1.0f, 1.0f, 1.0f, 0.0f); - renderOffscreen(); - - // Render on screen - rsgClearAllRenderTargets(); - rsgClearColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgClearDepth(1.0f); - - rsgBindProgramFragment(gPFVignette); - rsgBindTexture(gPFVignette, 0, gScreen); - drawOffscreenResult(0, 0, rsgGetWidth(), rsgGetHeight()); - - return 0; -} |