mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-29 06:07:57 +03:00
Handle shader picmip and fix shaders not rendered properly with force32bit (alpha channel was ignored)
This commit is contained in:
parent
c13f9dc9a8
commit
60e4fa7005
2 changed files with 10 additions and 10 deletions
|
@ -608,7 +608,7 @@ static void Upload32(
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
internalFormat = GL_RGB8;
|
internalFormat = GL_RGBA8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -790,7 +790,7 @@ static void ParseTexMod( char *_text, shaderStage_t *stage, int cntBundle )
|
||||||
ParseStage
|
ParseStage
|
||||||
===================
|
===================
|
||||||
*/
|
*/
|
||||||
static qboolean ParseStage(shaderStage_t* stage, char** text)
|
static qboolean ParseStage(shaderStage_t* stage, char** text, qboolean picmip)
|
||||||
{
|
{
|
||||||
char* token;
|
char* token;
|
||||||
int depthMaskBits = GLS_DEPTHMASK_TRUE, blendSrcBits = 0, blendDstBits = 0, atestBits = 0, depthFuncBits = 0, colorBits = 0;
|
int depthMaskBits = GLS_DEPTHMASK_TRUE, blendSrcBits = 0, blendDstBits = 0, atestBits = 0, depthFuncBits = 0, colorBits = 0;
|
||||||
|
@ -884,7 +884,7 @@ static qboolean ParseStage(shaderStage_t* stage, char** text)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
stage->bundle[cntBundle].image[0] = R_FindImageFile(token, !stage->noMipMaps, !stage->noPicMip, qfalse, GL_REPEAT, GL_REPEAT);
|
stage->bundle[cntBundle].image[0] = R_FindImageFile(token, !stage->noMipMaps, (!stage->noPicMip ? picmip : 0), stage->force32bit, GL_REPEAT, GL_REPEAT);
|
||||||
if (!stage->bundle[cntBundle].image[0])
|
if (!stage->bundle[cntBundle].image[0])
|
||||||
{
|
{
|
||||||
ri.Printf(PRINT_WARNING, "WARNING: R_FindImageFile could not find '%s' in shader '%s'\n", token, shader.name);
|
ri.Printf(PRINT_WARNING, "WARNING: R_FindImageFile could not find '%s' in shader '%s'\n", token, shader.name);
|
||||||
|
@ -943,7 +943,7 @@ static qboolean ParseStage(shaderStage_t* stage, char** text)
|
||||||
return qfalse;
|
return qfalse;
|
||||||
}
|
}
|
||||||
|
|
||||||
stage->bundle[cntBundle].image[0] = R_FindImageFile(token, !stage->noMipMaps, !stage->noPicMip, qfalse, clampx, clampy);
|
stage->bundle[cntBundle].image[0] = R_FindImageFile(token, !stage->noMipMaps, (!stage->noPicMip ? picmip : 0), stage->force32bit, clampx, clampy);
|
||||||
if (!stage->bundle[cntBundle].image[0])
|
if (!stage->bundle[cntBundle].image[0])
|
||||||
{
|
{
|
||||||
ri.Printf(PRINT_WARNING, "WARNING: R_FindImageFile could not find '%s' in shader '%s'\n", token, shader.name);
|
ri.Printf(PRINT_WARNING, "WARNING: R_FindImageFile could not find '%s' in shader '%s'\n", token, shader.name);
|
||||||
|
@ -995,7 +995,7 @@ static qboolean ParseStage(shaderStage_t* stage, char** text)
|
||||||
}
|
}
|
||||||
num = stage->bundle[cntBundle].numImageAnimations;
|
num = stage->bundle[cntBundle].numImageAnimations;
|
||||||
if ( num < MAX_IMAGE_ANIMATIONS ) {
|
if ( num < MAX_IMAGE_ANIMATIONS ) {
|
||||||
stage->bundle[cntBundle].image[num] = R_FindImageFile(token, !stage->noMipMaps, !stage->noPicMip, qfalse, GL_REPEAT, GL_REPEAT );
|
stage->bundle[cntBundle].image[num] = R_FindImageFile(token, !stage->noMipMaps, (!stage->noPicMip ? picmip : 0), stage->force32bit, GL_REPEAT, GL_REPEAT );
|
||||||
if ( !stage->bundle[cntBundle].image[num] )
|
if ( !stage->bundle[cntBundle].image[num] )
|
||||||
{
|
{
|
||||||
ri.Printf( PRINT_WARNING, "WARNING: R_FindImageFile could not find '%s' in shader '%s'\n", token, shader.name );
|
ri.Printf( PRINT_WARNING, "WARNING: R_FindImageFile could not find '%s' in shader '%s'\n", token, shader.name );
|
||||||
|
@ -1018,7 +1018,7 @@ static qboolean ParseStage(shaderStage_t* stage, char** text)
|
||||||
return qfalse;
|
return qfalse;
|
||||||
}
|
}
|
||||||
|
|
||||||
stage->normalMap = R_FindImageFile(token, !stage->noMipMaps, !stage->noPicMip, stage->force32bit, GL_REPEAT, GL_REPEAT);
|
stage->normalMap = R_FindImageFile(token, !stage->noMipMaps, (!stage->noPicMip ? picmip : 0), stage->force32bit, GL_REPEAT, GL_REPEAT);
|
||||||
if (!stage->normalMap)
|
if (!stage->normalMap)
|
||||||
{
|
{
|
||||||
ri.Printf(PRINT_WARNING, "WARNING: R_FindImageFile could not find '%s' in shader '%s'\n", token, shader.name);
|
ri.Printf(PRINT_WARNING, "WARNING: R_FindImageFile could not find '%s' in shader '%s'\n", token, shader.name);
|
||||||
|
@ -2143,7 +2143,7 @@ shader. Parse it into the global shader variable. Later functions
|
||||||
will optimize it.
|
will optimize it.
|
||||||
=================
|
=================
|
||||||
*/
|
*/
|
||||||
static qboolean ParseShader( char **text )
|
static qboolean ParseShader( char **text, qboolean picmip )
|
||||||
{
|
{
|
||||||
char *token;
|
char *token;
|
||||||
int s;
|
int s;
|
||||||
|
@ -2174,7 +2174,7 @@ static qboolean ParseShader( char **text )
|
||||||
// stage definition
|
// stage definition
|
||||||
else if ( token[0] == '{' )
|
else if ( token[0] == '{' )
|
||||||
{
|
{
|
||||||
if ( !ParseStage( &unfoggedStages[s], text ) )
|
if ( !ParseStage( &unfoggedStages[s], text, picmip ) )
|
||||||
{
|
{
|
||||||
return qfalse;
|
return qfalse;
|
||||||
}
|
}
|
||||||
|
@ -2262,7 +2262,7 @@ static qboolean ParseShader( char **text )
|
||||||
shader_noPicMip = qtrue;
|
shader_noPicMip = qtrue;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// no picmip adjustment
|
// force 32 bit images
|
||||||
else if (!Q_stricmp(token, "force32bit"))
|
else if (!Q_stricmp(token, "force32bit"))
|
||||||
{
|
{
|
||||||
shader_force32bit = qtrue;
|
shader_force32bit = qtrue;
|
||||||
|
@ -3225,7 +3225,7 @@ shader_t* R_FindShader(const char* name, int lightmapIndex, qboolean mipRawImage
|
||||||
ri.Printf( PRINT_ALL, "*SHADER* %s\n", name );
|
ri.Printf( PRINT_ALL, "*SHADER* %s\n", name );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !ParseShader( &shaderText ) ) {
|
if ( !ParseShader( &shaderText, picmip ) ) {
|
||||||
// had errors, so use default shader
|
// had errors, so use default shader
|
||||||
shader.defaultShader = qtrue;
|
shader.defaultShader = qtrue;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue