diff options
author | Jason Sams <rjsams@android.com> | 2009-12-23 14:35:29 -0800 |
---|---|---|
committer | Jason Sams <rjsams@android.com> | 2009-12-23 14:35:29 -0800 |
commit | 718cd1f322ee5b62b6a49cb36195bcb18a5ab711 (patch) | |
tree | f2f8c9db5a8141eafa2f1547634d7586fdc6ef04 /libs/rs/rsProgramFragment.cpp | |
parent | ceedafacdb87307234c84196a12eeb6e657d6220 (diff) | |
download | frameworks_base-718cd1f322ee5b62b6a49cb36195bcb18a5ab711.zip frameworks_base-718cd1f322ee5b62b6a49cb36195bcb18a5ab711.tar.gz frameworks_base-718cd1f322ee5b62b6a49cb36195bcb18a5ab711.tar.bz2 |
Element restructuring. Add support for new basic Element types including the RS objects and vectors(2-4). In theory this paves the way for maintaining type info for RS objects, passing elements for GLSL uiforms/attribs/varyings, and supporting nested structures.
This will break some apps, checkings for other projects will follow to unbreak them.
Diffstat (limited to 'libs/rs/rsProgramFragment.cpp')
-rw-r--r-- | libs/rs/rsProgramFragment.cpp | 36 |
1 files changed, 31 insertions, 5 deletions
diff --git a/libs/rs/rsProgramFragment.cpp b/libs/rs/rsProgramFragment.cpp index 05672e5..f7394a6 100644 --- a/libs/rs/rsProgramFragment.cpp +++ b/libs/rs/rsProgramFragment.cpp @@ -213,9 +213,9 @@ void ProgramFragment::createShader() if (mTextureEnableMask) { if (mPointSpriteEnable) { - mShader.append(" vec2 tex0 = gl_PointCoord;\n"); + mShader.append(" vec2 t0 = gl_PointCoord;\n"); } else { - mShader.append(" vec2 tex0 = varTex0.xy;\n"); + mShader.append(" vec2 t0 = varTex0.xy;\n"); } } @@ -228,13 +228,39 @@ void ProgramFragment::createShader() rsAssert(0); break; case RS_TEX_ENV_MODE_REPLACE: - mShader.append(" col = texture2D(uni_Tex0, tex0);\n"); + switch(mTextureFormats[texNum]) { + case 1: + mShader.append(" col.a = texture2D(uni_Tex0, t0).a;\n"); + break; + case 2: + mShader.append(" col.rgba = texture2D(uni_Tex0, t0).rgba;\n"); + break; + case 3: + mShader.append(" col.rgb = texture2D(uni_Tex0, t0).rgb;\n"); + break; + case 4: + mShader.append(" col.rgba = texture2D(uni_Tex0, t0).rgba;\n"); + break; + } break; case RS_TEX_ENV_MODE_MODULATE: - mShader.append(" col *= texture2D(uni_Tex0, tex0);\n"); + switch(mTextureFormats[texNum]) { + case 1: + mShader.append(" col.a *= texture2D(uni_Tex0, t0).a;\n"); + break; + case 2: + mShader.append(" col.rgba *= texture2D(uni_Tex0, t0).rgba;\n"); + break; + case 3: + mShader.append(" col.rgb *= texture2D(uni_Tex0, t0).rgb;\n"); + break; + case 4: + mShader.append(" col.rgba *= texture2D(uni_Tex0, t0).rgba;\n"); + break; + } break; case RS_TEX_ENV_MODE_DECAL: - mShader.append(" col = texture2D(uni_Tex0, tex0);\n"); + mShader.append(" col = texture2D(uni_Tex0, t0);\n"); break; } |