Merge change 21847 into eclair

* changes:
  Tweak the water and its texture
This commit is contained in:
Android (Google) Code Review
2009-08-18 18:39:07 -07:00
3 changed files with 21 additions and 49 deletions

BIN
libs/rs/java/Fall/res/drawable-hdpi/sky.jpg Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 89 KiB

View File

@@ -13,7 +13,7 @@
// limitations under the License.
#pragma version(1)
#pragma stateVertex(PVLines)
#pragma stateVertex(PVSky)
#pragma stateFragment(PFBackground)
#pragma stateFragmentStore(PFSBackground)
@@ -276,32 +276,6 @@ void generateRipples() {
}
}
void drawNormals() {
int width = loadI32(RSID_STATE, RSID_MESH_WIDTH);
int height = loadI32(RSID_STATE, RSID_MESH_HEIGHT);
float *vertices = loadTriangleMeshVerticesF(NAMED_mesh);
bindProgramVertex(NAMED_PVLines);
color(1.0f, 0.0f, 0.0f, 1.0f);
int y = 0;
for ( ; y < height; y++) {
int yOffset = y * width;
int x = 0;
for ( ; x < width; x++) {
int offset = (yOffset + x) * 8;
float vx = vertices[offset + 5];
float vy = vertices[offset + 6];
float vz = vertices[offset + 7];
float nx = vertices[offset + 0];
float ny = vertices[offset + 1];
float nz = vertices[offset + 2];
drawLine(vx, vy, vz, vx + nx / 10.0f, vy + ny / 10.0f, vz + nz / 10.0f);
}
}
}
float averageZ(float x1, float x2, float y1, float y2, float* vertices,
int meshWidth, int meshHeight, float glWidth, float glHeight) {
@@ -481,16 +455,12 @@ int main(int index) {
shininess(40.0f);
bindProgramFragmentStore(NAMED_PFSBackground);
bindProgramFragment(NAMED_PFLighting);
bindProgramVertex(NAMED_PVBackground);
bindProgramVertex(NAMED_PVLight);
drawTriangleMesh(NAMED_mesh);
bindProgramVertex(NAMED_PVLines);
bindProgramVertex(NAMED_PVSky);
drawLeaves(frameCount);
if (!isRunning) {
drawNormals();
}
frameCount++;
storeI32(RSID_STATE, RSID_FRAME_COUNT, frameCount);

View File

@@ -27,7 +27,7 @@ import android.renderscript.Sampler;
import android.renderscript.Element;
import android.renderscript.Light;
import static android.renderscript.Sampler.Value.LINEAR;
import static android.renderscript.Sampler.Value.CLAMP;
import static android.renderscript.Sampler.Value.WRAP;
import static android.renderscript.ProgramStore.DepthFunc.*;
import static android.renderscript.ProgramStore.BlendDstFunc;
import static android.renderscript.ProgramStore.BlendSrcFunc;
@@ -101,8 +101,8 @@ class FallRS {
private ProgramFragment mPfSky;
private ProgramStore mPfsBackground;
private ProgramStore mPfsLeaf;
private ProgramVertex mPvBackground;
private ProgramVertex mPvLines;
private ProgramVertex mPvLight;
private ProgramVertex mPvSky;
private ProgramVertex.MatrixAllocation mPvOrthoAlloc;
private Light mLight;
@@ -120,6 +120,8 @@ class FallRS {
private Allocation mGlState;
private float mGlHeight;
private final int[] mIntData2 = new int[2];
public FallRS(int width, int height) {
mWidth = width;
mHeight = height;
@@ -138,7 +140,7 @@ class FallRS {
mSampler.destroy();
mPfBackground.destroy();
mPfsBackground.destroy();
mPvBackground.destroy();
mPvLight.destroy();
mPvOrthoAlloc.mAlloc.destroy();
for (Allocation a : mTextures) {
a.destroy();
@@ -148,7 +150,7 @@ class FallRS {
mLight.destroy();
mRippleMap.destroy();
mRefractionMap.destroy();
mPvLines.destroy();
mPvSky.destroy();
mPfLighting.destroy();
mLeaves.destroy();
mPfsLeaf.destroy();
@@ -353,8 +355,8 @@ class FallRS {
Sampler.Builder sampleBuilder = new Sampler.Builder(mRS);
sampleBuilder.setMin(LINEAR);
sampleBuilder.setMag(LINEAR);
sampleBuilder.setWrapS(CLAMP);
sampleBuilder.setWrapT(CLAMP);
sampleBuilder.setWrapS(WRAP);
sampleBuilder.setWrapT(WRAP);
mSampler = sampleBuilder.create();
ProgramFragment.Builder builder = new ProgramFragment.Builder(mRS, null, null);
@@ -406,20 +408,20 @@ class FallRS {
ProgramVertex.Builder builder = new ProgramVertex.Builder(mRS, null, null);
builder.setTextureMatrixEnable(true);
builder.addLight(mLight);
mPvBackground = builder.create();
mPvBackground.bindAllocation(mPvOrthoAlloc);
mPvBackground.setName("PVBackground");
mPvLight = builder.create();
mPvLight.bindAllocation(mPvOrthoAlloc);
mPvLight.setName("PVLight");
builder = new ProgramVertex.Builder(mRS, null, null);
mPvLines = builder.create();
mPvLines.bindAllocation(mPvOrthoAlloc);
mPvLines.setName("PVLines");
mPvSky = builder.create();
mPvSky.bindAllocation(mPvOrthoAlloc);
mPvSky.setName("PVSky");
}
void addDrop(float x, float y) {
mState.subData1D(RSID_STATE_DROP_X, 2, new int[] {
(int) ((x / mWidth) * mMeshWidth), (int) ((y / mHeight) * mMeshHeight)
});
mIntData2[0] = (int) ((x / mWidth) * mMeshWidth);
mIntData2[1] = (int) ((y / mHeight) * mMeshHeight);
mState.subData1D(RSID_STATE_DROP_X, 2, mIntData2);
}
void togglePause() {