public void init() { renderer = new OpenGLRenderer(); renderer.setSize(width, height); camera = new PerspectiveCamera((float)(System.Math.PI / 180.0f) * 70.0f, width / (float)height, 1.0f, 100.0f); camera.position.Z = 400.0f; scene = new Scene(); CubeGeometry geometry = new CubeGeometry(200, 200, 200); Texture texture = (new ImageUtils()).loadTexture("textures/crate.gif"); texture.anisotropy = renderer.getMaxAnisotropy(); MeshBasicMaterial material = new MeshBasicMaterial(texture); mesh = new Mesh(geometry, material); scene.add(mesh); renderer.render(scene, camera); }
public TextureManager(OpenGLRenderer renderer) { _renderer = renderer; _textures = Array.Empty <Texture>(); _count = 0; }
public void InitializeWithNullReferences() { IRenderer renderer = new OpenGLRenderer(new OpenGLGraphicsFactory(), new ShaderSettings()); Assert.Throws <ArgumentNullException>(() => renderer.Init(null, null)); }
static void Main(string[] args) { Config.Read(); AOptimizations.DisableMemoryChecks = !Config.EnableMemoryChecks; Console.Title = "Ryujinx Console"; IGalRenderer Renderer = new OpenGLRenderer(); IAalOutput AudioOut = new OpenALAudioOut(); Switch Ns = new Switch(Renderer, AudioOut); if (args.Length == 1) { if (Directory.Exists(args[0])) { string[] RomFsFiles = Directory.GetFiles(args[0], "*.istorage"); if (RomFsFiles.Length > 0) { Logging.Info("Loading as cart with RomFS."); Ns.LoadCart(args[0], RomFsFiles[0]); } else { Logging.Info("Loading as cart WITHOUT RomFS."); Ns.LoadCart(args[0]); } } else if (File.Exists(args[0])) { Logging.Info("Loading as homebrew."); Ns.LoadProgram(args[0]); } } else { Logging.Error("Please specify the folder with the NSOs/IStorage or a NSO/NRO."); } using (GLScreen Screen = new GLScreen(Ns, Renderer)) { Ns.Finish += (Sender, Args) => { Screen.Exit(); }; Screen.Run(60.0); } Environment.Exit(0); }
public TextureStorage(OpenGLRenderer renderer, TextureCreateInfo info, float scaleFactor) { _renderer = renderer; Info = info; Handle = GL.GenTexture(); ScaleFactor = scaleFactor; CreateImmutableStorage(); }
protected Call(int image, Path[] paths, int triangleOffset, uint triangleCount, int uniformOffset, Blend blendFunc, OpenGLRenderer renderer) { this.image = image; this.paths = paths; this.triangleOffset = triangleOffset; this.triangleCount = triangleCount; this.uniformOffset = uniformOffset; this.blendFunc = blendFunc; this.renderer = renderer; }
static void Main(string[] args) { Config.Read(); Console.Title = "Ryujinx Console"; IGalRenderer Renderer = new OpenGLRenderer(); Switch Ns = new Switch(Renderer); if (args.Length == 1) { if (Directory.Exists(args[0])) { string[] RomFsFiles = Directory.GetFiles(args[0], "*.istorage"); if (RomFsFiles.Length > 0) { Logging.Info("Loading as cart with RomFS."); Ns.Os.LoadCart(args[0], RomFsFiles[0]); } else { Logging.Info("Loading as cart WITHOUT RomFS."); Ns.Os.LoadCart(args[0]); } } else if (File.Exists(args[0])) { Logging.Info("Loading as homebrew."); Ns.Os.LoadProgram(args[0]); } } else { Logging.Error("Please specify the folder with the NSOs/IStorage or a NSO/NRO."); } using (GLScreen Screen = new GLScreen(Ns, Renderer)) { Ns.Finish += (Sender, Args) => { Screen.Exit(); }; Screen.Run(60.0); } Ns.Os.FinalizeAllProcesses(); Ns.Dispose(); }
public void SetSceneWithNullReferences() { IRenderer renderer = new OpenGLRenderer(new OpenGLGraphicsFactory(), new ShaderSettings()); Assert.Throws <ArgumentNullException>(() => renderer.SetScene(new OrthographicCamera(0, 0), null)); Assert.Throws <ArgumentNullException>(() => renderer.SetScene(null, null)); Assert.Throws <ArgumentNullException>(() => renderer.SetScene(null)); }
public void DrawWithNullReferences() { IRenderer renderer = new OpenGLRenderer(new OpenGLGraphicsFactory(), new ShaderSettings()); Assert.Throws <ArgumentNullException>(() => renderer.Draw(null, null, Matrix4.Identity)); Assert.Throws <ArgumentNullException>(() => renderer.Draw(null, new OpenGLVertexArray(), Matrix4.Identity)); Assert.Throws <ArgumentNullException>(() => renderer.Draw(null)); }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); Config.Read(); IGalRenderer Renderer = new OpenGLRenderer(); Switch Ns = new Switch(Renderer); view = new GLScreen(this, Ns, Renderer); SetContentView(Resource.Layout.activity_main); DisplayMetrics displayMetrics = new DisplayMetrics(); WindowManager.DefaultDisplay.GetRealMetrics(displayMetrics); nxLog = FindViewById <TextView>(Resource.Id.nxLog); nxLog.MovementMethod = new ScrollingMovementMethod(); nxLog.LayoutParameters.Width = displayMetrics.WidthPixels; nxLog.LayoutParameters.Height = displayMetrics.HeightPixels; Button loadRomBtn = FindViewById <Button>(Resource.Id.loadRom); Button viewDisplayBtn = FindViewById <Button>(Resource.Id.viewDisplay); loadRomBtn.Click += async delegate { try { FileData FileInput = await CrossFilePicker.Current.PickFile(); if (FileInput == null) { return; } Ns.Os.LoadProgram(FileInput.FileName, FileInput.GetStream()); } catch (Exception e) { Logging.Error($"An exception has occured: {e.ToString()}"); } }; viewDisplayBtn.Click += delegate { SetContentView(view); }; }
public TextureView( OpenGLRenderer renderer, TextureStorage parent, TextureCreateInfo info, int firstLayer, int firstLevel) : base(info, parent.ScaleFactor) { _renderer = renderer; _parent = parent; FirstLayer = firstLayer; FirstLevel = firstLevel; CreateView(); }
public Shader(string name, bool edgeAA, OpenGLRenderer renderer) { _renderer = renderer; _gl = _renderer.Gl; _programmeID = _gl.CreateProgram(); _vertexShaderID = _gl.CreateShader(Silk.NET.OpenGL.ShaderType.VertexShader); _fragmentShaderID = _gl.CreateShader(Silk.NET.OpenGL.ShaderType.FragmentShader); _gl.ShaderSource(_vertexShaderID, ShaderCode.VERTEX_SHADER_CODE); _gl.ShaderSource(_fragmentShaderID, edgeAA ? ShaderCode.FRAGMENT_SHADER_EDGE_AA_CODE : ShaderCode.FRAGMENT_SHADER_CODE); _gl.CompileShader(_vertexShaderID); _gl.GetShader(_vertexShaderID, ShaderParameterName.CompileStatus, out int status); if (status != (int)GLEnum.True) { DumpShaderError(_vertexShaderID, Silk.NET.OpenGL.ShaderType.VertexShader); Status = false; return; } _gl.CompileShader(_fragmentShaderID); _gl.GetShader(_fragmentShaderID, ShaderParameterName.CompileStatus, out status); if (status != (int)GLEnum.True) { DumpShaderError(_fragmentShaderID, Silk.NET.OpenGL.ShaderType.FragmentShader); Status = false; return; } _gl.AttachShader(_programmeID, _vertexShaderID); _gl.AttachShader(_programmeID, _fragmentShaderID); _gl.BindAttribLocation(_programmeID, 0, "vertex"); _gl.BindAttribLocation(_programmeID, 1, "tcoord"); _gl.BindAttribLocation(_programmeID, 2, "colour"); _gl.LinkProgram(_programmeID); _gl.GetProgram(_programmeID, ProgramPropertyARB.LinkStatus, out status); if (status != (int)GLEnum.True) { DumpProgrammeError(); Status = false; return; } Status = true; }
public SceneWindow() { InitializeComponent(); if (CommandArguments.TryGetArgument("ether")) { SceneWindowContainer.Children.Remove(OpenGL_Viewport); } else { SceneWindowContainer.Children.Remove(Ether_Viewport); Renderer = new OpenGLRenderer(OpenGL_Viewport); Unloaded += OnUnload; Loaded += OnLoad; } }
static void Main(string[] args) { IGalRenderer Renderer = new OpenGLRenderer(); Switch Ns = new Switch(Renderer); if (args.Length == 1) { if (Directory.Exists(args[0])) { string[] RomFsFiles = Directory.GetFiles(args[0], "*.istorage"); if (RomFsFiles.Length > 0) { Console.WriteLine("Loading as cart with RomFS."); Ns.Os.LoadCart(args[0], RomFsFiles[0]); } else { Console.WriteLine("Loading as cart WITHOUT RomFS."); Ns.Os.LoadCart(args[0]); } } else if (File.Exists(args[0])) { Console.WriteLine("Loading as homebrew."); Ns.Os.LoadProgram(args[0]); } } else { Console.WriteLine("Please specify the folder with the NSOs/IStorage or a NSO/NRO."); } using (GLScreen Screen = new GLScreen(Ns, Renderer)) { Screen.Run(60.0); } Ns.Os.StopAllProcesses(); Ns.Dispose(); }
public Blend(CompositeOperationState compositeOperation, OpenGLRenderer renderer) { GLEnum srcRgb = ConvertBlend(compositeOperation.SrcRgb); GLEnum dstRgb = ConvertBlend(compositeOperation.DstRgb); GLEnum srcAlpha = ConvertBlend(compositeOperation.SrcAlpha); GLEnum dstAlpha = ConvertBlend(compositeOperation.DstAlpha); if (srcRgb == GLEnum.InvalidEnum || dstRgb == GLEnum.InvalidEnum || srcAlpha == GLEnum.InvalidEnum || dstAlpha == GLEnum.InvalidEnum) { srcRgb = GLEnum.One; dstRgb = GLEnum.OneMinusSrcAlpha; srcAlpha = GLEnum.One; dstAlpha = GLEnum.OneMinusDstAlpha; } _srcRgb = srcRgb; _dstRgb = dstRgb; _srcAlpha = srcAlpha; _dstAlpha = dstAlpha; _renderer = renderer; }
public FragUniforms(Paint paint, Scissor scissor, float width, float fringe, float strokeThr, OpenGLRenderer renderer) { Matrix3X2 <float> invtransform; _innerCol = paint.InnerColour.Premult(); _outerCol = paint.OuterColour.Premult(); if (scissor.Extent.X < -0.5f || scissor.Extent.Y < -0.5f) { _scissorMat = new Matrix3X4 <float>(); _scissorExt = new Vector2D <float>(1.0f); _scissorScale = new Vector2D <float>(1.0f); } else { _ = Matrix3X2.Invert(scissor.Transform, out invtransform); _scissorMat = new Matrix3X4 <float>(invtransform); _scissorExt = scissor.Extent; _scissorScale = new Vector2D <float>( MathF.Sqrt(scissor.Transform.M11 * scissor.Transform.M11 + scissor.Transform.M21 * scissor.Transform.M21) / fringe, MathF.Sqrt(scissor.Transform.M21 * scissor.Transform.M21 + scissor.Transform.M22 * scissor.Transform.M22) / fringe ); } _extent = paint.Extent; _strokeMult = (width * 0.5f + fringe * 0.5f) / fringe; _strokeThr = strokeThr; if (paint.Image != 0) { ref var tex = ref renderer.TextureManager.FindTexture(paint.Image); if (tex.Id == 0) { _type = (int)ShaderType.Fillgrad; _radius = paint.Radius; _feather = paint.Feather; _texType = 0; _ = Matrix3X2.Invert(paint.Transform, out invtransform); } else { if (tex.HasFlag(ImageFlags.FlipY)) { Matrix3X2 <float> m1, m2; m1 = Matrix3X2.CreateTranslation(new Vector2D <float>(0.0f, _extent.Y * 0.5f)); m1 = Transforms.NvgTransforms.Multiply(m1, paint.Transform); m2 = Matrix3X2.CreateScale(new Vector2D <float>(1.0f, -1.0f)); m2 = Transforms.NvgTransforms.Multiply(m2, m1); m1 = Matrix3X2.CreateTranslation(new Vector2D <float>(0.0f, -_extent.Y * 0.5f)); m1 = Transforms.NvgTransforms.Multiply(m1, m2); _ = Matrix3X2.Invert(m1, out invtransform); } else { _ = Matrix3X2.Invert(paint.Transform, out invtransform); } _type = (int)ShaderType.FillImg; if (tex.TextureType == Texture.Rgba) { _texType = tex.HasFlag(ImageFlags.Premultiplied) ? 0 : 1; } else { _texType = 2; } _radius = _feather = 0.0f; } }
public TextureBuffer(OpenGLRenderer renderer, TextureCreateInfo info) : base(info) { _renderer = renderer; }
public IntermmediatePool(OpenGLRenderer renderer) { _renderer = renderer; _entries = new List <TextureView>(); }
public FillCall(int image, Path[] paths, int triangleOffset, int uniformOffset, CompositeOperationState op, OpenGLRenderer renderer) : base(image, paths, triangleOffset, 4, uniformOffset, new Blend(op, renderer), renderer) { }
public void InitializeData() { this.loading.LoadComplete += this.Loading_LoadComplete; this.UpdateLoadingText(LoadType.Data, 100); this.UpdateLoadingText(LoadType.Graphics, 0); switch (ShanghaiEXE.Config.RenderEngine) { case "DirectX9": var dgRenderer = new MySlimDG(this); dgRenderer.ProgressUpdated += this.TextureLoad_ProgressUpdate; this.dg = dgRenderer; break; case "OpenGL": var renderControl = new OpenGLRenderer("ShaGResource.tcd", "sasanasi", "{0}.png", this.scaleFactorX, this.scaleFactorY); renderControl.GetPanel().SetSize(Constants.ScreenSize); renderControl.ProgressUpdated += this.TextureLoad_ProgressUpdate; this.dg = renderControl; var renderPanel = renderControl.GetPanel(); if (ShanghaiEXE.Config.Fullscreen) { renderPanel.SizeChanged += (s, e) => { renderPanel.Location = new Point((this.Width - renderPanel.Width) / 2, (this.Height - renderPanel.Height) / 2); }; this.SizeChanged += (s, e) => { renderPanel.Location = new Point((this.Width - renderPanel.Width) / 2, (this.Height - renderPanel.Height) / 2); }; } this.Controls.Add(renderPanel); this.BackColor = Color.Black; break; } ShanghaiEXE.measurer = this.dg.GetTextMeasurer(); this.UpdateLoadingText(LoadType.Audio, 25); switch (ShanghaiEXE.Config.AudioEngine) { case "DirectSound": this.ad = new MyAudio(this.volSE); break; case "OpenAL": this.ad = new OpenALAudio(this.volSE, "ShaSResource.tcd", "sasanasi", "{0}.wav"); break; } this.ad.BGMVolume = this.volBGM; this.ad.SoundEffectVolume = this.volSE; this.ad.ProgressUpdated += this.AudioLoad_ProgressUpdate; this.UpdateLoadingText(LoadType.Audio, 100); this.UpdateLoadingText(LoadType.Device, 25); this.mk = new MyKeyBoard(this); this.co = new Controller(this); Input.FormSetting(this); this.UpdateLoadingText(LoadType.Device, 100); this.UpdateLoadingText(LoadType.Save, 25); this.savedata = new SaveData(); this.savedata.Init(); this.UpdateLoadingText(LoadType.Save, 50); this.savedata.Load(this); this.UpdateLoadingText(LoadType.Save, 100); }
static void Main(string[] args) { Console.Title = "Ryujinx Console"; IGalRenderer Renderer = new OpenGLRenderer(); IAalOutput AudioOut = new OpenALAudioOut(); Switch Ns = new Switch(Renderer, AudioOut); Config.Read(Ns.Log); Ns.Log.Updated += ConsoleLog.PrintLog; if (args.Length == 1) { if (Directory.Exists(args[0])) { string[] RomFsFiles = Directory.GetFiles(args[0], "*.istorage"); if (RomFsFiles.Length == 0) { RomFsFiles = Directory.GetFiles(args[0], "*.romfs"); } if (RomFsFiles.Length > 0) { Console.WriteLine("Loading as cart with RomFS."); Ns.LoadCart(args[0], RomFsFiles[0]); } else { Console.WriteLine("Loading as cart WITHOUT RomFS."); Ns.LoadCart(args[0]); } } else if (File.Exists(args[0])) { Console.WriteLine("Loading as homebrew."); Ns.LoadProgram(args[0]); } } else { Console.WriteLine("Please specify the folder with the NSOs/IStorage or a NSO/NRO."); } using (GLScreen Screen = new GLScreen(Ns, Renderer)) { Ns.Finish += (Sender, Args) => { Screen.Exit(); }; Screen.Run(60.0); } Environment.Exit(0); }
public TextureCopy(OpenGLRenderer renderer) { _renderer = renderer; IntermmediatePool = new IntermmediatePool(renderer); }
public StrokeCall(int image, Path[] paths, int uniformOffset, CompositeOperationState op, OpenGLRenderer renderer) : base(image, paths, 0, 0, uniformOffset, new Blend(op, renderer), renderer) { }
public unsafe Texture(OpenGLRenderer renderer) : this() { _renderer = renderer; _gl = _renderer.Gl; }
public TrianglesCall(int image, Blend blend, int triangleOffset, uint triangleCount, int uniformOffset, OpenGLRenderer renderer) : base(image, null, triangleOffset, triangleCount, uniformOffset, blend, renderer) { }
public Game(GameWindow window) { renderer = graphicsFactory.CreateOpenGLRenderer(window); input = inputFactory.CreateOpenGLInputHandler(); this.window = window; }