diff options
| author | 2009-11-30 14:49:55 -0800 | |
|---|---|---|
| committer | 2009-11-30 15:34:03 -0800 | |
| commit | 54c0ec14e016e4a1bf3ceab40ed6ca5447da4725 (patch) | |
| tree | 343acd699d50a4090b451d05135aa7887a6a7984 /libs/rs/rsProgramFragment.cpp | |
| parent | 5154ae7665743b114c71f90dcc577dc50c63b398 (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.cpp | 19 |
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; |