diff options
Diffstat (limited to 'libs/rs/java/Fountain')
-rw-r--r-- | libs/rs/java/Fountain/res/raw/fountain.c | 22 | ||||
-rw-r--r-- | libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java | 11 |
2 files changed, 13 insertions, 20 deletions
diff --git a/libs/rs/java/Fountain/res/raw/fountain.c b/libs/rs/java/Fountain/res/raw/fountain.c index bf83aab..5ed9ed51 100644 --- a/libs/rs/java/Fountain/res/raw/fountain.c +++ b/libs/rs/java/Fountain/res/raw/fountain.c @@ -7,8 +7,7 @@ int main(int launchID) { - int count, touch, x, y, rate, maxLife, lifeShift; - int life; + int count, touch, x, y, rate; int ct, ct2; int newPart; int drawCount; @@ -25,15 +24,7 @@ int main(int launchID) { y = loadI32(0, 4); rate = 4; - maxLife = (count / rate) - 1; - lifeShift = 0; - { - life = maxLife; - while (life > 255) { - life = life >> 1; - lifeShift ++; - } - } + int maxLife = (count / rate) - 1; if (touch) { newPart = loadI32(2, 0); @@ -57,19 +48,20 @@ int main(int launchID) { } drawCount = 0; + float height = getHeight(); for (ct=0; ct < count; ct++) { srcIdx = ct * 5 + 1; dx = loadF(2, srcIdx); dy = loadF(2, srcIdx + 1); - life = loadI32(2, srcIdx + 2); + int life = loadI32(2, srcIdx + 2); posx = loadF(2, srcIdx + 3); posy = loadF(2, srcIdx + 4); if (life) { - if (posy < 480.f) { + if (posy < height) { dstIdx = drawCount * 9; - c = 0xffafcf | ((life >> lifeShift) << 24); + c = 0xcfcfcfcf; storeI32(1, dstIdx, c); storeF(1, dstIdx + 1, posx); @@ -91,7 +83,7 @@ int main(int launchID) { posx = posx + dx; posy = posy + dy; - dy = dy + 0.1f; + dy = dy + 0.05f; life --; //storeI32(2, srcIdx, dx); diff --git a/libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java b/libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java index c2d1c65..ad4f949 100644 --- a/libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java +++ b/libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java @@ -39,6 +39,7 @@ import android.renderscript.Primitive; public class FountainRS { + public static final int PART_COUNT = 4000; public FountainRS() { } @@ -75,10 +76,8 @@ public class FountainRS { int mParams[] = new int[10]; private void initRS() { - int partCount = 1024; - mIntAlloc = Allocation.createSized(mRS, Element.USER_I32, 10); - mVertAlloc = Allocation.createSized(mRS, Element.USER_I32, partCount * 5 + 1); + mVertAlloc = Allocation.createSized(mRS, Element.USER_I32, PART_COUNT * 5 + 1); ProgramStore.Builder bs = new ProgramStore.Builder(mRS, null, null); bs.setBlendFunc(ProgramStore.BlendSrcFunc.SRC_ALPHA, ProgramStore.BlendDstFunc.ONE); @@ -93,10 +92,12 @@ public class FountainRS { mPF.setName("PgmFragParts"); mParams[0] = 0; - mParams[1] = partCount; + mParams[1] = PART_COUNT; mParams[2] = 0; mParams[3] = 0; mParams[4] = 0; + mParams[5] = 0; + mParams[6] = 0; mIntAlloc.data(mParams); Element.Builder eb = new Element.Builder(mRS); @@ -109,7 +110,7 @@ public class FountainRS { Element primElement = eb.create(); SimpleMesh.Builder smb = new SimpleMesh.Builder(mRS); - int vtxSlot = smb.addVertexType(primElement, partCount * 3); + int vtxSlot = smb.addVertexType(primElement, PART_COUNT * 3); smb.setPrimitive(Primitive.TRIANGLE); mSM = smb.create(); mSM.setName("PartMesh"); |