summaryrefslogtreecommitdiffstats
path: root/libs/rs/rsProgramFragment.cpp
diff options
context:
space:
mode:
authorAndroid (Google) Code Review <android-gerrit@google.com>2009-12-23 14:55:24 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2009-12-23 14:55:24 -0800
commit218b8984a4a3c06bb1147276b4d937a974ca48cd (patch)
tree9fcdcc943f634c35af71d7b2744933351f6345ff /libs/rs/rsProgramFragment.cpp
parentea84a5559fa80003ff7b083bcf0718095169aa7c (diff)
parent718cd1f322ee5b62b6a49cb36195bcb18a5ab711 (diff)
downloadframeworks_base-218b8984a4a3c06bb1147276b4d937a974ca48cd.zip
frameworks_base-218b8984a4a3c06bb1147276b4d937a974ca48cd.tar.gz
frameworks_base-218b8984a4a3c06bb1147276b4d937a974ca48cd.tar.bz2
Merge change I718cd1f3
* changes: 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.
Diffstat (limited to 'libs/rs/rsProgramFragment.cpp')
-rw-r--r--libs/rs/rsProgramFragment.cpp36
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;
}