mirror of
https://github.com/glest/glest-source.git
synced 2025-02-25 04:02:30 +01:00
- attempt fix smooth the shadow off / on logic when rendering slows
This commit is contained in:
parent
ada90b4e27
commit
a1eebafac6
@ -1443,6 +1443,8 @@ void Game::render3d(){
|
||||
//SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
renderer.renderMouse3d();
|
||||
if(chrono.getMillis() > 0) SystemFlags::OutputDebug(SystemFlags::debugPerformance,"In [%s::%s Line: %d] renderFps = %d took msecs: %lld [renderMouse3d]\n",__FILE__,__FUNCTION__,__LINE__,renderFps,chrono.getMillis());
|
||||
|
||||
renderer.setLastRenderFps(avgRenderFps);
|
||||
}
|
||||
|
||||
void Game::render2d(){
|
||||
|
@ -150,7 +150,8 @@ const Vec4f Renderer::defColor= Vec4f(1.f, 1.f, 1.f, 1.f);
|
||||
//const float Renderer::maxLightDist= 100.f;
|
||||
const float Renderer::maxLightDist= 1000.f;
|
||||
|
||||
const int MIN_FPS_NORMAL_RENDERING = 20;
|
||||
const int MIN_FPS_NORMAL_RENDERING = 15;
|
||||
const int MIN_FPS_NORMAL_RENDERING_TOP_THRESHOLD = 25;
|
||||
|
||||
// ==================== constructor and destructor ====================
|
||||
|
||||
@ -163,6 +164,9 @@ Renderer::Renderer(){
|
||||
textRenderer = NULL;
|
||||
particleRenderer = NULL;
|
||||
|
||||
lastRenderFps=MIN_FPS_NORMAL_RENDERING;
|
||||
shadowsOffDueToMinRender=false;
|
||||
|
||||
//resources
|
||||
for(int i=0; i<rsCount; ++i){
|
||||
modelManager[i] = NULL;
|
||||
@ -1272,7 +1276,7 @@ void Renderer::renderSurface(const int renderFps, const int worldFrameCount) {
|
||||
fowTex->getPixmap()->getW(), fowTex->getPixmap()->getH(),
|
||||
GL_ALPHA, GL_UNSIGNED_BYTE, fowTex->getPixmap()->getPixels());
|
||||
|
||||
if(renderFps >= MIN_FPS_NORMAL_RENDERING) {
|
||||
if(lastRenderFps >= MIN_FPS_NORMAL_RENDERING && renderFps >= MIN_FPS_NORMAL_RENDERING_TOP_THRESHOLD) {
|
||||
//shadow texture
|
||||
if(shadows==sProjected || shadows==sShadowMapping){
|
||||
glActiveTexture(shadowTexUnit);
|
||||
@ -1383,7 +1387,7 @@ void Renderer::renderObjects(const int renderFps, const int worldFrameCount) {
|
||||
|
||||
glPushAttrib(GL_ENABLE_BIT | GL_COLOR_BUFFER_BIT | GL_FOG_BIT | GL_LIGHTING_BIT | GL_TEXTURE_BIT);
|
||||
|
||||
if(renderFps >= MIN_FPS_NORMAL_RENDERING &&
|
||||
if(lastRenderFps >= MIN_FPS_NORMAL_RENDERING && renderFps >= MIN_FPS_NORMAL_RENDERING_TOP_THRESHOLD &&
|
||||
shadows == sShadowMapping) {
|
||||
glActiveTexture(shadowTexUnit);
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
@ -1585,7 +1589,7 @@ void Renderer::renderUnits(const int renderFps, const int worldFrameCount) {
|
||||
glPushAttrib(GL_ENABLE_BIT | GL_FOG_BIT | GL_LIGHTING_BIT | GL_TEXTURE_BIT);
|
||||
glEnable(GL_COLOR_MATERIAL);
|
||||
|
||||
if(renderFps >= MIN_FPS_NORMAL_RENDERING) {
|
||||
if(lastRenderFps >= MIN_FPS_NORMAL_RENDERING && renderFps >= MIN_FPS_NORMAL_RENDERING_TOP_THRESHOLD) {
|
||||
if(shadows==sShadowMapping){
|
||||
glActiveTexture(shadowTexUnit);
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
@ -2378,7 +2382,7 @@ void Renderer::computeSelected(Selection::UnitContainer &units, const Vec2i &pos
|
||||
// ==================== shadows ====================
|
||||
|
||||
void Renderer::renderShadowsToTexture(const int renderFps){
|
||||
if(renderFps >= MIN_FPS_NORMAL_RENDERING &&
|
||||
if(lastRenderFps >= MIN_FPS_NORMAL_RENDERING && renderFps >= MIN_FPS_NORMAL_RENDERING_TOP_THRESHOLD &&
|
||||
(shadows==sProjected || shadows==sShadowMapping)) {
|
||||
|
||||
shadowMapFrame= (shadowMapFrame + 1) % (shadowFrameSkip + 1);
|
||||
|
@ -244,6 +244,9 @@ private:
|
||||
bool no2DMouseRendering;
|
||||
bool showDebugUI;
|
||||
|
||||
int lastRenderFps;
|
||||
bool shadowsOffDueToMinRender;
|
||||
|
||||
private:
|
||||
Renderer();
|
||||
~Renderer();
|
||||
@ -378,6 +381,9 @@ public:
|
||||
bool getShowDebugUI() const { return showDebugUI; }
|
||||
void setShowDebugUI(bool value) { showDebugUI = value; }
|
||||
|
||||
void setLastRenderFps(int value) { lastRenderFps = value;}
|
||||
int getLastRenderFps() const { return lastRenderFps;}
|
||||
|
||||
private:
|
||||
//private misc
|
||||
float computeSunAngle(float time);
|
||||
|
Loading…
x
Reference in New Issue
Block a user