diff options
Diffstat (limited to 'graphics/java')
-rw-r--r-- | graphics/java/android/renderscript/ProgramFragment.java | 9 | ||||
-rw-r--r-- | graphics/java/android/renderscript/ProgramVertex.java | 15 | ||||
-rw-r--r-- | graphics/java/android/renderscript/RenderScript.java | 2 |
3 files changed, 23 insertions, 3 deletions
diff --git a/graphics/java/android/renderscript/ProgramFragment.java b/graphics/java/android/renderscript/ProgramFragment.java index 392d93d..f8625e8 100644 --- a/graphics/java/android/renderscript/ProgramFragment.java +++ b/graphics/java/android/renderscript/ProgramFragment.java @@ -69,6 +69,7 @@ public class ProgramFragment extends BaseObj { Element mIn; Element mOut; boolean mPointSpriteEnable; + String mShader; private class Slot { Type mType; @@ -92,6 +93,10 @@ public class ProgramFragment extends BaseObj { } } + public void setShader(String s) { + mShader = s; + } + public void setType(int slot, Type t) throws IllegalArgumentException { if((slot < 0) || (slot >= MAX_SLOT)) { @@ -144,6 +149,10 @@ public class ProgramFragment extends BaseObj { } } + if (b.mShader != null) { + rs.nProgramFragmentSetShader(b.mShader); + } + int id = rs.nProgramFragmentCreate(); return new ProgramFragment(id, rs); } diff --git a/graphics/java/android/renderscript/ProgramVertex.java b/graphics/java/android/renderscript/ProgramVertex.java index ddb23ac..8a22138 100644 --- a/graphics/java/android/renderscript/ProgramVertex.java +++ b/graphics/java/android/renderscript/ProgramVertex.java @@ -45,6 +45,7 @@ public class ProgramVertex extends BaseObj { Light[] mLights; int mLightCount; boolean mTextureMatrixEnable; + String mShader; public Builder(RenderScript rs, Element in, Element out) { @@ -59,6 +60,10 @@ public class ProgramVertex extends BaseObj { mTextureMatrixEnable = enable; } + public void setShader(String s) { + mShader = s; + } + public void addLight(Light l) throws IllegalStateException { if(mLightCount >= MAX_LIGHT) { throw new IllegalArgumentException("Max light count exceeded."); @@ -79,10 +84,14 @@ public class ProgramVertex extends BaseObj { outID = b.mOut.mID; } rs.nProgramVertexBegin(inID, outID); - for(int ct=0; ct < b.mLightCount; ct++) { - rs.nProgramVertexAddLight(b.mLights[ct].mID); + if (b.mShader != null) { + rs.nProgramVertexSetShader(b.mShader); + } else { + for(int ct=0; ct < b.mLightCount; ct++) { + rs.nProgramVertexAddLight(b.mLights[ct].mID); + } + rs.nProgramVertexSetTextureMatrixEnable(b.mTextureMatrixEnable); } - rs.nProgramVertexSetTextureMatrixEnable(b.mTextureMatrixEnable); int id = rs.nProgramVertexCreate(); return new ProgramVertex(id, rs); } diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java index c42f647..22bfa69 100644 --- a/graphics/java/android/renderscript/RenderScript.java +++ b/graphics/java/android/renderscript/RenderScript.java @@ -171,12 +171,14 @@ public class RenderScript { native void nProgramFragmentBindTexture(int vpf, int slot, int a); native void nProgramFragmentBindSampler(int vpf, int slot, int s); native void nProgramFragmentSetSlot(int slot, boolean enable, int env, int vt); + native void nProgramFragmentSetShader(String txt); native int nProgramFragmentCreate(); native void nProgramVertexBindAllocation(int pv, int mID); native void nProgramVertexBegin(int inID, int outID); native void nProgramVertexSetTextureMatrixEnable(boolean enable); native void nProgramVertexAddLight(int id); + native void nProgramVertexSetShader(String txt); native int nProgramVertexCreate(); native void nLightBegin(); |