Пример #1
0
        public override void Init()
        {
            depthFBO = new FBO(0, 0, 1, true);
            ShadowMapping.Create(depthFBO, "lightmask.png");

            font = BitmapFont.Load("fonts/comic12.png");

            skybox = Sky.Load("sky/sky_", "jpg");
            world.Add(skybox);

            GLSLShader.SetShader("shadowmapping.shader", "SHADOWS");
            DotScene ds = DotScene.Load("scene1/scene1.scene", scene);

            world.Add(scene);

            actors[0] = AnimatedModel.Load("ugly/ukko.mesh");
            actors[0].LoadMD5Animation("act1", "ugly/ukko_action1.anim");
            actors[0].LoadMD5Animation("act2", "ugly/ukko_action2.anim");
            actors[0].LoadMD5Animation("act3", "ugly/ukko_action3.anim");
            actors[0].LoadMD5Animation("walk", "ugly/ukko_walk.anim");
            actors[0].SetAnimation("act2"); // idle anim
            actors[0].Scale = new Vector3(5, 5, 5);
            world.Add(actors[0]);

            lightImg = Billboard.Load("lightimg.png");

            Camera.Set3D();
            base.Init();
        }
Пример #2
0
 public virtual void Dispose()
 {
     if (font != null)
     {
         font.Dispose();
     }
     if (colorFBO != null)
     {
         colorFBO.Dispose();
     }
     if (depthFBO != null)
     {
         depthFBO.Dispose();
     }
     if (skybox != null)
     {
         skybox.Dispose();
     }
     skybox           = null;
     colorFBO         = null;
     depthFBO         = null;
     font             = null;
     world            = null;
     Node.ObjectCount = 0;
     GLSLShader.UnBindShader();
     GLSLShader.SetShader("default.shader", "");
 }
Пример #3
0
        public override void Init()
        {
            colorFBO = new FBO(0, 0, 2, true); // 2 colorbufferia
            depthFBO = new FBO(0, 0, 0, true);
            blurH    = PostEffect.Load("blur.shader", "HORIZ");
            blurH.SetParameter("size", 1f / (float)colorFBO.Width);
            blurV = PostEffect.Load("blur.shader", "VERT");
            blurV.SetParameter("size", 1f / (float)colorFBO.Width);
            bloom = PostEffect.Load("bloom.shader", "");
            bloom.SetParameter("size", 0.001f);

            Particles.EnableSoftParticles();
            ShadowMapping.Create(depthFBO, "lightmask.png");

            font = BitmapFont.Load("fonts/comic12.png");

            skybox = Sky.Load("sky/sky2_", "jpg");
            world.Add(skybox);

            lightImg = Billboard.Load("lightimg.png");

            GLSLShader.SetShader("shadowmapping.shader", "SHADOWS");
            DotScene ds = DotScene.Load("scene1/scene1.scene", scene);

            world.Add(scene);

            actors[0] = AnimatedModel.Load("ugly/ukko.mesh");
            actors[0].LoadMD5Animation("act1", "ugly/ukko_action1.anim");
            actors[0].LoadMD5Animation("act2", "ugly/ukko_action2.anim");
            actors[0].LoadMD5Animation("act3", "ugly/ukko_action3.anim");
            actors[0].LoadMD5Animation("walk", "ugly/ukko_walk.anim");
            actors[0].SetAnimation("act2"); // idle anim
            actors[0].Position.Y = -0.5f;
            actors[0].Scale      = new Vector3(5, 5, 5);
            world.Add(actors[0]);

            explosion = Particles.Load("explosion.particles.xml", new ParticleCallback(RenderParticleCallback));
            smoke     = Particles.Load("smoke.particles.xml", null);
            actors[0].Add(smoke);

            Camera.Set3D();
            base.Init();
        }
Пример #4
0
        public override void Init()
        {
            depthFBO = new FBO(0, 0, 1, true);
            ShadowMapping.Create(depthFBO, "lightmask.png");

            Fog.CreateFog(0.005f, Fog.Color);
            GLSLShader.SetShader("default.shader", "FOG");
            skybox = Sky.Load("sky/sky2_", "jpg");
            world.Add(skybox);

            GLSLShader.SetShader("default.shader", "LIGHTING:PERPIXEL:FOG");
            Model    scene = new Model();
            DotScene ds    = DotScene.Load("scene1/scene1.scene", scene);

            world.Add(scene);

            camPath = Path.GetPath("Path_camera");
            camPath.Attach(camera, true, true);

            font = BitmapFont.Load("fonts/comic12.png");

            Camera.Set3D();
            base.Init();
        }
Пример #5
0
        /// <summary>
        /// putsaa listat ja poista gl-datat
        /// </summary>
        public void ClearArrays()
        {
            Texture.DisposeAll();
            GLSLShader.DisposeAll();
            Material.DisposeAll();
            Particles.DisposeAll();

            Light.Lights.Clear();
            Path.Paths.Clear();

            world            = null;
            world            = new Renderable("World");
            Node.ObjectCount = 0;
            for (int q = 0; q < Texture.MaxTextures; q++)
            {
                Texture.UnBind(q);
            }
            GLSLShader.UnBindShader();

            GLSLShader.SetShader("default.shader", "");

            GC.Collect();
            GC.WaitForPendingFinalizers();
        }
Пример #6
0
        void Init()
        {
            Instance = this;

            Log.WriteLine("CSatEng 0.9.2 // (c) mjt, 2008-2014");
            Log.WriteLine("OS: " + System.Environment.OSVersion.ToString());
            Log.WriteLine("Renderer: " + GL.GetString(StringName.Renderer));
            Log.WriteLine("Vendor: " + GL.GetString(StringName.Vendor));
            Log.WriteLine("Version: " + GL.GetString(StringName.Version));
            Log.WriteLine(".Net: " + Environment.Version);

            string version = GL.GetString(StringName.Version);

            if (version.Contains("Compatibility"))
            {
                Settings.UseGL3 = false;
            }
            int major = (int)version[0];
            int minor = (int)version[2];

            if (major < 2)
            {
                Log.Error("You need at least OpenGL 2.0 to run this program. Please update your drivers.");
            }

            string ext = "";

            if (Settings.UseGL3 == false)
            {
                ext = GL.GetString(StringName.Extensions);
            }
            else
            {
                int extC;
                GL.GetInteger(GetPName.NumExtensions, out extC);
                for (int q = 0; q < extC; q++)
                {
                    ext += GL.GetString(StringNameIndexed.Extensions, q) + " ";
                }
            }

            Log.WriteLine("--------------------------------------------");
            Log.WriteLine("Extensions:\n" + ext);
            Log.WriteLine("--------------------------------------------");

            if (ext.Contains("texture_non_power_of_two"))
            {
                if (Settings.DisableNPOTTextures)
                {
                    Log.WriteLine("NPOT textures supported but disabled.");
                    Texture.IsNPOTSupported = false;
                }
                else
                {
                    Log.WriteLine("NPOT textures supported.");
                    Texture.IsNPOTSupported = true;
                }
            }
            else
            {
                Log.WriteLine("NPOT textures not supported.");
                Texture.IsNPOTSupported = false;
            }

            // löytyykö float texture extension
            if (ext.Contains("texture_float") && ext.Contains("color_buffer_float"))
            {
                if (Settings.DisableFloatTextures)
                {
                    Log.WriteLine("Float textures supported but disabled.");
                    Texture.IsFloatTextureSupported = false;
                }
                else
                {
                    Log.WriteLine("Float textures supported.");
                    Texture.IsFloatTextureSupported = true;
                }
            }
            else
            {
                Log.WriteLine("Float textures not supported.");
                Texture.IsFloatTextureSupported = false;
            }

            // tarkista voidaanko shadereita käyttää.
            if (!ext.Contains("vertex_shader") || !ext.Contains("fragment_shader"))
            {
                Log.Error("Shaders not supported. Please update your drivers.");
            }

            if (ext.Contains("EXT_framebuffer_object"))
            {
                if (Settings.DisableFbo)
                {
                    Log.WriteLine("FBOs supported but disabled.");
                    FBO.IsSupported = false;
                }
                else
                {
                    Log.WriteLine("FBOs supported.");
                    FBO.IsSupported = true;
                }
            }
            else
            {
                Log.WriteLine("FBOs not supported.");
                FBO.IsSupported = false;
            }

            GL.GetInteger(GetPName.MaxCombinedTextureImageUnits, out Texture.MaxTextures);
            Log.WriteLine("Max textureUnits: " + Texture.MaxTextures);
            Texture.BindedTextures = new uint[Texture.MaxTextures];

            VSync           = Settings.VSync ? VSyncMode.On : VSyncMode.Off;
            Settings.Device = DisplayDevice.Default;
            if (Settings.FullScreen)
            {
                Settings.Device.ChangeResolution(Settings.Device.SelectResolution(Settings.Width, Settings.Height, Settings.Bpp, 60f));
                WindowState = OpenTK.WindowState.Fullscreen;
            }

            GL.Enable(EnableCap.DepthTest);
            GL.ClearDepth(1.0);
            GL.DepthFunc(DepthFunction.Lequal);
            GL.ClearColor(0.0f, 0.0f, 0.1f, 0);
            GL.Enable(EnableCap.CullFace);
            GL.CullFace(CullFaceMode.Back);
            if (Settings.UseGL3 == false)
            {
                GL.Enable(EnableCap.Texture2D);
                GL.Enable(EnableCap.ColorMaterial);
                GL.Enable(EnableCap.Normalize);
            }
            GameClass.Keyboard = Keyboard;
            GameClass.Mouse    = Mouse;

            GLSLShader.SetShader("default.shader", "");

            Loading();
        }