public NoiseRenderer(ILogger logger, Texture texture) { _texture = texture; _renderer = new Renderer(); _backbufferRenderer = new BackBufferRenderer(logger, _texture, _texture.Width, _texture.Height, false); var fullscreenQuad = new FullScreenQuad(null, _shader); _renderer.AddToScene(fullscreenQuad); }
public PostProcess(ILogger logger, IEnumerable <Texture> inputTextures, Texture outputTexture, Shader effect) { _logger = logger; _inputTextures = inputTextures; _effect = effect; _renderer = new Renderer(); _backbufferRenderer = new BackBufferRenderer(_logger, outputTexture, outputTexture.Width, outputTexture.Height, false); var quad = new FullScreenQuad(_inputTextures, _effect); _renderer.AddToScene(quad); }
private void ToggleBloom() { if (_isBloomEnabled) { _ndcTexture = _worldRenderer.Texture; } else { _ndcTexture = _postprocessTexture; } _ndcRenderer.Clear(); var fullScreenQuad = new FullScreenQuad(new[] { _ndcTexture }, _fullscreenShader); _ndcRenderer.AddToScene(fullScreenQuad); _isBloomEnabled = !_isBloomEnabled; }
public Game( IAppConfig config, ILogger logger, ICamera camera, IWorld world, OpenGlContext context, IRenderer renderer, IRenderer ndcRenderer, IRenderer skyboxRenderer, ISkybox skybox) { _camera = camera; _logger = logger; _config = config; _title = config.WindowTitle; _context = context; ConfigureContext(); _skybox = skybox; _world = world; GL.Enable(EnableCap.DepthTest); GL.Enable(EnableCap.CullFace); GL.CullFace(CullFaceMode.Back); GL.FrontFace(FrontFaceDirection.Cw); GL.ClearColor(Color4.Green); GL.BlendFunc(BlendingFactor.SrcAlpha, BlendingFactor.OneMinusSrcAlpha); _renderer = renderer; _ndcRenderer = ndcRenderer; _skyboxRenderer = skyboxRenderer; _skyboxRenderer.BeforeRender = () => { GL.DepthFunc(DepthFunction.Lequal); GL.CullFace(CullFaceMode.Front); }; _skyboxRenderer.AfterRender = () => { GL.CullFace(CullFaceMode.Back); }; _skyboxRenderer.AddToScene(skybox); _traffic = _world.Traffic; _renderer.AddToScene(_traffic); _renderer.AddToScene(_world.Renderables); _backbufferTexture = new Texture(_config.ResolutionWidth, config.ResolutionHeight); _worldRenderer = new BackBufferRenderer( _logger, _backbufferTexture, _config.ResolutionWidth, _config.ResolutionHeight, useDepthBuffer: true); _postprocessTexture = new Texture(_config.ResolutionWidth, _config.ResolutionHeight); _postprocessPipeline = new PostprocessPipeline(_logger, _config, _worldRenderer.Texture, _postprocessTexture); _fullscreenShader = new Shader("vs.vert", "fs.frag"); _fullscreenShader.SetUniformValue("tex", new IntUniform { Value = 0 }); _ndcTexture = _postprocessTexture; var fullScreenQuad = new FullScreenQuad(new[] { _ndcTexture }, _fullscreenShader); _ndcRenderer.AddToScene(fullScreenQuad); }