[Bf-blender-cvs] [c1ba58c] blender2.8: Merge branch 'master' into blender2.8

Bastien Montagne noreply at git.blender.org
Mon Nov 7 15:46:45 CET 2016


Commit: c1ba58c44dd771770037707cd06eb312e015280f
Author: Bastien Montagne
Date:   Mon Nov 7 15:46:27 2016 +0100
Branches: blender2.8
https://developer.blender.org/rBc1ba58c44dd771770037707cd06eb312e015280f

Merge branch 'master' into blender2.8

Conflicts:
	intern/cycles/blender/addon/properties.py

===================================================================



===================================================================

diff --cc intern/cycles/blender/addon/properties.py
index 86a0e1c,27c9b92..3888cde
--- a/intern/cycles/blender/addon/properties.py
+++ b/intern/cycles/blender/addon/properties.py
@@@ -1087,6 -1094,146 +1094,103 @@@ class CyclesCurveRenderSettings(bpy.typ
          del bpy.types.Scene.cycles_curves
  
  
 -class CyclesCurveSettings(bpy.types.PropertyGroup):
 -    @classmethod
 -    def register(cls):
 -        bpy.types.ParticleSettings.cycles = PointerProperty(
 -                name="Cycles Hair Settings",
 -                description="Cycles hair settings",
 -                type=cls,
 -                )
 -        cls.radius_scale = FloatProperty(
 -                name="Radius Scaling",
 -                description="Multiplier of width properties",
 -                min=0.0, max=1000.0,
 -                default=0.01,
 -                )
 -        cls.root_width = FloatProperty(
 -                name="Root Size",
 -                description="Strand's width at root",
 -                min=0.0, max=1000.0,
 -                default=1.0,
 -                )
 -        cls.tip_width = FloatProperty(
 -                name="Tip Multiplier",
 -                description="Strand's width at tip",
 -                min=0.0, max=1000.0,
 -                default=0.0,
 -                )
 -        cls.shape = FloatProperty(
 -                name="Strand Shape",
 -                description="Strand shape parameter",
 -                min=-1.0, max=1.0,
 -                default=0.0,
 -                )
 -        cls.use_closetip = BoolProperty(
 -                name="Close tip",
 -                description="Set tip radius to zero",
 -                default=True,
 -                )
 -
 -    @classmethod
 -    def unregister(cls):
 -        del bpy.types.ParticleSettings.cycles
 -
 -
+ class CyclesDeviceSettings(bpy.types.PropertyGroup):
+     @classmethod
+     def register(cls):
+         cls.id = StringProperty(name="ID")
+         cls.name = StringProperty(name="Name")
+         cls.use = BoolProperty(name="Use", default=True)
+         cls.type = EnumProperty(name="Type", items=enum_device_type, default='CUDA')
+ 
+ 
+ class CyclesPreferences(bpy.types.AddonPreferences):
+     bl_idname = __package__
+ 
+     def get_device_types(self, context):
+         import _cycles
+         has_cuda, has_opencl = _cycles.get_device_types()
+         list = [('NONE', "None", "Don't use compute device", 0)]
+         if has_cuda:
+             list.append(('CUDA', "CUDA", "Use CUDA for GPU acceleration", 1))
+         if has_opencl:
+             list.append(('OPENCL', "OpenCL", "Use OpenCL for GPU acceleration", 2))
+         return list
+ 
+     compute_device_type = EnumProperty(
+             name="Compute Device Type",
+             description="Device to use for computation (rendering with Cycles)",
+             items=get_device_types,
+             )
+ 
+     devices = bpy.props.CollectionProperty(type=CyclesDeviceSettings)
+ 
+     def get_devices(self):
+         import _cycles
+         # Layout of the device tuples: (Name, Type, Internal ID, Persistent ID)
+         device_list = _cycles.available_devices()
+ 
+         cuda_devices = []
+         opencl_devices = []
+         for device in device_list:
+             if not device[1] in {'CUDA', 'OPENCL'}:
+                 continue
+ 
+             entry = None
+             # Try to find existing Device entry
+             for dev in self.devices:
+                 if dev.id == device[2] and dev.type == device[1]:
+                     entry = dev
+                     break
+             # Create new entry if no existing one was found
+             if not entry:
+                 entry = self.devices.add()
+                 entry.id   = device[2]
+                 entry.name = device[0]
+                 entry.type = device[1]
+ 
+             # Sort entries into lists
+             if entry.type == 'CUDA':
+                 cuda_devices.append(entry)
+             elif entry.type == 'OPENCL':
+                 opencl_devices.append(entry)
+         return cuda_devices, opencl_devices
+ 
+ 
+     def has_active_device(self):
+         import _cycles
+         device_list = _cycles.available_devices()
+         for device in device_list:
+             if device[1] != self.compute_device_type:
+                 continue
+             if any(dev.use and dev.id == device[2] for dev in self.devices):
+                 return True
+         return False
+ 
+ 
+     def draw_impl(self, layout, context):
+         layout.label(text="Compute Device:")
+         layout.row().prop(self, "compute_device_type", expand=True)
+ 
+         cuda_devices, opencl_devices = self.get_devices()
+         row = layout.row()
+ 
+         if cuda_devices:
+             col = row.column(align=True)
+             col.label(text="CUDA devices:")
+             for device in cuda_devices:
+                 col.prop(device, "use", text=device.name, toggle=True)
+ 
+         if opencl_devices:
+             col = row.column(align=True)
+             col.label(text="OpenCL devices:")
+             for device in opencl_devices:
+                 col.prop(device, "use", text=device.name, toggle=True)
+ 
+ 
+     def draw(self, context):
+         self.draw_impl(self.layout, context)
+ 
+ 
  def register():
      bpy.utils.register_class(CyclesRenderSettings)
      bpy.utils.register_class(CyclesCameraSettings)
@@@ -1097,6 -1244,9 +1201,8 @@@
      bpy.utils.register_class(CyclesMeshSettings)
      bpy.utils.register_class(CyclesObjectSettings)
      bpy.utils.register_class(CyclesCurveRenderSettings)
 -    bpy.utils.register_class(CyclesCurveSettings)
+     bpy.utils.register_class(CyclesDeviceSettings)
+     bpy.utils.register_class(CyclesPreferences)
  
  
  def unregister():
@@@ -1109,3 -1259,6 +1215,5 @@@
      bpy.utils.unregister_class(CyclesObjectSettings)
      bpy.utils.unregister_class(CyclesVisibilitySettings)
      bpy.utils.unregister_class(CyclesCurveRenderSettings)
 -    bpy.utils.unregister_class(CyclesCurveSettings)
+     bpy.utils.unregister_class(CyclesDeviceSettings)
+     bpy.utils.unregister_class(CyclesPreferences)




More information about the Bf-blender-cvs mailing list