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(); }
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; }
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(); } } } }