summaryrefslogtreecommitdiffstats
path: root/libs/rs/java/Fountain
diff options
context:
space:
mode:
Diffstat (limited to 'libs/rs/java/Fountain')
-rw-r--r--libs/rs/java/Fountain/res/raw/fountain.c22
-rw-r--r--libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java11
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");