summaryrefslogtreecommitdiffstats
path: root/libs/rs
diff options
context:
space:
mode:
Diffstat (limited to 'libs/rs')
-rw-r--r--libs/rs/Android.mk1
-rw-r--r--libs/rs/RenderScript.h1
-rw-r--r--libs/rs/RenderScriptEnv.h1
-rw-r--r--libs/rs/java/Film/src/com/android/film/FilmRS.java5
-rw-r--r--libs/rs/java/RenderScript/android/renderscript/RenderScript.java46
-rw-r--r--libs/rs/jni/RenderScript_jni.cpp67
-rw-r--r--libs/rs/rs.spec33
-rw-r--r--libs/rs/rsContext.h2
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;