Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Reynish <william@reynish.com>2009-10-14 18:07:32 +0400
committerWilliam Reynish <william@reynish.com>2009-10-14 18:07:32 +0400
commit1847f6198e50118e8e6541dfcb351dda40802511 (patch)
treeff0e27eafbdf7ad27feb19f3e25b0f588c1ea44b
parent1ce959b16e936a4e35808c04a95e1b143f46947d (diff)
After discussion with Campbell, split Scene tab in Scene and Render. This makes a clearer distinction between render and scene settings.
-rw-r--r--release/scripts/ui/buttons_render.py460
-rw-r--r--release/scripts/ui/buttons_scene.py450
-rw-r--r--source/blender/editors/screen/screen_ops.c3
-rw-r--r--source/blender/editors/space_buttons/buttons_context.c1
-rw-r--r--source/blender/editors/space_buttons/buttons_header.c4
-rw-r--r--source/blender/editors/space_buttons/space_buttons.c2
-rw-r--r--source/blender/makesdna/DNA_space_types.h17
-rw-r--r--source/blender/makesrna/intern/rna_space.c1
8 files changed, 486 insertions, 452 deletions
diff --git a/release/scripts/ui/buttons_render.py b/release/scripts/ui/buttons_render.py
new file mode 100644
index 00000000000..a8f1b730ff7
--- /dev/null
+++ b/release/scripts/ui/buttons_render.py
@@ -0,0 +1,460 @@
+
+import bpy
+
+class SceneButtonsPanel(bpy.types.Panel):
+ __space_type__ = 'PROPERTIES'
+ __region_type__ = 'WINDOW'
+ __context__ = "render"
+
+ def poll(self, context):
+ return (context.scene != None)
+
+class RenderButtonsPanel(bpy.types.Panel):
+ __space_type__ = 'PROPERTIES'
+ __region_type__ = 'WINDOW'
+ __context__ = "render"
+ # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here
+
+ def poll(self, context):
+ rd = context.scene.render_data
+ return (rd.use_game_engine==False) and (rd.engine in self.COMPAT_ENGINES)
+
+class RENDER_PT_render(RenderButtonsPanel):
+ __label__ = "Render"
+ COMPAT_ENGINES = set(['BLENDER_RENDER'])
+
+ def draw(self, context):
+ layout = self.layout
+
+ rd = context.scene.render_data
+
+ row = layout.row()
+ row.itemO("screen.render", text="Image", icon='ICON_RENDER_STILL')
+ row.item_booleanO("screen.render", "animation", True, text="Animation", icon='ICON_RENDER_ANIMATION')
+
+ layout.itemR(rd, "display_mode", text="Display")
+
+class RENDER_PT_layers(RenderButtonsPanel):
+ __label__ = "Layers"
+ __default_closed__ = True
+ COMPAT_ENGINES = set(['BLENDER_RENDER'])
+
+ def draw(self, context):
+ layout = self.layout
+
+ scene = context.scene
+ rd = scene.render_data
+
+ row = layout.row()
+ row.template_list(rd, "layers", rd, "active_layer_index", rows=2)
+
+ col = row.column(align=True)
+ col.itemO("scene.render_layer_add", icon='ICON_ZOOMIN', text="")
+ col.itemO("scene.render_layer_remove", icon='ICON_ZOOMOUT', text="")
+
+ rl = rd.layers[rd.active_layer_index]
+
+ split = layout.split()
+
+ col = split.column()
+ col.itemR(scene, "visible_layers", text="Scene")
+ col = split.column()
+ col.itemR(rl, "visible_layers", text="Layer")
+
+ layout.itemR(rl, "light_override", text="Light")
+ layout.itemR(rl, "material_override", text="Material")
+
+ layout.itemS()
+ layout.itemL(text="Include:")
+
+ split = layout.split()
+
+ col = split.column()
+ col.itemR(rl, "zmask")
+ row = col.row()
+ row.itemR(rl, "zmask_negate", text="Negate")
+ row.active = rl.zmask
+ col.itemR(rl, "all_z")
+
+ col = split.column()
+ col.itemR(rl, "solid")
+ col.itemR(rl, "halo")
+ col.itemR(rl, "ztransp")
+
+ col = split.column()
+ col.itemR(rl, "sky")
+ col.itemR(rl, "edge")
+ col.itemR(rl, "strand")
+
+ if rl.zmask:
+ split = layout.split()
+ split.itemL(text="Zmask Layers:")
+ split.column().itemR(rl, "zmask_layers", text="")
+
+ layout.itemS()
+
+ split = layout.split()
+
+ col = split.column()
+ col.itemL(text="Passes:")
+ col.itemR(rl, "pass_combined")
+ col.itemR(rl, "pass_z")
+ col.itemR(rl, "pass_vector")
+ col.itemR(rl, "pass_normal")
+ col.itemR(rl, "pass_uv")
+ col.itemR(rl, "pass_mist")
+ col.itemR(rl, "pass_object_index")
+
+ col = split.column()
+ col.itemL()
+ col.itemR(rl, "pass_color")
+ col.itemR(rl, "pass_diffuse")
+ row = col.row()
+ row.itemR(rl, "pass_specular")
+ row.itemR(rl, "pass_specular_exclude", text="", icon='ICON_X')
+ row = col.row()
+ row.itemR(rl, "pass_shadow")
+ row.itemR(rl, "pass_shadow_exclude", text="", icon='ICON_X')
+ row = col.row()
+ row.itemR(rl, "pass_ao")
+ row.itemR(rl, "pass_ao_exclude", text="", icon='ICON_X')
+ row = col.row()
+ row.itemR(rl, "pass_reflection")
+ row.itemR(rl, "pass_reflection_exclude", text="", icon='ICON_X')
+ row = col.row()
+ row.itemR(rl, "pass_refraction")
+ row.itemR(rl, "pass_refraction_exclude", text="", icon='ICON_X')
+
+class RENDER_PT_shading(RenderButtonsPanel):
+ __label__ = "Shading"
+ COMPAT_ENGINES = set(['BLENDER_RENDER'])
+
+ def draw(self, context):
+ layout = self.layout
+
+ rd = context.scene.render_data
+
+ split = layout.split()
+
+ col = split.column()
+ col.itemR(rd, "render_textures", text="Textures")
+ col.itemR(rd, "render_shadows", text="Shadows")
+ col.itemR(rd, "render_sss", text="Subsurface Scattering")
+ col.itemR(rd, "render_envmaps", text="Environment Map")
+
+ col = split.column()
+ col.itemR(rd, "render_raytracing", text="Ray Tracing")
+ col.itemR(rd, "color_management")
+ col.itemR(rd, "alpha_mode", text="Alpha")
+
+class RENDER_PT_performance(RenderButtonsPanel):
+ __label__ = "Performance"
+ __default_closed__ = True
+ COMPAT_ENGINES = set(['BLENDER_RENDER'])
+
+ def draw(self, context):
+ layout = self.layout
+
+ rd = context.scene.render_data
+
+ split = layout.split()
+
+ col = split.column(align=True)
+ col.itemL(text="Threads:")
+ col.row().itemR(rd, "threads_mode", expand=True)
+ sub = col.column()
+ sub.enabled = rd.threads_mode == 'THREADS_FIXED'
+ sub.itemR(rd, "threads")
+ col.itemL(text="Tiles:")
+ col.itemR(rd, "parts_x", text="X")
+ col.itemR(rd, "parts_y", text="Y")
+
+ col = split.column()
+ col.itemL(text="Memory:")
+ sub = col.column()
+ sub.itemR(rd, "save_buffers")
+ sub.enabled = not rd.full_sample
+ sub = col.column()
+ sub.active = rd.use_compositing
+ sub.itemR(rd, "free_image_textures")
+ sub = col.column()
+ sub.active = rd.render_raytracing
+ sub.itemL(text="Acceleration structure:")
+ sub.itemR(rd, "raytrace_structure", text="")
+ if rd.raytrace_structure == "OCTREE":
+ sub.itemR(rd, "octree_resolution", text="Resolution")
+ else:
+ sub.itemR(rd, "use_instances", text="Instances")
+ sub.itemR(rd, "use_local_coords", text="Local Coordinates")
+
+class RENDER_PT_post_processing(RenderButtonsPanel):
+ __label__ = "Post Processing"
+ __default_closed__ = True
+ COMPAT_ENGINES = set(['BLENDER_RENDER'])
+
+ def draw(self, context):
+ layout = self.layout
+
+ rd = context.scene.render_data
+
+ split = layout.split()
+
+ col = split.column()
+ col.itemR(rd, "use_compositing")
+ col.itemR(rd, "use_sequencer")
+
+ col = split.column()
+ col.itemR(rd, "dither_intensity", text="Dither", slider=True)
+
+ layout.itemS()
+
+ split = layout.split()
+
+ col = split.column()
+ col.itemR(rd, "fields", text="Fields")
+ sub = col.column()
+ sub.active = rd.fields
+ sub.row().itemR(rd, "field_order", expand=True)
+ sub.itemR(rd, "fields_still", text="Still")
+
+ col = split.column()
+ col.itemR(rd, "edge")
+ sub = col.column()
+ sub.active = rd.edge
+ sub.itemR(rd, "edge_threshold", text="Threshold", slider=True)
+ sub.itemR(rd, "edge_color", text="")
+
+class RENDER_PT_output(RenderButtonsPanel):
+ __label__ = "Output"
+ COMPAT_ENGINES = set(['BLENDER_RENDER'])
+
+ def draw(self, context):
+ layout = self.layout
+
+ rd = context.scene.render_data
+
+ layout.itemR(rd, "output_path", text="")
+
+ split = layout.split()
+ col = split.column()
+ col.itemR(rd, "file_format", text="")
+ col.row().itemR(rd, "color_mode", text="Color", expand=True)
+
+ col = split.column()
+ col.itemR(rd, "file_extensions")
+ col.itemR(rd, "use_overwrite")
+ col.itemR(rd, "use_placeholder")
+
+ if rd.file_format in ('AVIJPEG', 'JPEG'):
+ split = layout.split()
+ split.itemR(rd, "quality", slider=True)
+
+ elif rd.file_format == 'OPENEXR':
+ split = layout.split()
+
+ col = split.column()
+ col.itemL(text="Codec:")
+ col.itemR(rd, "exr_codec", text="")
+
+ subsplit = split.split()
+ col = subsplit.column()
+ col.itemR(rd, "exr_half")
+ col.itemR(rd, "exr_zbuf")
+ col = subsplit.column()
+ col.itemR(rd, "exr_preview")
+
+ elif rd.file_format == 'JPEG2000':
+ split = layout.split()
+ col = split.column()
+ col.itemL(text="Depth:")
+ col.row().itemR(rd, "jpeg2k_depth", expand=True)
+
+ col = split.column()
+ col.itemR(rd, "jpeg2k_preset", text="")
+ col.itemR(rd, "jpeg2k_ycc")
+
+ elif rd.file_format in ('CINEON', 'DPX'):
+ split = layout.split()
+ col = split.column()
+ col.itemR(rd, "cineon_log", text="Convert to Log")
+
+ col = split.column(align=True)
+ col.active = rd.cineon_log
+ col.itemR(rd, "cineon_black", text="Black")
+ col.itemR(rd, "cineon_white", text="White")
+ col.itemR(rd, "cineon_gamma", text="Gamma")
+
+ elif rd.file_format == 'TIFF':
+ split = layout.split()
+ split.itemR(rd, "tiff_bit")
+
+class RENDER_PT_encoding(RenderButtonsPanel):
+ __label__ = "Encoding"
+ __default_closed__ = True
+ COMPAT_ENGINES = set(['BLENDER_RENDER'])
+
+ def poll(self, context):
+ rd = context.scene.render_data
+ return rd.file_format in ('FFMPEG', 'XVID', 'H264', 'THEORA')
+
+ def draw(self, context):
+ layout = self.layout
+
+ rd = context.scene.render_data
+
+ split = layout.split()
+
+ split.itemR(rd, "ffmpeg_format")
+ if rd.ffmpeg_format in ('AVI', 'QUICKTIME', 'MKV', 'OGG'):
+ split.itemR(rd, "ffmpeg_codec")
+ else:
+ split.itemL()
+
+ split = layout.split()
+
+ col = split.column()
+ col.itemR(rd, "ffmpeg_video_bitrate")
+ col.itemL(text="Rate:")
+ col.itemR(rd, "ffmpeg_minrate", text="Minimum")
+ col.itemR(rd, "ffmpeg_maxrate", text="Maximum")
+ col.itemR(rd, "ffmpeg_buffersize", text="Buffer")
+
+ col = split.column()
+ col.itemR(rd, "ffmpeg_gopsize")
+ col.itemR(rd, "ffmpeg_autosplit")
+ col.itemL(text="Mux:")
+ col.itemR(rd, "ffmpeg_muxrate", text="Rate")
+ col.itemR(rd, "ffmpeg_packetsize", text="Packet Size")
+
+ row = layout.row()
+ row.itemL(text="Audio:")
+ row = layout.row()
+ row.itemR(rd, "ffmpeg_audio_codec")
+
+ split = layout.split()
+
+ col = split.column()
+ col.itemR(rd, "ffmpeg_audio_bitrate")
+ col.itemR(rd, "ffmpeg_audio_mixrate")
+ col = split.column()
+ col.itemR(rd, "ffmpeg_multiplex_audio")
+ col.itemR(rd, "ffmpeg_audio_volume")
+
+class RENDER_PT_antialiasing(RenderButtonsPanel):
+ __label__ = "Anti-Aliasing"
+ COMPAT_ENGINES = set(['BLENDER_RENDER'])
+
+ def draw_header(self, context):
+ rd = context.scene.render_data
+
+ self.layout.itemR(rd, "antialiasing", text="")
+
+ def draw(self, context):
+ layout = self.layout
+
+ rd = context.scene.render_data
+
+ layout.active = rd.antialiasing
+
+ split = layout.split()
+
+ col = split.column()
+ col.row().itemR(rd, "antialiasing_samples", expand=True)
+ col.itemR(rd, "full_sample")
+
+ col = split.column()
+ col.itemR(rd, "pixel_filter", text="")
+ col.itemR(rd, "filter_size", text="Size", slider=True)
+
+class RENDER_PT_dimensions(RenderButtonsPanel):
+ __label__ = "Dimensions"
+ COMPAT_ENGINES = set(['BLENDER_RENDER'])
+
+ def draw(self, context):
+ layout = self.layout
+
+ scene = context.scene
+ rd = scene.render_data
+
+ split = layout.split()
+
+ col = split.column()
+ sub = col.column(align=True)
+ sub.itemL(text="Resolution:")
+ sub.itemR(rd, "resolution_x", text="X")
+ sub.itemR(rd, "resolution_y", text="Y")
+ sub.itemR(rd, "resolution_percentage", text="")
+
+ sub.itemL(text="Aspect Ratio:")
+ sub.itemR(rd, "pixel_aspect_x", text="X")
+ sub.itemR(rd, "pixel_aspect_y", text="Y")
+
+ row = col.row()
+ row.itemR(rd, "use_border", text="Border")
+ rowsub = row.row()
+ rowsub.active = rd.use_border
+ rowsub.itemR(rd, "crop_to_border", text="Crop")
+
+ col = split.column(align=True)
+ col.itemL(text="Frame Range:")
+ col.itemR(scene, "start_frame", text="Start")
+ col.itemR(scene, "end_frame", text="End")
+ col.itemR(scene, "frame_step", text="Step")
+
+ col.itemL(text="Frame Rate:")
+ col.itemR(rd, "fps")
+ col.itemR(rd, "fps_base",text="/")
+
+class RENDER_PT_stamp(RenderButtonsPanel):
+ __label__ = "Stamp"
+ __default_closed__ = True
+ COMPAT_ENGINES = set(['BLENDER_RENDER'])
+
+ def draw_header(self, context):
+ rd = context.scene.render_data
+
+ self.layout.itemR(rd, "render_stamp", text="")
+
+ def draw(self, context):
+ layout = self.layout
+
+ rd = context.scene.render_data
+
+ layout.active = rd.render_stamp
+
+ split = layout.split()
+
+ col = split.column()
+ col.itemR(rd, "stamp_time", text="Time")
+ col.itemR(rd, "stamp_date", text="Date")
+ col.itemR(rd, "stamp_frame", text="Frame")
+ col.itemR(rd, "stamp_scene", text="Scene")
+ col.itemR(rd, "stamp_camera", text="Camera")
+ col.itemR(rd, "stamp_filename", text="Filename")
+ col.itemR(rd, "stamp_marker", text="Marker")
+ col.itemR(rd, "stamp_sequence_strip", text="Seq. Strip")
+
+ col = split.column()
+ col.active = rd.render_stamp
+ col.itemR(rd, "stamp_foreground", slider=True)
+ col.itemR(rd, "stamp_background", slider=True)
+ col.itemR(rd, "stamp_font_size", text="Font Size")
+
+ row = layout.split(percentage=0.2)
+ row.itemR(rd, "stamp_note", text="Note")
+ sub = row.row()
+ sub.active = rd.stamp_note
+ sub.itemR(rd, "stamp_note_text", text="")
+
+
+bpy.types.register(RENDER_PT_render)
+bpy.types.register(RENDER_PT_layers)
+bpy.types.register(RENDER_PT_dimensions)
+bpy.types.register(RENDER_PT_antialiasing)
+bpy.types.register(RENDER_PT_shading)
+bpy.types.register(RENDER_PT_output)
+bpy.types.register(RENDER_PT_encoding)
+bpy.types.register(RENDER_PT_performance)
+bpy.types.register(RENDER_PT_post_processing)
+bpy.types.register(RENDER_PT_stamp)
+
diff --git a/release/scripts/ui/buttons_scene.py b/release/scripts/ui/buttons_scene.py
index c4679d40a10..6c68e793852 100644
--- a/release/scripts/ui/buttons_scene.py
+++ b/release/scripts/ui/buttons_scene.py
@@ -9,445 +9,19 @@ class SceneButtonsPanel(bpy.types.Panel):
def poll(self, context):
return (context.scene != None)
-class RenderButtonsPanel(bpy.types.Panel):
- __space_type__ = 'PROPERTIES'
- __region_type__ = 'WINDOW'
- __context__ = "scene"
- # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here
-
- def poll(self, context):
- rd = context.scene.render_data
- return (rd.use_game_engine==False) and (rd.engine in self.COMPAT_ENGINES)
-
-class SCENE_PT_render(RenderButtonsPanel):
- __label__ = "Render"
+class SCENE_PT_scene(SceneButtonsPanel):
+ __label__ = "Scene"
COMPAT_ENGINES = set(['BLENDER_RENDER'])
-
- def draw(self, context):
- layout = self.layout
- scene = context.scene
- rd = scene.render_data
- row = layout.row()
- row.itemO("screen.render", text="Image", icon='ICON_RENDER_STILL')
- row.item_booleanO("screen.render", "animation", True, text="Animation", icon='ICON_RENDER_ANIMATION')
-
- layout.itemR(rd, "display_mode", text="Display")
- layout.itemR(scene, "set", text="Set Scene") # XXX - this should get its own 'scene buttons'
-
-class SCENE_PT_layers(RenderButtonsPanel):
- __label__ = "Layers"
- __default_closed__ = True
- COMPAT_ENGINES = set(['BLENDER_RENDER'])
-
def draw(self, context):
layout = self.layout
scene = context.scene
- rd = scene.render_data
-
- row = layout.row()
- row.template_list(rd, "layers", rd, "active_layer_index", rows=2)
-
- col = row.column(align=True)
- col.itemO("scene.render_layer_add", icon='ICON_ZOOMIN', text="")
- col.itemO("scene.render_layer_remove", icon='ICON_ZOOMOUT', text="")
-
- rl = rd.layers[rd.active_layer_index]
-
- split = layout.split()
-
- col = split.column()
- col.itemR(scene, "visible_layers", text="Scene")
- col = split.column()
- col.itemR(rl, "visible_layers", text="Layer")
-
- layout.itemR(rl, "light_override", text="Light")
- layout.itemR(rl, "material_override", text="Material")
-
- layout.itemS()
- layout.itemL(text="Include:")
-
- split = layout.split()
-
- col = split.column()
- col.itemR(rl, "zmask")
- row = col.row()
- row.itemR(rl, "zmask_negate", text="Negate")
- row.active = rl.zmask
- col.itemR(rl, "all_z")
-
- col = split.column()
- col.itemR(rl, "solid")
- col.itemR(rl, "halo")
- col.itemR(rl, "ztransp")
-
- col = split.column()
- col.itemR(rl, "sky")
- col.itemR(rl, "edge")
- col.itemR(rl, "strand")
-
- if rl.zmask:
- split = layout.split()
- split.itemL(text="Zmask Layers:")
- split.column().itemR(rl, "zmask_layers", text="")
-
- layout.itemS()
-
- split = layout.split()
-
- col = split.column()
- col.itemL(text="Passes:")
- col.itemR(rl, "pass_combined")
- col.itemR(rl, "pass_z")
- col.itemR(rl, "pass_vector")
- col.itemR(rl, "pass_normal")
- col.itemR(rl, "pass_uv")
- col.itemR(rl, "pass_mist")
- col.itemR(rl, "pass_object_index")
-
- col = split.column()
- col.itemL()
- col.itemR(rl, "pass_color")
- col.itemR(rl, "pass_diffuse")
- row = col.row()
- row.itemR(rl, "pass_specular")
- row.itemR(rl, "pass_specular_exclude", text="", icon='ICON_X')
- row = col.row()
- row.itemR(rl, "pass_shadow")
- row.itemR(rl, "pass_shadow_exclude", text="", icon='ICON_X')
- row = col.row()
- row.itemR(rl, "pass_ao")
- row.itemR(rl, "pass_ao_exclude", text="", icon='ICON_X')
- row = col.row()
- row.itemR(rl, "pass_reflection")
- row.itemR(rl, "pass_reflection_exclude", text="", icon='ICON_X')
- row = col.row()
- row.itemR(rl, "pass_refraction")
- row.itemR(rl, "pass_refraction_exclude", text="", icon='ICON_X')
-
-class SCENE_PT_shading(RenderButtonsPanel):
- __label__ = "Shading"
- COMPAT_ENGINES = set(['BLENDER_RENDER'])
-
- def draw(self, context):
- layout = self.layout
-
- rd = context.scene.render_data
-
- split = layout.split()
-
- col = split.column()
- col.itemR(rd, "render_textures", text="Textures")
- col.itemR(rd, "render_shadows", text="Shadows")
- col.itemR(rd, "render_sss", text="Subsurface Scattering")
- col.itemR(rd, "render_envmaps", text="Environment Map")
-
- col = split.column()
- col.itemR(rd, "render_raytracing", text="Ray Tracing")
- col.itemR(rd, "color_management")
- col.itemR(rd, "alpha_mode", text="Alpha")
-
-class SCENE_PT_performance(RenderButtonsPanel):
- __label__ = "Performance"
- __default_closed__ = True
- COMPAT_ENGINES = set(['BLENDER_RENDER'])
-
- def draw(self, context):
- layout = self.layout
-
- rd = context.scene.render_data
-
- split = layout.split()
-
- col = split.column(align=True)
- col.itemL(text="Threads:")
- col.row().itemR(rd, "threads_mode", expand=True)
- sub = col.column()
- sub.enabled = rd.threads_mode == 'THREADS_FIXED'
- sub.itemR(rd, "threads")
- col.itemL(text="Tiles:")
- col.itemR(rd, "parts_x", text="X")
- col.itemR(rd, "parts_y", text="Y")
-
- col = split.column()
- col.itemL(text="Memory:")
- sub = col.column()
- sub.itemR(rd, "save_buffers")
- sub.enabled = not rd.full_sample
- sub = col.column()
- sub.active = rd.use_compositing
- sub.itemR(rd, "free_image_textures")
- sub = col.column()
- sub.active = rd.render_raytracing
- sub.itemL(text="Acceleration structure:")
- sub.itemR(rd, "raytrace_structure", text="")
- if rd.raytrace_structure == "OCTREE":
- sub.itemR(rd, "octree_resolution", text="Resolution")
- else:
- sub.itemR(rd, "use_instances", text="Instances")
- sub.itemR(rd, "use_local_coords", text="Local Coordinates")
-
-class SCENE_PT_post_processing(RenderButtonsPanel):
- __label__ = "Post Processing"
- __default_closed__ = True
- COMPAT_ENGINES = set(['BLENDER_RENDER'])
-
- def draw(self, context):
- layout = self.layout
-
- rd = context.scene.render_data
-
- split = layout.split()
-
- col = split.column()
- col.itemR(rd, "use_compositing")
- col.itemR(rd, "use_sequencer")
-
- col = split.column()
- col.itemR(rd, "dither_intensity", text="Dither", slider=True)
-
- layout.itemS()
-
- split = layout.split()
-
- col = split.column()
- col.itemR(rd, "fields", text="Fields")
- sub = col.column()
- sub.active = rd.fields
- sub.row().itemR(rd, "field_order", expand=True)
- sub.itemR(rd, "fields_still", text="Still")
-
- col = split.column()
- col.itemR(rd, "edge")
- sub = col.column()
- sub.active = rd.edge
- sub.itemR(rd, "edge_threshold", text="Threshold", slider=True)
- sub.itemR(rd, "edge_color", text="")
-
-class SCENE_PT_output(RenderButtonsPanel):
- __label__ = "Output"
- COMPAT_ENGINES = set(['BLENDER_RENDER'])
-
- def draw(self, context):
- layout = self.layout
-
- rd = context.scene.render_data
+ layout.itemR(scene, "camera")
+ layout.itemR(scene, "set", text="Background")
- layout.itemR(rd, "output_path", text="")
- split = layout.split()
- col = split.column()
- col.itemR(rd, "file_format", text="")
- col.row().itemR(rd, "color_mode", text="Color", expand=True)
-
- col = split.column()
- col.itemR(rd, "file_extensions")
- col.itemR(rd, "use_overwrite")
- col.itemR(rd, "use_placeholder")
-
- if rd.file_format in ('AVIJPEG', 'JPEG'):
- split = layout.split()
- split.itemR(rd, "quality", slider=True)
-
- elif rd.file_format == 'OPENEXR':
- split = layout.split()
-
- col = split.column()
- col.itemL(text="Codec:")
- col.itemR(rd, "exr_codec", text="")
-
- subsplit = split.split()
- col = subsplit.column()
- col.itemR(rd, "exr_half")
- col.itemR(rd, "exr_zbuf")
- col = subsplit.column()
- col.itemR(rd, "exr_preview")
-
- elif rd.file_format == 'JPEG2000':
- split = layout.split()
- col = split.column()
- col.itemL(text="Depth:")
- col.row().itemR(rd, "jpeg2k_depth", expand=True)
-
- col = split.column()
- col.itemR(rd, "jpeg2k_preset", text="")
- col.itemR(rd, "jpeg2k_ycc")
-
- elif rd.file_format in ('CINEON', 'DPX'):
- split = layout.split()
- col = split.column()
- col.itemR(rd, "cineon_log", text="Convert to Log")
-
- col = split.column(align=True)
- col.active = rd.cineon_log
- col.itemR(rd, "cineon_black", text="Black")
- col.itemR(rd, "cineon_white", text="White")
- col.itemR(rd, "cineon_gamma", text="Gamma")
-
- elif rd.file_format == 'TIFF':
- split = layout.split()
- split.itemR(rd, "tiff_bit")
-
-class SCENE_PT_encoding(RenderButtonsPanel):
- __label__ = "Encoding"
- __default_closed__ = True
- COMPAT_ENGINES = set(['BLENDER_RENDER'])
-
- def poll(self, context):
- rd = context.scene.render_data
- return rd.file_format in ('FFMPEG', 'XVID', 'H264', 'THEORA')
-
- def draw(self, context):
- layout = self.layout
-
- rd = context.scene.render_data
-
- split = layout.split()
-
- split.itemR(rd, "ffmpeg_format")
- if rd.ffmpeg_format in ('AVI', 'QUICKTIME', 'MKV', 'OGG'):
- split.itemR(rd, "ffmpeg_codec")
- else:
- split.itemL()
-
- split = layout.split()
-
- col = split.column()
- col.itemR(rd, "ffmpeg_video_bitrate")
- col.itemL(text="Rate:")
- col.itemR(rd, "ffmpeg_minrate", text="Minimum")
- col.itemR(rd, "ffmpeg_maxrate", text="Maximum")
- col.itemR(rd, "ffmpeg_buffersize", text="Buffer")
-
- col = split.column()
- col.itemR(rd, "ffmpeg_gopsize")
- col.itemR(rd, "ffmpeg_autosplit")
- col.itemL(text="Mux:")
- col.itemR(rd, "ffmpeg_muxrate", text="Rate")
- col.itemR(rd, "ffmpeg_packetsize", text="Packet Size")
-
- row = layout.row()
- row.itemL(text="Audio:")
- row = layout.row()
- row.itemR(rd, "ffmpeg_audio_codec")
-
- split = layout.split()
-
- col = split.column()
- col.itemR(rd, "ffmpeg_audio_bitrate")
- col.itemR(rd, "ffmpeg_audio_mixrate")
- col = split.column()
- col.itemR(rd, "ffmpeg_multiplex_audio")
- col.itemR(rd, "ffmpeg_audio_volume")
-
-class SCENE_PT_antialiasing(RenderButtonsPanel):
- __label__ = "Anti-Aliasing"
- COMPAT_ENGINES = set(['BLENDER_RENDER'])
-
- def draw_header(self, context):
- rd = context.scene.render_data
-
- self.layout.itemR(rd, "antialiasing", text="")
-
- def draw(self, context):
- layout = self.layout
-
- rd = context.scene.render_data
-
- layout.active = rd.antialiasing
-
- split = layout.split()
-
- col = split.column()
- col.row().itemR(rd, "antialiasing_samples", expand=True)
- col.itemR(rd, "full_sample")
-
- col = split.column()
- col.itemR(rd, "pixel_filter", text="")
- col.itemR(rd, "filter_size", text="Size", slider=True)
-
-class SCENE_PT_dimensions(RenderButtonsPanel):
- __label__ = "Dimensions"
- COMPAT_ENGINES = set(['BLENDER_RENDER'])
-
- def draw(self, context):
- layout = self.layout
-
- scene = context.scene
- rd = scene.render_data
-
- split = layout.split()
-
- col = split.column()
- sub = col.column(align=True)
- sub.itemL(text="Resolution:")
- sub.itemR(rd, "resolution_x", text="X")
- sub.itemR(rd, "resolution_y", text="Y")
- sub.itemR(rd, "resolution_percentage", text="")
-
- sub.itemL(text="Aspect Ratio:")
- sub.itemR(rd, "pixel_aspect_x", text="X")
- sub.itemR(rd, "pixel_aspect_y", text="Y")
-
- row = col.row()
- row.itemR(rd, "use_border", text="Border")
- rowsub = row.row()
- rowsub.active = rd.use_border
- rowsub.itemR(rd, "crop_to_border", text="Crop")
-
- col = split.column(align=True)
- col.itemL(text="Frame Range:")
- col.itemR(scene, "start_frame", text="Start")
- col.itemR(scene, "end_frame", text="End")
- col.itemR(scene, "frame_step", text="Step")
-
- col.itemL(text="Frame Rate:")
- col.itemR(rd, "fps")
- col.itemR(rd, "fps_base",text="/")
-
-class SCENE_PT_stamp(RenderButtonsPanel):
- __label__ = "Stamp"
- __default_closed__ = True
- COMPAT_ENGINES = set(['BLENDER_RENDER'])
-
- def draw_header(self, context):
- rd = context.scene.render_data
-
- self.layout.itemR(rd, "render_stamp", text="")
-
- def draw(self, context):
- layout = self.layout
-
- rd = context.scene.render_data
-
- layout.active = rd.render_stamp
-
- split = layout.split()
-
- col = split.column()
- col.itemR(rd, "stamp_time", text="Time")
- col.itemR(rd, "stamp_date", text="Date")
- col.itemR(rd, "stamp_frame", text="Frame")
- col.itemR(rd, "stamp_scene", text="Scene")
- col.itemR(rd, "stamp_camera", text="Camera")
- col.itemR(rd, "stamp_filename", text="Filename")
- col.itemR(rd, "stamp_marker", text="Marker")
- col.itemR(rd, "stamp_sequence_strip", text="Seq. Strip")
-
- col = split.column()
- col.active = rd.render_stamp
- col.itemR(rd, "stamp_foreground", slider=True)
- col.itemR(rd, "stamp_background", slider=True)
- col.itemR(rd, "stamp_font_size", text="Font Size")
-
- row = layout.split(percentage=0.2)
- row.itemR(rd, "stamp_note", text="Note")
- sub = row.row()
- sub.active = rd.stamp_note
- sub.itemR(rd, "stamp_note_text", text="")
-
-class SCENE_PT_unit(RenderButtonsPanel):
+class SCENE_PT_unit(SceneButtonsPanel):
__label__ = "Units"
__default_closed__ = True
COMPAT_ENGINES = set(['BLENDER_RENDER'])
@@ -549,7 +123,7 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel):
-class SCENE_PT_physics(RenderButtonsPanel):
+class SCENE_PT_physics(SceneButtonsPanel):
__label__ = "Gravity"
COMPAT_ENGINES = set(['BLENDER_RENDER'])
@@ -565,17 +139,7 @@ class SCENE_PT_physics(RenderButtonsPanel):
layout.itemR(scene, "gravity", text="")
-
-bpy.types.register(SCENE_PT_render)
-bpy.types.register(SCENE_PT_layers)
-bpy.types.register(SCENE_PT_dimensions)
-bpy.types.register(SCENE_PT_antialiasing)
-bpy.types.register(SCENE_PT_shading)
-bpy.types.register(SCENE_PT_output)
-bpy.types.register(SCENE_PT_encoding)
-bpy.types.register(SCENE_PT_performance)
-bpy.types.register(SCENE_PT_post_processing)
-bpy.types.register(SCENE_PT_stamp)
+bpy.types.register(SCENE_PT_scene)
bpy.types.register(SCENE_PT_unit)
bpy.types.register(SCENE_PT_keying_sets)
bpy.types.register(SCENE_PT_keying_set_paths)
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index 74303e8a6a3..eeddeee25bf 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -3410,6 +3410,9 @@ void ED_keymap_screen(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "SCREEN_OT_render_view_show", F11KEY, KM_PRESS, 0, 0);
/* user prefs */
+ #ifdef __APPLE__
+ WM_keymap_add_item(keymap, "SCREEN_OT_userpref_show", COMMAKEY, KM_PRESS, KM_OSKEY, 0);
+ #endif
WM_keymap_add_item(keymap, "SCREEN_OT_userpref_show", UKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
diff --git a/source/blender/editors/space_buttons/buttons_context.c b/source/blender/editors/space_buttons/buttons_context.c
index fe437dfd188..c6cde9f1c6b 100644
--- a/source/blender/editors/space_buttons/buttons_context.c
+++ b/source/blender/editors/space_buttons/buttons_context.c
@@ -437,6 +437,7 @@ static int buttons_context_path(const bContext *C, ButsContextPath *path, int ma
* tracing back recursively */
switch(mainb) {
case BCONTEXT_SCENE:
+ case BCONTEXT_RENDER:
found= buttons_context_path_scene(path);
break;
case BCONTEXT_WORLD:
diff --git a/source/blender/editors/space_buttons/buttons_header.c b/source/blender/editors/space_buttons/buttons_header.c
index 83dd679c543..1bf2a058b5a 100644
--- a/source/blender/editors/space_buttons/buttons_header.c
+++ b/source/blender/editors/space_buttons/buttons_header.c
@@ -107,8 +107,10 @@ void buttons_header_buttons(const bContext *C, ARegion *ar)
// Default panels
uiBlockBeginAlign(block);
+ if(sbuts->pathflag & (1<<BCONTEXT_RENDER))
+ uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_SCENE, xco+=BUTS_UI_UNIT, yco, BUTS_UI_UNIT, BUTS_UI_UNIT, &(sbuts->mainb), 0.0, (float)BCONTEXT_RENDER, 0, 0, "Render");
if(sbuts->pathflag & (1<<BCONTEXT_SCENE))
- uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_SCENE, xco+=BUTS_UI_UNIT, yco, BUTS_UI_UNIT, BUTS_UI_UNIT, &(sbuts->mainb), 0.0, (float)BCONTEXT_SCENE, 0, 0, "Scene");
+ uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_SCENE_DATA, xco+=BUTS_UI_UNIT, yco, BUTS_UI_UNIT, BUTS_UI_UNIT, &(sbuts->mainb), 0.0, (float)BCONTEXT_SCENE, 0, 0, "Scene");
if(sbuts->pathflag & (1<<BCONTEXT_WORLD))
uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_WORLD, xco+=BUTS_UI_UNIT, yco, BUTS_UI_UNIT, BUTS_UI_UNIT, &(sbuts->mainb), 0.0, (float)BCONTEXT_WORLD, 0, 0, "World");
if(sbuts->pathflag & (1<<BCONTEXT_OBJECT))
diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c
index 03d126a3e7b..c1f06d99985 100644
--- a/source/blender/editors/space_buttons/space_buttons.c
+++ b/source/blender/editors/space_buttons/space_buttons.c
@@ -156,6 +156,8 @@ static void buttons_main_area_draw(const bContext *C, ARegion *ar)
if(sbuts->mainb == BCONTEXT_SCENE)
ED_region_panels(C, ar, vertical, "scene", sbuts->mainb);
+ else if(sbuts->mainb == BCONTEXT_RENDER)
+ ED_region_panels(C, ar, vertical, "render", sbuts->mainb);
else if(sbuts->mainb == BCONTEXT_WORLD)
ED_region_panels(C, ar, vertical, "world", sbuts->mainb);
else if(sbuts->mainb == BCONTEXT_OBJECT)
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index ce4f0bc8737..0c2b89b7b29 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -569,14 +569,15 @@ typedef struct SpaceUserPref {
/* buts->mainb new */
-#define BCONTEXT_SCENE 0
-#define BCONTEXT_WORLD 1
-#define BCONTEXT_OBJECT 2
-#define BCONTEXT_DATA 3
-#define BCONTEXT_MATERIAL 4
-#define BCONTEXT_TEXTURE 5
-#define BCONTEXT_PARTICLE 6
-#define BCONTEXT_PHYSICS 7
+#define BCONTEXT_SCENE 0
+#define BCONTEXT_RENDER 1
+#define BCONTEXT_WORLD 2
+#define BCONTEXT_OBJECT 3
+#define BCONTEXT_DATA 4
+#define BCONTEXT_MATERIAL 5
+#define BCONTEXT_TEXTURE 6
+#define BCONTEXT_PARTICLE 7
+#define BCONTEXT_PHYSICS 8
#define BCONTEXT_BONE 9
#define BCONTEXT_MODIFIER 10
#define BCONTEXT_CONSTRAINT 12
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index 7d77660db6d..5665d9d7adc 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -821,6 +821,7 @@ static void rna_def_space_buttons(BlenderRNA *brna)
static EnumPropertyItem buttons_context_items[] = {
{BCONTEXT_SCENE, "SCENE", ICON_SCENE, "Scene", "Scene"},
+ {BCONTEXT_RENDER, "RENDER", ICON_SCENE_DATA, "Render", "Render"},
{BCONTEXT_WORLD, "WORLD", ICON_WORLD, "World", "World"},
{BCONTEXT_OBJECT, "OBJECT", ICON_OBJECT_DATA, "Object", "Object"},
{BCONTEXT_CONSTRAINT, "CONSTRAINT", ICON_CONSTRAINT, "Constraints", "Constraints"},