summaryrefslogtreecommitdiffstats
path: root/src/com/android/wallpaper/galaxy/GalaxyRS.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/wallpaper/galaxy/GalaxyRS.java')
-rw-r--r--src/com/android/wallpaper/galaxy/GalaxyRS.java234
1 files changed, 0 insertions, 234 deletions
diff --git a/src/com/android/wallpaper/galaxy/GalaxyRS.java b/src/com/android/wallpaper/galaxy/GalaxyRS.java
deleted file mode 100644
index 9fba820..0000000
--- a/src/com/android/wallpaper/galaxy/GalaxyRS.java
+++ /dev/null
@@ -1,234 +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.
- */
-
-package com.android.wallpaper.galaxy;
-
-import android.renderscript.*;
-import android.renderscript.Mesh.Primitive;
-import static android.renderscript.ProgramStore.DepthFunc.*;
-import static android.renderscript.ProgramStore.BlendDstFunc;
-import static android.renderscript.ProgramStore.BlendSrcFunc;
-import static android.renderscript.Element.*;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-
-import java.util.TimeZone;
-
-import com.android.wallpaper.R;
-import com.android.wallpaper.RenderScriptScene;
-
-class GalaxyRS extends RenderScriptScene {
- private static final int PARTICLES_COUNT = 12000;
- private final BitmapFactory.Options mOptionsARGB = new BitmapFactory.Options();
- private ProgramVertexFixedFunction.Constants mPvOrthoAlloc;
- private ProgramVertexFixedFunction.Constants mPvProjectionAlloc;
- private ScriptField_VpConsts mPvStarAlloc;
- private Mesh mParticlesMesh;
- private ScriptC_galaxy mScript;
-
- GalaxyRS(int width, int height) {
- super(width, height);
-
- mOptionsARGB.inScaled = false;
- mOptionsARGB.inPreferredConfig = Bitmap.Config.ARGB_8888;
- }
-
- @Override
- protected ScriptC createScript() {
- mScript = new ScriptC_galaxy(mRS, mResources, R.raw.galaxy);
- mScript.set_gIsPreview(isPreview() ? 1 : 0);
- if (isPreview()) {
- mScript.set_gXOffset(0.5f);
- }
-
-
- createParticlesMesh();
- createProgramVertex();
- createProgramRaster();
- createProgramFragmentStore();
- createProgramFragment();
- loadTextures();
-
- mScript.setTimeZone(TimeZone.getDefault().getID());
- return mScript;
- }
-
- 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();
-
- mScript.set_gParticlesMesh(mParticlesMesh);
- mScript.bind_Particles(p);
- }
-
- 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 proj = new Matrix4f();
- proj.loadOrthoWindow(mWidth, mHeight);
- mPvOrthoAlloc.setProjection(proj);
-
- Matrix4f projNorm = getProjectionNormalized(mWidth, mHeight);
- ScriptField_VpConsts.Item i = new ScriptField_VpConsts.Item();
- i.Proj = projNorm;
- i.MVP = projNorm;
- mPvStarAlloc.set(i, 0, true);
- mPvProjectionAlloc.setProjection(projNorm);
- }
-
- @Override
- public void setOffset(float xOffset, float yOffset, int xPixels, int yPixels) {
- mScript.set_gXOffset(xOffset);
- }
-
- @Override
- public void resize(int width, int height) {
- super.resize(width, height);
-
- updateProjectionMatrices();
- }
-
- private void loadTextures() {
- mScript.set_gTSpace(loadTexture(R.drawable.space));
- mScript.set_gTLight1(loadTexture(R.drawable.light1));
- mScript.set_gTFlares(loadTextureARGB(R.drawable.flares));
- }
-
- private Allocation loadTexture(int id) {
- final Allocation allocation = Allocation.createFromBitmapResource(mRS, mResources, id,
- Allocation.MipmapControl.MIPMAP_NONE,
- Allocation.USAGE_GRAPHICS_TEXTURE);
- return allocation;
- }
-
- // TODO: Fix Allocation.createFromBitmapResource() to do this when RGBA_8888 is specified
- private Allocation loadTextureARGB(int id) {
- Bitmap b = BitmapFactory.decodeResource(mResources, id, mOptionsARGB);
- final Allocation allocation = Allocation.createFromBitmap(mRS, b,
- Allocation.MipmapControl.MIPMAP_NONE,
- Allocation.USAGE_GRAPHICS_TEXTURE);
- return allocation;
- }
-
- private void createProgramFragment() {
- 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);
- mScript.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(mRS), 0);
- mScript.set_gPFStars(pfs);
- }
-
- private void createProgramFragmentStore() {
- ProgramStore.Builder builder = new ProgramStore.Builder(mRS);
- builder.setBlendFunc(BlendSrcFunc.ONE, BlendDstFunc.ZERO);
- mRS.bindProgramStore(builder.create());
-
- builder.setBlendFunc(BlendSrcFunc.SRC_ALPHA, BlendDstFunc.ONE);
- mScript.set_gPSLights(builder.create());
- }
-
- private void createProgramVertex() {
- mPvOrthoAlloc = new ProgramVertexFixedFunction.Constants(mRS);
-
- ProgramVertexFixedFunction.Builder builder = new ProgramVertexFixedFunction.Builder(mRS);
- ProgramVertex pvbo = builder.create();
- ((ProgramVertexFixedFunction)pvbo).bindConstants(mPvOrthoAlloc);
- mRS.bindProgramVertex(pvbo);
-
- mPvStarAlloc = new ScriptField_VpConsts(mRS, 1);
- mScript.bind_vpConstants(mPvStarAlloc);
- mPvProjectionAlloc = new ProgramVertexFixedFunction.Constants(mRS);
- updateProjectionMatrices();
-
- builder = new ProgramVertexFixedFunction.Builder(mRS);
- ProgramVertex pvbp = builder.create();
- ((ProgramVertexFixedFunction)pvbp).bindConstants(mPvProjectionAlloc);
- mScript.set_gPVBkProj(pvbp);
-
- 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);
- mScript.set_gPVStars(pvs);
- }
-
- private void createProgramRaster() {
- ProgramRaster.Builder b = new ProgramRaster.Builder(mRS);
- b.setPointSpriteEnabled(true);
- ProgramRaster pr = b.create();
- mRS.bindProgramRaster(pr);
- }
-
-}