public override RenderThread CreateRenderThread(int threadIndex, IntersectionEngine intersectionDevice, RayEngineScene scene, IImageFilm flm,IFrameManager manager, SamplingContext samplingContext) { if (this.film == null) film = flm; return new SpectralRenderThread(threadIndex, intersectionDevice, scene, samplingContext.LowLatency, this.film, samplingContext, manager,sceneManager); }
protected void Init(IIntersectionEngine device, bool lowLatency, IImageFilm pixelDevice, ISampler sampler, SurfaceSampler ss) { this.intersectionDevice = device; // Sample buffer var sampleBufferSize = lowLatency ? (this.SAMPLE_BUFFER_SIZE / 4) : this.SAMPLE_BUFFER_SIZE; this.sampleBuffer = new SampleBuffer(sampleBufferSize); this.width = sampler.Width; this.height = sampler.Height; var rayBufferSize = lowLatency ? (RayBuffer.RayBufferSize / 8) : RayBuffer.RayBufferSize; this.sampler = sampler; this._pathRayProcessors = new PathBufferBase[DeviceRenderBufferCount]; this.rayBuffers = new RayBuffer[DeviceRenderBufferCount]; this.pixelDevice = pixelDevice; for (int i = 0; i < DeviceRenderBufferCount; i++) { this.rayBuffers[i] = new RayBuffer(rayBufferSize); this.rayBuffers[i].UserData = this.threadIndex; this._pathRayProcessors[i] = this.CreatePathBuffer(this.scene.MaxPaths, this.scene, pixelDevice, sampler, ss); this._pathRayProcessors[i].ThreadId = this.threadIndex; } this.renderThread = null; }
public override RenderThread CreateRenderThread(int threadIndex, IntersectionEngine intersectionDevice, RayEngineScene scene, IImageFilm film, IFrameManager frameManager, SamplingContext samplingContext) { if (this.Context == null) { Context = new PhotonMappingContext() { Film = film, surfaceSampler = (SurfaceSampler)samplingContext.SurfaceSampler }; } return new PhotonMappingRenderThread(threadIndex, intersectionDevice, scene, LowLatencySampling, film, Context, samplingContext ,frameManager); }
protected DeviceRenderThreadBase(int index, IIntersectionEngine device, RayEngineScene scn, bool lowLatency, IImageFilm pixelDevice, ISampler sampler, SurfaceSampler ss) : base(index, scn) { this.Init(device, lowLatency, pixelDevice, sampler, ss); }
public void OpenFrame(FrameDescription frameDescription) { this.config = frameDescription; if (GlobalConfiguration.Instance.AdaptiveFilm) this.film = new AdaptiveImageFilm(this.Width, this.Height); else this.film = new ImageFilm(this.Width, this.Height); this.integrator = //new PathTracerIntegrator() //new PathTracerDL() //new RayTracer() new SpectralRayTracer() //new SingleRandomWavelengthPathTracerIntegrator() //new WavelengthClusterPathTracerIntegrator() { Scene = new SceneManager() { w = this.Width, h = this.Height }, film = this.film, rnd = new FastRandom() }; }
public override Core.Threads.RenderThread CreateRenderThread(int threadIndex, Core.Devices.IntersectionEngine intersectionDevice, RayEngineScene scene, IImageFilm film, Managers.IFrameManager manager, Core.SamplingContext samplingContext) { return new DeviceRenderThread<PathBuffer<AptPathSampler>>(threadIndex, intersectionDevice, scene, GlobalConfiguration.Instance.LowLatency, film, samplingContext, manager); }
public override RenderThread CreateRenderThread(int threadIndex, IntersectionEngine intersectionDevice, RayEngineScene scene, IImageFilm film, IFrameManager frameManager, SamplingContext samplingContext) { return new DeviceRenderThread<PathBuffer<VolumePathTracerPath>> (threadIndex, intersectionDevice, scene, LowLatencySampling, film, samplingContext, frameManager); }
public void SetFilm(IImageFilm f) { this.film = f; }
public override RenderThread CreateRenderThread(int threadIndex, IntersectionEngine intersectionDevice, RayEngineScene scene, IImageFilm film, IFrameManager manager, SamplingContext samplingContext) { return new DeviceRenderThread(threadIndex, intersectionDevice, scene, this.LowLatencySampling, film, samplingContext, manager); }
public override RenderThread CreateRenderThread(int threadIndex, IntersectionEngine intersectionDevice, RayEngineScene scene, IImageFilm film, IFrameManager manager, SamplingContext samplingContext) { return new DeviceRenderThread<PathBuffer<UnidirectionalSpectralPathSampler>>(threadIndex, intersectionDevice, scene, LowLatencySampling, film, samplingContext, manager); }
public abstract RenderThread CreateRenderThread(int threadIndex, IntersectionEngine intersectionDevice, RayEngineScene scene, IImageFilm film, IFrameManager manager, SamplingContext samplingContext);
protected abstract PathBufferBase CreatePathBuffer(int maxPath, IRayEngineScene scene, IImageFilm pixelDevice, ISampler sampler, SurfaceSampler ss);
public void SetDevices(DevicesManager dev, IImageFilm flm) { this.devices = dev; this.film = flm; this.RenderThreadsCount = this.devices.RenderThreads.Length; }
protected override PathBufferBase CreatePathBuffer(int maxPath, IRayEngineScene scene, IImageFilm pixelDevice, ISampler sampler, SurfaceSampler ss) { var pathBuffer = new PPMPathBuffer(context); pathBuffer.Init(maxPath, (RayEngineScene)scene, pixelDevice, new SamplingContext() { SurfaceSampler = ss, PrimarySpaceSampler = sampler, LightSampler = new LightSampler((RayEngineScene)scene)}); return pathBuffer; }
public PPMDeviceRenderThread(int index, IIntersectionEngine device, RayEngineScene scn, bool lowLatency, IImageFilm pixelDevice, ISampler sampler, SurfaceSampler ss, PPMContext ctx, IFrameManager frameManager) : base(index, scn) { this.context = ctx; Init(device, lowLatency, pixelDevice, sampler, ss); }