diff options
author | Jason Sams <rjsams@android.com> | 2009-08-04 17:58:23 -0700 |
---|---|---|
committer | Jason Sams <rjsams@android.com> | 2009-08-04 17:58:23 -0700 |
commit | 0835d42be9b215f845e30db03211c86670cfa12a (patch) | |
tree | cde00723e8788f56f00c69ca334f88e988146625 | |
parent | 22534176fb5c1257130ef4ee589739ca42766a32 (diff) | |
download | frameworks_base-0835d42be9b215f845e30db03211c86670cfa12a.zip frameworks_base-0835d42be9b215f845e30db03211c86670cfa12a.tar.gz frameworks_base-0835d42be9b215f845e30db03211c86670cfa12a.tar.bz2 |
Seperate Light and Sampler from RenderScript.java
-rw-r--r-- | graphics/java/android/renderscript/Light.java | 87 | ||||
-rw-r--r-- | graphics/java/android/renderscript/ProgramFragment.java | 2 | ||||
-rw-r--r-- | graphics/java/android/renderscript/RenderScript.java | 103 | ||||
-rw-r--r-- | graphics/java/android/renderscript/Sampler.java | 113 | ||||
-rw-r--r-- | libs/rs/java/Film/res/raw/filmstrip.c | 13 | ||||
-rw-r--r-- | libs/rs/java/Film/src/com/android/film/FilmRS.java | 25 | ||||
-rw-r--r-- | libs/rs/java/Grass/src/com/android/grass/rs/GrassRS.java | 18 | ||||
-rw-r--r-- | libs/rs/java/Rollo/src/com/android/rollo/RolloRS.java | 36 |
8 files changed, 235 insertions, 162 deletions
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 @@ public class ProgramFragment extends BaseObj { 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 @@ public class RenderScript { } } - ////////////////////////////////////////////////////////////////////////////////// - // 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 @@ public class RenderScript { ////////////////////////////////////////////////////////////////////////////////// - // 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 @@ int main(int index) 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.ScriptC; 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 @@ public class FilmRS { 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 @@ public class FilmRS { private Allocation mAllocOffsets; private RenderScript.TriangleMesh mMesh; - private RenderScript.Light mLight; + private Light mLight; private FilmStripMesh mFSM; @@ -119,16 +121,12 @@ public class FilmRS { } 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 @@ public class FilmRS { } 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 @@ class GrassRS { @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 @@ class GrassRS { } 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.Script; 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 @@ public class RolloRS { 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 @@ public class RolloRS { 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(); - - 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(); + 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(); + + sb.setMin(Sampler.Value.NEAREST); + sb.setMag(Sampler.Value.NEAREST); + mSamplerText = sb.create(); ProgramFragment.Builder bf = new ProgramFragment.Builder(mRS, null, null); |