Merge change 9329

* changes:
  Smoother transitions in GrassRS
This commit is contained in:
Android (Google) Code Review
2009-07-30 22:39:58 -07:00
2 changed files with 46 additions and 10 deletions

View File

@@ -1,5 +1,19 @@
// Grass live wallpaper
/*
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma version(1)
#pragma stateVertex(default)
#pragma stateFragment(PFBackground)
@@ -8,7 +22,10 @@
#define WVGA_PORTRAIT_WIDTH 480.0f
#define WVGA_PORTRAIT_HEIGHT 762.0f
#define RSID_SKY_TEXTURES 0
#define RSID_STATE 0
#define RSID_FRAMECOUNT 0
#define RSID_SKY_TEXTURES 1
#define RSID_SKY_TEXTURE_NIGHT 0
#define RSID_SKY_TEXTURE_SUNRISE 1
#define RSID_SKY_TEXTURE_NOON 2
@@ -19,8 +36,15 @@
#define AFTERNOON 0.6f
#define DUSK 0.8f
float time() {
return (second() % 60) / 60.0f;
#define SECONDS_IN_DAY 24.0f * 3600.0f
#define REAL_TIME 0
float time(int frameCount) {
if (REAL_TIME) {
return (hour() * 3600.0f + minute() * 60.0f + second()) / SECONDS_IN_DAY;
}
return (frameCount % 180) / 180.0f;
}
void alpha(float a) {
@@ -53,7 +77,8 @@ void drawSunset() {
}
int main(int launchID) {
float now = time();
int frameCount = loadI32(RSID_STATE, RSID_FRAMECOUNT);
float now = time(frameCount);
alpha(1.0f);
if (now >= MIDNIGHT && now < MORNING) {
@@ -80,5 +105,8 @@ int main(int launchID) {
drawNight();
}
frameCount++;
storeI32(RSID_STATE, RSID_FRAMECOUNT, frameCount);
return 1;
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2008 The Android Open Source Project
* Copyright (C) 2009 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -25,13 +25,12 @@ import static android.renderscript.RenderScript.EnvMode.*;
import static android.renderscript.RenderScript.DepthFunc.*;
import static android.renderscript.RenderScript.BlendSrcFunc;
import static android.renderscript.RenderScript.BlendDstFunc;
import android.graphics.BitmapFactory;
import android.graphics.Bitmap;
import java.util.TimeZone;
class GrassRS {
private static final int RSID_SKY_TEXTURES = 0;
private static final int RSID_STATE = 0;
private static final int RSID_SKY_TEXTURES = 1;
private static final int SKY_TEXTURES_COUNT = 4;
private Resources mResources;
@@ -52,6 +51,8 @@ class GrassRS {
private RenderScript.Allocation[] mSkyTextures;
@SuppressWarnings({"FieldCanBeLocal"})
private int[] mSkyBufferIDs;
@SuppressWarnings({"FieldCanBeLocal"})
private RenderScript.Allocation mState;
public GrassRS() {
}
@@ -66,6 +67,7 @@ class GrassRS {
createProgramVertex();
createProgramFragmentStore();
createProgramFragment();
createScriptStructures();
mRS.scriptCBegin();
mRS.scriptCSetClearColor(0.0f, 0.0f, 0.0f, 1.0f);
@@ -76,11 +78,17 @@ class GrassRS {
mScript = mRS.scriptCCreate();
loadSkyTextures();
mScript.bindAllocation(mState, RSID_STATE);
mScript.bindAllocation(mSkyTexturesIDs, RSID_SKY_TEXTURES);
mRS.contextBindRootScript(mScript);
}
private void createScriptStructures() {
mState = mRS.allocationCreatePredefSized(RenderScript.ElementPredefined.USER_I32, 1);
mState.data(new int[1]);
}
private void loadSkyTextures() {
mSkyBufferIDs = new int[SKY_TEXTURES_COUNT];
mSkyTextures = new RenderScript.Allocation[SKY_TEXTURES_COUNT];