void CGrassDrawer::Draw() { if (grassOff || !readMap->GetGrassShadingTexture()) return; SCOPED_TIMER("Grass::Draw"); glPushAttrib(GL_CURRENT_BIT); glColor4f(1.0f, 1.0f, 1.0f, 1.0f); if (!blockDrawer.inviewGrass.empty()) { SetupGlStateNear(); DrawNear(blockDrawer.inviewGrass); ResetGlStateNear(); } if ( globalRendering->haveGLSL && (!shadowHandler->shadowsLoaded || !globalRendering->atiHacks) // Ati crashes w/o an error when shadows are enabled!? && !(blockDrawer.inviewFarGrass.empty() && blockDrawer.inviewNearGrass.empty()) ) { SetupGlStateFar(); DrawFarBillboards(blockDrawer.inviewFarGrass); DrawNearBillboards(blockDrawer.inviewNearGrass); ResetGlStateFar(); } glPopAttrib(); }
void CGrassDrawer::Draw() { if (grassOff || !readMap->GetGrassShadingTexture()) return; SCOPED_TIMER("Draw::World::Foliage::Grass"); glPushAttrib(GL_CURRENT_BIT); glColor4f(1.0f, 1.0f, 1.0f, 1.0f); if (!blockDrawer.inviewGrass.empty()) { SetupGlStateNear(); DrawNear(blockDrawer.inviewGrass); ResetGlStateNear(); } // ATI crashes w/o an error when shadows are enabled!? static const bool shaders = globalRendering->haveGLSL; const bool shadows = (shadowHandler->ShadowsLoaded() && globalRendering->atiHacks); if (shaders && !shadows && (!blockDrawer.inviewFarGrass.empty() || !blockDrawer.inviewNearGrass.empty())) { SetupGlStateFar(); DrawFarBillboards(blockDrawer.inviewFarGrass); DrawNearBillboards(blockDrawer.inviewNearGrass); ResetGlStateFar(); } glPopAttrib(); }
void CGrassDrawer::Draw() { if (grassOff || !readMap->GetGrassShadingTexture()) return; glPushAttrib(GL_CURRENT_BIT); glColor4f(0.62f, 0.62f, 0.62f, 1.0f); SetupGlStateNear(); static CGrassBlockDrawer drawer; drawer.cx = int(camera->GetPos().x / bMSsq); drawer.cy = int(camera->GetPos().z / bMSsq); drawer.inviewGrass.clear(); drawer.inviewNearGrass.clear(); drawer.gd = this; readMap->GridVisibility(camera, blockMapSize, maxGrassDist, &drawer); ResetGlStateNear(); if ( globalRendering->haveGLSL && (!shadowHandler->shadowsLoaded || !globalRendering->atiHacks) // Ati crashes w/o an error when shadows are enabled!? ) { SetupGlStateFar(); std::sort(drawer.inviewGrass.begin(), drawer.inviewGrass.end(), GrassSort); std::sort(drawer.inviewNearGrass.begin(), drawer.inviewNearGrass.end(), GrassSortNear); glColor4f(0.62f, 0.62f, 0.62f, 1.0f); DrawFarBillboards(drawer.inviewGrass); glColor4f(0.62f, 0.62f, 0.62f, 1.0f); DrawNearBillboards(drawer.inviewNearGrass); ResetGlStateFar(); } glPopAttrib(); GarbageCollect(); }