@@ -1272,6 +1272,12 @@ void ProcessMaterialGeneric3D( Material* material, shaderStage_t* pStage, drawSu
1272
1272
material->tcGen_Lightmap = pStage->tcGen_Lightmap ;
1273
1273
material->deformIndex = pStage->deformIndex ;
1274
1274
1275
+ colorGen_t rgbGen = SetRgbGen ( pStage );
1276
+ alphaGen_t alphaGen = SetAlphaGen ( pStage );
1277
+
1278
+ material->useAttrColor = rgbGen == colorGen_t::CGEN_VERTEX || rgbGen == colorGen_t::CGEN_ONE_MINUS_VERTEX
1279
+ || alphaGen == alphaGen_t::AGEN_VERTEX || alphaGen == alphaGen_t::AGEN_ONE_MINUS_VERTEX;
1280
+
1275
1281
gl_generic3DShaderMaterial->SetTCGenEnvironment ( pStage->tcGen_Environment );
1276
1282
gl_generic3DShaderMaterial->SetTCGenLightmap ( pStage->tcGen_Lightmap );
1277
1283
@@ -1299,6 +1305,12 @@ void ProcessMaterialLightMapping( Material* material, shaderStage_t* pStage, dra
1299
1305
1300
1306
DAEMON_ASSERT ( !( enableDeluxeMapping && enableGridDeluxeMapping ) );
1301
1307
1308
+ colorGen_t rgbGen = SetRgbGen ( pStage );
1309
+ alphaGen_t alphaGen = SetAlphaGen ( pStage );
1310
+
1311
+ material->useAttrColor = rgbGen == colorGen_t::CGEN_VERTEX || rgbGen == colorGen_t::CGEN_ONE_MINUS_VERTEX
1312
+ || alphaGen == alphaGen_t::AGEN_VERTEX || alphaGen == alphaGen_t::AGEN_ONE_MINUS_VERTEX;
1313
+
1302
1314
material->enableDeluxeMapping = enableDeluxeMapping;
1303
1315
material->enableGridLighting = enableGridLighting;
1304
1316
material->enableGridDeluxeMapping = enableGridDeluxeMapping;
@@ -2142,6 +2154,12 @@ void MaterialSystem::RenderMaterial( Material& material, const uint32_t viewID )
2142
2154
2143
2155
backEnd.currentEntity = &tr.worldEntity ;
2144
2156
2157
+ if ( material.useAttrColor ) {
2158
+ material.shader ->AddVertexAttribBit ( ATTR_COLOR );
2159
+ } else {
2160
+ material.shader ->DelVertexAttribBit ( ATTR_COLOR );
2161
+ }
2162
+
2145
2163
GL_State ( stateBits );
2146
2164
if ( material.usePolygonOffset ) {
2147
2165
glEnable ( GL_POLYGON_OFFSET_FILL );
0 commit comments