Tweeked automatic generation of shaders, we now search for shirt/pants textures for default skin shaders.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1570 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2005-11-14 01:33:25 +00:00
parent 35192beb47
commit de5dd89b74
1 changed files with 89 additions and 16 deletions

View File

@ -1828,26 +1828,99 @@ void Shader_DefaultBSPFlare(char *shortname, shader_t *s)
}
void Shader_DefaultSkin(char *shortname, shader_t *s)
{
int tex;
shaderpass_t *pass;
pass = &s->passes[0];
pass->flags = SHADER_PASS_DEPTHWRITE;
pass->anim_frames[0] = Mod_LoadHiResTexture(shortname, NULL, true, true, true);//GL_FindImage (shortname, 0);
pass->depthfunc = GL_LEQUAL;
pass->rgbgen = RGB_GEN_LIGHTING_DIFFUSE;
pass->numtcmods = 0;
pass->tcgen = TC_GEN_BASE;
pass->blendsrc = GL_SRC_ALPHA;
pass->blenddst = GL_ONE_MINUS_SRC_ALPHA;
pass->blendmode = GL_MODULATE;
pass->numMergedPasses = 1;
pass->flush = R_RenderMeshGeneric;
if ( !pass->anim_frames[0] ) {
Con_DPrintf ( S_COLOR_YELLOW "Shader %s has a stage with no image: %s.\n", s->name, shortname );
pass->anim_frames[0] = 0;//fizme:r_notexture;
s->numpasses = 0;
tex = Mod_LoadHiResTexture(shortname, NULL, true, true, true);
// if (tex)
{
pass = &s->passes[s->numpasses++];
pass->flags = SHADER_PASS_DEPTHWRITE;
pass->anim_frames[0] = tex;
pass->depthfunc = GL_LEQUAL;
pass->rgbgen = RGB_GEN_LIGHTING_DIFFUSE;
pass->numtcmods = 0;
pass->tcgen = TC_GEN_BASE;
pass->blendsrc = GL_SRC_ALPHA;
pass->blenddst = GL_ONE_MINUS_SRC_ALPHA;
pass->blendmode = GL_MODULATE;
pass->numMergedPasses = 1;
pass->flush = R_RenderMeshGeneric;
if (!pass->anim_frames[0])
{
Con_DPrintf ( S_COLOR_YELLOW "Shader %s has a stage with no image: %s.\n", s->name, shortname );
pass->anim_frames[0] = 0;//fizme:r_notexture;
}
}
tex = Mod_LoadHiResTexture(va("%s_shirt", shortname), NULL, true, true, true);
if (tex)
{
pass = &s->passes[s->numpasses++];
pass->flags = SHADER_PASS_BLEND;
pass->anim_frames[0] = tex;
pass->depthfunc = GL_EQUAL;
pass->rgbgen = RGB_GEN_TOPCOLOR;
pass->numtcmods = 0;
pass->tcgen = TC_GEN_BASE;
pass->blendsrc = GL_ONE;
pass->blenddst = GL_ONE;
pass->blendmode = GL_MODULATE;
pass->numMergedPasses = 1;
pass->flush = R_RenderMeshGeneric;
if (!pass->anim_frames[0])
{
Con_DPrintf ( S_COLOR_YELLOW "Shader %s has a stage with no image: %s.\n", s->name, shortname );
pass->anim_frames[0] = 0;//fizme:r_notexture;
}
}
tex = Mod_LoadHiResTexture(va("%s_pants", shortname), NULL, true, true, true);
if (tex)
{
pass = &s->passes[s->numpasses++];
pass->flags = SHADER_PASS_BLEND;
pass->anim_frames[0] = tex;
pass->depthfunc = GL_EQUAL;
pass->rgbgen = RGB_GEN_BOTTOMCOLOR;
pass->numtcmods = 0;
pass->tcgen = TC_GEN_BASE;
pass->blendsrc = GL_ONE;
pass->blenddst = GL_ONE;
pass->blendmode = GL_MODULATE;
pass->numMergedPasses = 1;
pass->flush = R_RenderMeshGeneric;
if (!pass->anim_frames[0])
{
Con_DPrintf ( S_COLOR_YELLOW "Shader %s has a stage with no image: %s.\n", s->name, shortname );
pass->anim_frames[0] = 0;//fizme:r_notexture;
}
}
tex = Mod_LoadHiResTexture(va("%s_glow", shortname), NULL, true, true, true);
if (tex)
{
pass = &s->passes[s->numpasses++];
pass->flags = SHADER_PASS_BLEND;
pass->anim_frames[0] = tex;
pass->depthfunc = GL_EQUAL;
pass->rgbgen = RGB_GEN_LIGHTING_DIFFUSE;
pass->numtcmods = 0;
pass->tcgen = TC_GEN_BASE;
pass->blendsrc = GL_ONE;
pass->blenddst = GL_ONE;
pass->blendmode = GL_MODULATE;
pass->numMergedPasses = 1;
pass->flush = R_RenderMeshGeneric;
if (!pass->anim_frames[0])
{
Con_DPrintf (S_COLOR_YELLOW "Shader %s has a stage with no image: %s.\n", s->name, shortname);
pass->anim_frames[0] = 0;//fizme:r_notexture;
}
}
s->numpasses = 1;
s->numdeforms = 0;
s->flags = SHADER_DEPTHWRITE|SHADER_CULL_FRONT;
s->features = MF_STCOORDS|MF_NORMALS;