Пример #1
0
        public SystemRender(GameWindow myGame, ViewProjectionManager viewProjectionManager)
        {
            MyGame = myGame;
            _viewProjectionManager = viewProjectionManager;
            _entities          = new List <Entity>();
            frameBufferRenders = new Dictionary <string, List <Entity> >();

            var shaders = Directory.GetDirectories("Shaders");

            foreach (var s in shaders)
            {
                ResourceManager.LoadShader(s);
            }

            var p = Matrix4.CreatePerspectiveFieldOfView(MathHelper.DegreesToRadians(45), MyGame.Width / MyGame.Height, 0.01f, 100f);
            var o = Matrix4.CreateOrthographicOffCenter(0, MyGame.Width, 0, MyGame.Height, -1000f, 1000f);

            ResourceManager.GenFrameBuffer("Master", "MasterTexture", MyGame.Width, MyGame.Height, p, o, Matrix4.Identity, new Vector4(0.1f, 0, 0.1f, 1));
            ResourceManager.GenPostProcessEffect("Last", "Last", (t, s) => t.BindTextureUniform(s, "s_texture"));

            _random = new Random();
            ResourceManager.GenPostProcessEffect("Blur", "Blur", (t, s) => { t.BindTextureUniform(s, "s_texture"); s.Uniform1("pixelSize", 0.0005f); });
            var shake = ResourceManager.GenPostProcessEffect("AttackShake", "Offset", (t, s) =>
            {
                t.BindTextureUniform(s, "s_texture");
                s.Uniform2("offset", new Vector2(0.01f * (float)_random.NextDouble(), 0.01f * (float)_random.NextDouble()));
            });

            shake.Active = false;
            ResourceManager.GenPostProcessEffect("Offset", "Offset", (t, s) => { t.BindTextureUniform(s, "s_texture"); s.Uniform2("offset", new Vector2(0.001f * (float)_random.NextDouble(), 0.001f * (float)_random.NextDouble())); });
            ResourceManager.GenPostProcessEffect("Colour", "Colour", (t, s) => { t.BindTextureUniform(s, "s_texture"); s.Uniform2("delta", new Vector2(0.001f, 0.001f)); });

            for (int i = 1; i < ResourceManager.GetPostProccessEffects().Count + 1; i++)
            {
                ResourceManager.GenFrameBuffer("Master" + i, "MasterTexture" + i, MyGame.Width, MyGame.Height, p, o, Matrix4.Identity, new Vector4(0.1f, 0, 0.1f, 1));
            }

            var DefaultLitMater = ResourceManager.GenMaterial("TextureLit", "Texture", (e, s) =>
            {
                DefaultTexturePrep(e, s);
                s.Uniform3("EyePos", _viewProjectionManager.View.ExtractTranslation());
                s.Uniform3("LightPos", new Vector3(0, 5, 0));
            });
            var DefaultUnlitMater = ResourceManager.GenMaterial("TextureUnLit", "TextureUnLit", (e, s) => DefaultTexturePrep(e, s));

            var DefaultLitTextMater = ResourceManager.GenMaterial("TextLit", "Text", (e, s) =>
            {
                DefaultTextPrep(e, s);
                s.Uniform3("EyePos", _viewProjectionManager.View.ExtractTranslation());
                s.Uniform3("LightPos", new Vector3(0, 5, 0));
            });

            var DefaultUnlitText = ResourceManager.GenMaterial("TextUnLit", "TextUnLit", (e, s) => DefaultTextPrep(e, s));
        }
Пример #2
0
 public SystemCamera(ViewProjectionManager viewProjectionManager)
 {
     _viewProjectionManager = viewProjectionManager;
 }