diff --git a/src/engine/renderer/Material.cpp b/src/engine/renderer/Material.cpp index c0755de02a..a15a545ef1 100644 --- a/src/engine/renderer/Material.cpp +++ b/src/engine/renderer/Material.cpp @@ -1900,7 +1900,7 @@ void MaterialSystem::RenderMaterials( const shaderSort_t fromSort, const shaderS } tr.drawingSky = true; - Tess_Begin( Tess_StageIteratorSky, skyShader, nullptr, false, -1, 0, false ); + Tess_Begin( Tess_StageIteratorSky, skyShader, false, -1, 0, false ); Tess_End(); } } diff --git a/src/engine/renderer/tr_backend.cpp b/src/engine/renderer/tr_backend.cpp index e836607616..e5b8965a4c 100644 --- a/src/engine/renderer/tr_backend.cpp +++ b/src/engine/renderer/tr_backend.cpp @@ -896,7 +896,7 @@ static void RB_RenderDrawSurfaces( shaderSort_t fromSort, shaderSort_t toSort, Tess_End(); } - Tess_Begin( Tess_StageIteratorColor, shader, nullptr, false, lightmapNum, fogNum, bspSurface ); + Tess_Begin( Tess_StageIteratorColor, shader, false, lightmapNum, fogNum, bspSurface ); oldShader = shader; oldLightmapNum = lightmapNum; @@ -1623,7 +1623,7 @@ static void RB_RenderDebugUtils() GL_LoadModelViewMatrix( backEnd.orientation.modelViewMatrix ); gl_genericShader->SetUniform_ModelViewProjectionMatrix( glState.modelViewProjectionMatrix[ glState.stackIndex ] ); - Tess_Begin( Tess_StageIteratorDebug, nullptr, nullptr, true, -1, 0 ); + Tess_Begin( Tess_StageIteratorDebug, nullptr, true, -1, 0 ); if ( r_showEntityBounds.Get() == 2) { @@ -1739,7 +1739,7 @@ static void RB_RenderDebugUtils() static vec3_t worldOrigins[ MAX_BONES ]; GL_State( GLS_POLYMODE_LINE | GLS_DEPTHTEST_DISABLE ); - Tess_Begin( Tess_StageIteratorDebug, nullptr, nullptr, true, -1, 0 ); + Tess_Begin( Tess_StageIteratorDebug, nullptr, true, -1, 0 ); for ( j = 0; j < skel->numBones; j++ ) { @@ -1843,7 +1843,7 @@ static void RB_RenderDebugUtils() } Tess_End(); - Tess_Begin( Tess_StageIteratorDebug, shader, nullptr, true, -1, 0 ); + Tess_Begin( Tess_StageIteratorDebug, shader, true, -1, 0 ); gl_genericShader->SetUniform_ColorMapBindless( GL_BindToTMU( 0, shader->stages[ 0 ].bundle[ TB_COLORMAP ].image[ 0 ] ) ); @@ -1906,7 +1906,7 @@ static void RB_RenderDebugUtils() cubemapProbe_t* cubeProbe = &tr.cubeProbes[tr.cubeProbeGrid( x, y, z )]; - Tess_Begin( Tess_StageIteratorDebug, nullptr, nullptr, true, -1, 0 ); + Tess_Begin( Tess_StageIteratorDebug, nullptr, true, -1, 0 ); gl_reflectionShader->SetUniform_CameraPosition( position ); @@ -1922,7 +1922,7 @@ static void RB_RenderDebugUtils() } else { for ( const cubemapProbe_t& cubeProbe : tr.cubeProbes ) { - Tess_Begin( Tess_StageIteratorDebug, nullptr, nullptr, true, -1, 0 ); + Tess_Begin( Tess_StageIteratorDebug, nullptr, true, -1, 0 ); gl_reflectionShader->SetUniform_CameraPosition( cubeProbe.origin ); @@ -1975,7 +1975,7 @@ static void RB_RenderDebugUtils() vec3_t gridPoints[2]; R_GetNearestCubeMaps( backEnd.viewParms.orientation.origin, probes, trilerp, 2, gridPoints ); - Tess_Begin( Tess_StageIteratorDebug, nullptr, nullptr, true, -1, 0 ); + Tess_Begin( Tess_StageIteratorDebug, nullptr, true, -1, 0 ); vec3_t position; if ( r_showCubeProbes.Get() == Util::ordinal( showCubeProbesMode::GRID ) ) { @@ -2048,7 +2048,7 @@ static void RB_RenderDebugUtils() ); gl_genericShader->SetUniform_TextureMatrix( matrixIdentity ); - Tess_Begin( Tess_StageIteratorDebug, nullptr, nullptr, true, -1, 0 ); + Tess_Begin( Tess_StageIteratorDebug, nullptr, true, -1, 0 ); GL_CheckErrors(); for ( z = 0; z < tr.world->lightGridBounds[ 2 ]; z++ ) { @@ -2235,7 +2235,7 @@ static void RB_RenderDebugUtils() R_CalcFrustumNearCorners( splitFrustum, nearCorners ); R_CalcFrustumFarCorners( splitFrustum, farCorners ); - Tess_Begin( Tess_StageIteratorDebug, nullptr, nullptr, true, -1, 0 ); + Tess_Begin( Tess_StageIteratorDebug, nullptr, true, -1, 0 ); // draw outer surfaces for ( j = 0; j < 4; j++ ) @@ -2332,7 +2332,7 @@ static void RB_RenderDebugUtils() GL_PolygonOffset( r_offsetFactor->value, r_offsetUnits->value ); } - Tess_Begin( Tess_StageIteratorDebug, nullptr, nullptr, true, -1, 0 ); + Tess_Begin( Tess_StageIteratorDebug, nullptr, true, -1, 0 ); Tess_AddCube( vec3_origin, node->mins, node->maxs, Color::White ); Tess_End(); @@ -2792,11 +2792,11 @@ const RenderCommand *StretchPicCommand::ExecuteSelf( ) const } backEnd.currentEntity = &backEnd.entity2D; - Tess_Begin( Tess_StageIteratorColor, shader, nullptr, false, -1, 0 ); + Tess_Begin( Tess_StageIteratorColor, shader, false, -1, 0 ); } if( !tess.indexes ) { - Tess_Begin( Tess_StageIteratorColor, shader, nullptr, false, -1, 0 ); + Tess_Begin( Tess_StageIteratorColor, shader, false, -1, 0 ); } Tess_CheckOverflow( 4, 6 ); @@ -2878,7 +2878,7 @@ const RenderCommand *Poly2dCommand::ExecuteSelf( ) const } backEnd.currentEntity = &backEnd.entity2D; - Tess_Begin( Tess_StageIteratorColor, shader, nullptr, false, -1, 0 ); + Tess_Begin( Tess_StageIteratorColor, shader, false, -1, 0 ); } Tess_CheckOverflow( numverts, ( numverts - 2 ) * 3 ); @@ -2929,11 +2929,11 @@ const RenderCommand *Poly2dIndexedCommand::ExecuteSelf( ) const } backEnd.currentEntity = &backEnd.entity2D; - Tess_Begin( Tess_StageIteratorColor, shader, nullptr, false, -1, 0 ); + Tess_Begin( Tess_StageIteratorColor, shader, false, -1, 0 ); } if( !tess.verts ) { - Tess_Begin( Tess_StageIteratorColor, shader, nullptr, false, -1, 0 ); + Tess_Begin( Tess_StageIteratorColor, shader, false, -1, 0 ); } Tess_CheckOverflow( numverts, numIndexes ); @@ -3022,11 +3022,11 @@ const RenderCommand *RotatedPicCommand::ExecuteSelf( ) const } backEnd.currentEntity = &backEnd.entity2D; - Tess_Begin( Tess_StageIteratorColor, shader, nullptr, false, -1, 0 ); + Tess_Begin( Tess_StageIteratorColor, shader, false, -1, 0 ); } if( !tess.indexes ) { - Tess_Begin( Tess_StageIteratorColor, shader, nullptr, false, -1, 0 ); + Tess_Begin( Tess_StageIteratorColor, shader, false, -1, 0 ); } Tess_CheckOverflow( 4, 6 ); @@ -3111,11 +3111,11 @@ const RenderCommand *GradientPicCommand::ExecuteSelf( ) const } backEnd.currentEntity = &backEnd.entity2D; - Tess_Begin( Tess_StageIteratorColor, shader, nullptr, false, -1, 0 ); + Tess_Begin( Tess_StageIteratorColor, shader, false, -1, 0 ); } if( !tess.indexes ) { - Tess_Begin( Tess_StageIteratorColor, shader, nullptr, false, -1, 0 ); + Tess_Begin( Tess_StageIteratorColor, shader, false, -1, 0 ); } Tess_CheckOverflow( 4, 6 ); @@ -3314,7 +3314,7 @@ const RenderCommand *PreparePortalCommand::ExecuteSelf( ) const GL_State( GLS_COLORMASK_BITS ); glState.glStateBitsMask = GLS_COLORMASK_BITS; - Tess_Begin( Tess_StageIteratorPortal, shader, nullptr, false, -1, 0 ); + Tess_Begin( Tess_StageIteratorPortal, shader, false, -1, 0 ); rb_surfaceTable[Util::ordinal(*(surface->surface))](surface->surface ); Tess_End(); @@ -3329,7 +3329,7 @@ const RenderCommand *PreparePortalCommand::ExecuteSelf( ) const GL_State( GLS_DEPTHMASK_TRUE | GLS_COLORMASK_BITS | GLS_DEPTHFUNC_ALWAYS); glState.glStateBitsMask = GLS_DEPTHMASK_TRUE | GLS_COLORMASK_BITS | GLS_DEPTHFUNC_ALWAYS; - Tess_Begin( Tess_StageIteratorPortal, shader, nullptr, false, -1, 0 ); + Tess_Begin( Tess_StageIteratorPortal, shader, false, -1, 0 ); rb_surfaceTable[Util::ordinal(*(surface->surface))](surface->surface ); Tess_End(); @@ -3380,7 +3380,7 @@ const RenderCommand *FinalisePortalCommand::ExecuteSelf( ) const glStencilOp( GL_KEEP, GL_KEEP, GL_KEEP ); Tess_Begin( Tess_StageIteratorColor, shader, - nullptr, false, surface->lightmapNum(), surface->fog, surface->bspSurface ); + false, surface->lightmapNum(), surface->fog, surface->bspSurface ); rb_surfaceTable[Util::ordinal( *( surface->surface ) )]( surface->surface ); Tess_End(); @@ -3389,7 +3389,7 @@ const RenderCommand *FinalisePortalCommand::ExecuteSelf( ) const GL_State( GLS_COLORMASK_BITS | GLS_DEPTHFUNC_ALWAYS); glState.glStateBitsMask = GLS_COLORMASK_BITS | GLS_DEPTHFUNC_ALWAYS; - Tess_Begin( Tess_StageIteratorPortal, shader, nullptr, false, -1, 0 ); + Tess_Begin( Tess_StageIteratorPortal, shader, false, -1, 0 ); rb_surfaceTable[Util::ordinal(*(surface->surface))](surface->surface ); Tess_End(); diff --git a/src/engine/renderer/tr_image.cpp b/src/engine/renderer/tr_image.cpp index a54c9c757d..71deb9571f 100644 --- a/src/engine/renderer/tr_image.cpp +++ b/src/engine/renderer/tr_image.cpp @@ -2444,9 +2444,9 @@ static void R_CreateFogImage() R_CreateDefaultImage ================== */ -static const int DEFAULT_SIZE = 128; static void R_CreateDefaultImage() { + constexpr int DEFAULT_SIZE = 128; int x; byte data[ DEFAULT_SIZE ][ DEFAULT_SIZE ][ 4 ]; byte *dataPtr = &data[0][0][0]; @@ -2474,45 +2474,6 @@ static void R_CreateDefaultImage() tr.defaultImage = R_CreateImage( "_default", ( const byte ** ) &dataPtr, DEFAULT_SIZE, DEFAULT_SIZE, 1, imageParams ); } -static void R_CreateRandomNormalsImage() -{ - int x, y; - byte data[ DEFAULT_SIZE ][ DEFAULT_SIZE ][ 4 ]; - // the default image will be a box, to allow you to see the mapping coordinates - memset(data, 32, sizeof(data)); - - byte *ptr = &data[0][0][0]; - byte *dataPtr = &data[0][0][0]; - - for ( y = 0; y < DEFAULT_SIZE; y++ ) - { - for ( x = 0; x < DEFAULT_SIZE; x++ ) - { - vec3_t n; - float r, angle; - - r = random(); - angle = 2.0f * M_PI * r; // / 360.0f; - - VectorSet( n, cosf( angle ), sinf( angle ), r ); - VectorNormalize( n ); - - ptr[ 0 ] = ( byte )( 128 + 127 * n[ 0 ] ); - ptr[ 1 ] = ( byte )( 128 + 127 * n[ 1 ] ); - ptr[ 2 ] = ( byte )( 128 + 127 * n[ 2 ] ); - ptr[ 3 ] = 255; - ptr += 4; - } - } - - imageParams_t imageParams = {}; - imageParams.bits = IF_NOPICMIP; - imageParams.filterType = filterType_t::FT_DEFAULT; - imageParams.wrapType = wrapTypeEnum_t::WT_REPEAT; - - tr.randomNormalsImage = R_CreateImage( "_randomNormals", ( const byte ** ) &dataPtr, DEFAULT_SIZE, DEFAULT_SIZE, 1, imageParams ); -} - static void R_CreateContrastRenderFBOImage() { if ( !glConfig2.bloom) @@ -2749,12 +2710,11 @@ R_CreateBuiltinImages */ void R_CreateBuiltinImages() { - int x, y; - byte data[ DEFAULT_SIZE ][ DEFAULT_SIZE ][ 4 ]; - byte *dataPtr = &data[0][0][0]; + constexpr int DIMENSION = 8; + int x; + byte data[ DIMENSION * DIMENSION * 4 ]; + byte *dataPtr = data; byte *out; - float s, value; - byte intensity; R_CreateDefaultImage(); @@ -2766,41 +2726,41 @@ void R_CreateBuiltinImages() imageParams.filterType = filterType_t::FT_LINEAR; imageParams.wrapType = wrapTypeEnum_t::WT_REPEAT; - tr.whiteImage = R_CreateImage( "_white", ( const byte ** ) &dataPtr, 8, 8, 1, imageParams ); + tr.whiteImage = R_CreateImage( "_white", ( const byte ** ) &dataPtr, DIMENSION, DIMENSION, 1, imageParams ); // we use a solid black image instead of disabling texturing memset( data, 0, sizeof( data ) ); - tr.blackImage = R_CreateImage( "_black", ( const byte ** ) &dataPtr, 8, 8, 1, imageParams ); + tr.blackImage = R_CreateImage( "_black", ( const byte ** ) &dataPtr, DIMENSION, DIMENSION, 1, imageParams ); // red - for ( x = DEFAULT_SIZE * DEFAULT_SIZE, out = &data[0][0][0]; x; --x, out += 4 ) + for ( x = DIMENSION * DIMENSION, out = data; x; --x, out += 4 ) { out[ 1 ] = out[ 2 ] = 0; out[ 0 ] = out[ 3 ] = 255; } - tr.redImage = R_CreateImage( "_red", ( const byte ** ) &dataPtr, 8, 8, 1, imageParams ); + tr.redImage = R_CreateImage( "_red", ( const byte ** ) &dataPtr, DIMENSION, DIMENSION, 1, imageParams ); // green - for ( x = DEFAULT_SIZE * DEFAULT_SIZE, out = &data[0][0][0]; x; --x, out += 4 ) + for ( x = DIMENSION * DIMENSION, out = data; x; --x, out += 4 ) { out[ 0 ] = out[ 2 ] = 0; out[ 1 ] = out[ 3 ] = 255; } - tr.greenImage = R_CreateImage( "_green", ( const byte ** ) &dataPtr, 8, 8, 1, imageParams ); + tr.greenImage = R_CreateImage( "_green", ( const byte ** ) &dataPtr, DIMENSION, DIMENSION, 1, imageParams ); // blue - for ( x = DEFAULT_SIZE * DEFAULT_SIZE, out = &data[0][0][0]; x; --x, out += 4 ) + for ( x = DIMENSION * DIMENSION, out = data; x; --x, out += 4 ) { out[ 0 ] = out[ 1 ] = 0; out[ 2 ] = out[ 3 ] = 255; } - tr.blueImage = R_CreateImage( "_blue", ( const byte ** ) &dataPtr, 8, 8, 1, imageParams ); + tr.blueImage = R_CreateImage( "_blue", ( const byte ** ) &dataPtr, DIMENSION, DIMENSION, 1, imageParams ); // generate a default normalmap with a fully opaque heightmap (no displacement) - for ( x = DEFAULT_SIZE * DEFAULT_SIZE, out = &data[0][0][0]; x; --x, out += 4 ) + for ( x = DIMENSION * DIMENSION, out = data; x; --x, out += 4 ) { out[ 0 ] = out[ 1 ] = 128; out[ 2 ] = 255; @@ -2809,7 +2769,7 @@ void R_CreateBuiltinImages() imageParams.bits = IF_NOPICMIP | IF_NORMALMAP; - tr.flatImage = R_CreateImage( "_flat", ( const byte ** ) &dataPtr, 8, 8, 1, imageParams ); + tr.flatImage = R_CreateImage( "_flat", ( const byte ** ) &dataPtr, DIMENSION, DIMENSION, 1, imageParams ); imageParams.bits = IF_NOPICMIP; imageParams.wrapType = wrapTypeEnum_t::WT_CLAMP; @@ -2819,30 +2779,6 @@ void R_CreateBuiltinImages() image = R_CreateImage( "_cinematic", ( const byte ** ) &dataPtr, 1, 1, 1, imageParams ); } - out = &data[ 0 ][ 0 ][ 0 ]; - - for ( y = 0; y < DEFAULT_SIZE; y++ ) - { - for ( x = 0; x < DEFAULT_SIZE; x++, out += 4 ) - { - s = ( ( ( float ) x + 0.5f ) * ( 2.0f / DEFAULT_SIZE ) - 1.0f ); - - s = Q_fabs( s ) - ( 1.0f / DEFAULT_SIZE ); - - value = 1.0f - ( s * 2.0f ) + ( s * s ); - - intensity = ClampByte( Q_ftol( value * 255.0f ) ); - - out[ 0 ] = intensity; - out[ 1 ] = intensity; - out[ 2 ] = intensity; - out[ 3 ] = intensity; - } - } - - tr.quadraticImage = R_CreateImage( "_quadratic", ( const byte ** ) &dataPtr, DEFAULT_SIZE, DEFAULT_SIZE, 1, imageParams ); - - R_CreateRandomNormalsImage(); R_CreateFogImage(); R_CreateContrastRenderFBOImage(); R_CreateBloomRenderFBOImages(); diff --git a/src/engine/renderer/tr_local.h b/src/engine/renderer/tr_local.h index 5797a3f77a..e10710d296 100644 --- a/src/engine/renderer/tr_local.h +++ b/src/engine/renderer/tr_local.h @@ -1260,8 +1260,6 @@ enum class ssaoMode { filterType_t filterType; // for console fonts, 2D elements, etc. wrapType_t wrapType; - bool interactLight; // this shader can interact with light shaders - // For RT_SPRITE, face opposing the view direction rather than the viewer bool entitySpriteFaceViewDirection; @@ -2542,14 +2540,12 @@ enum class ssaoMode { image_t *defaultImage; image_t *cinematicImage[ MAX_IN_GAME_VIDEOS ]; image_t *fogImage; - image_t *quadraticImage; image_t *whiteImage; // full of 0xff image_t *blackImage; // full of 0x0 image_t *redImage; image_t *greenImage; image_t *blueImage; image_t *flatImage; // use this as default normalmap - image_t *randomNormalsImage; image_t *blackCubeImage; image_t *whiteCubeImage; @@ -2582,9 +2578,6 @@ enum class ssaoMode { shader_t *defaultShader; shader_t *fogEqualShader; shader_t *fogLEShader; - shader_t *defaultPointLightShader; - shader_t *defaultProjectedLightShader; - shader_t *defaultDynamicLightShader; std::vector lightmaps; std::vector deluxemaps; @@ -3199,7 +3192,6 @@ void GLimp_LogComment_( std::string comment ); stageVars_t svars; shader_t *surfaceShader; - shader_t *lightShader; // some drawing parameters from drawSurf_t int16_t lightmapNum; @@ -3258,7 +3250,7 @@ void GLimp_LogComment_( std::string comment ); // *INDENT-OFF* void Tess_Begin( void ( *stageIteratorFunc )(), - shader_t *surfaceShader, shader_t *lightShader, + shader_t *surfaceShader, bool skipTangents, int lightmapNum, int fogNum, diff --git a/src/engine/renderer/tr_shade.cpp b/src/engine/renderer/tr_shade.cpp index e44517a906..e219a91882 100644 --- a/src/engine/renderer/tr_shade.cpp +++ b/src/engine/renderer/tr_shade.cpp @@ -685,7 +685,7 @@ to overflow. */ // *INDENT-OFF* void Tess_Begin( void ( *stageIteratorFunc )(), - shader_t *surfaceShader, shader_t *lightShader, + shader_t *surfaceShader, bool skipTangents, int lightmapNum, int fogNum, @@ -704,7 +704,6 @@ void Tess_Begin( void ( *stageIteratorFunc )(), tess.stageIteratorFunc = stageIteratorFunc; tess.surfaceShader = surfaceShader; - tess.lightShader = lightShader; tess.skipTangents = skipTangents; tess.lightmapNum = lightmapNum; @@ -740,9 +739,9 @@ void Tess_Begin( void ( *stageIteratorFunc )(), Sys::Error( "tess.stageIteratorFunc == NULL" ); } - GLIMP_LOGCOMMENT( "--- Tess_Begin( surfaceShader = %s, lightShader = %s, " + GLIMP_LOGCOMMENT( "--- Tess_Begin( surfaceShader = %s, " "skipTangents = %i, lightmapNum = %i, fogNum = %i) ---", - tess.surfaceShader->name, tess.lightShader ? tess.lightShader->name : nullptr, + tess.surfaceShader->name, tess.skipTangents, tess.lightmapNum, tess.fogNum ); } diff --git a/src/engine/renderer/tr_shader.cpp b/src/engine/renderer/tr_shader.cpp index b24628b215..4ae2d0e7ae 100644 --- a/src/engine/renderer/tr_shader.cpp +++ b/src/engine/renderer/tr_shader.cpp @@ -5765,23 +5765,6 @@ static shader_t *FinishShader() { shaderStage_t *pStage = &stages[ stage ]; - if ( !shader.isSky ) - { - switch ( pStage->type ) - { - case stageType_t::ST_NORMALMAP: - case stageType_t::ST_STYLELIGHTMAP: - case stageType_t::ST_STYLECOLORMAP: - case stageType_t::ST_LIGHTMAP: - case stageType_t::ST_DIFFUSEMAP: - case stageType_t::ST_COLLAPSE_DIFFUSEMAP: - shader.interactLight = true; - break; - default: - break; - } - } - ValidateStage( pStage ); if ( !pStage->active ) diff --git a/src/engine/renderer/tr_surface.cpp b/src/engine/renderer/tr_surface.cpp index 0ead121b32..e8271dca02 100644 --- a/src/engine/renderer/tr_surface.cpp +++ b/src/engine/renderer/tr_surface.cpp @@ -52,7 +52,7 @@ Flush the buffered polygons and prepare to receive more with the same parameters void Tess_EndBegin() { Tess_End(); - Tess_Begin( tess.stageIteratorFunc, tess.surfaceShader, tess.lightShader, tess.skipTangents, + Tess_Begin( tess.stageIteratorFunc, tess.surfaceShader, tess.skipTangents, tess.lightmapNum, tess.fogNum, tess.bspSurface ); } @@ -113,7 +113,7 @@ void Tess_CheckOverflow( int verts, int indexes ) Sys::Drop( "Tess_CheckOverflow: indexes > max (%d > %d)", indexes, SHADER_MAX_INDEXES ); } - Tess_Begin( tess.stageIteratorFunc, tess.surfaceShader, tess.lightShader, tess.skipTangents, + Tess_Begin( tess.stageIteratorFunc, tess.surfaceShader, tess.skipTangents, tess.lightmapNum, tess.fogNum, tess.bspSurface ); } @@ -533,7 +533,7 @@ void Tess_InstantScreenSpaceQuad() { tr.skipVBO = true; - Tess_Begin( Tess_StageIteratorDummy, nullptr, nullptr, true, -1, 0 ); + Tess_Begin( Tess_StageIteratorDummy, nullptr, true, -1, 0 ); rb_surfaceTable[Util::ordinal( *( tr.genericTriangle->surface ) )]( tr.genericTriangle->surface ); Tess_DrawElements(); @@ -548,7 +548,7 @@ void Tess_InstantQuad( u_ModelViewProjectionMatrix &shader, const float x, const { GLIMP_LOGCOMMENT( "--- Tess_InstantQuad ---" ); - Tess_Begin( Tess_StageIteratorDummy, nullptr, nullptr, true, -1, 0 ); + Tess_Begin( Tess_StageIteratorDummy, nullptr, true, -1, 0 ); matrix_t modelViewMatrix; MatrixCopy( matrixIdentity, modelViewMatrix );