Beispiel #1
0
class RPR_RenderDevices(bpy.types.PropertyGroup):
    """ Properties for render devices: CPU, GPUs """
    def update_states(self, context):
        if len(pyrpr.Context.gpu_devices) > 0:
            # selecting first gpu if no gpu and cpu is selected
            if not any(self.gpu_states) and not self.cpu_state:
                self.gpu_states[0] = True
        else:
            # if no GPU then cpu always should be enabled
            self.cpu_state = True
        on_settings_changed(self, context)

        # after changing devices its good to reset PreviewEngine and
        # PreviewEngine.rpr_context will be created with updated devices
        from rprblender.engine.preview_engine import PreviewEngine
        PreviewEngine.reset()

    gpu_states: BoolVectorProperty(
        name="",
        description="Use GPU device for rendering",
        size=16,
        # Only first GPU is enabled by default
        default=tuple(i == 0 and bool(pyrpr.Context.gpu_devices)
                      for i in range(16)),
        update=update_states)
    cpu_state: BoolProperty(
        name="",
        description="Use CPU device for rendering",
        default=not pyrpr.Context.gpu_devices,  # True if no GPUs are available
        update=update_states)
    cpu_threads: IntProperty(
        name="CPU Threads",
        description=
        "Number of CPU threads for render, optimal value is about the number of physical CPU cores",
        min=1,
        max=utils.get_cpu_threads_number(),
        default=utils.get_cpu_threads_number(),
        update=on_settings_changed,
    )

    @property
    def available_gpu_states(self):
        return (self.gpu_states[i]
                for i in range(len(pyrpr.Context.gpu_devices)))

    def count(self):
        res = int(self.cpu_state)
        res += sum(int(state) for state in self.available_gpu_states)
        return res

    def has_gpu(self):
        return any(bool(state) for state in self.available_gpu_states)
Beispiel #2
0
def send_data(data: dict):
    if is_error:
        return

    # System/Platform Information (excluding GPU information)
    data['OS Name'] = platform.system()
    data['OS Version'] = platform.version()
    data['OS Arch'] = platform.architecture()[0]
    data['OS Lang'], data['OS Locale'] = get_system_language()
    data['OS TZ'] = time.strftime("%z", time.gmtime())

    if pyrpr.Context.cpu_device:
        data['CPU Name'] = pyrpr.Context.cpu_device['name']
        data['CPU Cores'] = utils.get_cpu_threads_number()

    for i, gpu in enumerate(pyrpr.Context.gpu_devices):
        data[f'GPU{i} Name'] = gpu['name']

    # ProRender Job/Workload Information
    data['ProRender Core Version'] = utils.core_ver_str()
    data['ProRender Plugin Version'] = "%d.%d.%d" % bl_info['version']
    data['Host App'] = "Blender"
    data['App Version'] = ".".join(str(v) for v in bpy.app.version)

    log("send_data", data)
    thread = threading.Thread(target=_send_data_thread, args=(data, ))
    thread.start()