diff options
author | Alex Sakhartchouk <alexst@google.com> | 2010-12-21 14:42:26 -0800 |
---|---|---|
committer | Alex Sakhartchouk <alexst@google.com> | 2010-12-21 14:57:04 -0800 |
commit | b4d7bb6872f523b4318144202e119766ed9054ed (patch) | |
tree | 2e7e18e9864c7c9398bbce8f0bc227f147b648f4 /graphics/java/android/renderscript/ProgramFragment.java | |
parent | 1528d8f47cc6f0e0d5c9f905f82d15a35ce1bafb (diff) |
API cleanup for renderscript. This will be a multiproject commit.
Change-Id: Ida62d3a155285a20725be9daa62217faef1c3734
Diffstat (limited to 'graphics/java/android/renderscript/ProgramFragment.java')
-rw-r--r-- | graphics/java/android/renderscript/ProgramFragment.java | 167 |
1 files changed, 2 insertions, 165 deletions
diff --git a/graphics/java/android/renderscript/ProgramFragment.java b/graphics/java/android/renderscript/ProgramFragment.java index 074c393c7f9e..59d496756af5 100644 --- a/graphics/java/android/renderscript/ProgramFragment.java +++ b/graphics/java/android/renderscript/ProgramFragment.java @@ -30,8 +30,8 @@ public class ProgramFragment extends Program { super(id, rs); } - public static class ShaderBuilder extends BaseProgramBuilder { - public ShaderBuilder(RenderScript rs) { + public static class Builder extends BaseProgramBuilder { + public Builder(RenderScript rs) { super(rs); } @@ -63,169 +63,6 @@ public class ProgramFragment extends Program { return pf; } } - - public static class Builder extends ShaderBuilder { - public static final int MAX_TEXTURE = 2; - int mNumTextures; - boolean mPointSpriteEnable; - boolean mVaryingColorEnable; - - public enum EnvMode { - REPLACE (1), - MODULATE (2), - DECAL (3); - - int mID; - EnvMode(int id) { - mID = id; - } - } - - public enum Format { - ALPHA (1), - LUMINANCE_ALPHA (2), - RGB (3), - RGBA (4); - - int mID; - Format(int id) { - mID = id; - } - } - - private class Slot { - EnvMode env; - Format format; - Slot(EnvMode _env, Format _fmt) { - env = _env; - format = _fmt; - } - } - Slot[] mSlots; - - private void buildShaderString() { - mShader = "//rs_shader_internal\n"; - mShader += "varying lowp vec4 varColor;\n"; - mShader += "varying vec2 varTex0;\n"; - - mShader += "void main() {\n"; - if (mVaryingColorEnable) { - mShader += " lowp vec4 col = varColor;\n"; - } else { - mShader += " lowp vec4 col = UNI_Color;\n"; - } - - if (mNumTextures != 0) { - if (mPointSpriteEnable) { - mShader += " vec2 t0 = gl_PointCoord;\n"; - } else { - mShader += " vec2 t0 = varTex0.xy;\n"; - } - } - - for(int i = 0; i < mNumTextures; i ++) { - switch(mSlots[i].env) { - case REPLACE: - switch (mSlots[i].format) { - case ALPHA: - mShader += " col.a = texture2D(UNI_Tex0, t0).a;\n"; - break; - case LUMINANCE_ALPHA: - mShader += " col.rgba = texture2D(UNI_Tex0, t0).rgba;\n"; - break; - case RGB: - mShader += " col.rgb = texture2D(UNI_Tex0, t0).rgb;\n"; - break; - case RGBA: - mShader += " col.rgba = texture2D(UNI_Tex0, t0).rgba;\n"; - break; - } - break; - case MODULATE: - switch (mSlots[i].format) { - case ALPHA: - mShader += " col.a *= texture2D(UNI_Tex0, t0).a;\n"; - break; - case LUMINANCE_ALPHA: - mShader += " col.rgba *= texture2D(UNI_Tex0, t0).rgba;\n"; - break; - case RGB: - mShader += " col.rgb *= texture2D(UNI_Tex0, t0).rgb;\n"; - break; - case RGBA: - mShader += " col.rgba *= texture2D(UNI_Tex0, t0).rgba;\n"; - break; - } - break; - case DECAL: - mShader += " col = texture2D(UNI_Tex0, t0);\n"; - break; - } - } - - mShader += " gl_FragColor = col;\n"; - mShader += "}\n"; - } - - public Builder(RenderScript rs) { - super(rs); - mRS = rs; - mSlots = new Slot[MAX_TEXTURE]; - mPointSpriteEnable = false; - } - - public Builder setTexture(EnvMode env, Format fmt, int slot) - throws IllegalArgumentException { - if((slot < 0) || (slot >= MAX_TEXTURE)) { - throw new IllegalArgumentException("MAX_TEXTURE exceeded."); - } - mSlots[slot] = new Slot(env, fmt); - return this; - } - - public Builder setPointSpriteTexCoordinateReplacement(boolean enable) { - mPointSpriteEnable = enable; - return this; - } - - public Builder setVaryingColor(boolean enable) { - mVaryingColorEnable = enable; - return this; - } - - @Override - public ProgramFragment create() { - mNumTextures = 0; - for(int i = 0; i < MAX_TEXTURE; i ++) { - if(mSlots[i] != null) { - mNumTextures ++; - } - } - resetConstant(); - buildShaderString(); - Type constType = null; - if (!mVaryingColorEnable) { - Element.Builder b = new Element.Builder(mRS); - b.add(Element.F32_4(mRS), "Color"); - Type.Builder typeBuilder = new Type.Builder(mRS, b.create()); - typeBuilder.setX(1); - constType = typeBuilder.create(); - addConstant(constType); - } - setTextureCount(mNumTextures); - - ProgramFragment pf = super.create(); - pf.mTextureCount = MAX_TEXTURE; - if (!mVaryingColorEnable) { - Allocation constantData = Allocation.createTyped(mRS,constType); - float[] data = new float[4]; - data[0] = data[1] = data[2] = data[3] = 1.0f; - constantData.copyFrom(data); - pf.bindConstants(constantData, 0); - } - return pf; - } - } } |