}
}
-void GL_MultiSampling(qboolean state)
-{
- switch(vid.renderpath)
- {
- case RENDERPATH_GL11:
- case RENDERPATH_GL13:
- case RENDERPATH_GLES1:
- case RENDERPATH_GL20:
- case RENDERPATH_GLES2:
- if (vid.support.arb_multisample && vid.mode.samples > 1)
- {
- if (state)
- qglEnable(GL_MULTISAMPLE_ARB);
- else
- qglDisable(GL_MULTISAMPLE_ARB);
- CHECKGLERROR
- }
- break;
- case RENDERPATH_D3D9:
- break;
- case RENDERPATH_D3D10:
- break;
- case RENDERPATH_D3D11:
- break;
- case RENDERPATH_SOFT:
- break;
- }
-}
-
void GL_AlphaTest(int state)
{
if (gl_state.alphatest != state)
break;
case RENDERPATH_GL20:
// alpha to coverage turns the alpha value of the pixel into 0%, 25%, 50%, 75% or 100% by masking the multisample fragments accordingly
- if (vid.support.arb_multisample && vid.mode.samples > 1)
+ CHECKGLERROR
+ if (gl_state.alphatocoverage)
{
- CHECKGLERROR
- if (gl_state.alphatocoverage)
- {
- qglEnable(GL_SAMPLE_ALPHA_TO_COVERAGE_ARB);CHECKGLERROR
- qglEnable(GL_MULTISAMPLE_ARB);CHECKGLERROR
- }
- else
- {
- qglDisable(GL_SAMPLE_ALPHA_TO_COVERAGE_ARB);CHECKGLERROR
- qglDisable(GL_MULTISAMPLE_ARB);CHECKGLERROR
- }
+ qglEnable(GL_SAMPLE_ALPHA_TO_COVERAGE_ARB);CHECKGLERROR
+// qglEnable(GL_MULTISAMPLE_ARB);CHECKGLERROR
+ }
+ else
+ {
+ qglDisable(GL_SAMPLE_ALPHA_TO_COVERAGE_ARB);CHECKGLERROR
+// qglDisable(GL_MULTISAMPLE_ARB);CHECKGLERROR
}
break;
}
break;
}
}
+
+void GL_BlendEquationSubtract(qboolean negated)
+{
+ if(negated)
+ {
+ switch(vid.renderpath)
+ {
+ case RENDERPATH_GL11:
+ case RENDERPATH_GL13:
+ case RENDERPATH_GL20:
+ case RENDERPATH_GLES1:
+ case RENDERPATH_GLES2:
+ qglBlendEquationEXT(GL_FUNC_REVERSE_SUBTRACT_EXT);
+ break;
+ case RENDERPATH_D3D9:
+#ifdef SUPPORTD3D
+ IDirect3DDevice9_SetRenderState(vid_d3d9dev, D3DRS_BLENDOP, D3DBLENDOP_SUBTRACT);
+#endif
+ break;
+ case RENDERPATH_D3D10:
+ Con_DPrintf("FIXME D3D10 %s:%i %s\n", __FILE__, __LINE__, __FUNCTION__);
+ break;
+ case RENDERPATH_D3D11:
+ Con_DPrintf("FIXME D3D11 %s:%i %s\n", __FILE__, __LINE__, __FUNCTION__);
+ break;
+ case RENDERPATH_SOFT:
+ DPSOFTRAST_BlendSubtract(true);
+ break;
+ }
+ }
+ else
+ {
+ switch(vid.renderpath)
+ {
+ case RENDERPATH_GL11:
+ case RENDERPATH_GL13:
+ case RENDERPATH_GL20:
+ case RENDERPATH_GLES1:
+ case RENDERPATH_GLES2:
+ qglBlendEquationEXT(GL_FUNC_ADD_EXT);
+ break;
+ case RENDERPATH_D3D9:
+#ifdef SUPPORTD3D
+ IDirect3DDevice9_SetRenderState(vid_d3d9dev, D3DRS_BLENDOP, D3DBLENDOP_ADD);
+#endif
+ break;
+ case RENDERPATH_D3D10:
+ Con_DPrintf("FIXME D3D10 %s:%i %s\n", __FILE__, __LINE__, __FUNCTION__);
+ break;
+ case RENDERPATH_D3D11:
+ Con_DPrintf("FIXME D3D11 %s:%i %s\n", __FILE__, __LINE__, __FUNCTION__);
+ break;
+ case RENDERPATH_SOFT:
+ DPSOFTRAST_BlendSubtract(false);
+ break;
+ }
+ }
+}