avoid second rendering pass when possible
git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@2679 e016b1c5-ed68-44aa-a2f7-31cac88cffde
This commit is contained in:
@@ -547,6 +547,7 @@ extern void updateaudio();
|
||||
extern void rendermodel(const char *mdl, int anim, int tex, float rad, const vec &o, float yaw, float pitch, float speed = 0, int basetime = 0, playerent *d = NULL, modelattach *a = NULL, float scale = 1.0f);
|
||||
extern void startmodelbatches();
|
||||
extern void endmodelbatches(bool flush = true);
|
||||
extern void clearmodelbatches();
|
||||
extern mapmodelinfo &getmminfo(int i);
|
||||
extern int findanim(const char *name);
|
||||
extern void loadskin(const char *dir, const char *altdir, Texture *&skin);
|
||||
|
||||
@@ -268,6 +268,11 @@ static int sorttranslucentmodels(const translucentmodel *x, const translucentmod
|
||||
return 0;
|
||||
}
|
||||
|
||||
void clearmodelbatches()
|
||||
{
|
||||
numbatches = -1;
|
||||
}
|
||||
|
||||
void endmodelbatches(bool flush)
|
||||
{
|
||||
vector<translucentmodel> translucent;
|
||||
@@ -318,7 +323,7 @@ void endmodelbatches(bool flush)
|
||||
}
|
||||
if(lastmodel) lastmodel->endrender();
|
||||
}
|
||||
if(flush) numbatches = -1;
|
||||
if(flush) clearmodelbatches();
|
||||
}
|
||||
|
||||
void rendermodel(const char *mdl, int anim, int tex, float rad, const vec &o, float yaw, float pitch, float speed, int basetime, playerent *d, modelattach *a, float scale)
|
||||
|
||||
+10
-6
@@ -374,15 +374,19 @@ void drawstencilshadows()
|
||||
renderbounceents();
|
||||
endmodelbatches(false);
|
||||
|
||||
stenciling = 2;
|
||||
if(shadowcasters)
|
||||
{
|
||||
stenciling = 2;
|
||||
|
||||
glStencilFunc(GL_ALWAYS, 0, ~0U);
|
||||
glStencilOp(GL_KEEP, GL_KEEP, GL_DECR);
|
||||
glCullFace(GL_BACK);
|
||||
glStencilFunc(GL_ALWAYS, 0, ~0U);
|
||||
glStencilOp(GL_KEEP, GL_KEEP, GL_DECR);
|
||||
glCullFace(GL_BACK);
|
||||
|
||||
endmodelbatches(true);
|
||||
endmodelbatches(true);
|
||||
|
||||
glCullFace(GL_FRONT);
|
||||
glCullFace(GL_FRONT);
|
||||
}
|
||||
else clearmodelbatches();
|
||||
}
|
||||
|
||||
stenciling = 0;
|
||||
|
||||
Reference in New Issue
Block a user