diff options
Diffstat (limited to 'libs/rs')
-rw-r--r-- | libs/rs/Android.mk | 1 | ||||
-rw-r--r-- | libs/rs/RenderScript.h | 1 | ||||
-rw-r--r-- | libs/rs/RenderScriptEnv.h | 1 | ||||
-rw-r--r-- | libs/rs/java/Film/src/com/android/film/FilmRS.java | 5 | ||||
-rw-r--r-- | libs/rs/java/RenderScript/android/renderscript/RenderScript.java | 46 | ||||
-rw-r--r-- | libs/rs/jni/RenderScript_jni.cpp | 67 | ||||
-rw-r--r-- | libs/rs/rs.spec | 33 | ||||
-rw-r--r-- | libs/rs/rsContext.h | 2 |
8 files changed, 155 insertions, 1 deletions
diff --git a/libs/rs/Android.mk b/libs/rs/Android.mk index 06c0595..f5297f8 100644 --- a/libs/rs/Android.mk +++ b/libs/rs/Android.mk @@ -85,6 +85,7 @@ LOCAL_SRC_FILES:= \ rsContext.cpp \ rsDevice.cpp \ rsElement.cpp \ + rsLight.cpp \ rsLocklessFifo.cpp \ rsObjectBase.cpp \ rsMatrix.cpp \ diff --git a/libs/rs/RenderScript.h b/libs/rs/RenderScript.h index 2b33419..734fba7 100644 --- a/libs/rs/RenderScript.h +++ b/libs/rs/RenderScript.h @@ -38,6 +38,7 @@ typedef void * RsScript; typedef void * RsScriptBasicTemp; typedef void * RsTriangleMesh; typedef void * RsType; +typedef void * RsLight; typedef void * RsProgramVertex; typedef void * RsProgramFragment; diff --git a/libs/rs/RenderScriptEnv.h b/libs/rs/RenderScriptEnv.h index 221ab41..53de1f1 100644 --- a/libs/rs/RenderScriptEnv.h +++ b/libs/rs/RenderScriptEnv.h @@ -14,6 +14,7 @@ typedef void * RsTriangleMesh; typedef void * RsType; typedef void * RsProgramFragment; typedef void * RsProgramFragmentStore; +typedef void * RsLight; typedef struct { 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 5c6a6fa..2711bf0 100644 --- a/libs/rs/java/Film/src/com/android/film/FilmRS.java +++ b/libs/rs/java/Film/src/com/android/film/FilmRS.java @@ -85,6 +85,7 @@ public class FilmRS { private RenderScript.Allocation mAllocState; private RenderScript.Allocation mAllocPV; private RenderScript.TriangleMesh mMesh; + private RenderScript.Light mLight; private float[] mBufferPos; private float[] mBufferPV; @@ -144,6 +145,10 @@ public class FilmRS { mPV = mRS.programVertexCreate(); mPV.setName("PV"); + mRS.lightBegin(); + mLight = mRS.lightCreate(); + mLight.setPosition(0, -0.5f, -1.0f); + Log.e("rs", "Done loading named"); } diff --git a/libs/rs/java/RenderScript/android/renderscript/RenderScript.java b/libs/rs/java/RenderScript/android/renderscript/RenderScript.java index 4d5c4a0..bf381af 100644 --- a/libs/rs/java/RenderScript/android/renderscript/RenderScript.java +++ b/libs/rs/java/RenderScript/android/renderscript/RenderScript.java @@ -157,6 +157,14 @@ public class RenderScript { native private void nProgramVertexSetTextureMatrixEnable(boolean enable); native private int nProgramVertexCreate(); + native private void nLightBegin(); + native private void nLightSetIsMono(boolean isMono); + native private void nLightSetIsLocal(boolean isLocal); + native private int nLightCreate(); + native private void nLightDestroy(int l); + native private void nLightSetColor(int l, float r, float g, float b); + native private void nLightSetPosition(int l, float x, float y, float z); + private int mDev; private int mContext; @@ -869,6 +877,44 @@ public class RenderScript { return new Sampler(id); } + ////////////////////////////////////////////////////////////////////////////////// + // Light + + public class Light extends BaseObj { + Light(int id) { + 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); + } /////////////////////////////////////////////////////////////////////////////////// // Root state diff --git a/libs/rs/jni/RenderScript_jni.cpp b/libs/rs/jni/RenderScript_jni.cpp index ab17a4a..b592364 100644 --- a/libs/rs/jni/RenderScript_jni.cpp +++ b/libs/rs/jni/RenderScript_jni.cpp @@ -881,10 +881,67 @@ static jint nSamplerCreate(JNIEnv *_env, jobject _this) { RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nSamplerCreate, con(%p), script(%p)", con, (RsScript)script); + LOG_API("nSamplerCreate, con(%p)", con); return (jint)rsSamplerCreate(); } +// --------------------------------------------------------------------------- + +static void +nLightBegin(JNIEnv *_env, jobject _this) +{ + RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); + LOG_API("nLightBegin, con(%p)", con); + rsLightBegin(); +} + +static void +nLightSetIsMono(JNIEnv *_env, jobject _this, jboolean isMono) +{ + RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); + LOG_API("nLightSetIsMono, con(%p), isMono(%i)", con, isMono); + rsLightSetMonochromatic(isMono); +} + +static void +nLightSetIsLocal(JNIEnv *_env, jobject _this, jboolean isLocal) +{ + RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); + LOG_API("nLightSetIsLocal, con(%p), isLocal(%i)", con, isLocal); + rsLightSetLocal(isLocal); +} + +static jint +nLightCreate(JNIEnv *_env, jobject _this) +{ + RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); + LOG_API("nLightCreate, con(%p)", con); + return (jint)rsLightCreate(); +} + +static void +nLightDestroy(JNIEnv *_env, jobject _this, jint light) +{ + RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); + LOG_API("nLightDestroy, con(%p), light(%p)", con, (RsLight)light); + rsLightDestroy((RsLight)light); +} + +static void +nLightSetColor(JNIEnv *_env, jobject _this, jint light, float r, float g, float b) +{ + RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); + LOG_API("nLightSetColor, con(%p), light(%p), r(%f), g(%f), b(%f)", con, (RsLight)light, r, g, b); + rsLightSetColor((RsLight)light, r, g, b); +} + +static void +nLightSetPosition(JNIEnv *_env, jobject _this, jint light, float x, float y, float z) +{ + RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); + LOG_API("nLightSetPosition, con(%p), light(%p), x(%f), y(%f), z(%f)", con, (RsLight)light, x, y, z); + rsLightSetPosition((RsLight)light, x, y, z); +} // --------------------------------------------------------------------------- @@ -979,6 +1036,14 @@ static JNINativeMethod methods[] = { {"nProgramVertexSetTextureMatrixEnable", "(Z)V", (void*)nProgramVertexSetTextureMatrixEnable }, {"nProgramVertexCreate", "()I", (void*)nProgramVertexCreate }, +{"nLightBegin", "()V", (void*)nLightBegin }, +{"nLightSetIsMono", "(Z)V", (void*)nLightSetIsMono }, +{"nLightSetIsLocal", "(Z)V", (void*)nLightSetIsLocal }, +{"nLightCreate", "()I", (void*)nLightCreate }, +{"nLightDestroy", "(I)V", (void*)nLightDestroy }, +{"nLightSetColor", "(IFFF)V", (void*)nLightSetColor }, +{"nLightSetPosition", "(IFFF)V", (void*)nLightSetPosition }, + {"nContextBindRootScript", "(I)V", (void*)nContextBindRootScript }, {"nContextBindProgramFragmentStore","(I)V", (void*)nContextBindProgramFragmentStore }, {"nContextBindProgramFragment", "(I)V", (void*)nContextBindProgramFragment }, diff --git a/libs/rs/rs.spec b/libs/rs/rs.spec index dd489b8..fadda59 100644 --- a/libs/rs/rs.spec +++ b/libs/rs/rs.spec @@ -403,3 +403,36 @@ ProgramVertexSetTextureMatrixEnable { param bool enable } +LightBegin { + } + +LightSetLocal { + param bool isLocal + } + +LightSetMonochromatic { + param bool isMono + } + +LightCreate { + ret RsLight light + } + +LightDestroy { + param RsLight light + } + +LightSetPosition { + param RsLight light + param float x + param float y + param float z + } + +LightSetColor { + param RsLight light + param float r + param float g + param float b + } + diff --git a/libs/rs/rsContext.h b/libs/rs/rsContext.h index 334ef3c..3f27751 100644 --- a/libs/rs/rsContext.h +++ b/libs/rs/rsContext.h @@ -33,6 +33,7 @@ #include "rsProgramFragment.h" #include "rsProgramFragmentStore.h" #include "rsProgramVertex.h" +#include "rsLight.h" #include "rsgApiStructs.h" #include "rsLocklessFifo.h" @@ -62,6 +63,7 @@ public: ProgramFragmentState mStateFragment; ProgramFragmentStoreState mStateFragmentStore; ProgramVertexState mStateVertex; + LightState mStateLight; TriangleMeshContext mStateTriangleMesh; |