Auto-build renderpath

This commit is contained in:
Lubos Lenco 2017-01-03 12:20:46 +01:00
parent 50d9a8aa5e
commit 27f7e1e405
3 changed files with 49 additions and 48 deletions

View file

@ -1326,7 +1326,9 @@ class ArmoryExporter:
o['data_ref'] = self.lampArray[objref]["structName"]
elif type == NodeTypeCamera:
if 'spawn' in o and o['spawn']:
if 'spawn' in o and o['spawn'] == False:
self.camera_spawned = False
else:
self.camera_spawned = True
if not objref in self.cameraArray:
self.cameraArray[objref] = {"structName" : objname, "objectTable" : [bobject]}

View file

@ -12,15 +12,11 @@ try:
except ImportError:
pass
preset_done = False
def update_preset(self, context):
global preset_done
if preset_done:
preset_done = False
return
props_renderer.set_preset(self.rp_preset)
preset_done = True
self.rp_preset = 'None'
props_renderer.set_preset(self, context, self.rp_preset)
def update_renderpath(self, context):
props_renderer.set_renderpath(self, context)
arm_ver = '17.1'
def init_properties():
@ -162,8 +158,7 @@ def init_properties():
bpy.types.Camera.mirror_resolution_y = bpy.props.FloatProperty(name="Y", default=256.0)
# Render path generator
bpy.types.Camera.rp_preset = EnumProperty(
items=[('None', '', 'None'),
('Forward Low', 'Forward Low', 'Forward Low'),
items=[('Forward Low', 'Forward Low', 'Forward Low'),
('Forward', 'Forward', 'Forward'),
('Forward High', 'Forward High', 'Forward High'),
('Deferred Low', 'Deferred Low', 'Deferred Low'),
@ -173,51 +168,51 @@ def init_properties():
#('Grease Pencil', 'Grease Pencil', 'Grease Pencil'),
#('Path-Trace', 'Path-Trace', 'Path-Trace')],
],
name="Preset", description="Render path preset", default='None', update=update_preset)
name="Preset", description="Render path preset", default='Deferred Low', update=update_preset)
bpy.types.Camera.rp_renderer = EnumProperty(
items=[('Forward', 'Forward', 'Forward'),
('Deferred', 'Deferred', 'Deferred'),
#('Path-Trace', 'Path-Trace', 'Path-Trace')],
],
name="Renderer", description="Renderer type", default='Deferred')
bpy.types.Camera.rp_depthprepass = bpy.props.BoolProperty(name="Depth Prepass", description="Depth Prepass for mesh context", default=False)
bpy.types.Camera.rp_meshes = bpy.props.BoolProperty(name="Meshes", description="Render mesh objects", default=True)
bpy.types.Camera.rp_hdr = bpy.props.BoolProperty(name="HDR", description="Render in HDR Space", default=True)
bpy.types.Camera.rp_render_to_texture = bpy.props.BoolProperty(name="Post Process", description="Render scene to texture for further processing", default=True)
bpy.types.Camera.rp_worldnodes = bpy.props.BoolProperty(name="World Nodes", description="Draw world nodes", default=True)
bpy.types.Camera.rp_compositornodes = bpy.props.BoolProperty(name="Compositor Nodes", description="Draw compositor nodes", default=True)
name="Renderer", description="Renderer type", default='Deferred', update=update_renderpath)
bpy.types.Camera.rp_depthprepass = bpy.props.BoolProperty(name="Depth Prepass", description="Depth Prepass for mesh context", default=False, update=update_renderpath)
bpy.types.Camera.rp_meshes = bpy.props.BoolProperty(name="Meshes", description="Render mesh objects", default=True, update=update_renderpath)
bpy.types.Camera.rp_hdr = bpy.props.BoolProperty(name="HDR", description="Render in HDR Space", default=True, update=update_renderpath)
bpy.types.Camera.rp_render_to_texture = bpy.props.BoolProperty(name="Post Process", description="Render scene to texture for further processing", default=True, update=update_renderpath)
bpy.types.Camera.rp_worldnodes = bpy.props.BoolProperty(name="World Nodes", description="Draw world nodes", default=True, update=update_renderpath)
bpy.types.Camera.rp_compositornodes = bpy.props.BoolProperty(name="Compositor Nodes", description="Draw compositor nodes", default=True, update=update_renderpath)
bpy.types.Camera.rp_shadowmap = EnumProperty(
items=[('None', 'None', 'None'),
('512', '512', '512'),
('1024', '1024', '1024'),
('2048', '2048', '2048'),
('4096', '4096', '4096')],
name="Shadow Map", description="Shadow map resolution", default='2048')
name="Shadow Map", description="Shadow map resolution", default='2048', update=update_renderpath)
bpy.types.Camera.rp_supersampling = EnumProperty(
items=[('1', '1X', '1X'),
('2', '2X', '2X'),
('4', '4X', '4X')],
name="Super Sampling", description="Screen resolution multiplier", default='1')
name="Super Sampling", description="Screen resolution multiplier", default='1', update=update_renderpath)
bpy.types.Camera.rp_antialiasing = EnumProperty(
items=[('None', 'None', 'None'),
('FXAA', 'FXAA', 'FXAA'),
('SMAA', 'SMAA', 'SMAA'),
('TAA', 'TAA', 'TAA')],
name="Anti Aliasing", description="Post-process anti aliasing technique", default='SMAA')
bpy.types.Camera.rp_volumetriclight = bpy.props.BoolProperty(name="Volumetric Light", description="Use volumetric lighting", default=False)
bpy.types.Camera.rp_ssao = bpy.props.BoolProperty(name="SSAO", description="Screen space ambient occlusion", default=True)
bpy.types.Camera.rp_ssr = bpy.props.BoolProperty(name="SSR", description="Screen space reflections", default=False)
bpy.types.Camera.rp_bloom = bpy.props.BoolProperty(name="Bloom", description="Bloom processing", default=False)
name="Anti Aliasing", description="Post-process anti aliasing technique", default='SMAA', update=update_renderpath)
bpy.types.Camera.rp_volumetriclight = bpy.props.BoolProperty(name="Volumetric Light", description="Use volumetric lighting", default=False, update=update_renderpath)
bpy.types.Camera.rp_ssao = bpy.props.BoolProperty(name="SSAO", description="Screen space ambient occlusion", default=True, update=update_renderpath)
bpy.types.Camera.rp_ssr = bpy.props.BoolProperty(name="SSR", description="Screen space reflections", default=False, update=update_renderpath)
bpy.types.Camera.rp_bloom = bpy.props.BoolProperty(name="Bloom", description="Bloom processing", default=False, update=update_renderpath)
bpy.types.Camera.rp_motionblur = EnumProperty(
items=[('None', 'None', 'None'),
('Basic', 'Basic', 'Basic'),
('Velocity', 'Velocity', 'Velocity')],
name="Motion Blur", description="Motion blur processing", default='None')
bpy.types.Camera.rp_translucency = bpy.props.BoolProperty(name="Translucency", description="Order independent translucency", default=False)
bpy.types.Camera.rp_decals = bpy.props.BoolProperty(name="Decals", description="Render decals", default=False)
bpy.types.Camera.rp_overlays = bpy.props.BoolProperty(name="Overlays", description="Render overlays", default=False)
bpy.types.Camera.rp_stereo = bpy.props.BoolProperty(name="Stereo", description="Stereo rendering", default=False)
bpy.types.Camera.rp_greasepencil = bpy.props.BoolProperty(name="Grease Pencil", description="Render Grease Pencil data", default=False)
name="Motion Blur", description="Motion blur processing", default='None', update=update_renderpath)
bpy.types.Camera.rp_translucency = bpy.props.BoolProperty(name="Translucency", description="Order independent translucency", default=False, update=update_renderpath)
bpy.types.Camera.rp_decals = bpy.props.BoolProperty(name="Decals", description="Render decals", default=False, update=update_renderpath)
bpy.types.Camera.rp_overlays = bpy.props.BoolProperty(name="Overlays", description="Render overlays", default=False, update=update_renderpath)
bpy.types.Camera.rp_stereo = bpy.props.BoolProperty(name="Stereo", description="Stereo rendering", default=False, update=update_renderpath)
bpy.types.Camera.rp_greasepencil = bpy.props.BoolProperty(name="Grease Pencil", description="Render Grease Pencil data", default=False, update=update_renderpath)
# For world
bpy.types.World.world_envtex_name = bpy.props.StringProperty(name="Environment Texture", default='')

View file

@ -5,11 +5,17 @@ from bpy.props import *
import make_renderer
import assets
def set_preset(preset):
updating_preset = False
def set_preset(self, context, preset):
global updating_preset
cam = bpy.context.camera
if cam == None:
return
updating_preset = True
if preset == 'Forward Low':
cam.rp_renderer = 'Forward'
cam.rp_shadowmap = '1024'
@ -171,6 +177,19 @@ def set_preset(preset):
cam.rp_bloom = False
cam.rp_motionblur = 'None'
updating_preset = False
set_renderpath(self, context)
def set_renderpath(self, context):
global updating_preset
if updating_preset == True:
return
if bpy.context.camera == None:
return
assets.invalidate_shader_cache(self, context)
make_renderer.make_renderer(bpy.context.camera)
bpy.context.camera.renderpath_path = 'armory_default'
# Menu in camera data region
class GenRPDataPropsPanel(bpy.types.Panel):
bl_label = "Armory Render Path"
@ -212,8 +231,6 @@ class GenRPDataPropsPanel(bpy.types.Panel):
layout.prop(dat, "rp_ssr")
layout.prop(dat, "rp_bloom")
layout.prop(dat, "rp_motionblur")
layout.operator("arm.set_renderpath")
class PropsRPDataPropsPanel(bpy.types.Panel):
bl_label = "Armory Render Props"
@ -299,19 +316,6 @@ class PropsRPDataPropsPanel(bpy.types.Panel):
layout.prop(wrd, 'generate_volumetric_light_air_turbidity')
layout.prop(wrd, 'generate_volumetric_light_air_color')
class ArmorySetRenderPathButton(bpy.types.Operator):
'''Auto-generate render path based on settings'''
bl_idname = 'arm.set_renderpath'
bl_label = 'Set'
def execute(self, context):
if bpy.context.camera == None:
return {'CANCELLED'}
assets.invalidate_shader_cache(self, context)
make_renderer.make_renderer(bpy.context.camera)
bpy.context.camera.renderpath_path = 'armory_default'
return {'FINISHED'}
def register():
bpy.utils.register_module(__name__)