Ejemplo n.º 1
0
 void AppendRetroShaderChain(FilterProgram program, string name, BizHawk.Client.EmuHawk.Filters.RetroShaderChain retroChain, Dictionary <string, object> properties)
 {
     for (int i = 0; i < retroChain.Passes.Length; i++)
     {
         var    pass  = retroChain.Passes[i];
         var    rsp   = new BizHawk.Client.EmuHawk.Filters.RetroShaderPass(retroChain, i);
         string fname = string.Format("{0}[{1}]", name, i);
         program.AddFilter(rsp, fname);
         rsp.Parameters = properties;
     }
 }
Ejemplo n.º 2
0
        FilterProgram BuildDefaultChain(Size chain_insize, Size chain_outsize, bool includeOSD)
        {
            //select user special FX shader chain
            Dictionary <string, object> selectedChainProperties = new Dictionary <string, object>();

            BizHawk.Client.EmuHawk.Filters.RetroShaderChain selectedChain = null;

            if (Global.Config.TargetDisplayFilter == 3 && ShaderChain_user != null && ShaderChain_user.Available)
            {
                selectedChain = ShaderChain_user;
            }

            BizHawk.Client.EmuHawk.Filters.FinalPresentation fPresent = new BizHawk.Client.EmuHawk.Filters.FinalPresentation(chain_outsize);
            BizHawk.Client.EmuHawk.Filters.SourceImage       fInput   = new BizHawk.Client.EmuHawk.Filters.SourceImage(chain_insize);
            BizHawk.Client.EmuHawk.Filters.OSD fOSD = new BizHawk.Client.EmuHawk.Filters.OSD();
            fOSD.RenderCallback = () =>
            {
                if (!includeOSD)
                {
                    return;
                }
                var size = fOSD.FindInput().SurfaceFormat.Size;
                Renderer.Begin(size.Width, size.Height);
                Renderer.SetBlendState(GL.BlendNormal);
                Renderer.End();
            };

            var chain = new FilterProgram();

            //add the first filter, encompassing output from the emulator core
            chain.AddFilter(fInput, "input");

            //choose final filter
            BizHawk.Client.EmuHawk.Filters.FinalPresentation.eFilterOption finalFilter = BizHawk.Client.EmuHawk.Filters.FinalPresentation.eFilterOption.None;
            if (Global.Config.DispFinalFilter == 1)
            {
                finalFilter = BizHawk.Client.EmuHawk.Filters.FinalPresentation.eFilterOption.Bilinear;
            }
            if (Global.Config.DispFinalFilter == 2)
            {
                finalFilter = BizHawk.Client.EmuHawk.Filters.FinalPresentation.eFilterOption.Bicubic;
            }

            finalFilter = BizHawk.Client.EmuHawk.Filters.FinalPresentation.eFilterOption.None;

            fPresent.FilterOption = finalFilter;

            //add final presentation
            chain.AddFilter(fPresent, "presentation");

            return(chain);
        }
Ejemplo n.º 3
0
 public void RefreshUserShader()
 {
     if (ShaderChain_user != null)
     {
         ShaderChain_user.Dispose();
     }
     if (File.Exists(Global.Config.DispUserFilterPath))
     {
         var fi = new FileInfo(Global.Config.DispUserFilterPath);
         using (var stream = fi.OpenRead())
             ShaderChain_user = new BizHawk.Client.EmuHawk.Filters.RetroShaderChain(GL, new BizHawk.Client.EmuHawk.Filters.RetroShaderPreset(stream), Path.GetDirectoryName(Global.Config.DispUserFilterPath));
     }
 }
Ejemplo n.º 4
0
        private void btnSelectUserFilter_Click(object sender, EventArgs e)
        {
            using var ofd = new OpenFileDialog
                  {
                      Filter   = ".CGP (*.cgp)|*.cgp",
                      FileName = _pathSelection
                  };
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                rbUser.Checked = true;
                var choice = Path.GetFullPath(ofd.FileName);

                //test the preset
                using (var stream = File.OpenRead(choice))
                {
                    var cgp = new BizHawk.Client.EmuHawk.Filters.RetroShaderPreset(stream);
                    if (cgp.ContainsGlsl)
                    {
                        MessageBox.Show("Specified CGP contains references to .glsl files. This is illegal. Use .cg");
                        return;
                    }

                    // try compiling it
                    bool   ok     = false;
                    string errors = "";
                    try
                    {
                        var filter = new BizHawk.Client.EmuHawk.Filters.RetroShaderChain(GlobalWin.GL, cgp, Path.GetDirectoryName(choice));
                        ok     = filter.Available;
                        errors = filter.Errors;
                    }
                    catch {}
                    if (!ok)
                    {
                        using var errorForm = new ExceptionBox(errors);
                        errorForm.ShowDialog();
                        return;
                    }
                }

                _pathSelection = choice;
                RefreshState();
            }
        }
Ejemplo n.º 5
0
		public void RefreshUserShader()
		{
			if (ShaderChain_user != null)
				ShaderChain_user.Dispose();
			if (File.Exists(Global.Config.DispUserFilterPath))
			{
				var fi = new FileInfo(Global.Config.DispUserFilterPath);
				using (var stream = fi.OpenRead())
					ShaderChain_user = new BizHawk.Client.EmuHawk.Filters.RetroShaderChain(GL, new BizHawk.Client.EmuHawk.Filters.RetroShaderPreset(stream), Path.GetDirectoryName(Global.Config.DispUserFilterPath));
			}
		}
Ejemplo n.º 6
0
		private void btnSelectUserFilter_Click(object sender, EventArgs e)
		{
			var ofd = new OpenFileDialog();
			ofd.Filter = ".CGP (*.cgp)|*.cgp";
			ofd.FileName = PathSelection;
			if (ofd.ShowDialog() == DialogResult.OK)
			{
				rbUser.Checked = true;
				var choice = Path.GetFullPath(ofd.FileName);
				
				//test the preset
				using (var stream = File.OpenRead(choice))
				{
					var cgp = new BizHawk.Client.EmuHawk.Filters.RetroShaderPreset(stream);
					if (cgp.ContainsGLSL)
					{
						MessageBox.Show("Specified CGP contains references to .glsl files. This is illegal. Use .cg");
						return;
					}

					//try compiling it
					bool ok = false;
					string errors = "";
					try 
					{
						var filter = new BizHawk.Client.EmuHawk.Filters.RetroShaderChain(GlobalWin.GL, cgp, Path.GetDirectoryName(choice));
						ok = filter.Available;
						errors = filter.Errors;
					}
					catch {}
					if (!ok)
					{
						new ExceptionBox(errors).ShowDialog();
						return;
					}
				}

				PathSelection = choice;
				RefreshState();
			}
		}