protected virtual PathIntegrator CreatePathBuffer(int maxPath, RayEngineScene scene, ImageFilmBase pixelDevice, IPrimarySpaceSampler sampler, SurfaceSampler ss) { var integrator = new PathIntegrator(); integrator.Init(maxPath, scene, pixelDevice, sampler, ss); return integrator; }
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; }
protected void Init(IIntersectionEngine device, bool lowLatency, ImageFilmBase pixelDevice, IPrimarySpaceSampler sampler, SurfaceSampler ss) { intersectionDevice = device; // Sample buffer var sampleBufferSize = lowLatency ? (SAMPLE_BUFFER_SIZE / 4) : SAMPLE_BUFFER_SIZE; sampleBuffer = new SampleBuffer(sampleBufferSize); width = sampler.Width; height = sampler.Height; var rayBufferSize = lowLatency ? (RayBuffer.RayBufferSize / 8) : RayBuffer.RayBufferSize; this.sampler = sampler; _pathRayProcessors = new PathIntegrator[DeviceRenderBufferCount]; rayBuffers = new RayBuffer[DeviceRenderBufferCount]; for (int i = 0; i < DeviceRenderBufferCount; i++) { rayBuffers[i] = new RayBuffer(rayBufferSize); rayBuffers[i].UserData = threadIndex; _pathRayProcessors[i] = this.CreatePathBuffer(scene.MaxPaths, scene, pixelDevice, sampler, ss); } renderThread = null; }
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 NativeRenderThread(int index, CpuBvhIntersectionEngine device, RayEngineScene scn, bool lowLatency, ImageFilm pixelDevice, ISampler sampler, SurfaceSampler ss) : base(index, scn) { intersectionDevice = device; // Allocate buffers // Sample buffer var sampleBufferSize = lowLatency ? (SAMPLE_BUFFER_SIZE / 4) : SAMPLE_BUFFER_SIZE; sampleBuffer = new SampleBuffer(sampleBufferSize); // Ray buffer (small buffers work well with CPU) var rayBufferSize = 1024; this.sampler = sampler; _pathRayProcessor = new PathBuffer(scn.MaxPaths, scn, pixelDevice, new SamplingContext() { PrimarySpaceSampler = sampler, SurfaceSampler = ss, LightSampler = new LightSampler(scn)}); this.pixelDevice = pixelDevice; rayBuffer = new RayBuffer(rayBufferSize); renderThread = null; }
public VolumePathTracerPath CreateVolumePath(SurfaceSampler ss) { return new VolumePathTracerPath() { SurfaceSampler = ss }; }
public PathSamplerBase CreatePath(SurfaceSampler ss) { return new PathTracerPath() { SurfaceSampler = ss }; //return new VolumePathTracerPath() { SurfaceSampler = ss}; }
protected abstract PathBufferBase CreatePathBuffer(int maxPath, IRayEngineScene scene, IImageFilm pixelDevice, ISampler sampler, SurfaceSampler ss);
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); }