Skip to content

Commit 579d0cd

Browse files
committed
screenSpace: make it work when GL_EXT_gpu_shader4 is missing
1 parent 6ec7fb3 commit 579d0cd

File tree

3 files changed

+28
-8
lines changed

3 files changed

+28
-8
lines changed

src/engine/renderer/glsl_source/screenSpace_vp.glsl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,16 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3434

3535
/* screenSpace_vp.glsl */
3636

37+
#if defined(HAVE_EXT_gpu_shader4)
3738
const vec2 vertices[3] = vec2[3] ( vec2( -1.0f, -1.0f ), vec2( 3.0f, -1.0f ), vec2( -1.0f, 3.0f ) );
3839

3940
void main() {
4041
gl_Position = vec4( vertices[gl_VertexID], 0.0f, 1.0f );
4142
}
43+
#else
44+
IN vec3 attr_Position;
45+
46+
void main() {
47+
gl_Position = vec4( attr_Position, 1.0f );
48+
}
49+
#endif

src/engine/renderer/tr_surface.cpp

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -531,13 +531,21 @@ void Tess_AddCubeWithNormals( const vec3_t position, const vec3_t minSize, const
531531
void Tess_InstantScreenSpaceQuad() {
532532
GLIMP_LOGCOMMENT( "--- Tess_InstantScreenSpaceQuad ---" );
533533

534-
tr.skipVBO = true;
535-
536-
Tess_Begin( Tess_StageIteratorDummy, nullptr, true, -1, 0 );
537-
rb_surfaceTable[Util::ordinal( *( tr.genericTriangle->surface ) )]( tr.genericTriangle->surface );
538-
Tess_DrawElements();
539-
540-
tr.skipVBO = false;
534+
if ( glConfig2.gpuShader4Available )
535+
{
536+
tr.skipVBO = true;
537+
Tess_Begin( Tess_StageIteratorDummy, nullptr, true, -1, 0 );
538+
rb_surfaceTable[Util::ordinal( *( tr.genericTriangle->surface ) )]( tr.genericTriangle->surface );
539+
Tess_DrawElements();
540+
tr.skipVBO = false;
541+
}
542+
else
543+
{
544+
Tess_Begin( Tess_StageIteratorDummy, nullptr, true, -1, 0 );
545+
rb_surfaceTable[Util::ordinal( *( tr.genericQuad->surface ) )]( tr.genericQuad->surface );
546+
GL_VertexAttribsState( ATTR_POSITION );
547+
Tess_DrawElements();
548+
}
541549

542550
GL_CheckErrors();
543551

src/engine/renderer/tr_vbo.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -555,8 +555,12 @@ void R_BindNullIBO()
555555

556556
static void R_InitGenericVBOs() {
557557
// Min and max coordinates of the quad
558-
static const vec3_t min = { 0.0f, 0.0f, 0.0f };
558+
559+
static const vec3_t min_new = { 0.0f, 0.0f, 0.0f };
560+
static const vec3_t min_old = { -1.0f, -1.f, -1.0f };
561+
const float *min = glConfig2.gpuShader4Available ? min_new : min_old;
559562
static const vec3_t max = { 1.0f, 1.0f, 0.0f };
563+
560564
{
561565
/*
562566
Quad is a static mesh with 4 vertices and 2 triangles

0 commit comments

Comments
 (0)