From 96d3749e4ed3a780e1d6f505edea3a67b8a8c7d2 Mon Sep 17 00:00:00 2001 From: Jason Sams Date: Fri, 28 May 2010 18:14:41 -0700 Subject: [PATCH] Fountain update. Update field names to match legacy expectations. Cleanup java code. Change-Id: I1ad9ae462e46166a7b6ff2b399417dbfe50a5542 --- libs/rs/java/Fountain/res/raw/fountain.rs | 24 ++++---- libs/rs/java/Fountain/res/raw/fountain_bc.bc | Bin 2532 -> 2196 bytes .../src/com/android/fountain/FountainRS.java | 58 +++++++----------- .../android/fountain/ScriptField_Point.java | 2 +- 4 files changed, 35 insertions(+), 49 deletions(-) diff --git a/libs/rs/java/Fountain/res/raw/fountain.rs b/libs/rs/java/Fountain/res/raw/fountain.rs index 8b6994178e939..67f7ef51c9006 100644 --- a/libs/rs/java/Fountain/res/raw/fountain.rs +++ b/libs/rs/java/Fountain/res/raw/fountain.rs @@ -12,8 +12,8 @@ rs_mesh partMesh; typedef struct __attribute__((packed, aligned(4))) Point_s { float2 delta; - rs_position2 pos; - rs_color4u color; + float2 position; + uchar4 color; } Point_t; Point_t *point; @@ -28,8 +28,8 @@ int root() { Point_t * p = point; for (int ct=0; ct < size; ct++) { p->delta.y += 0.15f; - p->pos += p->delta; - if ((p->pos.y > height) && (p->delta.y > 0)) { + p->position += p->delta; + if ((p->position.y > height) && (p->delta.y > 0)) { p->delta.y *= -0.3f; } p++; @@ -42,16 +42,18 @@ int root() { void addParticles(int rate, int x, int y) { - rsDebug("partColor", partColor); - rsDebug("partColor x", partColor.x); - rsDebug("partColor y", partColor.y); - rsDebug("partColor z", partColor.z); - rsDebug("partColor w", partColor.w); + //rsDebug("partColor", partColor); + //rsDebug("partColor x", partColor.x); + //rsDebug("partColor y", partColor.y); + //rsDebug("partColor z", partColor.z); + //rsDebug("partColor w", partColor.w); float rMax = ((float)rate) * 0.005f; int size = rsAllocationGetDimX(rsGetAllocation(point)); - rs_color4u c = rsPackColorTo8888(partColor.x, partColor.y, partColor.z); + uchar4 c = rsPackColorTo8888(partColor.x, partColor.y, partColor.z); + + //rsDebug("color ", ((int *)&c)[0]); Point_t * np = &point[newPart]; float2 p = {x, y}; @@ -60,7 +62,7 @@ void addParticles(int rate, int x, int y) float len = rsRand(rMax); np->delta.x = len * sin(angle); np->delta.y = len * cos(angle); - np->pos = p; + np->position = p; np->color = c; newPart++; np++; diff --git a/libs/rs/java/Fountain/res/raw/fountain_bc.bc b/libs/rs/java/Fountain/res/raw/fountain_bc.bc index 45475faf662e4158c74e04beaf7376a8c20735d5..7b2e88bef8f82b2718931a7c999b89d73dc80fce 100644 GIT binary patch delta 1687 zcmXw34NMbf82+w3+M^tDr9}^+a4ihk*10QIso1%rl+tbmLDZ3GvV#_;+scpNUzXV) zu7DF1EFnBO=pG{g^CeLZH;hP&=ImM2kQl zW?;e$C@%)JC=!W|n9tJ!>4>(OvHnq%m$ac4#WY_@^HfVW6X<6s^L&89Jo7;=*rx)F zlwnanK>^^c_E6~t0+s`^?&{XY&E1X5)(d??WXQQNc9(@qSzNl;*rVK`l>j~ow|riN z@yV>Yti`}PASZUcT);cz9^;{>M1j`HcrPCT4XMNFDDTjz@g@YoG?((?VhO^Ba7+9D zRG&2ePgVYmYCymzi+wc$5~nJjGHfFOF#0YE+MJ_mW<0EzQYxmEil2gtG}34^8+-g@ z;}*7YOKW3<>6K<-7FVwy31Xk(Y*=wQsF)7Vn<_o;*NvcV#-z7VF|#vKcU>_vGjo1t zV!mTy9)Xy<-70??5z1ww=De3K-qzVzw^h8Qga`$jZ1{L~(z$TrkIKX~=v=@bzmx)C zz3-;*Wv5)8yV@2Vw2-ha&>g#ZylFgjmqV@6MREz1)6}BQa!j%t(63YYDo{8h3T^EZ zi$(|tGA}~rko89g0-mJ}n)Lb&vtz>G5o-0=aHBmD?yR{De5u~yMudaO{?Uifym zDC-hUyjxgaeKD~<{;QytbV@~)0Q8`oJBWJ14Vlvcwxf#}XW<5RaECy1F1nyAlwAN- zqJi65rv#VwBs1CCV(z9{qgm0C zV1anxO_vniKATvv(mGiD+n*U!3!C5_*RFOtl0zZ=-_eQY@Cxzhx?qv64N`Z>1N4nk z#}f-CqY4&vLYCc*wIZc1zkI>@kp52x)j&V0D_Hv)j1PSbR_fZ4b;61lya9ct<2fOX zpInIz*4{s?u@2fu4ybo};TFfv2C0zO>bU|x5NM?o00-e+=0r_uUUMRNq3w*ckT&`6 zJUF_=h90_gK~1*OLI5%&)+D5%uKW8GJF$X0GyN)$k69iYAPppA!%Eo}B^O-WA>EIr zh-{1~FJj3B|6ZhSHCv0nr^ua7*rY*= z_GXE(IyO3Uu5>>q6vv4-QWMctAloQrcXiE~0`r^w!ezk4t0PHwM0ZN4%mTIeHkbGs ziz=q!q%+ST_Gr^D+4DhQYhMC$okf$|5ikP2h*1-`3EvLDL}V2ko%s+U{Xw-*<2uKN z00Nu{+u`Fs1eRbnsZ?u+(PY}yT@rq*WVC}ul z8&`2I?SOqLoX06g7Q}~+WxQXhhq$$hsSoHyHY{-B#;IP4kt1Zry17r6r=O$_%atuO z;mIeYw6x!;p|6%vUZ9Su%!#^;#}SXBYx2c~#E`ty#7pIR$DU`EuJ`lHiIY6uo5!N= z+xo^wxH+X$lCji1q25-N(E!w!^4G3_Vk<}v+7$zahj7~40VdIq+$KUcdt<7M8Y)EE zBI0DTlizw_WID~@v<~)sln14?=@tgxtjgqBhHeMk@_*`x76;+EvZ|sCD=7Zq%vo}1 z;!4*0f)6%PQDO1-uDv6p`sKfhxgj~;JJvhOYwYVT66P;)$b;o^NX25Yw%Y7&qwWG#K zoiCnlv%5m_*rpn5M|JL=@baBP{8&#>ZnklKD{;<_3|gl*C+k^|mJ^uHW^f_H5ot2_}Kj zt6BQt+1#Q|&x7FyNfy&QWbRIS*wD$6s9-lCgn$U)PodD7@HciO6a{VdDhc^P zP60(Y4zJ!6tahB6)@m6nwbdphQjmbCEyC#4MDeF`-qE8~uBUVNE!CabXP@u=zJ1>J z+xPiqyMyMq{;G7xk3tN9-JSm1O#}cSF}l^CsJ7TZtVZkSAFCNbxiNPUp_I$0m1F{@ z3^WGDpiUC(DFiN5Ey?6espZ9Qbh91 zv6H38T04TkZ;j3S@BQNY@Oh7Q;k?7O^S6bGrg7z-x4edweM>dp-XkuoT{v@W!v_Pm zcTNew9vlEwS2faUq9x#7pWwbhNwBz>DmvEkrmoGk{)}t=s0;Zxa)c%rRz^P5D>d}V^- zAN>(?hRAC^!7YPZ%3L5;`sxE8a{}WL%s>E8+qI9r&J?EyOg)EL$#!OmGnvgnU=lkb zIEdz2QmkiNy`nHVUZ=H=V>Nt>ij9H+#xUtu@An6?E%{SgczHUu-NB3+q~YoBTR-=b zn7+fuzT*vV+eS|TU?*MIK(HjZkJ$)7CEB>aPX1oWM_ue4fT@~w3Lc7Gq}Qapz{x}S%f5udwvLNIAP3v)b$|2iil+VyMfUU{)G-tA8PFFQi(%VS+FcjhZPq4ZUrLozeui^!c@kt^$k zDu;|^{zAp3YS|@s>Jy{5Me?7<+_FtDKJgJKP;^Eq=rym|9jVDiDP4l?E<`;I^EHV% zo=TAohz}0J5^r7jnQ+^4ET-%5_`%CS05ArhT!w}+8CVH#MmHJMP4lZ{y!!S>dy_Si z^ZPs&8e0asv1&b1PrIQTQGw8UcD2}Vc~J5DfK^Wm1wd{-d%!D-mT#knIdDsOd1Z(* zOZ(0OQ*M?r6dWrxDN1Ukhne7PM4PiDqdxdrn1{yJW6go1`cI=3{(odY@?LaY4!lgF zU_WcDBZINVIp?HW&>lGjMmS5}uyik7il=+6QhXfEt$0L#W64UlI_~3>1n=|;il_}d zw|>a?wL{<2k7hRm62`^{j@!J= zkN>XDK7V`*Xu!^R18(Tu@oogP!9on5sm@x&=mn&=vd>=1u{v9~obm%WT)h!v#?&_R zfc_h0$Z09wHsq&+r_JoM;AXu98H0=RbbeC2Zq%MeT1%M~rWv~vokIZP5Ywc({DtAZ z6{?dK+)-~`_kmtAu0y{y`$zyPU^`Y-p}B>#-#o^lwUX+xHH%BXZx>7>0 zLGNH%2<1RF-*UYu*{FloP}Jo^e829^F@Y{6_Inv?j*soYx%j*uf`XConE%ZjtigMxQp(Sp`eimGYh{VnRpjd=9-kGdRnETijg)4SlzU!Uvk} zBAZ!0+IXX<5`Lr~z6=p|aTSxtpRVaEfdw^rvEC#~O<^p8-{UJ|3B=cp9T zD<;dvCDKE?1QU0!H<7ruzEo>I8VFBr#a48Ou*)lVg@~q`#kM>-9dsRKiA;MZkFEXu z&`)b0u7CWA=>gb50FVZI6zhAo7?~vq(rK~-?7|4P;Up>N+y8xKujn&U#_J)~9kN-3 zo5j@T2%GWmssgu&`2QSGIHq0?FXpLjOn+g{Dsw6+KWc021-^}iRp8QHVxkJm6E(X} zBpi$Z+&l7B!sm;TrWZNhvj5MnlsF_ONV#xWrQN*a*3pTe`;kVKarZH5C5+iT-)Rh0G&YGt8HwJp-Irp`ca3yC}~XO3LYc lnU#?4Lb*2?Pp{{g|+)TICb 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 ba09a161217a6..6f601344c55fb 100644 --- a/libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java +++ b/libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java @@ -27,26 +27,36 @@ public class FountainRS { public FountainRS() { } + private Resources mRes; + private RenderScriptGL mRS; + private ScriptC_Fountain mScript; public void init(RenderScriptGL rs, Resources res, int width, int height) { mRS = rs; mRes = res; - initRS(); + + ScriptField_Point points = new ScriptField_Point(mRS, PART_COUNT); + + SimpleMesh.Builder smb = new SimpleMesh.Builder(mRS); + int vtxSlot = smb.addVertexType(points.getType()); + smb.setPrimitive(Primitive.POINT); + SimpleMesh sm = smb.create(); + sm.bindVertexAllocation(points.getAllocation(), vtxSlot); + + mScript = new ScriptC_Fountain(mRS, mRes, true); + mScript.set_partMesh(sm); + mScript.bind_point(points); + mRS.contextBindRootScript(mScript); } Float4 tmpColor = new Float4(); boolean holdingColor = false; + java.util.Random mRand = new java.util.Random(); public void newTouchPosition(int x, int y, int rate) { if (rate > 0) { - if (true/*!holdingColor*/) { - tmpColor.x = ((x & 0x1) != 0) ? 0.f : 1.f; - tmpColor.y = ((x & 0x2) != 0) ? 0.f : 1.f; - tmpColor.z = ((x & 0x4) != 0) ? 0.f : 1.f; - if ((tmpColor.x + tmpColor.y + tmpColor.z) < 0.9f) { - tmpColor.x = 0.8f; - tmpColor.y = 0.5f; - tmpColor.z = 1.0f; - } - android.util.Log.e("rs", "set color " + tmpColor.x + ", " + tmpColor.y + ", " + tmpColor.z); + if (!holdingColor) { + tmpColor.x = mRand.nextFloat() * 0.5f + 0.5f; + tmpColor.y = mRand.nextFloat(); + tmpColor.z = mRand.nextFloat(); mScript.set_partColor(tmpColor); } mScript.invokable_addParticles(rate, x, y); @@ -56,32 +66,6 @@ public class FountainRS { } } - - - ///////////////////////////////////////// - - private Resources mRes; - - private ScriptField_Point mPoints; - private ScriptC_Fountain mScript; - private RenderScriptGL mRS; - private SimpleMesh mSM; - - private void initRS() { - mPoints = new ScriptField_Point(mRS, PART_COUNT); - - SimpleMesh.Builder smb = new SimpleMesh.Builder(mRS); - int vtxSlot = smb.addVertexType(mPoints.getType()); - smb.setPrimitive(Primitive.POINT); - mSM = smb.create(); - mSM.bindVertexAllocation(mPoints.getAllocation(), vtxSlot); - - mScript = new ScriptC_Fountain(mRS, mRes, true); - mScript.set_partMesh(mSM); - mScript.bind_point(mPoints); - mRS.contextBindRootScript(mScript); - } - } diff --git a/libs/rs/java/Fountain/src/com/android/fountain/ScriptField_Point.java b/libs/rs/java/Fountain/src/com/android/fountain/ScriptField_Point.java index edd18d589d61f..b091f39ec91a7 100644 --- a/libs/rs/java/Fountain/src/com/android/fountain/ScriptField_Point.java +++ b/libs/rs/java/Fountain/src/com/android/fountain/ScriptField_Point.java @@ -31,7 +31,7 @@ public class ScriptField_Point Element.Builder eb = new Element.Builder(rs); eb.add(Element.createVector(rs, Element.DataType.FLOAT_32, 2), "delta"); - eb.add(Element.createAttrib(rs, Element.DataType.FLOAT_32, Element.DataKind.POSITION, 2), "pos"); + eb.add(Element.createAttrib(rs, Element.DataType.FLOAT_32, Element.DataKind.POSITION, 2), "position"); eb.add(Element.createAttrib(rs, Element.DataType.UNSIGNED_8, Element.DataKind.COLOR, 4), "color"); mElement = eb.create();