public override void Render(EffectWrapper pEffect) { pEffect.GraphicsDevice.SetVertexBuffer(m_pSharedVertexBuffer); pEffect.GraphicsDevice.Indices = m_pSharedIndexBuffer; // set offset (scaling should be done in level) pEffect.SetValue("ScaleFactor", m_tScaleFactor); pEffect.Render(new RenderCallback(RenderRingFixups)); }
public override void Render(EffectWrapper pEffect) { pEffect.GraphicsDevice.SetVertexBuffer(m_pSharedVertexBuffers[(int) m_eActiveInteriorTrim]); pEffect.GraphicsDevice.Indices = m_pSharedIndexBuffer; // set offset (scaling should be done in level) pEffect.SetValue("ScaleFactor", m_tScaleFactor); pEffect.Render(new RenderCallback(RenderInteriorTrim)); }
public void Render(EffectWrapper pEffect) { // apply vertex texture pEffect.SetValue("ElevationTexture", m_pElevationTexture); pEffect.SetValue("ViewerPos", (m_pParentTerrain.Viewer.Position2D - m_tPositionMin) / m_nGridSpacing); pEffect.SetValue("AlphaOffset", Settings.AlphaOffset); pEffect.SetValue("OneOverWidth", Settings.TransitionWidthInverse); pEffect.SetValue("GridSize", Settings.GRID_SIZE_N); pEffect.SetValue("GrassTexture", m_pParentTerrain.GrassTexture); pEffect.SetValue("NormalMapTexture", m_pNormalMapTexture); Vector2 tCoarserGridPosMin = new Vector2(); if (m_pNextCoarserLevel != null) tCoarserGridPosMin = m_pNextCoarserLevel.InteriorTrim.CoarserGridPosMin; pEffect.SetValue("CoarserNormalMapTextureOffset", tCoarserGridPosMin); pEffect.SetValue("CoarserNormalMapTexture", (m_pNextCoarserLevel != null) ? m_pNextCoarserLevel.NormalMapTexture : null); pEffect.SetValue("NormalMapTextureSizeInverse", Settings.NORMAL_MAP_TEXTURE_SIZE_INVERSE); pEffect.SetValue("NormalMapTextureSize", Settings.NORMAL_MAP_TEXTURE_SIZE); pEffect.SetValue("LightDirection", Vector3.Normalize(new Vector3(0.0f, 0.0f, 1))); Vector2 tToroidalOriginScaled = (Vector2) m_tToroidalOrigin / (float) Settings.ELEVATION_TEXTURE_SIZE; Vector2 tGridSizeScaled = new Vector2(((float) Settings.GRID_SIZE_N / (float) Settings.ELEVATION_TEXTURE_SIZE)); pEffect.SetValue("ToroidalOffsets", new Vector4(tToroidalOriginScaled, tGridSizeScaled.X, tGridSizeScaled.Y)); pEffect.SetValue("ElevationTextureSize", Settings.ELEVATION_TEXTURE_SIZE); #region Render blocks pEffect.SetValue("Shading", new Vector4(0.7f, 0.0f, 0.0f, 1.0f)); // we set the vertices and indices here because they are the same for all blocks pEffect.GraphicsDevice.SetVertexBuffer(Block.SharedVertexBuffer); pEffect.GraphicsDevice.Indices = Block.SharedIndexBuffer; pEffect.Render(new RenderCallback(RenderBlocks)); #endregion #region Render ring fix-ups pEffect.SetValue("FineBlockOrig", new Vector4(Settings.ELEVATION_TEXTURE_SIZE_INVERSE, Settings.ELEVATION_TEXTURE_SIZE_INVERSE, 0.0f, 0.0f)); pEffect.SetValue("FineBlockOrig2", Vector2.Zero); pEffect.SetValue("Shading", new Vector4(0.0f, 0.7f, 0.0f, 1.0f)); m_pRingFixups.Render(pEffect); #endregion #region Render interior trim pEffect.SetValue("FineBlockOrig", new Vector4(Settings.ELEVATION_TEXTURE_SIZE_INVERSE, Settings.ELEVATION_TEXTURE_SIZE_INVERSE, 0.0f, 0.0f)); pEffect.SetValue("FineBlockOrig2", Vector2.Zero); pEffect.SetValue("Shading", new Vector4(0.0f, 0.0f, 0.7f, 1.0f)); m_pInteriorTrim.Render(pEffect); #endregion #region Render centre blocks for finest level if (m_bFinestLevel) { pEffect.SetValue("Shading", new Vector4(0.7f, 0.7f, 0.0f, 1.0f)); // we set the vertices and indices here because they are the same for all blocks pEffect.GraphicsDevice.SetVertexBuffer(Block.SharedVertexBuffer); pEffect.GraphicsDevice.Indices = Block.SharedIndexBuffer; pEffect.Render(new RenderCallback(RenderCentreBlocks)); pEffect.SetValue("FineBlockOrig", new Vector4(Settings.ELEVATION_TEXTURE_SIZE_INVERSE, Settings.ELEVATION_TEXTURE_SIZE_INVERSE, 0.0f, 0.0f)); pEffect.SetValue("FineBlockOrig2", Vector2.Zero); pEffect.SetValue("Shading", new Vector4(0.0f, 0.0f, 0.7f, 1.0f)); m_pCentreInteriorTrim.Render(pEffect); } #endregion #region Render edge stitches pEffect.SetValue("FineBlockOrig", new Vector4(Settings.ELEVATION_TEXTURE_SIZE_INVERSE, Settings.ELEVATION_TEXTURE_SIZE_INVERSE, 0.0f, 0.0f)); pEffect.SetValue("FineBlockOrig2", Vector2.Zero); pEffect.SetValue("Shading", new Vector4(0.7f, 0.7f, 0.0f, 1.0f)); m_pEdgeStitches.Render(pEffect); #endregion }