} // SetCommonParameters

        /// <summary>
        /// Begins the G Buffer simple technique.
        /// </summary>
        internal void RenderModelSimple(ref Matrix worldMatrix, Assets.Model model, Material material, int meshIndex, int meshPart)
        {
            try
            {
                Resource.CurrentTechnique = gBufferSimpleTechnique; // Does not produce a graphic call.
                SetCommonParameters(ref worldMatrix, material);
                Resource.CurrentTechnique.Passes[0].Apply();
                model.RenderMeshPart(meshIndex, meshPart);
            }
            catch (Exception e)
            {
                throw new InvalidOperationException("G-Buffer: Unable to render model.", e);
            }
        } // RenderModelSimple
        } // RenderModelWithParallax

        /// <summary>
        /// Begins the G Buffer "skinned simple" technique.
        /// </summary>
        internal void RenderModelSkinnedSimple(ref Matrix worldMatrix, Assets.Model model, Material material, int meshIndex, int meshPart, Matrix[] boneTransform)
        {
            try
            {
                Resource.CurrentTechnique = gBufferSkinnedSimple;
                SetCommonParameters(ref worldMatrix, material);
                spBones.Value = boneTransform;
                Resource.CurrentTechnique.Passes[0].Apply();
                model.RenderMeshPart(meshIndex, meshPart);
            }
            catch (Exception e)
            {
                throw new InvalidOperationException("G-Buffer: Unable to render model.", e);
            }
        } // RenderModelSkinnedSimple
        } // RenderModelSimple

        /// <summary>
        /// Begins the G Buffer "with normals" technique.
        /// </summary>
        internal void RenderModelWithNormals(ref Matrix worldMatrix, Assets.Model model, Material material, int meshIndex, int meshPart)
        {
            try
            {
                Resource.CurrentTechnique = gBufferWithNormalMap;
                SetCommonParameters(ref worldMatrix, material);
                spObjectNormalTexture.Value = material.NormalTexture;
                Resource.CurrentTechnique.Passes[0].Apply();
                model.RenderMeshPart(meshIndex, meshPart);
            }
            catch (Exception e)
            {
                throw new InvalidOperationException("G-Buffer: Unable to render model.", e);
            }
        } // RenderModelWithNormals
        } // RenderModelWithNormals

        /// <summary>
        /// Begins the G Buffer "with parallax" technique.
        /// </summary>
        internal void RenderModelWithParallax(ref Matrix worldMatrix, Assets.Model model, Material material, int meshIndex, int meshPart)
        {
            try
            {
                Resource.CurrentTechnique = gBufferWithParallax;
                SetCommonParameters(ref worldMatrix, material);
                spObjectNormalTexture.Value     = material.NormalTexture;
                spObjectNormalTextureSize.Value = new Vector2(material.NormalTexture.Width, material.NormalTexture.Height);
                spLODThreshold.Value            = material.ParallaxLodThreshold;
                spMinimumNumberSamples.Value    = material.ParallaxMinimumNumberSamples;
                spMaximumNumberSamples.Value    = material.ParallaxMaximumNumberSamples;
                spHeightMapScale.Value          = material.ParallaxHeightMapScale;
                Resource.CurrentTechnique.Passes[0].Apply();
                model.RenderMeshPart(meshIndex, meshPart);
            }
            catch (Exception e)
            {
                throw new InvalidOperationException("G-Buffer: Unable to render model.", e);
            }
        } // RenderModelWithParallax