summaryrefslogtreecommitdiffstats
path: root/src/com/android/phasebeam/PhaseBeamRS.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/phasebeam/PhaseBeamRS.java')
-rw-r--r--src/com/android/phasebeam/PhaseBeamRS.java219
1 files changed, 71 insertions, 148 deletions
diff --git a/src/com/android/phasebeam/PhaseBeamRS.java b/src/com/android/phasebeam/PhaseBeamRS.java
index 547f5f5..647f145 100644
--- a/src/com/android/phasebeam/PhaseBeamRS.java
+++ b/src/com/android/phasebeam/PhaseBeamRS.java
@@ -22,9 +22,15 @@ import android.renderscript.Mesh.Primitive;
import android.graphics.Color;
import android.renderscript.Float3;
import android.renderscript.Float4;
+import java.io.InputStreamReader;
+import java.io.InputStream;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import android.util.Log;
public class PhaseBeamRS {
-
+ public static String LOG_TAG = "PhaseBeam";
public static final int DOT_COUNT = 28;
private Resources mRes;
private RenderScriptGL mRS;
@@ -33,24 +39,24 @@ public class PhaseBeamRS {
int mWidth;
private ScriptField_VpConsts mPvConsts;
- private Allocation dotAllocation;
- private Allocation beamAllocation;
+ private Allocation mDotAllocation;
+ private Allocation mBeamAllocation;
- private ScriptField_Particle dotParticles;
- private Mesh dotMesh;
+ private ScriptField_Particle mDotParticles;
+ private Mesh mDotMesh;
- private ScriptField_Particle beamParticles;
- private Mesh beamMesh;
+ private ScriptField_Particle mBeamParticles;
+ private Mesh mBeamMesh;
- private ScriptField_VertexColor_s vertexColors;
+ private ScriptField_VertexColor_s mVertexColors;
- private int densityDPI;
+ private int mDensityDPI;
- boolean inited = false;
+ boolean mInited = false;
public void init(int dpi, RenderScriptGL rs, Resources res, int width, int height) {
- if (!inited) {
- densityDPI = dpi;
+ if (!mInited) {
+ mDensityDPI = dpi;
mRS = rs;
mRes = res;
@@ -58,23 +64,23 @@ public class PhaseBeamRS {
mWidth = width;
mHeight = height;
- dotParticles = new ScriptField_Particle(mRS, DOT_COUNT);
+ mDotParticles = new ScriptField_Particle(mRS, DOT_COUNT);
Mesh.AllocationBuilder smb2 = new Mesh.AllocationBuilder(mRS);
- smb2.addVertexAllocation(dotParticles.getAllocation());
+ smb2.addVertexAllocation(mDotParticles.getAllocation());
smb2.addIndexSetType(Mesh.Primitive.POINT);
- dotMesh = smb2.create();
+ mDotMesh = smb2.create();
- beamParticles = new ScriptField_Particle(mRS, DOT_COUNT);
+ mBeamParticles = new ScriptField_Particle(mRS, DOT_COUNT);
Mesh.AllocationBuilder smb3 = new Mesh.AllocationBuilder(mRS);
- smb3.addVertexAllocation(beamParticles.getAllocation());
+ smb3.addVertexAllocation(mBeamParticles.getAllocation());
smb3.addIndexSetType(Mesh.Primitive.POINT);
- beamMesh = smb3.create();
+ mBeamMesh = smb3.create();
mScript = new ScriptC_phasebeam(mRS, mRes, R.raw.phasebeam);
- mScript.set_dotMesh(dotMesh);
- mScript.set_beamMesh(beamMesh);
- mScript.bind_dotParticles(dotParticles);
- mScript.bind_beamParticles(beamParticles);
+ mScript.set_dotMesh(mDotMesh);
+ mScript.set_beamMesh(mBeamMesh);
+ mScript.bind_dotParticles(mDotParticles);
+ mScript.bind_beamParticles(mBeamParticles);
mPvConsts = new ScriptField_VpConsts(mRS, 1);
@@ -85,12 +91,12 @@ public class PhaseBeamRS {
createBackgroundMesh();
loadTextures();
- mScript.set_densityDPI(densityDPI);
+ mScript.set_densityDPI(mDensityDPI);
mRS.bindRootScript(mScript);
mScript.invoke_positionParticles();
- inited = true;
+ mInited = true;
}
}
@@ -122,134 +128,51 @@ public class PhaseBeamRS {
Matrix4f projNorm = getProjectionNormalized(mWidth, mHeight);
ScriptField_VpConsts.Item i = new ScriptField_VpConsts.Item();
i.MVP = projNorm;
- i.scaleSize = densityDPI / 240.0f;
+ i.scaleSize = mDensityDPI / 240.0f;
mPvConsts.set(i, 0, true);
}
private void createBackgroundMesh() {
// The composition and colors of the background mesh were plotted on paper and photoshop
- // first then translated to the code you see below. Points and colors are not random.
-
- vertexColors = new ScriptField_VertexColor_s(mRS, 48);
-
- Float3 a = new Float3(-1.25f, 1.0f, 0.0f);
- Float3 b = new Float3(0.0f, 1.0f, 0.0f);
- Float3 c = new Float3(1.25f, 1.0f, 0.0f);
- Float3 d = new Float3(-0.875f, 0.3f, 0.0f);
- Float3 e = new Float3(-0.5f, 0.4f, 0.0f);
- Float3 f = new Float3(0.25f, 0.2f, 0.0f);
- Float3 g = new Float3(0.0f, 0.2f, 0.0f);
- Float3 h = new Float3(-0.625f, 0.1f, 0.0f);
- Float3 i = new Float3(-1.25f, -0.2f, 0.0f);
- Float3 j = new Float3(-0.125f, -0.6f, 0.0f);
- Float3 k = new Float3(-1.25f, -1.0f, 0.0f);
- Float3 l = new Float3(1.25f, -1.0f, 0.0f);
- vertexColors.set_position(0, a, false);
- vertexColors.set_color(0, (new Float4(0.0f,0.584f,1.0f, 1.0f)), false);
- vertexColors.set_position(1, i, false);
- vertexColors.set_color(1, (new Float4(0.196f,0.745f,1.0f, 1.0f)), false);
- vertexColors.set_position(2, d, false);
- vertexColors.set_color(2, (new Float4(0.51f,0.549f,0.929f, 1.0f)), false);
- vertexColors.set_position(3, a, false);
- vertexColors.set_color(3, (new Float4(0.0f,0.584f,1.0f, 1.0f)), false);
- vertexColors.set_position(4, d, false);
- vertexColors.set_color(4, (new Float4(0.51f,0.549f,0.929f, 1.0f)), false);
- vertexColors.set_position(5, e, false);
- vertexColors.set_color(5, (new Float4(0.196f,0.745f,1.0f, 1.0f)), false);
- vertexColors.set_position(6, a, false);
- vertexColors.set_color(6, (new Float4(0.0f,0.584f,1.0f, 1.0f)), false);
- vertexColors.set_position(7, e, false);
- vertexColors.set_color(7, (new Float4(0.196f,0.745f,1.0f, 1.0f)), false);
- vertexColors.set_position(8, b, false);
- vertexColors.set_color(8, (new Float4(0.573f,0.863f,1.0f, 1.0f)), false);
- vertexColors.set_position(9, b, false);
- vertexColors.set_color(9, (new Float4(0.573f,0.863f,1.0f, 1.0f)), false);
- vertexColors.set_position(10, e, false);
- vertexColors.set_color(10, (new Float4(0.196f,0.745f,1.0f, 1.0f)), false);
- vertexColors.set_position(11, f, false);
- vertexColors.set_color(11, (new Float4(0.467f,0.522f,0.827f, 1.0f)), false);
- vertexColors.set_position(12, b, false);
- vertexColors.set_color(12, (new Float4(0.573f,0.863f,1.0f, 1.0f)), false);
- vertexColors.set_position(13, f, false);
- vertexColors.set_color(13, (new Float4(0.467f,0.522f,0.827f, 1.0f)), false);
- vertexColors.set_position(14, c, false);
- vertexColors.set_color(14, (new Float4(0.188f,0.533f,0.882f, 1.0f)), false);
- vertexColors.set_position(15, c, false);
- vertexColors.set_color(15, (new Float4(0.188f,0.533f,0.882f, 1.0f)), false);
- vertexColors.set_position(16, f, false);
- vertexColors.set_color(16, (new Float4(0.467f,0.522f,0.827f, 1.0f)), false);
- vertexColors.set_position(17, l, false);
- vertexColors.set_color(17, (new Float4(0.29f,0.31f,0.392f, 1.0f)), false);
- vertexColors.set_position(18, f, false);
- vertexColors.set_color(18, (new Float4(0.467f,0.522f,0.827f, 1.0f)), false);
- vertexColors.set_position(19, e, false);
- vertexColors.set_color(19, (new Float4(0.196f,0.745f,1.0f, 1.0f)), false);
- vertexColors.set_position(20, g, false);
- vertexColors.set_color(20, (new Float4(0.467f,0.522f,0.827f, 1.0f)), false);
- vertexColors.set_position(21, f, false);
- vertexColors.set_color(21, (new Float4(0.467f,0.522f,0.827f, 1.0f)), false);
- vertexColors.set_position(22, g, false);
- vertexColors.set_color(22, (new Float4(0.467f,0.522f,0.827f, 1.0f)), false);
- vertexColors.set_position(23, l, false);
- vertexColors.set_color(23, (new Float4(0.29f,0.31f,0.392f, 1.0f)), false);
- vertexColors.set_position(24, g, false);
- vertexColors.set_color(24, (new Float4(0.467f,0.522f,0.827f, 1.0f)), false);
- vertexColors.set_position(25, e, false);
- vertexColors.set_color(25, (new Float4(0.196f,0.745f,1.0f, 1.0f)), false);
- vertexColors.set_position(26, h, false);
- vertexColors.set_color(26, (new Float4(0.251f,0.62f,0.851f, 1.0f)), false);
- vertexColors.set_position(27, h, false);
- vertexColors.set_color(27, (new Float4(0.251f,0.62f,0.851f, 1.0f)), false);
- vertexColors.set_position(28, e, false);
- vertexColors.set_color(28, (new Float4(0.196f,0.745f,1.0f, 1.0f)), false);
- vertexColors.set_position(29, d, false);
- vertexColors.set_color(29, (new Float4(0.51f,0.549f,0.929f, 1.0f)), false);
- vertexColors.set_position(30, d, false);
- vertexColors.set_color(30, (new Float4(0.51f,0.549f,0.929f, 1.0f)), false);
- vertexColors.set_position(31, i, false);
- vertexColors.set_color(31, (new Float4(0.196f,0.745f,1.0f, 1.0f)), false);
- vertexColors.set_position(32, h, false);
- vertexColors.set_color(32, (new Float4(0.251f,0.62f,0.851f, 1.0f)), false);
- vertexColors.set_position(33, j, false);
- vertexColors.set_color(33, (new Float4(0.157f,0.122f,0.506f, 1.0f)), false);
- vertexColors.set_position(34, h, false);
- vertexColors.set_color(34, (new Float4(0.251f,0.62f,0.851f, 1.0f)), false);
- vertexColors.set_position(35, i, false);
- vertexColors.set_color(35, (new Float4(0.196f,0.745f,1.0f, 1.0f)), false);
- vertexColors.set_position(36, j, false);
- vertexColors.set_color(36, (new Float4(0.157f,0.122f,0.506f, 1.0f)), false);
- vertexColors.set_position(37, i, false);
- vertexColors.set_color(37, (new Float4(0.196f,0.745f,1.0f, 1.0f)), false);
- vertexColors.set_position(38, k, false);
- vertexColors.set_color(38, (new Float4(0.357f,0.0f,0.408f, 1.0f)), false);
- vertexColors.set_position(39, l, false);
- vertexColors.set_color(39, (new Float4(0.29f,0.31f,0.392f, 1.0f)), false);
- vertexColors.set_position(40, j, false);
- vertexColors.set_color(40, (new Float4(0.157f,0.122f,0.506f, 1.0f)), false);
- vertexColors.set_position(41, k, false);
- vertexColors.set_color(41, (new Float4(0.357f,0.0f,0.408f, 1.0f)), false);
- vertexColors.set_position(42, g, false);
- vertexColors.set_color(42, (new Float4(0.467f,0.522f,0.827f, 1.0f)), false);
- vertexColors.set_position(43, h, false);
- vertexColors.set_color(43, (new Float4(0.251f,0.62f,0.851f, 1.0f)), false);
- vertexColors.set_position(44, j, false);
- vertexColors.set_color(44, (new Float4(0.157f,0.122f,0.506f, 1.0f)), false);
- vertexColors.set_position(45, l, false);
- vertexColors.set_color(45, (new Float4(0.29f,0.31f,0.392f, 1.0f)), false);
- vertexColors.set_position(46, g, false);
- vertexColors.set_color(46, (new Float4(0.467f,0.522f,0.827f, 1.0f)), false);
- vertexColors.set_position(47, j, false);
- vertexColors.set_color(47, (new Float4(0.157f,0.122f,0.506f, 1.0f)), false);
-
- vertexColors.copyAll();
+ // first then translated to the csv file in raw. Points and colors are not random.
+ ArrayList meshData = new ArrayList();
+ InputStream inputStream = mRes.openRawResource(R.raw.bgmesh);
+ BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
+ try {
+ String line;
+ while ((line = reader.readLine()) != null) {
+ meshData.add(line);
+ }
+ } catch (IOException e) {
+ Log.e(LOG_TAG, "Unable to load background mesh from csv file.");
+ } finally {
+ try {
+ inputStream.close();
+ } catch (IOException e) {
+ Log.e(LOG_TAG, "Unable to close background mesh csv file.");
+ }
+ }
+
+ int meshDataSize = meshData.size();
+ mVertexColors = new ScriptField_VertexColor_s(mRS, meshDataSize);
+ for(int i=0; i<meshDataSize; i++) {
+ String line = (String) meshData.get(i);
+ String[] values = line.split(",");
+ float xPos = new Float(values[0]);
+ float yPos = new Float(values[1]);
+ float red = new Float(values[2]);
+ float green = new Float(values[3]);
+ float blue = new Float(values[4]);
+ mVertexColors.set_position(i, new Float3(xPos, yPos, 0.0f), false);
+ mVertexColors.set_color(i, new Float4(red, green, blue, 1.0f), false);
+ }
+ mVertexColors.copyAll();
Mesh.AllocationBuilder backgroundBuilder = new Mesh.AllocationBuilder(mRS);
backgroundBuilder.addIndexSetType(Primitive.TRIANGLE);
- backgroundBuilder.addVertexAllocation(vertexColors.getAllocation());
+ backgroundBuilder.addVertexAllocation(mVertexColors.getAllocation());
mScript.set_gBackgroundMesh(backgroundBuilder.create());
-
- mScript.bind_vertexColors(vertexColors);
-
+ mScript.bind_vertexColors(mVertexColors);
}
private Allocation loadTexture(int id) {
@@ -258,10 +181,10 @@ public class PhaseBeamRS {
}
private void loadTextures() {
- dotAllocation = loadTexture(R.drawable.dot);
- beamAllocation = loadTexture(R.drawable.beam);
- mScript.set_textureDot(dotAllocation);
- mScript.set_textureBeam(beamAllocation);
+ mDotAllocation = loadTexture(R.drawable.dot);
+ mBeamAllocation = loadTexture(R.drawable.beam);
+ mScript.set_textureDot(mDotAllocation);
+ mScript.set_textureBeam(mBeamAllocation);
}
private void createProgramVertex() {
@@ -276,7 +199,7 @@ public class PhaseBeamRS {
ProgramVertex.Builder builder = new ProgramVertex.Builder(mRS);
builder.setShader(mRes, R.raw.dot_vs);
builder.addConstant(mPvConsts.getType());
- builder.addInput(dotMesh.getVertexAllocation(0).getType().getElement());
+ builder.addInput(mDotMesh.getVertexAllocation(0).getType().getElement());
ProgramVertex pvs = builder.create();
pvs.bindConstants(mPvConsts.getAllocation(), 0);
mRS.bindProgramVertex(pvs);