| 79 | return self.image_buf.to_torch([RESOLUTION, RESOLUTION, 3], falcor.float32) |
| 80 | |
| 81 | def backward(self, blobs, grad_intensities): |
| 82 | self.grad_blobs_buf.from_torch(torch.zeros([BLOB_COUNT, 8]).cuda()) |
| 83 | self.blobs_buf.from_torch(blobs.detach()) |
| 84 | self.grad_image_buf.from_torch(grad_intensities.detach()) |
| 85 | self.device.render_context.wait_for_cuda() |
| 86 | vars = self.backward_pass.globals.backward |
| 87 | vars.blobs = self.blobs_buf |
| 88 | vars.grad_blobs = self.grad_blobs_buf |
| 89 | vars.blob_count = BLOB_COUNT |
| 90 | vars.grad_image = self.grad_image_buf |
| 91 | vars.resolution = falcor.uint2(RESOLUTION, RESOLUTION) |
| 92 | self.backward_pass.execute(threads_x=RESOLUTION, threads_y=RESOLUTION) |
| 93 | self.device.render_context.wait_for_falcor() |
| 94 | return self.grad_blobs_buf.to_torch([BLOB_COUNT, 8], falcor.float32) |
| 95 | |
| 96 | |
| 97 | class Splat2DFunction(torch.autograd.Function): |