예제 #1
0
    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)
예제 #2
0
파일: path.py 프로젝트: neodyme60/raypy
 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)
예제 #3
0
파일: bsdf.py 프로젝트: neodyme60/raypy
 def __init__(self, count: int, sample: Sample):
     self.nSamples = count
     self.componentOffset = sample.add_1d(self.nSamples)
     self.dirOffset = sample.add_2d(self.nSamples)