Exemplo n.º 1
0
        /// <summary>
        /// Render single object pass<para/>
        /// Отрисовка одного прохода объекта
        /// </summary>
        /// <param name="transparentPass">True if pass is transparent<para/>True если проход прозрачный</param>
        public override void Render(bool transparentPass)
        {
            // Prepare rendering matrix
            // Установка матрицы рендера
            PrepareMatrix();

            // Prepare shader
            // Установка шейдера
            StaticShader.Shader.Bind();
            CameraManager.Bind3DUniforms(StaticShader.ProjectionMatrix, StaticShader.ModelViewMatrix);
            GL.UniformMatrix4(StaticShader.ObjectMatrix, false, ref completeMatrix);
            GL.Uniform1(StaticShader.CameraRange, CameraManager.Range());
            GL.Uniform1(StaticShader.FogRange, Renderer.SkyState.FogDistance);
            GL.Uniform3(StaticShader.FogColor, Renderer.SkyState.SkyBottom);

            // Rendering surfaces
            // Отрисовка поверхностей
            if (Fading)
            {
                if (transparentPass)
                {
                    SubMesh.Render(this, Textures, transparentPass, true);
                }
            }
            else
            {
                SubMesh.Render(this, Textures, transparentPass);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Render single object pass<para/>
        /// Отрисовка одного прохода объекта
        /// </summary>
        /// <param name="transparentPass">True if pass is transparent<para/>True если проход прозрачный</param>
        public override void Render(bool transparentPass)
        {
            // Prepare rendering matrix
            // Установка матрицы рендера
            PrepareMatrix();

            // Recalculating bones
            // Пересчитываем кости
            Matrix4[] bones = new Matrix4[64];
            for (int i = 0; i < bones.Length; i++)
            {
                bones[i] = Matrix4.Identity;
            }

            //System.Diagnostics.Debug.WriteLine(">>>>>>>>>>>>>>> ANIM");
            //System.Diagnostics.Debug.WriteLine(">>> " + f.Name + " => " + f.BoneID);
            BuildMatrices(SubMesh.ParentModel.Children, ref bones);



            // Prepare shader
            // Установка шейдера
            SkinnedShader.Shader.Bind();
            CameraManager.Bind3DUniforms(SkinnedShader.ProjectionMatrix, SkinnedShader.ModelViewMatrix);
            GL.UniformMatrix4(SkinnedShader.ObjectMatrix, false, ref completeMatrix);
            //GL.Uniform1(StaticShader.CameraRange, CameraManager.Range());
            //GL.Uniform1(StaticShader.FogRange, Renderer.SkyState.FogDistance);
            //GL.Uniform3(StaticShader.FogColor, Renderer.SkyState.SkyBottom);

            float[] matrixData = new float[bones.Length * 16];
            for (int i = 0; i < bones.Length; i++)
            {
                matrixData[i * 16 + 00] = bones[i][0, 0];
                matrixData[i * 16 + 01] = bones[i][0, 1];
                matrixData[i * 16 + 02] = bones[i][0, 2];
                matrixData[i * 16 + 03] = bones[i][0, 3];
                matrixData[i * 16 + 04] = bones[i][1, 0];
                matrixData[i * 16 + 05] = bones[i][1, 1];
                matrixData[i * 16 + 06] = bones[i][1, 2];
                matrixData[i * 16 + 07] = bones[i][1, 3];
                matrixData[i * 16 + 08] = bones[i][2, 0];
                matrixData[i * 16 + 09] = bones[i][2, 1];
                matrixData[i * 16 + 10] = bones[i][2, 2];
                matrixData[i * 16 + 11] = bones[i][2, 3];
                matrixData[i * 16 + 12] = bones[i][3, 0];
                matrixData[i * 16 + 13] = bones[i][3, 1];
                matrixData[i * 16 + 14] = bones[i][3, 2];
                matrixData[i * 16 + 15] = bones[i][3, 3];
            }
            GL.UniformMatrix4(SkinnedShader.BoneMatrices, 64, false, matrixData);
            //System.Diagnostics.Debugger.Break();

            // Rendering surfaces
            // Отрисовка поверхностей
            SubMesh.Render(this, Textures, transparentPass);
        }