Exemple #1
0
		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));
		}
Exemple #2
0
		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));
		}
Exemple #3
0
		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
		}