コード例 #1
0
ファイル: Glare.cs プロジェクト: yoship1639/MikuMikuWorld
        protected internal override void OnLoad()
        {
            base.OnLoad();

            // 書き出しRT
            glareRT              = new RenderTexture(MMW.RenderResolution);
            glareRT.MagFilter    = TextureMagFilter.Linear;
            glareRT.MinFilter    = TextureMinFilter.Linear;
            glareRT.ColorFormat0 = MMW.Configuration.DefaultPixelFormat;
            glareRT.Load();

            // HDR抽出RT
            hdrRT              = new RenderTexture(MMW.RenderResolution);
            hdrRT.MagFilter    = TextureMagFilter.Linear;
            hdrRT.MinFilter    = TextureMinFilter.Linear;
            hdrRT.ColorFormat0 = MMW.Configuration.DefaultPixelFormat;
            hdrRT.Load();

            // Blur適用RT
            blurRT1s = new RenderTexture[BlurNum];
            blurRT2s = new RenderTexture[BlurNum];
            blurRT3s = new RenderTexture[BlurNum];
            blurs    = new GlareBlur[BlurNum];
            var blurSizes = new Size[]
            {
                new Size(MMW.RenderResolution.Width / 4, MMW.RenderResolution.Height / 4),
                new Size(MMW.RenderResolution.Width / 8, MMW.RenderResolution.Height / 8),
                new Size(MMW.RenderResolution.Width / 16, MMW.RenderResolution.Height / 16),
            };
            var reduct = 1.0f;

            for (var i = 0; i < BlurNum; i++)
            {
                var size = blurSizes[i];
                if (size.Width < 128)
                {
                    size.Width = 128;
                }
                if (size.Height < 128)
                {
                    size.Height = 128;
                }

                blurRT1s[i]              = new RenderTexture(size);
                blurRT1s[i].MagFilter    = TextureMagFilter.Linear;
                blurRT1s[i].MinFilter    = TextureMinFilter.Linear;
                blurRT1s[i].WrapMode     = TextureWrapMode.ClampToEdge;
                blurRT1s[i].ColorFormat0 = MMW.Configuration.DefaultPixelFormat;
                blurRT1s[i].Load();

                blurRT2s[i]              = new RenderTexture(size);
                blurRT2s[i].MagFilter    = TextureMagFilter.Linear;
                blurRT2s[i].MinFilter    = TextureMinFilter.Linear;
                blurRT2s[i].WrapMode     = TextureWrapMode.ClampToEdge;
                blurRT2s[i].ColorFormat0 = MMW.Configuration.DefaultPixelFormat;
                blurRT2s[i].Load();

                blurRT3s[i]              = new RenderTexture(size);
                blurRT3s[i].MagFilter    = TextureMagFilter.Linear;
                blurRT3s[i].MinFilter    = TextureMinFilter.Linear;
                blurRT3s[i].WrapMode     = TextureWrapMode.ClampToEdge;
                blurRT3s[i].ColorFormat0 = MMW.Configuration.DefaultPixelFormat;
                blurRT3s[i].Load();

                blurs[i] = new GlareBlur(3.0f * reduct, Direction, GlareBlur.GlareType.Line);
                blurs[i].RenderTexture = blurRT1s[i];
                blurs[i].OnLoad();
                reduct *= 2.0f;
            }

            // HDR抽出シェーダ
            hdrShader = (ExtractHDRShader)MMW.GetAsset <Shader>("Extract HDR");
            if (hdrShader == null)
            {
                hdrShader = new ExtractHDRShader();
                MMW.RegistAsset(hdrShader);
            }

            // Bloomシェーダ
            glareShader = (GlareShader)MMW.GetAsset <Shader>("Glare");
            if (glareShader == null)
            {
                glareShader = new GlareShader();
                MMW.RegistAsset(glareShader);
            }

            if (GameObject != null)
            {
                Camera        = GameObject.GetComponent <Camera>();
                RenderTexture = Camera.TargetTexture;
            }

            orthoMatrix = Matrix4.CreateOrthographicOffCenter(-1, 1, -1, 1, -1, 1);
        }