96 lines
2.8 KiB
Python
96 lines
2.8 KiB
Python
# ##### BEGIN GPL LICENSE BLOCK #####
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU General Public License
|
|
# as published by the Free Software Foundation; either version 2
|
|
# of the License, or (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software Foundation,
|
|
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
#
|
|
# ##### END GPL LICENSE BLOCK #####
|
|
|
|
import os, bpy
|
|
from properties_render import RenderButtonsPanel
|
|
|
|
from extensions_framework.ui import property_group_renderer
|
|
from extensions_framework import util as efutil
|
|
|
|
cached_binary_path = None
|
|
|
|
class render_described_context(RenderButtonsPanel, property_group_renderer):
|
|
'''
|
|
Base class for render engine settings panels
|
|
'''
|
|
|
|
COMPAT_ENGINES = {'mitsuba'}
|
|
|
|
class setup_preset(render_described_context, bpy.types.Panel):
|
|
'''
|
|
Engine settings presets UI Panel
|
|
'''
|
|
|
|
bl_label = 'Mitsuba Engine Presets'
|
|
|
|
def draw(self, context):
|
|
row = self.layout.row(align=True)
|
|
row.menu("MITSUBA_MT_presets_engine", text=bpy.types.MITSUBA_MT_presets_engine.bl_label)
|
|
row.operator("mitsuba.preset_engine_add", text="", icon="ZOOMIN")
|
|
row.operator("mitsuba.preset_engine_add", text="", icon="ZOOMOUT").remove_active = True
|
|
|
|
super().draw(context)
|
|
|
|
class engine(render_described_context, bpy.types.Panel):
|
|
'''
|
|
Engine settings UI Panel
|
|
'''
|
|
|
|
bl_label = 'Mitsuba Engine Settings'
|
|
|
|
display_property_groups = [
|
|
( ('scene',), 'mitsuba_engine' )
|
|
]
|
|
|
|
def draw(self, context):
|
|
global cached_binary_path
|
|
binary_path = context.scene.mitsuba_engine.binary_path
|
|
if binary_path != "" and cached_binary_path != binary_path:
|
|
binary_path = os.path.abspath(efutil.filesystem_path(binary_path))
|
|
actualChange = cached_binary_path != None
|
|
cached_binary_path = binary_path
|
|
context.scene.mitsuba_engine.binary_path = binary_path
|
|
if actualChange:
|
|
print('Updating binary_path to "%s"\n' % binary_path)
|
|
efutil.write_config_value('mitsuba', 'defaults', 'binary_path', binary_path)
|
|
super().draw(context)
|
|
|
|
class integrator(render_described_context, bpy.types.Panel):
|
|
'''
|
|
Integrator settings UI Panel
|
|
'''
|
|
|
|
bl_label = 'Mitsuba Integrator Settings'
|
|
|
|
display_property_groups = [
|
|
( ('scene',), 'mitsuba_integrator' )
|
|
]
|
|
|
|
|
|
class sampler(render_described_context, bpy.types.Panel):
|
|
'''
|
|
Sampler settings UI Panel
|
|
'''
|
|
|
|
bl_label = 'Mitsuba Sampler Settings'
|
|
|
|
display_property_groups = [
|
|
( ('scene',), 'mitsuba_sampler' )
|
|
]
|
|
|