void EditTSCtrl::renderWorld(const RectI & updateRect)
{
   // Make sure that whatever the editor does, it doesn't
   // dirty the GFX transform state.
   GFXTransformSaver saver;

   updateGizmo();

   gClientSceneGraph->setDisplayTargetResolution(getExtent());

   // Use a render instance to do editor 3D scene 
   // rendering after HDR is processed and while the depth 
   // buffer is still intact.
   RenderPassManager *rpm = gClientSceneGraph->getDefaultRenderPass();
   ObjectRenderInst *inst = rpm->allocInst<ObjectRenderInst>();
   inst->type = RenderPassManager::RIT_Editor;
   inst->renderDelegate.bind(this, &EditTSCtrl::_renderScene);
   rpm->addInst(inst);

   if( mDisplayType == DisplayTypePerspective )
      gClientSceneGraph->renderScene( SPT_Diffuse );
   else
   {
      // If we are in an orthographic mode, do a special render
      // with AL, fog, and PostFX disabled.

      FogData savedFogData = gClientSceneGraph->getFogData();
      gClientSceneGraph->setFogData( FogData() );

      SceneRenderState renderState
      (
         gClientSceneGraph,
         SPT_Diffuse
      );

      gClientSceneGraph->renderScene( &renderState );
      gClientSceneGraph->setFogData( savedFogData );
   }
}
void GuiMaterialPreview::renderWorld(const RectI &updateRect)
{
   // nothing to render, punt
   if ( !mModel && !mMountedModel )
      return;

   S32 time = Platform::getVirtualMilliseconds();
   //S32 dt = time - lastRenderTime;
   lastRenderTime = time;

   

   F32 left, right, top, bottom, nearPlane, farPlane;
   bool isOrtho;
   GFX->getFrustum( &left, &right, &bottom, &top, &nearPlane, &farPlane, &isOrtho);
   Frustum frust( isOrtho, left, right, bottom, top, nearPlane, farPlane, MatrixF::Identity );

   FogData savedFogData = gClientSceneGraph->getFogData();
   gClientSceneGraph->setFogData( FogData() );  // no fog in preview window

   RenderPassManager* renderPass = gClientSceneGraph->getDefaultRenderPass();
   SceneRenderState state
   (
      gClientSceneGraph,
      SPT_Diffuse,
      SceneCameraState( GFX->getViewport(), frust, GFX->getWorldMatrix(), GFX->getProjectionMatrix() ),
      renderPass,
      true
   );

   // Set up our TS render state here.
   TSRenderState rdata;
   rdata.setSceneState( &state );

   // We might have some forward lit materials
   // so pass down a query to gather lights.
   LightQuery query;
   query.init( SphereF( Point3F::Zero, 1.0f ) );
   rdata.setLightQuery( &query );

   // Set up pass transforms
   renderPass->assignSharedXform(RenderPassManager::View, MatrixF::Identity);
   renderPass->assignSharedXform(RenderPassManager::Projection, GFX->getProjectionMatrix());

   LIGHTMGR->unregisterAllLights();
   LIGHTMGR->setSpecialLight( LightManager::slSunLightType, mFakeSun );

   if ( mModel )
      mModel->render( rdata );

   if ( mMountedModel )
   {
      // render a weapon
	   /*
      MatrixF mat;

      GFX->pushWorldMatrix();
      GFX->multWorld( mat );

      GFX->popWorldMatrix();
	  */
   }

   renderPass->renderPass( &state );

   gClientSceneGraph->setFogData( savedFogData );         // restore fog setting

   // Make sure to remove our fake sun
   LIGHTMGR->unregisterAllLights();
}