Gotcha, speed is a very good reason. Will try and write that optimization wiki soon
cheers Daniel Salazar 3Developer.com On Thu, Sep 8, 2011 at 5:00 AM, Brecht Van Lommel <[email protected]> wrote: > Hi, > > I've added a note about performance of ray visibility options. > > There's a few reasons it's useful on an object level, it works more > like the existing restrict render setting, it can be used to control > ray visibility of dupligroups, or to use a simplified object for > indirect light rays. But also in terms of performance it's quicker to > skip an entire object, especially if we ever add support for lazy > loading of object geometry. > > I can also see a few reasons to have it at material level, but a > shader node setup can be used for that, though it's less efficient. > > Brecht. > > On Thu, Sep 8, 2011 at 6:28 AM, Daniel Salazar - 3Developer.com > <[email protected]> wrote: >> Also, would be fantastic (and important for TDs!) to document on the >> wiki about how settings affect speed for optimization purposes. I'd be >> glad to do it but need a bit of a hint to start >> >> Daniel Salazar >> 3Developer.com >> >> >> >> On Wed, Sep 7, 2011 at 10:24 PM, Daniel Salazar - 3Developer.com >> <[email protected]> wrote: >>> Hi! I'm curious about why is Ray Visibility an ob level set of options >>> instead of material or even closure level? or should we use Light >>> Paths for that? >>> >>> cheers >>> >>> Daniel Salazar >>> 3Developer.com >>> >>> >>> >>> On Thu, Sep 1, 2011 at 9:53 AM, Brecht Van Lommel >>> <[email protected]> wrote: >>>> Revision: 39844 >>>> >>>> http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39844 >>>> Author: blendix >>>> Date: 2011-09-01 15:53:36 +0000 (Thu, 01 Sep 2011) >>>> Log Message: >>>> ----------- >>>> Cycles: >>>> * Add max diffuse/glossy/transmission bounces >>>> * Add separate min/max for transparent depth >>>> * Updated/added some presets that use these options >>>> * Add ray visibility options for objects, to hide them from >>>> camera/diffuse/glossy/transmission/shadow rays >>>> * Is singular ray output for light path node >>>> >>>> Details here: >>>> http://wiki.blender.org/index.php/Dev:2.5/Source/Render/Cycles/LightPaths >>>> >>>> Modified Paths: >>>> -------------- >>>> branches/cycles/intern/cycles/app/cycles_xml.cpp >>>> branches/cycles/intern/cycles/blender/addon/presets.py >>>> branches/cycles/intern/cycles/blender/addon/properties.py >>>> branches/cycles/intern/cycles/blender/addon/ui.py >>>> branches/cycles/intern/cycles/blender/blender_object.cpp >>>> branches/cycles/intern/cycles/blender/blender_shader.cpp >>>> branches/cycles/intern/cycles/blender/blender_sync.cpp >>>> branches/cycles/intern/cycles/bvh/bvh.cpp >>>> branches/cycles/intern/cycles/bvh/bvh.h >>>> branches/cycles/intern/cycles/bvh/bvh_build.cpp >>>> branches/cycles/intern/cycles/bvh/bvh_node.h >>>> branches/cycles/intern/cycles/kernel/kernel.cpp >>>> branches/cycles/intern/cycles/kernel/kernel_bvh.h >>>> branches/cycles/intern/cycles/kernel/kernel_path.h >>>> branches/cycles/intern/cycles/kernel/kernel_textures.h >>>> branches/cycles/intern/cycles/kernel/kernel_types.h >>>> branches/cycles/intern/cycles/kernel/osl/nodes/node_light_path.osl >>>> branches/cycles/intern/cycles/kernel/osl/osl_shader.cpp >>>> branches/cycles/intern/cycles/kernel/svm/bsdf_transparent.h >>>> branches/cycles/intern/cycles/kernel/svm/svm_light_path.h >>>> branches/cycles/intern/cycles/kernel/svm/svm_noise.h >>>> branches/cycles/intern/cycles/kernel/svm/svm_texture.h >>>> branches/cycles/intern/cycles/kernel/svm/svm_types.h >>>> branches/cycles/intern/cycles/render/integrator.cpp >>>> branches/cycles/intern/cycles/render/integrator.h >>>> branches/cycles/intern/cycles/render/mesh.cpp >>>> branches/cycles/intern/cycles/render/nodes.cpp >>>> branches/cycles/intern/cycles/render/object.cpp >>>> branches/cycles/intern/cycles/render/object.h >>>> branches/cycles/intern/cycles/render/scene.h >>>> >>>> branches/cycles/release/scripts/presets/cycles/integrator/direct_light.py >>>> branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_bsdf_glass.c >>>> branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_light_path.c >>>> >>>> Added Paths: >>>> ----------- >>>> >>>> branches/cycles/release/scripts/presets/cycles/integrator/full_global_illumination.py >>>> >>>> branches/cycles/release/scripts/presets/cycles/integrator/limited_global_illumination.py >>>> >>>> Modified: branches/cycles/intern/cycles/app/cycles_xml.cpp >>>> =================================================================== >>>> --- branches/cycles/intern/cycles/app/cycles_xml.cpp 2011-09-01 >>>> 15:08:32 UTC (rev 39843) >>>> +++ branches/cycles/intern/cycles/app/cycles_xml.cpp 2011-09-01 >>>> 15:53:36 UTC (rev 39844) >>>> @@ -255,8 +255,8 @@ >>>> { >>>> Integrator *integrator = state.scene->integrator; >>>> >>>> - xml_read_int(&integrator->minbounce, node, "min_bounce"); >>>> - xml_read_int(&integrator->maxbounce, node, "max_bounce"); >>>> + xml_read_int(&integrator->min_bounce, node, "min_bounce"); >>>> + xml_read_int(&integrator->max_bounce, node, "max_bounce"); >>>> xml_read_bool(&integrator->no_caustics, node, "no_caustics"); >>>> xml_read_float(&integrator->blur_caustics, node, "blur_caustics"); >>>> } >>>> >>>> Modified: branches/cycles/intern/cycles/blender/addon/presets.py >>>> =================================================================== >>>> --- branches/cycles/intern/cycles/blender/addon/presets.py 2011-09-01 >>>> 15:08:32 UTC (rev 39843) >>>> +++ branches/cycles/intern/cycles/blender/addon/presets.py 2011-09-01 >>>> 15:53:36 UTC (rev 39844) >>>> @@ -33,6 +33,11 @@ >>>> "cycles.max_bounces", >>>> "cycles.min_bounces", >>>> "cycles.no_caustics", >>>> + "cycles.diffuse_bounces", >>>> + "cycles.glossy_bounces", >>>> + "cycles.transmission_bounces", >>>> + "cycles.transparent_min_bounces", >>>> + "cycles.transparent_max_bounces" >>>> ] >>>> >>>> preset_subdir = "cycles/integrator" >>>> >>>> Modified: branches/cycles/intern/cycles/blender/addon/properties.py >>>> =================================================================== >>>> --- branches/cycles/intern/cycles/blender/addon/properties.py 2011-09-01 >>>> 15:08:32 UTC (rev 39843) >>>> +++ branches/cycles/intern/cycles/blender/addon/properties.py 2011-09-01 >>>> 15:53:36 UTC (rev 39844) >>>> @@ -24,7 +24,7 @@ >>>> class CyclesRenderSettings(bpy.types.PropertyGroup): >>>> @classmethod >>>> def register(cls): >>>> - bpy.types.Scene.cycles = PointerProperty(type=cls, name="Cycles >>>> Render Settings", description="Cycles Render Settings") >>>> + bpy.types.Scene.cycles = PointerProperty(type=cls, name="Cycles >>>> Render Settings", description="Cycles render settings") >>>> >>>> cls.device = EnumProperty(name="Device", description="Device to >>>> use for rendering", >>>> items=enums.devices, default="CPU") >>>> @@ -39,18 +39,31 @@ >>>> cls.preview_pause = BoolProperty(name="Pause Preview", >>>> description="Pause all viewport preview renders", >>>> default=False) >>>> >>>> - cls.min_bounces = IntProperty(name="Min Bounces", >>>> description="Minimum number of bounces", >>>> - default=3, min=0, max=1024) >>>> - cls.max_bounces = IntProperty(name="Max Bounces", >>>> description="Maximum number of bounces", >>>> - default=8, min=0, max=1024) >>>> cls.no_caustics = BoolProperty(name="No Caustics", >>>> description="Leave out caustics, resulting in a darker image with less >>>> noise", >>>> default=False) >>>> cls.blur_caustics = FloatProperty(name="Blur Caustics", >>>> description="Blur caustics to reduce noise", >>>> default=0.0, min=0.0, max=1.0) >>>> >>>> - cls.exposure = FloatProperty(name="Exposure", description="Image >>>> brightness scale", >>>> + cls.min_bounces = IntProperty(name="Min Bounces", >>>> description="Minimum number of bounces, setting this lower than the >>>> maximum enables probalistic path termination (faster but noisier)", >>>> + default=3, min=0, max=1024) >>>> + cls.max_bounces = IntProperty(name="Max Bounces", >>>> description="Total maximum number of bounces", >>>> + default=8, min=0, max=1024) >>>> + >>>> + cls.diffuse_bounces = IntProperty(name="Diffuse Bounces", >>>> description="Maximum number of diffuse reflection bounces, bounded by >>>> total maximum", >>>> + default=1024, min=0, max=1024) >>>> + cls.glossy_bounces = IntProperty(name="Glossy Bounces", >>>> description="Maximum number of glossy reflection bounces, bounded by total >>>> maximum", >>>> + default=1024, min=0, max=1024) >>>> + cls.transmission_bounces = IntProperty(name="Transmission >>>> Bounces", description="Maximum number of transmission bounces, bounded by >>>> total maximum", >>>> + default=1024, min=0, max=1024) >>>> + >>>> + cls.transparent_min_bounces = IntProperty(name="Transparent Min >>>> Bounces", description="Minimum number of transparent bounces, setting this >>>> lower than the maximum enables probalistic path termination (faster but >>>> noisier)", >>>> + default=8, min=0, max=1024) >>>> + cls.transparent_max_bounces = IntProperty(name="Transparent Max >>>> Bounces", description="Maximum number of transparent bounces", >>>> + default=8, min=0, max=1024) >>>> + >>>> + cls.film_exposure = FloatProperty(name="Exposure", >>>> description="Image brightness scale", >>>> default=1.0, min=0.0, max=10.0) >>>> - cls.transparent = BoolProperty(name="Transparent", >>>> description="World background is transparent", >>>> + cls.film_transparent = BoolProperty(name="Transparent", >>>> description="World background is transparent", >>>> default=False) >>>> >>>> cls.filter_type = EnumProperty(name="Filter Type", >>>> description="Pixel filter type", >>>> @@ -81,7 +94,7 @@ >>>> class CyclesCameraSettings(bpy.types.PropertyGroup): >>>> @classmethod >>>> def register(cls): >>>> - bpy.types.Camera.cycles = PointerProperty(type=cls, name="Cycles >>>> Camera Settings", description="Cycles Camera Settings") >>>> + bpy.types.Camera.cycles = PointerProperty(type=cls, name="Cycles >>>> Camera Settings", description="Cycles camera settings") >>>> >>>> cls.lens_radius = FloatProperty(name="Lens radius", >>>> description="Lens radius for depth of field", >>>> default=0.0, min=0.0, max=10.0) >>>> @@ -93,7 +106,7 @@ >>>> class CyclesMaterialSettings(bpy.types.PropertyGroup): >>>> @classmethod >>>> def register(cls): >>>> - bpy.types.Material.cycles = PointerProperty(type=cls, >>>> name="Cycles Material Settings", description="Cycles Material Settings") >>>> + bpy.types.Material.cycles = PointerProperty(type=cls, >>>> name="Cycles Material Settings", description="Cycles material settings") >>>> >>>> @classmethod >>>> def unregister(cls): >>>> @@ -102,18 +115,33 @@ >>>> class CyclesWorldSettings(bpy.types.PropertyGroup): >>>> @classmethod >>>> def register(cls): >>>> - bpy.types.World.cycles = PointerProperty(type=cls, name="Cycles >>>> World Settings", description="Cycles World Settings") >>>> + bpy.types.World.cycles = PointerProperty(type=cls, name="Cycles >>>> World Settings", description="Cycles world settings") >>>> >>>> @classmethod >>>> def unregister(cls): >>>> del bpy.types.World.cycles >>>> >>>> +class CyclesVisibilitySettings(bpy.types.PropertyGroup): >>>> + @classmethod >>>> + def register(cls): >>>> + bpy.types.Object.cycles_visibility = PointerProperty(type=cls, >>>> name="Cycles Visibility Settings", description="Cycles visibility >>>> settings") >>>> + >>>> + cls.camera = BoolProperty(name="Camera", description="Object >>>> visibility for camera rays", default=True) >>>> + cls.diffuse = BoolProperty(name="Diffuse", description="Object >>>> visibility for diffuse reflection rays", default=True) >>>> + cls.glossy = BoolProperty(name="Glossy", description="Object >>>> visibility for glossy reflection rays", default=True) >>>> + cls.transmission = BoolProperty(name="Transmission", >>>> description="Object visibility for transmission rays", default=True) >>>> + cls.shadow = BoolProperty(name="Shadow", description="Object >>>> visibility for shadow rays", default=True) >>>> + >>>> + @classmethod >>>> + def unregister(cls): >>>> + del bpy.types.Object.cycles_visibility >>>> + >>>> class CyclesMeshSettings(bpy.types.PropertyGroup): >>>> @classmethod >>>> def register(cls): >>>> - bpy.types.Mesh.cycles = PointerProperty(type=cls, name="Cycles >>>> Mesh Settings", description="Cycles Mesh Settings") >>>> - bpy.types.Curve.cycles = PointerProperty(type=cls, name="Cycles >>>> Mesh Settings", description="Cycles Mesh Settings") >>>> - bpy.types.MetaBall.cycles = PointerProperty(type=cls, >>>> name="Cycles Mesh Settings", description="Cycles Mesh Settings") >>>> + bpy.types.Mesh.cycles = PointerProperty(type=cls, name="Cycles >>>> Mesh Settings", description="Cycles mesh settings") >>>> + bpy.types.Curve.cycles = PointerProperty(type=cls, name="Cycles >>>> Mesh Settings", description="Cycles mesh settings") >>>> + bpy.types.MetaBall.cycles = PointerProperty(type=cls, >>>> name="Cycles Mesh Settings", description="Cycles mesh settings") >>>> >>>> cls.displacement_method = EnumProperty(name="Displacement Method", >>>> description="Method to use for the displacement", >>>> items=enums.displacement_methods, default="BUMP") >>>> @@ -124,12 +152,15 @@ >>>> @classmethod >>>> def unregister(cls): >>>> del bpy.types.Mesh.cycles >>>> + del bpy.types.Curve.cycles >>>> + del bpy.types.MetaBall.cycles >>>> >>>> def register(): >>>> bpy.utils.register_class(CyclesRenderSettings) >>>> bpy.utils.register_class(CyclesCameraSettings) >>>> bpy.utils.register_class(CyclesMaterialSettings) >>>> bpy.utils.register_class(CyclesWorldSettings) >>>> + bpy.utils.register_class(CyclesVisibilitySettings) >>>> bpy.utils.register_class(CyclesMeshSettings) >>>> >>>> def unregister(): >>>> @@ -138,4 +169,5 @@ >>>> bpy.utils.unregister_class(CyclesMaterialSettings) >>>> bpy.utils.unregister_class(CyclesWorldSettings) >>>> bpy.utils.unregister_class(CyclesMeshSettings) >>>> + bpy.utils.unregister_class(CyclesVisibilitySettings) >>>> >>>> >>>> Modified: branches/cycles/intern/cycles/blender/addon/ui.py >>>> =================================================================== >>>> --- branches/cycles/intern/cycles/blender/addon/ui.py 2011-09-01 >>>> 15:08:32 UTC (rev 39843) >>>> +++ branches/cycles/intern/cycles/blender/addon/ui.py 2011-09-01 >>>> 15:53:36 UTC (rev 39844) >>>> @@ -42,6 +42,7 @@ >>>> >>>> class CyclesRender_PT_integrator(CyclesButtonsPanel, Panel): >>>> bl_label = "Integrator" >>>> + bl_options = {'DEFAULT_CLOSED'} >>>> >>>> def draw(self, context): >>>> layout = self.layout >>>> @@ -58,15 +59,29 @@ >>>> >>>> col = split.column() >>>> sub = col.column(align=True) >>>> - sub.prop(cscene, "passes", text="Render Passes") >>>> - sub.prop(cscene, "preview_passes") >>>> - col.prop(cscene, "no_caustics") >>>> + sub.label(text="Passes:") >>>> + sub.prop(cscene, "passes", text="Render") >>>> + sub.prop(cscene, "preview_passes", text="Preview") >>>> >>>> + sub = col.column(align=True) >>>> + sub.label("Tranparency:") >>>> + sub.prop(cscene, "transparent_max_bounces", text="Max") >>>> + sub.prop(cscene, "transparent_min_bounces", text="Min") >>>> + sub.prop(cscene, "no_caustics") >>>> + >>>> col = split.column() >>>> + >>>> >>>> @@ Diff output truncated at 10240 characters. @@ >>>> _______________________________________________ >>>> Bf-blender-cvs mailing list >>>> [email protected] >>>> http://lists.blender.org/mailman/listinfo/bf-blender-cvs >>>> >>> >> _______________________________________________ >> Bf-committers mailing list >> [email protected] >> http://lists.blender.org/mailman/listinfo/bf-committers >> > _______________________________________________ > Bf-committers mailing list > [email protected] > http://lists.blender.org/mailman/listinfo/bf-committers > _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
