Exemple #1
0
 private void HandleThreadDone(object sender, EventArgs e)
 {
     finishedThreads++;
     if (finishedThreads == Constants.NumberOfThreads)
     {
         stopwatch.Stop();
         Debug.WriteLine("Finished rendering in: " + stopwatch.ElapsedMilliseconds + " ms.");
         Tonemapper.SaveImage("C:\\Test\\" + scene.FileName, scene.Film);
     }
 }
    // Use this for initialization
    void Start()
    {
        blurEffect         = camera.GetComponent <BlurEffect>();
        bloomEffect        = camera.GetComponent <BloomEffect>();
        dofEffect          = camera.GetComponent <DOFEffect>();
        colorgradingEffect = camera.GetComponent <ColorGrading>();
        tonemappingEffect  = camera.GetComponent <Tonemapper>();
        oilpaintingEffect  = camera.GetComponent <OilPaintingEffect>();
        aoEffect           = camera.GetComponent <MSSAO>();

        UpdateValues();
    }
Exemple #3
0
        public void Render()
        {
            DepthOfFieldCamera cam = ((DepthOfFieldCamera)scene.Camera);

            for (int i = 0; i < scene.Film.Width; i++)
            {
                for (int j = 0; j < scene.Film.Height; j++)
                {
                    Color         pixelColor       = new Color(0, 0, 0);
                    List <Sample> appertureSamples = ((ISampler)Activator.CreateInstance(Constants.Sampler)).CreateSamples();
                    for (int s = 0; s < 24; s++)
                    {
                        Ray ray = cam.CreateRay(i, j, appertureSamples);

                        pixelColor.Append(scene.Integrator.Integrate(ray, scene.Objects, scene.Lights, null, null, null));
                    }
                    pixelColor.VoidDiv(24f);
                    scene.Film.SetPixel(i, j, pixelColor);
                }
            }
            Tonemapper.SaveImage("C:\\Test\\" + scene.FileName, scene.Film);
        }
 public TonemapperValue(TonemapperParameter parameter)
 {
     value         = parameter.value;
     overrideState = parameter.overrideState;
 }
 public TonemapperValue(Tonemapper value, bool overrideState)
 {
     this.value         = value;
     this.overrideState = overrideState;
 }
    public override void InitializeParameters()
    {
        //gradingMode
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.gradingMode.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.gradingMode.overrideState))
        {
            m_tempSettings.gradingMode.overrideState = true;
        }
        else
        {
            m_tempSettings.gradingMode.overrideState = false;
        }
        fromGradingMode = m_fromSettings != null && m_fromSettings.active && m_fromSettings.gradingMode.overrideState ? m_fromSettings.gradingMode.value : m_tempSettings.gradingMode.value;
        toGradingMode   = m_toSettings != null && m_toSettings.active && m_toSettings.gradingMode.overrideState ? m_toSettings.gradingMode.value : m_tempSettings.gradingMode.value;

        //externalLut
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.externalLut.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.externalLut.overrideState))
        {
            m_tempSettings.externalLut.overrideState = true;
        }
        else
        {
            m_tempSettings.externalLut.overrideState = false;
        }
        fromExternalLut = m_fromSettings != null && m_fromSettings.active && m_fromSettings.externalLut.overrideState ? m_fromSettings.externalLut.value : m_tempSettings.externalLut.value;
        toExternalLut   = m_toSettings != null && m_toSettings.active && m_toSettings.externalLut.overrideState ? m_toSettings.externalLut.value : m_tempSettings.externalLut.value;

        //tonemapper
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.tonemapper.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.tonemapper.overrideState))
        {
            m_tempSettings.tonemapper.overrideState = true;
        }
        else
        {
            m_tempSettings.tonemapper.overrideState = false;
        }
        fromTonemapper = m_fromSettings != null && m_fromSettings.active && m_fromSettings.tonemapper.overrideState ? m_fromSettings.tonemapper.value : m_tempSettings.tonemapper.value;
        toTonemapper   = m_toSettings != null && m_toSettings.active && m_toSettings.tonemapper.overrideState ? m_toSettings.tonemapper.value : m_tempSettings.tonemapper.value;

        //toneCurveToeStrength
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.toneCurveToeStrength.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.toneCurveToeStrength.overrideState))
        {
            m_tempSettings.toneCurveToeStrength.overrideState = true;
        }
        else
        {
            m_tempSettings.toneCurveToeStrength.overrideState = false;
        }
        toneCurveToeStrength.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.toneCurveToeStrength.overrideState ? m_fromSettings.toneCurveToeStrength.value : m_tempSettings.toneCurveToeStrength.value;
        toneCurveToeStrength.y = m_toSettings != null && m_toSettings.active && m_toSettings.toneCurveToeStrength.overrideState ? m_toSettings.toneCurveToeStrength.value : m_tempSettings.toneCurveToeStrength.value;

        //toneCurveToeLength
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.toneCurveToeLength.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.toneCurveToeLength.overrideState))
        {
            m_tempSettings.toneCurveToeLength.overrideState = true;
        }
        else
        {
            m_tempSettings.toneCurveToeLength.overrideState = false;
        }
        toneCurveToeLength.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.toneCurveToeLength.overrideState ? m_fromSettings.toneCurveToeLength.value : m_tempSettings.toneCurveToeLength.value;
        toneCurveToeLength.y = m_toSettings != null && m_toSettings.active && m_toSettings.toneCurveToeLength.overrideState ? m_toSettings.toneCurveToeLength.value : m_tempSettings.toneCurveToeLength.value;

        //toneCurveShoulderStrength
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.toneCurveShoulderStrength.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.toneCurveShoulderStrength.overrideState))
        {
            m_tempSettings.toneCurveShoulderStrength.overrideState = true;
        }
        else
        {
            m_tempSettings.toneCurveShoulderStrength.overrideState = false;
        }
        toneCurveShoulderStrength.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.toneCurveShoulderStrength.overrideState ? m_fromSettings.toneCurveShoulderStrength.value : m_tempSettings.toneCurveShoulderStrength.value;
        toneCurveShoulderStrength.y = m_toSettings != null && m_toSettings.active && m_toSettings.toneCurveShoulderStrength.overrideState ? m_toSettings.toneCurveShoulderStrength.value : m_tempSettings.toneCurveShoulderStrength.value;

        //toneCurveShoulderLength
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.toneCurveShoulderLength.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.toneCurveShoulderLength.overrideState))
        {
            m_tempSettings.toneCurveShoulderLength.overrideState = true;
        }
        else
        {
            m_tempSettings.toneCurveShoulderLength.overrideState = false;
        }
        toneCurveShoulderLength.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.toneCurveShoulderLength.overrideState ? m_fromSettings.toneCurveShoulderLength.value : m_tempSettings.toneCurveShoulderLength.value;
        toneCurveShoulderLength.y = m_toSettings != null && m_toSettings.active && m_toSettings.toneCurveShoulderLength.overrideState ? m_toSettings.toneCurveShoulderLength.value : m_tempSettings.toneCurveShoulderLength.value;

        //toneCurveShoulderAngle
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.toneCurveShoulderAngle.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.toneCurveShoulderAngle.overrideState))
        {
            m_tempSettings.toneCurveShoulderAngle.overrideState = true;
        }
        else
        {
            m_tempSettings.toneCurveShoulderAngle.overrideState = false;
        }
        toneCurveShoulderAngle.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.toneCurveShoulderAngle.overrideState ? m_fromSettings.toneCurveShoulderAngle.value : m_tempSettings.toneCurveShoulderAngle.value;
        toneCurveShoulderAngle.y = m_toSettings != null && m_toSettings.active && m_toSettings.toneCurveShoulderAngle.overrideState ? m_toSettings.toneCurveShoulderAngle.value : m_tempSettings.toneCurveShoulderAngle.value;

        //toneCurveGamma
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.toneCurveGamma.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.toneCurveGamma.overrideState))
        {
            m_tempSettings.toneCurveGamma.overrideState = true;
        }
        else
        {
            m_tempSettings.toneCurveGamma.overrideState = false;
        }
        toneCurveGamma.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.toneCurveGamma.overrideState ? m_fromSettings.toneCurveGamma.value : m_tempSettings.toneCurveGamma.value;
        toneCurveGamma.y = m_toSettings != null && m_toSettings.active && m_toSettings.toneCurveGamma.overrideState ? m_toSettings.toneCurveGamma.value : m_tempSettings.toneCurveGamma.value;

        //ldrLut
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.ldrLut.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.ldrLut.overrideState))
        {
            m_tempSettings.ldrLut.overrideState = true;
        }
        else
        {
            m_tempSettings.ldrLut.overrideState = false;
        }
        fromLdrLut = m_fromSettings != null && m_fromSettings.active && m_fromSettings.ldrLut.overrideState ? m_fromSettings.ldrLut.value : m_tempSettings.ldrLut.value;
        toLdrLut   = m_toSettings != null && m_toSettings.active && m_toSettings.ldrLut.overrideState ? m_toSettings.ldrLut.value : m_tempSettings.ldrLut.value;

        //ldrLutContribution
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.ldrLutContribution.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.ldrLutContribution.overrideState))
        {
            m_tempSettings.ldrLutContribution.overrideState = true;
        }
        else
        {
            m_tempSettings.ldrLutContribution.overrideState = false;
        }
        ldrLutContribution.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.ldrLutContribution.overrideState ? m_fromSettings.ldrLutContribution.value : m_tempSettings.ldrLutContribution.value;
        ldrLutContribution.y = m_toSettings != null && m_toSettings.active && m_toSettings.ldrLutContribution.overrideState ? m_toSettings.ldrLutContribution.value : m_tempSettings.ldrLutContribution.value;

        //temperature
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.temperature.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.temperature.overrideState))
        {
            m_tempSettings.temperature.overrideState = true;
        }
        else
        {
            m_tempSettings.temperature.overrideState = false;
        }
        temperature.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.temperature.overrideState ? m_fromSettings.temperature.value : m_tempSettings.temperature.value;
        temperature.y = m_toSettings != null && m_toSettings.active && m_toSettings.temperature.overrideState ? m_toSettings.temperature.value : m_tempSettings.temperature.value;

        //tint
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.tint.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.tint.overrideState))
        {
            m_tempSettings.tint.overrideState = true;
        }
        else
        {
            m_tempSettings.tint.overrideState = false;
        }
        tint.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.tint.overrideState ? m_fromSettings.tint.value : m_tempSettings.tint.value;
        tint.y = m_toSettings != null && m_toSettings.active && m_toSettings.tint.overrideState ? m_toSettings.tint.value : m_tempSettings.tint.value;

        //colorFilter
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.colorFilter.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.colorFilter.overrideState))
        {
            m_tempSettings.colorFilter.overrideState = true;
        }
        else
        {
            m_tempSettings.colorFilter.overrideState = false;
        }
        fromColorFilter = m_fromSettings != null && m_fromSettings.active && m_fromSettings.colorFilter.overrideState ? m_fromSettings.colorFilter.value : m_tempSettings.colorFilter.value;
        toColorFilter   = m_toSettings != null && m_toSettings.active && m_toSettings.colorFilter.overrideState ? m_toSettings.colorFilter.value : m_tempSettings.colorFilter.value;

        //hueShift
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.hueShift.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.hueShift.overrideState))
        {
            m_tempSettings.hueShift.overrideState = true;
        }
        else
        {
            m_tempSettings.hueShift.overrideState = false;
        }
        hueShift.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.hueShift.overrideState ? m_fromSettings.hueShift.value : m_tempSettings.hueShift.value;
        hueShift.y = m_toSettings != null && m_toSettings.active && m_toSettings.hueShift.overrideState ? m_toSettings.hueShift.value : m_tempSettings.hueShift.value;

        //saturation
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.saturation.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.saturation.overrideState))
        {
            m_tempSettings.saturation.overrideState = true;
        }
        else
        {
            m_tempSettings.saturation.overrideState = false;
        }
        saturation.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.saturation.overrideState ? m_fromSettings.saturation.value : m_tempSettings.saturation.value;
        saturation.y = m_toSettings != null && m_toSettings.active && m_toSettings.saturation.overrideState ? m_toSettings.saturation.value : m_tempSettings.saturation.value;

        //brightness
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.brightness.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.brightness.overrideState))
        {
            m_tempSettings.brightness.overrideState = true;
        }
        else
        {
            m_tempSettings.brightness.overrideState = false;
        }
        brightness.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.brightness.overrideState ? m_fromSettings.brightness.value : m_tempSettings.brightness.value;
        brightness.y = m_toSettings != null && m_toSettings.active && m_toSettings.brightness.overrideState ? m_toSettings.brightness.value : m_tempSettings.brightness.value;

        //postExposure
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.postExposure.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.postExposure.overrideState))
        {
            m_tempSettings.postExposure.overrideState = true;
        }
        else
        {
            m_tempSettings.postExposure.overrideState = false;
        }
        postExposure.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.postExposure.overrideState ? m_fromSettings.postExposure.value : m_tempSettings.postExposure.value;
        postExposure.y = m_toSettings != null && m_toSettings.active && m_toSettings.postExposure.overrideState ? m_toSettings.postExposure.value : m_tempSettings.postExposure.value;

        //contrast
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.contrast.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.contrast.overrideState))
        {
            m_tempSettings.contrast.overrideState = true;
        }
        else
        {
            m_tempSettings.contrast.overrideState = false;
        }
        contrast.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.contrast.overrideState ? m_fromSettings.contrast.value : m_tempSettings.contrast.value;
        contrast.y = m_toSettings != null && m_toSettings.active && m_toSettings.contrast.overrideState ? m_toSettings.contrast.value : m_tempSettings.contrast.value;

        //mixerRedOutRedIn
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.mixerRedOutRedIn.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.mixerRedOutRedIn.overrideState))
        {
            m_tempSettings.mixerRedOutRedIn.overrideState = true;
        }
        else
        {
            m_tempSettings.mixerRedOutRedIn.overrideState = false;
        }
        mixerRedOutRedIn.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.mixerRedOutRedIn.overrideState ? m_fromSettings.mixerRedOutRedIn.value : m_tempSettings.mixerRedOutRedIn.value;
        mixerRedOutRedIn.y = m_toSettings != null && m_toSettings.active && m_toSettings.mixerRedOutRedIn.overrideState ? m_toSettings.mixerRedOutRedIn.value : m_tempSettings.mixerRedOutRedIn.value;

        //mixerRedOutGreenIn
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.mixerRedOutGreenIn.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.mixerRedOutGreenIn.overrideState))
        {
            m_tempSettings.mixerRedOutGreenIn.overrideState = true;
        }
        else
        {
            m_tempSettings.mixerRedOutGreenIn.overrideState = false;
        }
        mixerRedOutGreenIn.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.mixerRedOutGreenIn.overrideState ? m_fromSettings.mixerRedOutGreenIn.value : m_tempSettings.mixerRedOutGreenIn.value;
        mixerRedOutGreenIn.y = m_toSettings != null && m_toSettings.active && m_toSettings.mixerRedOutGreenIn.overrideState ? m_toSettings.mixerRedOutGreenIn.value : m_tempSettings.mixerRedOutGreenIn.value;

        //mixerRedOutBlueIn
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.mixerRedOutBlueIn.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.mixerRedOutBlueIn.overrideState))
        {
            m_tempSettings.mixerRedOutBlueIn.overrideState = true;
        }
        else
        {
            m_tempSettings.mixerRedOutBlueIn.overrideState = false;
        }
        mixerRedOutBlueIn.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.mixerRedOutBlueIn.overrideState ? m_fromSettings.mixerRedOutBlueIn.value : m_tempSettings.mixerRedOutBlueIn.value;
        mixerRedOutBlueIn.y = m_toSettings != null && m_toSettings.active && m_toSettings.mixerRedOutBlueIn.overrideState ? m_toSettings.mixerRedOutBlueIn.value : m_tempSettings.mixerRedOutBlueIn.value;

        //mixerGreenOutRedIn
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.mixerGreenOutRedIn.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.mixerGreenOutRedIn.overrideState))
        {
            m_tempSettings.mixerGreenOutRedIn.overrideState = true;
        }
        else
        {
            m_tempSettings.mixerGreenOutRedIn.overrideState = false;
        }
        mixerGreenOutRedIn.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.mixerGreenOutRedIn.overrideState ? m_fromSettings.mixerGreenOutRedIn.value : m_tempSettings.mixerGreenOutRedIn.value;
        mixerGreenOutRedIn.y = m_toSettings != null && m_toSettings.active && m_toSettings.mixerGreenOutRedIn.overrideState ? m_toSettings.mixerGreenOutRedIn.value : m_tempSettings.mixerGreenOutRedIn.value;

        //mixerGreenOutGreenIn
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.mixerGreenOutGreenIn.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.mixerGreenOutGreenIn.overrideState))
        {
            m_tempSettings.mixerGreenOutGreenIn.overrideState = true;
        }
        else
        {
            m_tempSettings.mixerGreenOutGreenIn.overrideState = false;
        }
        mixerGreenOutGreenIn.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.mixerGreenOutGreenIn.overrideState ? m_fromSettings.mixerGreenOutGreenIn.value : m_tempSettings.mixerGreenOutGreenIn.value;
        mixerGreenOutGreenIn.y = m_toSettings != null && m_toSettings.active && m_toSettings.mixerGreenOutGreenIn.overrideState ? m_toSettings.mixerGreenOutGreenIn.value : m_tempSettings.mixerGreenOutGreenIn.value;

        //mixerGreenOutBlueIn
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.mixerGreenOutBlueIn.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.mixerGreenOutBlueIn.overrideState))
        {
            m_tempSettings.mixerGreenOutBlueIn.overrideState = true;
        }
        else
        {
            m_tempSettings.mixerGreenOutBlueIn.overrideState = false;
        }
        mixerGreenOutBlueIn.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.mixerGreenOutBlueIn.overrideState ? m_fromSettings.mixerGreenOutBlueIn.value : m_tempSettings.mixerGreenOutBlueIn.value;
        mixerGreenOutBlueIn.y = m_toSettings != null && m_toSettings.active && m_toSettings.mixerGreenOutBlueIn.overrideState ? m_toSettings.mixerGreenOutBlueIn.value : m_tempSettings.mixerGreenOutBlueIn.value;

        //mixerBlueOutRedIn
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.mixerBlueOutRedIn.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.mixerBlueOutRedIn.overrideState))
        {
            m_tempSettings.mixerBlueOutRedIn.overrideState = true;
        }
        else
        {
            m_tempSettings.mixerBlueOutRedIn.overrideState = false;
        }
        mixerBlueOutRedIn.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.mixerBlueOutRedIn.overrideState ? m_fromSettings.mixerBlueOutRedIn.value : m_tempSettings.mixerBlueOutRedIn.value;
        mixerBlueOutRedIn.y = m_toSettings != null && m_toSettings.active && m_toSettings.mixerBlueOutRedIn.overrideState ? m_toSettings.mixerBlueOutRedIn.value : m_tempSettings.mixerBlueOutRedIn.value;

        //mixerBlueOutGreenIn
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.mixerBlueOutGreenIn.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.mixerBlueOutGreenIn.overrideState))
        {
            m_tempSettings.mixerBlueOutGreenIn.overrideState = true;
        }
        else
        {
            m_tempSettings.mixerBlueOutGreenIn.overrideState = false;
        }
        mixerBlueOutGreenIn.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.mixerBlueOutGreenIn.overrideState ? m_fromSettings.mixerBlueOutGreenIn.value : m_tempSettings.mixerBlueOutGreenIn.value;
        mixerBlueOutGreenIn.y = m_toSettings != null && m_toSettings.active && m_toSettings.mixerBlueOutGreenIn.overrideState ? m_toSettings.mixerBlueOutGreenIn.value : m_tempSettings.mixerBlueOutGreenIn.value;

        //mixerBlueOutBlueIn
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.mixerBlueOutBlueIn.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.mixerBlueOutBlueIn.overrideState))
        {
            m_tempSettings.mixerBlueOutBlueIn.overrideState = true;
        }
        else
        {
            m_tempSettings.mixerBlueOutBlueIn.overrideState = false;
        }
        mixerBlueOutBlueIn.x = m_fromSettings != null && m_fromSettings.active && m_fromSettings.mixerBlueOutBlueIn.overrideState ? m_fromSettings.mixerBlueOutBlueIn.value : m_tempSettings.mixerBlueOutBlueIn.value;
        mixerBlueOutBlueIn.y = m_toSettings != null && m_toSettings.active && m_toSettings.mixerBlueOutBlueIn.overrideState ? m_toSettings.mixerBlueOutBlueIn.value : m_tempSettings.mixerBlueOutBlueIn.value;

        //lift
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.lift.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.lift.overrideState))
        {
            m_tempSettings.lift.overrideState = true;
        }
        else
        {
            m_tempSettings.lift.overrideState = false;
        }
        fromLift = m_fromSettings != null && m_fromSettings.active && m_fromSettings.lift.overrideState ? m_fromSettings.lift.value : m_tempSettings.lift.value;
        toLift   = m_toSettings != null && m_toSettings.active && m_toSettings.lift.overrideState ? m_toSettings.lift.value : m_tempSettings.lift.value;

        //gamma
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.gamma.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.gamma.overrideState))
        {
            m_tempSettings.gamma.overrideState = true;
        }
        else
        {
            m_tempSettings.gamma.overrideState = false;
        }
        fromGamma = m_fromSettings != null && m_fromSettings.active && m_fromSettings.gamma.overrideState ? m_fromSettings.gamma.value : m_tempSettings.gamma.value;
        toGamma   = m_toSettings != null && m_toSettings.active && m_toSettings.gamma.overrideState ? m_toSettings.gamma.value : m_tempSettings.gamma.value;

        //gain
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.gain.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.gain.overrideState))
        {
            m_tempSettings.gain.overrideState = true;
        }
        else
        {
            m_tempSettings.gain.overrideState = false;
        }
        fromGain = m_fromSettings != null && m_fromSettings.active && m_fromSettings.gain.overrideState ? m_fromSettings.gain.value : m_tempSettings.gain.value;
        toGain   = m_toSettings != null && m_toSettings.active && m_toSettings.gain.overrideState ? m_toSettings.gain.value : m_tempSettings.gain.value;

        //masterCurve
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.masterCurve.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.masterCurve.overrideState))
        {
            m_tempSettings.masterCurve.overrideState = true;
        }
        else
        {
            m_tempSettings.masterCurve.overrideState = false;
        }
        fromMasterCurve = m_fromSettings != null && m_fromSettings.active && m_fromSettings.masterCurve.overrideState ? m_fromSettings.masterCurve.value : m_tempSettings.masterCurve.value;
        toMasterCurve   = m_toSettings != null && m_toSettings.active && m_toSettings.masterCurve.overrideState ? m_toSettings.masterCurve.value : m_tempSettings.masterCurve.value;

        //redCurve
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.redCurve.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.redCurve.overrideState))
        {
            m_tempSettings.redCurve.overrideState = true;
        }
        else
        {
            m_tempSettings.redCurve.overrideState = false;
        }
        fromRedCurve = m_fromSettings != null && m_fromSettings.active && m_fromSettings.redCurve.overrideState ? m_fromSettings.redCurve.value : m_tempSettings.redCurve.value;
        toRedCurve   = m_toSettings != null && m_toSettings.active && m_toSettings.redCurve.overrideState ? m_toSettings.redCurve.value : m_tempSettings.redCurve.value;

        //greenCurve
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.greenCurve.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.greenCurve.overrideState))
        {
            m_tempSettings.greenCurve.overrideState = true;
        }
        else
        {
            m_tempSettings.greenCurve.overrideState = false;
        }
        fromGreenCurve = m_fromSettings != null && m_fromSettings.active && m_fromSettings.greenCurve.overrideState ? m_fromSettings.greenCurve.value : m_tempSettings.greenCurve.value;
        toGreenCurve   = m_toSettings != null && m_toSettings.active && m_toSettings.greenCurve.overrideState ? m_toSettings.greenCurve.value : m_tempSettings.greenCurve.value;

        //blueCurve
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.blueCurve.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.blueCurve.overrideState))
        {
            m_tempSettings.blueCurve.overrideState = true;
        }
        else
        {
            m_tempSettings.blueCurve.overrideState = false;
        }
        fromBlueCurve = m_fromSettings != null && m_fromSettings.active && m_fromSettings.blueCurve.overrideState ? m_fromSettings.blueCurve.value : m_tempSettings.blueCurve.value;
        toBlueCurve   = m_toSettings != null && m_toSettings.active && m_toSettings.blueCurve.overrideState ? m_toSettings.blueCurve.value : m_tempSettings.blueCurve.value;

        //hueVsHueCurve
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.hueVsHueCurve.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.hueVsHueCurve.overrideState))
        {
            m_tempSettings.hueVsHueCurve.overrideState = true;
        }
        else
        {
            m_tempSettings.hueVsHueCurve.overrideState = false;
        }
        fromHueVsHueCurve = m_fromSettings != null && m_fromSettings.active && m_fromSettings.hueVsHueCurve.overrideState ? m_fromSettings.hueVsHueCurve.value : m_tempSettings.hueVsHueCurve.value;
        toHueVsHueCurve   = m_toSettings != null && m_toSettings.active && m_toSettings.hueVsHueCurve.overrideState ? m_toSettings.hueVsHueCurve.value : m_tempSettings.hueVsHueCurve.value;

        //hueVsSatCurve
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.hueVsSatCurve.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.hueVsSatCurve.overrideState))
        {
            m_tempSettings.hueVsSatCurve.overrideState = true;
        }
        else
        {
            m_tempSettings.hueVsSatCurve.overrideState = false;
        }
        fromHueVsSatCurve = m_fromSettings != null && m_fromSettings.active && m_fromSettings.hueVsSatCurve.overrideState ? m_fromSettings.hueVsSatCurve.value : m_tempSettings.hueVsSatCurve.value;
        toHueVsSatCurve   = m_toSettings != null && m_toSettings.active && m_toSettings.hueVsSatCurve.overrideState ? m_toSettings.hueVsSatCurve.value : m_tempSettings.hueVsSatCurve.value;

        //satVsSatCurve
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.satVsSatCurve.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.satVsSatCurve.overrideState))
        {
            m_tempSettings.satVsSatCurve.overrideState = true;
        }
        else
        {
            m_tempSettings.satVsSatCurve.overrideState = false;
        }
        fromSatVsSatCurve = m_fromSettings != null && m_fromSettings.active && m_fromSettings.satVsSatCurve.overrideState ? m_fromSettings.satVsSatCurve.value : m_tempSettings.satVsSatCurve.value;
        toSatVsSatCurve   = m_toSettings != null && m_toSettings.active && m_toSettings.satVsSatCurve.overrideState ? m_toSettings.satVsSatCurve.value : m_tempSettings.satVsSatCurve.value;

        //lumVsSatCurve
        if ((m_fromSettings != null && m_fromSettings.active && m_fromSettings.lumVsSatCurve.overrideState) ||
            (m_toSettings != null && m_toSettings.active && m_toSettings.lumVsSatCurve.overrideState))
        {
            m_tempSettings.lumVsSatCurve.overrideState = true;
        }
        else
        {
            m_tempSettings.lumVsSatCurve.overrideState = false;
        }
        fromLumVsSatCurve = m_fromSettings != null && m_fromSettings.active && m_fromSettings.lumVsSatCurve.overrideState ? m_fromSettings.lumVsSatCurve.value : m_tempSettings.lumVsSatCurve.value;
        toLumVsSatCurve   = m_toSettings != null && m_toSettings.active && m_toSettings.lumVsSatCurve.overrideState ? m_toSettings.lumVsSatCurve.value : m_tempSettings.lumVsSatCurve.value;
    }
Exemple #7
0
        public void Render()
        {
            stopwatch = new Stopwatch();
            stopwatch.Reset();
            if (Constants.NumberOfThreads == 1) //One Thread
            {
                stopwatch.Start();
                ISampler sampler = (ISampler)Activator.CreateInstance(Constants.Sampler);
                if (Constants.IsSamplingOn && Constants.NumberOfSamples > 0)
                {
                    Console.WriteLine("Using Supersampling with: " + Constants.NumberOfSamples + " samples!");

                    for (int i = 0; i < scene.Film.Width; i++)
                    {
                        for (int j = 0; j < scene.Film.Height; j++)
                        {
                            Color pixelColor = new Color(0, 0, 0);
                            List <List <Sample> > subPathSamples = new List <List <Sample> >();
                            List <LightSample>    lightSamples   = new List <LightSample>();
                            List <Sample>         samples        = sampler.CreateSamples();
                            if (scene.Integrator is PathTraceIntegrator)
                            {
                                lightSamples = sampler.GetLightSamples(Constants.MaximalPathLength);
                                for (int s = 0; s < Constants.MaximalPathLength; s++)
                                {
                                    subPathSamples.Add(sampler.CreateSamples());
                                }
                                foreach (Sample sample in samples)
                                {
                                    Ray ray = scene.Camera.CreateRay(i + sample.X, j + sample.Y);
                                    pixelColor.Append(scene.Integrator.Integrate(ray, scene.Objects, scene.Lights, sampler, subPathSamples, Randomizer.PickRandomLightSample(lightSamples)));
                                }
                            }
                            else
                            {
                                lightSamples = sampler.GetLightSamples();
                                foreach (Sample sample in samples)
                                {
                                    Ray ray = scene.Camera.CreateRay(i + sample.X, j + sample.Y);
                                    pixelColor.Append(scene.Integrator.Integrate(ray, scene.Objects, scene.Lights, sampler, subPathSamples, Randomizer.PickRandomLightSample(lightSamples)));
                                }
                            }

                            pixelColor.VoidDiv(samples.Count);
                            scene.Film.SetPixel(i, j, pixelColor);
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < scene.Film.Width; i++)
                    {
                        for (int j = 0; j < scene.Film.Height; j++)
                        {
                            Ray   ray   = scene.Camera.CreateRay(i, j);
                            Color color = scene.Integrator.Integrate(ray, scene.Objects, scene.Lights, null, null, null);
                            scene.Film.SetPixel(i, j, color);
                        }
                    }
                }
                stopwatch.Stop();
                Debug.WriteLine("Finished rendering in: " + stopwatch.ElapsedMilliseconds + " ms.");
                Tonemapper.SaveImage("C:\\Test\\" + scene.FileName, scene.Film);
            }
            else //More than 1 thread
            {
                if (Constants.IsSamplingOn && Constants.NumberOfSamples > 0)
                {
                    Debug.WriteLine("Start rendering with: " + Constants.NumberOfThreads + " Threads");
                    stopwatch.Start();
                    finishedThreads = 0;
                    for (int i = 0; i < Constants.NumberOfThreads; i++)
                    {
                        ISampler sampler = new StratifiedSampler();
                        MultiThreadingRenderer renderer = new MultiThreadingRenderer(i, scene.Objects, scene.Lights,
                                                                                     scene.Camera,
                                                                                     scene.Film);
                        renderer.ThreadDone += HandleThreadDone;
                        Thread t = new Thread(renderer.Render);
                        t.Start();
                    }
                }
                else
                {
                    stopwatch.Start();
                    finishedThreads = 0;
                    for (int i = 0; i < Constants.NumberOfThreads; i++)
                    {
                        MultiThreadingRenderer renderer = new MultiThreadingRenderer(i, scene.Objects, scene.Lights,
                                                                                     scene.Camera,
                                                                                     scene.Film);
                        renderer.ThreadDone += HandleThreadDone;
                        Thread t = new Thread(renderer.Render);
                        t.Start();
                    }
                }
            }
        }