Ejemplo n.º 1
0
        private void OpenGLControl_OpenGLDraw(object sender, OpenGLEventArgs args)
        {
            if (!_PreviewRender)
            {
                return;
            }

            var gl = args.OpenGL;

            if (_Clean)
            {
                _ShaderRenderer.Clean(gl);
                _Clean = false;
                _ShaderRenderer.Start();
            }

            _ShaderRenderer.Render(gl);

            if (_ShaderRenderer._ImageDepthSet)
            {
                SetFocusDistance(_ShaderRenderer._ImageDepth);
                _ShaderRenderer._ImageDepthSet = false;
                _CameraDirty = true;
            }
        }
Ejemplo n.º 2
0
        private void OpenGLControl_OpenGLDraw(object sender, OpenGLEventArgs args)
        {
            var gl = args.OpenGL;

            if (_Clean)
            {
                InitialiseRenderer();
                _ShaderRenderer.Clean(gl);
                _Clean = false;
                _ShaderRenderer.Start();
            }
            _ShaderRenderer.Render(gl);
        }
Ejemplo n.º 3
0
        private void InitialiseRenderer()
        {
            _RaytracerOptions                 = new RaytracerOptions();
            _RaytracerOptions._DoFEnabled     = false;
            _RaytracerOptions._ShadowsEnabled = true;
            _RaytracerOptions._Reflections    = 1;

            _Scene = new Scene();
            _Scene._FractalSettings._FractalIterations.Clear();
            _Scene._FractalSettings._FractalColours.Clear();
            _Scene._FractalSettings._RenderOptions._Background = 1;
            FractalGradient preview = new FractalGradient();

            preview._GradientSegments[0]._StartColour = _Material;
            preview._Multiplier = 0.0f;
            _Scene._FractalSettings._FractalColours.Add(preview);
            _Scene._Camera._Position = new Vector3(0, 1.5, 1.5);
            _Scene._Camera._Target   = new Vector3(0, 1, 0);

            _PostProcess = new PostProcess();
//            _PostProcess._ToneMappingMode = 3;
            _PostProcess.Initialise(_GL);

            //  Initialise the scene.
            string frag = "";

            _Scene.Compile(_RaytracerOptions, _Scene._FractalSettings._RenderOptions, ref frag);

            _ShaderRenderer = new ShaderRenderer();
            _ShaderRenderer.Compile(_GL, frag, 16);

            int width, height;

            width  = (int)openGlCtrl.ActualWidth;
            height = (int)openGlCtrl.ActualHeight;
            _ShaderRenderer.Initialise(_GL, width, height, _Scene._Camera.GetViewMatrix(), _Scene._Camera.GetPosition(), false);
            _ShaderRenderer.SetShaderVars(_Scene._Camera.GetViewMatrix(), _Scene._Camera.GetPosition(), _Scene._FractalSettings._RenderOptions.GetSunVec3(), _Scene._Camera, _Scene._FractalSettings);
            _ShaderRenderer.SetProgressive(_RaytracerOptions._Progressive);
            _ShaderRenderer.SetPostProcess(_PostProcess);
            _ShaderRenderer.Clean(_GL);
            _ShaderRenderer.Start();
        }
Ejemplo n.º 4
0
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            int width, height;

            GetWidthHeightSelection(out width, out height);

            if (_ShaderRenderer.GetTargetWidth() != width ||
                _ShaderRenderer.GetTargetHeight() != height ||
                _Dirty)
            {
                InitialiseRenderer();
                _Dirty = false;
            }

            _ShaderRenderer.Start();

            // set up animation thread for the camera movement
            _Timer          = new DispatcherTimer();
            _Timer.Interval = TimeSpan.FromMilliseconds(100);
            _Timer.Tick    += this.timer_Tick;
            _Timer.Start();
        }