summaryrefslogtreecommitdiff
path: root/libs/rs/rsProgramFragment.cpp
diff options
context:
space:
mode:
author Jason Sams <rjsams@android.com> 2009-11-30 14:49:55 -0800
committer Jason Sams <rjsams@android.com> 2009-11-30 15:34:03 -0800
commit54c0ec14e016e4a1bf3ceab40ed6ca5447da4725 (patch)
tree343acd699d50a4090b451d05135aa7887a6a7984 /libs/rs/rsProgramFragment.cpp
parent5154ae7665743b114c71f90dcc577dc50c63b398 (diff)
Beging GL2 user shaders. Switch master to using GL2 by default.
Diffstat (limited to 'libs/rs/rsProgramFragment.cpp')
-rw-r--r--libs/rs/rsProgramFragment.cpp19
1 files changed, 16 insertions, 3 deletions
diff --git a/libs/rs/rsProgramFragment.cpp b/libs/rs/rsProgramFragment.cpp
index daefc2c6f0e2..b239ce876b67 100644
--- a/libs/rs/rsProgramFragment.cpp
+++ b/libs/rs/rsProgramFragment.cpp
@@ -175,19 +175,27 @@ void ProgramFragment::createShader()
//mShader.append(" gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);\n");
mShader.append(" vec4 col = varColor;\n");
+ if (mTextureEnableMask) {
+ if (mPointSpriteEnable) {
+ mShader.append(" vec2 tex0 = gl_PointCoord;\n");
+ } else {
+ mShader.append(" vec2 tex0 = varTex0.xy;\n");
+ }
+ }
+
mask = mTextureEnableMask;
texNum = 0;
while (mask) {
if (mask & 1) {
switch(mEnvModes[texNum]) {
case RS_TEX_ENV_MODE_REPLACE:
- mShader.append(" col = texture2D(uni_Tex0, varTex0.xy);\n");
+ mShader.append(" col = texture2D(uni_Tex0, tex0);\n");
break;
case RS_TEX_ENV_MODE_MODULATE:
- mShader.append(" col *= texture2D(uni_Tex0, varTex0.xy);\n");
+ mShader.append(" col *= texture2D(uni_Tex0, tex0);\n");
break;
case RS_TEX_ENV_MODE_DECAL:
- mShader.append(" col = texture2D(uni_Tex0, varTex0.xy);\n");
+ mShader.append(" col = texture2D(uni_Tex0, tex0);\n");
break;
}
@@ -338,6 +346,11 @@ void rsi_ProgramFragmentSetSlot(Context *rsc, uint32_t slot, bool enable, RsTexE
rsc->mStateFragment.mPF->setTexEnable(slot, enable);
}
+void rsi_ProgramFragmentSetShader(Context *rsc, const char *txt, uint32_t len)
+{
+ rsc->mStateFragment.mPF->setShader(txt, len);
+}
+
RsProgramFragment rsi_ProgramFragmentCreate(Context *rsc)
{
ProgramFragment *pf = rsc->mStateFragment.mPF;