def RequestSamples(self, sampler: Sampler, sample: Sample, scene: Scene): if self.strategy == LightStrategy.SAMPLE_ALL_UNIFORM: # Allocate and request samples for sampling all lights nLights = len(scene.lights) self.lightSampleOffsets = [LightSampleOffsets] * nLights self.bsdfSampleOffsets = [BSDFSampleOffsets] * nLights for i in range(nLights): light = scene.lights[i] nSamples = light.samples_count # if (sampler) # nSamples = sampler->RoundSize(nSamples); self.lightSampleOffsets[i] = LightSampleOffsets(nSamples, sample) self.bsdfSampleOffsets[i] = BSDFSampleOffsets(nSamples, sample) self.lightNumOffset = -1 else: # Allocate and request samples for sampling one light self.lightSampleOffsets = [LightSampleOffsets] * 1 self.lightSampleOffsets[0] = LightSampleOffsets(1, sample) self.lightNumOffset = sample.add_1d(1) self.bsdfSampleOffsets = [BSDFSampleOffsets] * 1 self.bsdfSampleOffsets[0] = BSDFSampleOffsets(1, sample)
def RequestSamples(self, sampler: Sampler, sample: Sample, scene: Scene): for i in range(self.maxDepth): self.lightSampleOffsets[i] = LightSampleOffsets(1, sample) self.lightNumOffset[i] = sample.add_1d(1) self.bsdfSampleOffsets[i] = BSDFSampleOffsets(1, sample) self.pathSampleOffsets[i] = BSDFSampleOffsets(1, sample)
def __init__(self, count: int, sample: Sample): self.nSamples = count self.componentOffset = sample.add_1d(self.nSamples) self.dirOffset = sample.add_2d(self.nSamples)