Seperate Light and Sampler from RenderScript.java
diff --git a/graphics/java/android/renderscript/Light.java b/graphics/java/android/renderscript/Light.java
new file mode 100644
index 0000000..c9196aa
--- /dev/null
+++ b/graphics/java/android/renderscript/Light.java
@@ -0,0 +1,87 @@
+/*
+ * 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.
+ */
+
+package android.renderscript;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.util.Config;
+import android.util.Log;
+
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+
+/**
+ * @hide
+ *
+ **/
+public class Light extends BaseObj {
+ Light(int id, RenderScript rs) {
+ super(rs);
+ mID = id;
+ }
+
+ public void destroy() {
+ mRS.nLightDestroy(mID);
+ mID = 0;
+ }
+
+ public void setColor(float r, float g, float b) {
+ mRS.nLightSetColor(mID, r, g, b);
+ }
+
+ public void setPosition(float x, float y, float z) {
+ mRS.nLightSetPosition(mID, x, y, z);
+ }
+
+ public static class Builder {
+ RenderScript mRS;
+ boolean mIsMono;
+ boolean mIsLocal;
+
+ public Builder(RenderScript rs) {
+ mRS = rs;
+ mIsMono = false;
+ mIsLocal = false;
+ }
+
+ public void lightSetIsMono(boolean isMono) {
+ mIsMono = isMono;
+ }
+
+ public void lightSetIsLocal(boolean isLocal) {
+ mIsLocal = isLocal;
+ }
+
+ static synchronized Light internalCreate(RenderScript rs, Builder b) {
+ rs.nSamplerBegin();
+ rs.nLightSetIsMono(b.mIsMono);
+ rs.nLightSetIsLocal(b.mIsLocal);
+ int id = rs.nLightCreate();
+ return new Light(id, rs);
+ }
+
+ public Light create() {
+ return internalCreate(mRS, this);
+ }
+ }
+
+}
+
diff --git a/graphics/java/android/renderscript/ProgramFragment.java b/graphics/java/android/renderscript/ProgramFragment.java
index d98fe03..005fdf6 100644
--- a/graphics/java/android/renderscript/ProgramFragment.java
+++ b/graphics/java/android/renderscript/ProgramFragment.java
@@ -52,7 +52,7 @@
mRS.nProgramFragmentBindTexture(mID, slot, va.mID);
}
- public void bindSampler(RenderScript.Sampler vs, int slot) {
+ public void bindSampler(Sampler vs, int slot) {
mRS.nProgramFragmentBindSampler(mID, slot, vs.mID);
}
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java
index 50a4494..cae80e9 100644
--- a/graphics/java/android/renderscript/RenderScript.java
+++ b/graphics/java/android/renderscript/RenderScript.java
@@ -201,35 +201,6 @@
}
}
- //////////////////////////////////////////////////////////////////////////////////
- // Element
-
-
- public enum SamplerParam {
- FILTER_MIN (0),
- FILTER_MAG (1),
- WRAP_MODE_S (2),
- WRAP_MODE_T (3),
- WRAP_MODE_R (4);
-
- int mID;
- SamplerParam(int id) {
- mID = id;
- }
- }
-
- public enum SamplerValue {
- NEAREST (0),
- LINEAR (1),
- LINEAR_MIP_LINEAR (2),
- WRAP (3),
- CLAMP (4);
-
- int mID;
- SamplerValue(int id) {
- mID = id;
- }
- }
//////////////////////////////////////////////////////////////////////////////////
// Triangle Mesh
@@ -330,80 +301,6 @@
//////////////////////////////////////////////////////////////////////////////////
- // ProgramFragmentStore
-
- //////////////////////////////////////////////////////////////////////////////////
- // ProgramFragment
-
- //////////////////////////////////////////////////////////////////////////////////
- // Sampler
-
- public class Sampler extends BaseObj {
- Sampler(int id) {
- super(RenderScript.this);
- mID = id;
- }
-
- public void destroy() {
- nSamplerDestroy(mID);
- mID = 0;
- }
- }
-
- public void samplerBegin() {
- nSamplerBegin();
- }
-
- public void samplerSet(SamplerParam p, SamplerValue v) {
- nSamplerSet(p.mID, v.mID);
- }
-
- public Sampler samplerCreate() {
- int id = nSamplerCreate();
- return new Sampler(id);
- }
-
- //////////////////////////////////////////////////////////////////////////////////
- // Light
-
- public class Light extends BaseObj {
- Light(int id) {
- super(RenderScript.this);
- mID = id;
- }
-
- public void destroy() {
- nLightDestroy(mID);
- mID = 0;
- }
-
- public void setColor(float r, float g, float b) {
- nLightSetColor(mID, r, g, b);
- }
-
- public void setPosition(float x, float y, float z) {
- nLightSetPosition(mID, x, y, z);
- }
- }
-
- public void lightBegin() {
- nLightBegin();
- }
-
- public void lightSetIsMono(boolean isMono) {
- nLightSetIsMono(isMono);
- }
-
- public void lightSetIsLocal(boolean isLocal) {
- nLightSetIsLocal(isLocal);
- }
-
- public Light lightCreate() {
- int id = nLightCreate();
- return new Light(id);
- }
-
- //////////////////////////////////////////////////////////////////////////////////
// File
public class File extends BaseObj {
diff --git a/graphics/java/android/renderscript/Sampler.java b/graphics/java/android/renderscript/Sampler.java
new file mode 100644
index 0000000..dfeac81
--- /dev/null
+++ b/graphics/java/android/renderscript/Sampler.java
@@ -0,0 +1,113 @@
+/*
+ * 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.
+ */
+
+package android.renderscript;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.util.Config;
+import android.util.Log;
+
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+
+/**
+ * @hide
+ *
+ **/
+public class Sampler extends BaseObj {
+ public enum Value {
+ NEAREST (0),
+ LINEAR (1),
+ LINEAR_MIP_LINEAR (2),
+ WRAP (3),
+ CLAMP (4);
+
+ int mID;
+ Value(int id) {
+ mID = id;
+ }
+ }
+
+ Sampler(int id, RenderScript rs) {
+ super(rs);
+ mID = id;
+ }
+
+ public void destroy() {
+ mRS.nSamplerDestroy(mID);
+ mID = 0;
+ }
+
+ public static class Builder {
+ RenderScript mRS;
+ Value mMin;
+ Value mMag;
+ Value mWrapS;
+ Value mWrapT;
+ Value mWrapR;
+
+ public Builder(RenderScript rs) {
+ mRS = rs;
+ mMin = Value.NEAREST;
+ mMag = Value.NEAREST;
+ mWrapS = Value.WRAP;
+ mWrapT = Value.WRAP;
+ mWrapR = Value.WRAP;
+ }
+
+ public void setMin(Value v) {
+ mMin = v;
+ }
+
+ public void setMag(Value v) {
+ mMag = v;
+ }
+
+ public void setWrapS(Value v) {
+ mWrapS = v;
+ }
+
+ public void setWrapT(Value v) {
+ mWrapT = v;
+ }
+
+ public void setWrapR(Value v) {
+ mWrapR = v;
+ }
+
+ static synchronized Sampler internalCreate(RenderScript rs, Builder b) {
+ rs.nSamplerBegin();
+ rs.nSamplerSet(0, b.mMin.mID);
+ rs.nSamplerSet(1, b.mMag.mID);
+ rs.nSamplerSet(2, b.mWrapS.mID);
+ rs.nSamplerSet(3, b.mWrapT.mID);
+ rs.nSamplerSet(4, b.mWrapR.mID);
+ int id = rs.nSamplerCreate();
+ return new Sampler(id, rs);
+ }
+
+ public Sampler create() {
+ return internalCreate(mRS, this);
+ }
+ }
+
+}
+
diff --git a/libs/rs/java/Film/res/raw/filmstrip.c b/libs/rs/java/Film/res/raw/filmstrip.c
index e9c7f28..4e7c37a 100644
--- a/libs/rs/java/Film/res/raw/filmstrip.c
+++ b/libs/rs/java/Film/res/raw/filmstrip.c
@@ -5,15 +5,6 @@
#pragma stateFragment(PFBackground)
#pragma stateFragmentStore(PSBackground)
-/*
-typedef struct FilmScriptUserEnvRec {
- RsAllocation tex[13];
- int32_t triangleOffsets[64];
- float triangleOffsetsTex[64];
- int32_t triangleOffsetsCount;
-} FilmScriptUserEnv;
-*/
-
#define POS_TRANSLATE 0
#define POS_ROTATE 1
#define POS_FOCUS 2
@@ -39,9 +30,7 @@
matrixRotate(mat1, rot, 1.f, 0.f, 0.f);
storeMatrix(3, 0, mat1);
- //materialDiffuse(con, 0.0f, 0.0f, 0.0f, 1.0f);
- //materialSpecular(con, 0.5f, 0.5f, 0.5f, 0.5f);
- //materialShininess(intToFloat(20));
+ // Draw the lighting effect in the strip and fill the Z buffer.
drawTriangleMesh(NAMED_mesh);
diff --git a/libs/rs/java/Film/src/com/android/film/FilmRS.java b/libs/rs/java/Film/src/com/android/film/FilmRS.java
index 760beb8..a1b30f9 100644
--- a/libs/rs/java/Film/src/com/android/film/FilmRS.java
+++ b/libs/rs/java/Film/src/com/android/film/FilmRS.java
@@ -33,6 +33,8 @@
import android.renderscript.Script;
import android.renderscript.ProgramFragment;
import android.renderscript.ProgramStore;
+import android.renderscript.Sampler;
+import android.renderscript.Light;
public class FilmRS {
private final int POS_TRANSLATE = 0;
@@ -74,7 +76,7 @@
private Script mScriptImage;
private Element mElementVertex;
private Element mElementIndex;
- private RenderScript.Sampler mSampler;
+ private Sampler mSampler;
private ProgramStore mPSBackground;
private ProgramStore mPSImages;
private ProgramFragment mPFBackground;
@@ -92,7 +94,7 @@
private Allocation mAllocOffsets;
private RenderScript.TriangleMesh mMesh;
- private RenderScript.Light mLight;
+ private Light mLight;
private FilmStripMesh mFSM;
@@ -119,16 +121,12 @@
}
private void initPF() {
- mRS.samplerBegin();
- mRS.samplerSet(RenderScript.SamplerParam.FILTER_MIN,
- RenderScript.SamplerValue.LINEAR);//_MIP_LINEAR);
- mRS.samplerSet(RenderScript.SamplerParam.FILTER_MAG,
- RenderScript.SamplerValue.LINEAR);
- mRS.samplerSet(RenderScript.SamplerParam.WRAP_MODE_S,
- RenderScript.SamplerValue.CLAMP);
- mRS.samplerSet(RenderScript.SamplerParam.WRAP_MODE_T,
- RenderScript.SamplerValue.WRAP);
- mSampler = mRS.samplerCreate();
+ Sampler.Builder bs = new Sampler.Builder(mRS);
+ bs.setMin(Sampler.Value.LINEAR);//_MIP_LINEAR);
+ bs.setMag(Sampler.Value.LINEAR);
+ bs.setWrapS(Sampler.Value.CLAMP);
+ bs.setWrapT(Sampler.Value.WRAP);
+ mSampler = bs.create();
ProgramFragment.Builder b = new ProgramFragment.Builder(mRS, null, null);
@@ -143,8 +141,7 @@
}
private void initPV() {
- mRS.lightBegin();
- mLight = mRS.lightCreate();
+ mLight = (new Light.Builder(mRS)).create();
mLight.setPosition(0, -0.5f, -1.0f);
mRS.programVertexBegin(null, null);
diff --git a/libs/rs/java/Grass/src/com/android/grass/rs/GrassRS.java b/libs/rs/java/Grass/src/com/android/grass/rs/GrassRS.java
index 8852b3c..e9aa3cc 100644
--- a/libs/rs/java/Grass/src/com/android/grass/rs/GrassRS.java
+++ b/libs/rs/java/Grass/src/com/android/grass/rs/GrassRS.java
@@ -17,8 +17,8 @@
package com.android.grass.rs;
import android.content.res.Resources;
-import static android.renderscript.RenderScript.SamplerParam.*;
-import static android.renderscript.RenderScript.SamplerValue.*;
+import android.renderscript.Sampler;
+import static android.renderscript.Sampler.Value.*;
import static android.renderscript.ProgramFragment.EnvMode.*;
import static android.renderscript.ProgramStore.DepthFunc.*;
import static android.renderscript.ProgramStore.BlendSrcFunc;
@@ -72,7 +72,7 @@
@SuppressWarnings({"FieldCanBeLocal"})
private ScriptC mScript;
@SuppressWarnings({"FieldCanBeLocal"})
- private RenderScript.Sampler mSampler;
+ private Sampler mSampler;
@SuppressWarnings({"FieldCanBeLocal"})
private ProgramFragment mPfBackground;
@SuppressWarnings({"FieldCanBeLocal"})
@@ -205,12 +205,12 @@
}
private void createProgramFragment() {
- mRS.samplerBegin();
- mRS.samplerSet(FILTER_MIN, LINEAR);
- mRS.samplerSet(FILTER_MAG, LINEAR);
- mRS.samplerSet(WRAP_MODE_S, CLAMP);
- mRS.samplerSet(WRAP_MODE_T, CLAMP);
- mSampler = mRS.samplerCreate();
+ Sampler.Builder bs = new Sampler.Builder(mRS);
+ bs.setMin(LINEAR);
+ bs.setMag(LINEAR);
+ bs.setWrapS(CLAMP);
+ bs.setWrapT(CLAMP);
+ mSampler = bs.create();
ProgramFragment.Builder b;
b = new ProgramFragment.Builder(mRS, null, null);
diff --git a/libs/rs/java/Rollo/src/com/android/rollo/RolloRS.java b/libs/rs/java/Rollo/src/com/android/rollo/RolloRS.java
index 9389688..7497a07 100644
--- a/libs/rs/java/Rollo/src/com/android/rollo/RolloRS.java
+++ b/libs/rs/java/Rollo/src/com/android/rollo/RolloRS.java
@@ -26,6 +26,7 @@
import android.renderscript.ScriptC;
import android.renderscript.ProgramFragment;
import android.renderscript.ProgramStore;
+import android.renderscript.Sampler;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
@@ -95,8 +96,8 @@
private Resources mRes;
private RenderScript mRS;
private Script mScript;
- private RenderScript.Sampler mSampler;
- private RenderScript.Sampler mSamplerText;
+ private Sampler mSampler;
+ private Sampler mSamplerText;
private ProgramStore mPSBackground;
private ProgramStore mPSText;
private ProgramFragment mPFImages;
@@ -121,27 +122,16 @@
private Allocation mAllocScratch;
private void initNamed() {
- mRS.samplerBegin();
- mRS.samplerSet(RenderScript.SamplerParam.FILTER_MIN,
- RenderScript.SamplerValue.LINEAR);//_MIP_LINEAR);
- mRS.samplerSet(RenderScript.SamplerParam.FILTER_MAG,
- RenderScript.SamplerValue.LINEAR);
- mRS.samplerSet(RenderScript.SamplerParam.WRAP_MODE_S,
- RenderScript.SamplerValue.CLAMP);
- mRS.samplerSet(RenderScript.SamplerParam.WRAP_MODE_T,
- RenderScript.SamplerValue.CLAMP);
- mSampler = mRS.samplerCreate();
+ Sampler.Builder sb = new Sampler.Builder(mRS);
+ sb.setMin(Sampler.Value.LINEAR);//_MIP_LINEAR);
+ sb.setMag(Sampler.Value.LINEAR);
+ sb.setWrapS(Sampler.Value.CLAMP);
+ sb.setWrapT(Sampler.Value.CLAMP);
+ mSampler = sb.create();
- mRS.samplerBegin();
- mRS.samplerSet(RenderScript.SamplerParam.FILTER_MIN,
- RenderScript.SamplerValue.NEAREST);
- mRS.samplerSet(RenderScript.SamplerParam.FILTER_MAG,
- RenderScript.SamplerValue.NEAREST);
- mRS.samplerSet(RenderScript.SamplerParam.WRAP_MODE_S,
- RenderScript.SamplerValue.CLAMP);
- mRS.samplerSet(RenderScript.SamplerParam.WRAP_MODE_T,
- RenderScript.SamplerValue.CLAMP);
- mSamplerText = mRS.samplerCreate();
+ sb.setMin(Sampler.Value.NEAREST);
+ sb.setMag(Sampler.Value.NEAREST);
+ mSamplerText = sb.create();
ProgramFragment.Builder bf = new ProgramFragment.Builder(mRS, null, null);