169 lines
6.3 KiB
Python
169 lines
6.3 KiB
Python
import bpy
|
|
import nodes_renderpath
|
|
from bpy.types import Menu, Panel, UIList
|
|
from bpy.props import *
|
|
|
|
def check_saved(self):
|
|
if bpy.data.filepath == "":
|
|
self.report({"ERROR"}, "Save blend file first")
|
|
return False
|
|
return True
|
|
|
|
class ReimportPathsMenu(bpy.types.Menu):
|
|
bl_label = "OK?"
|
|
bl_idname = "OBJECT_MT_reimport_paths_menu"
|
|
|
|
def draw(self, context):
|
|
layout = self.layout
|
|
layout.operator("arm.reimport_paths")
|
|
|
|
class ReimportPathsButtonMenu(bpy.types.Operator):
|
|
'''Reimport default render paths'''
|
|
bl_label = "Reimport Defaults"
|
|
bl_idname = "arm.reimport_paths_menu"
|
|
|
|
def execute(self, context):
|
|
bpy.ops.wm.call_menu(name=ReimportPathsMenu.bl_idname)
|
|
return {"FINISHED"}
|
|
|
|
class ReimportPathsButton(bpy.types.Operator):
|
|
'''Reimport default render paths'''
|
|
bl_label = "Reimport Defaults"
|
|
bl_idname = "arm.reimport_paths"
|
|
|
|
def execute(self, context):
|
|
nodes_renderpath.load_library()
|
|
return{'FINISHED'}
|
|
|
|
# Menu in camera data region
|
|
class GenRPDataPropsPanel(bpy.types.Panel):
|
|
bl_label = "Armory Render Path"
|
|
bl_space_type = "PROPERTIES"
|
|
bl_region_type = "WINDOW"
|
|
bl_context = "data"
|
|
bl_options = {'DEFAULT_CLOSED'}
|
|
|
|
def draw(self, context):
|
|
layout = self.layout
|
|
obj = bpy.context.object
|
|
if obj == None:
|
|
return
|
|
|
|
if obj.type == 'CAMERA':
|
|
# layout.prop(obj.data, "rp_renderer")
|
|
# layout.prop(obj.data, "rp_supersampling")
|
|
# layout.prop(obj.data, "rp_antialiasing")
|
|
# layout.prop(obj.data, "rp_shadowmap")
|
|
# layout.prop(obj.data, "rp_hdr")
|
|
# layout.prop(obj.data, "rp_worldnodes")
|
|
# layout.prop(obj.data, "rp_compositornodes")
|
|
# layout.prop(obj.data, "rp_volumetriclight")
|
|
# layout.prop(obj.data, "rp_ssao")
|
|
# layout.prop(obj.data, "rp_ssr")
|
|
# layout.prop(obj.data, "rp_bloom")
|
|
# layout.prop(obj.data, "rp_motionblur")
|
|
# layout.prop(obj.data, "rp_translucency")
|
|
# layout.prop(obj.data, "rp_decals")
|
|
# layout.prop(obj.data, "rp_overlays")
|
|
|
|
# layout.operator("arm.gen_renderpath")
|
|
layout.operator("arm.reimport_paths_menu")
|
|
|
|
class EffectsRPDataPropsPanel(bpy.types.Panel):
|
|
bl_label = "Armory Render Effects"
|
|
bl_space_type = "PROPERTIES"
|
|
bl_region_type = "WINDOW"
|
|
bl_context = "data"
|
|
bl_options = {'DEFAULT_CLOSED'}
|
|
|
|
def draw(self, context):
|
|
layout = self.layout
|
|
obj = bpy.context.object
|
|
if obj == None:
|
|
return
|
|
|
|
wrd = bpy.data.worlds['Arm']
|
|
|
|
if obj.type == 'CAMERA':
|
|
layout.prop(wrd, 'generate_shadows')
|
|
if wrd.generate_shadows:
|
|
layout.prop(wrd, 'generate_pcss_state')
|
|
if wrd.generate_pcss_state == 'On' or wrd.generate_pcss_state == 'Auto':
|
|
layout.prop(wrd, 'generate_pcss_rings')
|
|
|
|
layout.prop(wrd, 'arm_project_samples_per_pixel')
|
|
layout.prop(wrd, 'generate_gpu_skin')
|
|
if wrd.generate_gpu_skin:
|
|
layout.prop(wrd, 'generate_gpu_skin_max_bones')
|
|
layout.prop(wrd, 'tessellation_enabled')
|
|
layout.prop(wrd, 'force_anisotropic_filtering')
|
|
layout.prop(wrd, 'force_no_culling')
|
|
layout.prop(wrd, 'diffuse_oren_nayar')
|
|
layout.prop(wrd, 'voxelgi')
|
|
if wrd.voxelgi:
|
|
layout.prop(wrd, 'voxelgi_dimensions')
|
|
|
|
|
|
layout.prop(wrd, 'arm_camera_effects_advanced')
|
|
if wrd.arm_camera_effects_advanced:
|
|
|
|
layout.prop(wrd, 'generate_clouds')
|
|
if wrd.generate_clouds:
|
|
layout.prop(wrd, 'generate_clouds_density')
|
|
layout.prop(wrd, 'generate_clouds_size')
|
|
layout.prop(wrd, 'generate_clouds_lower')
|
|
layout.prop(wrd, 'generate_clouds_upper')
|
|
layout.prop(wrd, 'generate_clouds_wind')
|
|
layout.prop(wrd, 'generate_clouds_secondary')
|
|
layout.prop(wrd, 'generate_clouds_precipitation')
|
|
layout.prop(wrd, 'generate_clouds_eccentricity')
|
|
|
|
layout.label('Screen-Space Ambient Occlusion')
|
|
# layout.prop(wrd, 'generate_ssao')
|
|
# if wrd.generate_ssao:
|
|
layout.prop(wrd, 'generate_ssao_size')
|
|
layout.prop(wrd, 'generate_ssao_strength')
|
|
layout.prop(wrd, 'generate_ssao_texture_scale')
|
|
|
|
layout.label('Bloom')
|
|
# layout.prop(wrd, 'generate_bloom')
|
|
# if wrd.generate_bloom:
|
|
layout.prop(wrd, 'generate_bloom_threshold')
|
|
layout.prop(wrd, 'generate_bloom_strength')
|
|
layout.prop(wrd, 'generate_bloom_radius')
|
|
|
|
layout.label('Motion Blur')
|
|
# layout.prop(wrd, 'generate_motion_blur')
|
|
# if wrd.generate_motion_blur:
|
|
layout.prop(wrd, 'generate_motion_blur_intensity')
|
|
|
|
layout.label('Screen-Space Reflections')
|
|
# layout.prop(wrd, 'generate_ssr')
|
|
# if wrd.generate_ssr:
|
|
layout.prop(wrd, 'generate_ssr_ray_step')
|
|
layout.prop(wrd, 'generate_ssr_min_ray_step')
|
|
layout.prop(wrd, 'generate_ssr_search_dist')
|
|
layout.prop(wrd, 'generate_ssr_falloff_exp')
|
|
layout.prop(wrd, 'generate_ssr_jitter')
|
|
layout.prop(wrd, 'generate_ssr_texture_scale')
|
|
|
|
layout.label('Volumetric Light')
|
|
# layout.prop(wrd, 'generate_volumetric_light')
|
|
# if wrd.generate_volumetric_light:
|
|
layout.prop(wrd, 'generate_volumetric_light_air_turbidity')
|
|
layout.prop(wrd, 'generate_volumetric_light_air_color')
|
|
|
|
class ArmoryGenRenderPathButton(bpy.types.Operator):
|
|
'''Auto-generate render path based on settings'''
|
|
bl_idname = 'arm.gen_renderpath'
|
|
bl_label = 'Generate Render Path'
|
|
|
|
def execute(self, context):
|
|
return{'FINISHED'}
|
|
|
|
def register():
|
|
bpy.utils.register_module(__name__)
|
|
|
|
def unregister():
|
|
bpy.utils.unregister_module(__name__)
|