diff options
author | Jason Sams <rjsams@android.com> | 2009-08-20 16:10:36 -0700 |
---|---|---|
committer | Jason Sams <rjsams@android.com> | 2009-08-20 16:11:03 -0700 |
commit | 25ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9fae (patch) | |
tree | 37bac4daba3c96307217faea840754cdbd9d5cba /graphics | |
parent | ac81c42971ddcd0726c4f2050fd82942914d0e1c (diff) | |
download | frameworks_base-25ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9fae.zip frameworks_base-25ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9fae.tar.gz frameworks_base-25ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9fae.tar.bz2 |
Point Sprites
Diffstat (limited to 'graphics')
4 files changed, 27 insertions, 39 deletions
diff --git a/graphics/java/android/renderscript/Element.java b/graphics/java/android/renderscript/Element.java index 3f75069..aeec739 100644 --- a/graphics/java/android/renderscript/Element.java +++ b/graphics/java/android/renderscript/Element.java @@ -111,7 +111,8 @@ public class Element extends BaseObj { NX (15), NY (16), NZ (17), - INDEX (18); + INDEX (18), + POINT_SIZE(19); int mID; DataKind(int id) { @@ -241,13 +242,18 @@ public class Element extends BaseObj { add(DataType.FLOAT, DataKind.Z, false, 32, null); return this; } - + public Builder addFloatST() { add(DataType.FLOAT, DataKind.S, false, 32, null); add(DataType.FLOAT, DataKind.T, false, 32, null); return this; } + public Builder addFloatPointSize() { + add(DataType.FLOAT, DataKind.POINT_SIZE, false, 32, null); + return this; + } + public Builder addFloatRGB() { add(DataType.FLOAT, DataKind.RED, false, 32, null); add(DataType.FLOAT, DataKind.GREEN, false, 32, null); diff --git a/graphics/java/android/renderscript/ProgramFragment.java b/graphics/java/android/renderscript/ProgramFragment.java index aad09f6..392d93d 100644 --- a/graphics/java/android/renderscript/ProgramFragment.java +++ b/graphics/java/android/renderscript/ProgramFragment.java @@ -68,6 +68,7 @@ public class ProgramFragment extends BaseObj { RenderScript mRS; Element mIn; Element mOut; + boolean mPointSpriteEnable; private class Slot { Type mType; @@ -85,6 +86,7 @@ public class ProgramFragment extends BaseObj { mIn = in; mOut = out; mSlots = new Slot[MAX_SLOT]; + mPointSpriteEnable = false; for(int ct=0; ct < MAX_SLOT; ct++) { mSlots[ct] = new Slot(); } @@ -117,6 +119,9 @@ public class ProgramFragment extends BaseObj { mSlots[slot].mEnv = env; } + public void setPointSpriteTexCoordinateReplacement(boolean enable) { + mPointSpriteEnable = enable; + } static synchronized ProgramFragment internalCreate(RenderScript rs, Builder b) { int inID = 0; @@ -127,21 +132,18 @@ public class ProgramFragment extends BaseObj { if (b.mOut != null) { outID = b.mOut.mID; } - rs.nProgramFragmentBegin(inID, outID); + rs.nProgramFragmentBegin(inID, outID, b.mPointSpriteEnable); for(int ct=0; ct < MAX_SLOT; ct++) { if(b.mSlots[ct].mTexEnable) { Slot s = b.mSlots[ct]; + int typeID = 0; if(s.mType != null) { - rs.nProgramFragmentSetType(ct, s.mType.mID); - } - rs.nProgramFragmentSetTexEnable(ct, true); - if(s.mEnv != null) { - rs.nProgramFragmentSetEnvMode(ct, s.mEnv.mID); + typeID = s.mType.mID; } + rs.nProgramFragmentSetSlot(ct, true, s.mEnv.mID, typeID); } } - int id = rs.nProgramFragmentCreate(); return new ProgramFragment(id, rs); } diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java index fca1c7a..076a5d4 100644 --- a/graphics/java/android/renderscript/RenderScript.java +++ b/graphics/java/android/renderscript/RenderScript.java @@ -158,12 +158,10 @@ public class RenderScript { native void nProgramFragmentStoreDither(boolean enable); native int nProgramFragmentStoreCreate(); - native void nProgramFragmentBegin(int in, int out); + native void nProgramFragmentBegin(int in, int out, boolean pointSpriteEnable); native void nProgramFragmentBindTexture(int vpf, int slot, int a); native void nProgramFragmentBindSampler(int vpf, int slot, int s); - native void nProgramFragmentSetType(int slot, int vt); - native void nProgramFragmentSetEnvMode(int slot, int env); - native void nProgramFragmentSetTexEnable(int slot, boolean enable); + native void nProgramFragmentSetSlot(int slot, boolean enable, int env, int vt); native int nProgramFragmentCreate(); native void nProgramVertexBindAllocation(int pv, int mID); diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp index 001ecd0..fede0e5 100644 --- a/graphics/jni/android_renderscript_RenderScript.cpp +++ b/graphics/jni/android_renderscript_RenderScript.cpp @@ -952,11 +952,11 @@ nProgramFragmentStoreCreate(JNIEnv *_env, jobject _this) // --------------------------------------------------------------------------- static void -nProgramFragmentBegin(JNIEnv *_env, jobject _this, jint in, jint out) +nProgramFragmentBegin(JNIEnv *_env, jobject _this, jint in, jint out, jboolean pointSpriteEnable) { RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentBegin, con(%p), in(%p), out(%p)", con, (RsElement)in, (RsElement)out); - rsProgramFragmentBegin(con, (RsElement)in, (RsElement)out); + LOG_API("nProgramFragmentBegin, con(%p), in(%p), out(%p) PointSprite(%i)", con, (RsElement)in, (RsElement)out, pointSpriteEnable); + rsProgramFragmentBegin(con, (RsElement)in, (RsElement)out, pointSpriteEnable); } static void @@ -976,27 +976,11 @@ nProgramFragmentBindSampler(JNIEnv *_env, jobject _this, jint vpf, jint slot, ji } static void -nProgramFragmentSetType(JNIEnv *_env, jobject _this, jint slot, jint vt) +nProgramFragmentSetSlot(JNIEnv *_env, jobject _this, jint slot, jboolean enable, jint env, jint vt) { RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentSetType, con(%p), slot(%i), vt(%p)", con, slot, (RsType)vt); - rsProgramFragmentSetType(con, slot, (RsType)vt); -} - -static void -nProgramFragmentSetEnvMode(JNIEnv *_env, jobject _this, jint slot, jint env) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentSetEnvMode, con(%p), slot(%i), vt(%i)", con, slot, env); - rsProgramFragmentSetEnvMode(con, slot, (RsTexEnvMode)env); -} - -static void -nProgramFragmentSetTexEnable(JNIEnv *_env, jobject _this, jint slot, jboolean enable) -{ - RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nProgramFragmentSetTexEnable, con(%p), slot(%i), enable(%i)", con, slot, enable); - rsProgramFragmentSetTexEnable(con, slot, enable); + LOG_API("nProgramFragmentSetType, con(%p), slot(%i), enable(%i), env(%i), vt(%p)", con, slot, enable, env, (RsType)vt); + rsProgramFragmentSetSlot(con, slot, enable, (RsTexEnvMode)env, (RsType)vt); } static jint @@ -1305,12 +1289,10 @@ static JNINativeMethod methods[] = { {"nProgramFragmentStoreDither", "(Z)V", (void*)nProgramFragmentStoreDither }, {"nProgramFragmentStoreCreate", "()I", (void*)nProgramFragmentStoreCreate }, -{"nProgramFragmentBegin", "(II)V", (void*)nProgramFragmentBegin }, +{"nProgramFragmentBegin", "(IIZ)V", (void*)nProgramFragmentBegin }, {"nProgramFragmentBindTexture", "(III)V", (void*)nProgramFragmentBindTexture }, {"nProgramFragmentBindSampler", "(III)V", (void*)nProgramFragmentBindSampler }, -{"nProgramFragmentSetType", "(II)V", (void*)nProgramFragmentSetType }, -{"nProgramFragmentSetEnvMode", "(II)V", (void*)nProgramFragmentSetEnvMode }, -{"nProgramFragmentSetTexEnable", "(IZ)V", (void*)nProgramFragmentSetTexEnable }, +{"nProgramFragmentSetSlot", "(IZII)V", (void*)nProgramFragmentSetSlot }, {"nProgramFragmentCreate", "()I", (void*)nProgramFragmentCreate }, {"nProgramVertexBindAllocation", "(II)V", (void*)nProgramVertexBindAllocation }, |