diff options
author | Alex Sakhartchouk <alexst@google.com> | 2011-01-12 17:32:36 -0800 |
---|---|---|
committer | Alex Sakhartchouk <alexst@google.com> | 2011-01-12 17:32:36 -0800 |
commit | 623c54dd1605d802bb6bfdd0d266a191d4f2d88c (patch) | |
tree | bd0279bc03a08dc185b229cd667119d7609fb764 /graphics/java/android/renderscript/ProgramStore.java | |
parent | 14bdce0441378b766afca3eaa5ac78dbc2f7c6e1 (diff) | |
download | frameworks_base-623c54dd1605d802bb6bfdd0d266a191d4f2d88c.zip frameworks_base-623c54dd1605d802bb6bfdd0d266a191d4f2d88c.tar.gz frameworks_base-623c54dd1605d802bb6bfdd0d266a191d4f2d88c.tar.bz2 |
Documentation
Change-Id: Idb5f87f9d2c0f7fb4677b1b45c232502d66b4668
Diffstat (limited to 'graphics/java/android/renderscript/ProgramStore.java')
-rw-r--r-- | graphics/java/android/renderscript/ProgramStore.java | 160 |
1 files changed, 159 insertions, 1 deletions
diff --git a/graphics/java/android/renderscript/ProgramStore.java b/graphics/java/android/renderscript/ProgramStore.java index 0e2227e..d79900e 100644 --- a/graphics/java/android/renderscript/ProgramStore.java +++ b/graphics/java/android/renderscript/ProgramStore.java @@ -22,16 +22,61 @@ import android.util.Log; /** + * ProgarmStore contains a set of parameters that control how + * the graphics hardware handles writes to the framebuffer. + * + * It could be used to: + * - enable/diable depth testing + * - specify wheather depth writes are performed + * - setup various blending modes for use in effects like + * transparency + * - define write masks for color components written into the + * framebuffer * **/ public class ProgramStore extends BaseObj { + /** + * Specifies the function used to determine whether a fragment + * will be drawn during the depth testing stage in the rendering + * pipeline by comparing its value with that already in the depth + * buffer. DepthFunc is only valid when depth buffer is present + * and depth testing is enabled + */ public enum DepthFunc { + + /** + * Always drawn + */ ALWAYS (0), + /** + * Drawn if the incoming depth value is less than that in the + * depth buffer + */ LESS (1), + /** + * Drawn if the incoming depth value is less or equal to that in + * the depth buffer + */ LESS_OR_EQUAL (2), + /** + * Drawn if the incoming depth value is greater than that in the + * depth buffer + */ GREATER (3), + /** + * Drawn if the incoming depth value is greater or equal to that + * in the depth buffer + */ GREATER_OR_EQUAL (4), + /** + * Drawn if the incoming depth value is equal to that in the + * depth buffer + */ EQUAL (5), + /** + * Drawn if the incoming depth value is not equal to that in the + * depth buffer + */ NOT_EQUAL (6); int mID; @@ -40,6 +85,14 @@ public class ProgramStore extends BaseObj { } } + /** + * Specifies the functions used to combine incoming pixels with + * those already in the frame buffer. + * + * BlendSrcFunc describes how the coefficient used to scale the + * source pixels during the blending operation is computed + * + */ public enum BlendSrcFunc { ZERO (0), ONE (1), @@ -57,6 +110,15 @@ public class ProgramStore extends BaseObj { } } + /** + * Specifies the functions used to combine incoming pixels with + * those already in the frame buffer. + * + * BlendDstFunc describes how the coefficient used to scale the + * pixels already in the framebuffer is computed during the + * blending operation + * + */ public enum BlendDstFunc { ZERO (0), ONE (1), @@ -78,6 +140,17 @@ public class ProgramStore extends BaseObj { super(id, rs); } + /** + * Returns a pre-defined program store object with the following + * characteristics: + * - incoming pixels are drawn if their depth value is less than + * the stored value in the depth buffer. If the pixel is + * drawn, its value is also stored in the depth buffer + * - incoming pixels override the value stored in the color + * buffer if it passes the depth test + * + * @param rs + **/ public static ProgramStore BLEND_NONE_DEPTH_TEST(RenderScript rs) { if(rs.mProgramStore_BLEND_NONE_DEPTH_TEST == null) { ProgramStore.Builder builder = new ProgramStore.Builder(rs); @@ -89,6 +162,16 @@ public class ProgramStore extends BaseObj { } return rs.mProgramStore_BLEND_NONE_DEPTH_TEST; } + /** + * Returns a pre-defined program store object with the following + * characteristics: + * - incoming pixels always pass the depth test and their value + * is not stored in the depth buffer + * - incoming pixels override the value stored in the color + * buffer + * + * @param rs + **/ public static ProgramStore BLEND_NONE_DEPTH_NONE(RenderScript rs) { if(rs.mProgramStore_BLEND_NONE_DEPTH_NO_DEPTH == null) { ProgramStore.Builder builder = new ProgramStore.Builder(rs); @@ -100,7 +183,19 @@ public class ProgramStore extends BaseObj { } return rs.mProgramStore_BLEND_NONE_DEPTH_NO_DEPTH; } - + /** + * Returns a pre-defined program store object with the following + * characteristics: + * - incoming pixels are drawn if their depth value is less than + * the stored value in the depth buffer. If the pixel is + * drawn, its value is also stored in the depth buffer + * - if the incoming (Source) pixel passes depth test, its value + * is combined with the stored color (Dest) using the + * following formula + * Final.RGB = Source.RGB * Source.A + Dest.RGB * (1 - Source.A) + * + * @param rs + **/ public static ProgramStore BLEND_ALPHA_DEPTH_TEST(RenderScript rs) { if(rs.mProgramStore_BLEND_ALPHA_DEPTH_TEST == null) { ProgramStore.Builder builder = new ProgramStore.Builder(rs); @@ -112,6 +207,17 @@ public class ProgramStore extends BaseObj { } return rs.mProgramStore_BLEND_ALPHA_DEPTH_TEST; } + /** + * Returns a pre-defined program store object with the following + * characteristics: + * - incoming pixels always pass the depth test and their value + * is not stored in the depth buffer + * - incoming pixel's value is combined with the stored color + * (Dest) using the following formula + * Final.RGB = Source.RGB * Source.A + Dest.RGB * (1 - Source.A) + * + * @param rs + **/ public static ProgramStore BLEND_ALPHA_DEPTH_NONE(RenderScript rs) { if(rs.mProgramStore_BLEND_ALPHA_DEPTH_NO_DEPTH == null) { ProgramStore.Builder builder = new ProgramStore.Builder(rs); @@ -124,6 +230,11 @@ public class ProgramStore extends BaseObj { return rs.mProgramStore_BLEND_ALPHA_DEPTH_NO_DEPTH; } + /** + * Builder class for ProgramStore object. If the builder is left + * empty, the equivalent of BLEND_NONE_DEPTH_NONE would be + * returned + */ public static class Builder { RenderScript mRS; DepthFunc mDepthFunc; @@ -148,16 +259,41 @@ public class ProgramStore extends BaseObj { mBlendDst = BlendDstFunc.ZERO; } + /** + * Specifies the depth testing behavior + * + * @param func function used for depth testing + * + * @return this + */ public Builder setDepthFunc(DepthFunc func) { mDepthFunc = func; return this; } + /** + * Enables writes into the depth buffer + * + * @param enable specifies whether depth writes are + * enabled or disabled + * + * @return this + */ public Builder setDepthMaskEnabled(boolean enable) { mDepthMask = enable; return this; } + /** + * Enables writes into the color buffer + * + * @param r specifies whether red channel is written + * @param g specifies whether green channel is written + * @param b specifies whether blue channel is written + * @param a specifies whether alpha channel is written + * + * @return this + */ public Builder setColorMaskEnabled(boolean r, boolean g, boolean b, boolean a) { mColorMaskR = r; mColorMaskG = g; @@ -166,12 +302,31 @@ public class ProgramStore extends BaseObj { return this; } + /** + * Specifies how incoming pixels are combined with the pixels + * stored in the framebuffer + * + * @param src specifies how the source blending factor is + * computed + * @param dst specifies how the destination blending factor is + * computed + * + * @return this + */ public Builder setBlendFunc(BlendSrcFunc src, BlendDstFunc dst) { mBlendSrc = src; mBlendDst = dst; return this; } + /** + * Enables dithering + * + * @param enable specifies whether dithering is enabled or + * disabled + * + * @return this + */ public Builder setDitherEnabled(boolean enable) { mDither = enable; return this; @@ -192,6 +347,9 @@ public class ProgramStore extends BaseObj { return new ProgramStore(id, rs); } + /** + * Creates a program store from the current state of the builder + */ public ProgramStore create() { mRS.validate(); return internalCreate(mRS, this); |