コード例 #1
0
ファイル: make_renderpath.py プロジェクト: xetrocoen/armory
def make_draw_material_quad(stage, node_group, node, context_index=1):
    stage['command'] = 'draw_material_quad'
    material_context = node.inputs[context_index].default_value
    stage['params'].append(material_context)
    # Include data and shaders
    shader_context = node.inputs[context_index].default_value
    scon = shader_context.split('/')
    dir_name = scon[2]
    # No world defs for material passes
    data_name = scon[2]
    assets.add_shader2(dir_name, data_name)
コード例 #2
0
ファイル: make_renderpath.py プロジェクト: xetrocoen/armory
def make_draw_compositor(stage, node_group, node, with_fxaa=False):
    scon = 'compositor_pass'
    wrd = bpy.data.worlds['Arm']
    world_defs = wrd.world_defs + wrd.rp_defs
    compositor_defs = make_compositor.parse_defs(
        bpy.data.scenes[0].node_tree)  # Thrown in scene 0 for now
    compositor_defs += '_CTone' + wrd.generate_tonemap
    # Additional compositor flags
    compo_depth = False  # Read depth
    # compo_pos = False # Construct position from depth
    if with_fxaa:  # FXAA directly in compositor, useful for forward path
        compositor_defs += '_CFXAA'
    if wrd.generate_letterbox:
        compositor_defs += '_CLetterbox'
    if wrd.generate_grain:
        compositor_defs += '_CGrain'
    if bpy.data.scenes[0].cycles.film_exposure != 1.0:
        compositor_defs += '_CExposure'
    if wrd.generate_fog:
        compositor_defs += '_CFog'
        # compo_pos = True
    if build_node_tree.cam.dof_distance > 0.0:
        compositor_defs += '_CDOF'
        compo_depth = True
    # if compo_pos:
    # compositor_defs += '_CPos'
    # compo_depth = True
    if compo_depth:
        compositor_defs += '_CDepth'

    if wrd.generate_lens_texture != '':
        compositor_defs += '_CLensTex'
        assets.add_embedded_data('lenstexture.jpg')

    if wrd.generate_fisheye:
        compositor_defs += '_CFishEye'

    if wrd.generate_vignette:
        compositor_defs += '_CVignette'

    wrd.compo_defs = compositor_defs

    defs = world_defs + compositor_defs
    data_name = scon + defs

    stage['command'] = 'draw_shader_quad'
    stage['params'].append(data_name + '/' + data_name + '/' + scon)
    # Include data and shaders
    assets.add_shader2(scon, data_name)
コード例 #3
0
def write_output(output):
    # Add datas to khafile
    dir_name = 'world'
    data_name = 'world'

    # Reference correct shader context
    dat = output['material_datas'][0]
    dat['shader'] = data_name + '/' + data_name
    assets.add_shader2(dir_name, data_name)

    # Write material json
    path = arm.utils.build_dir() + '/compiled/Assets/materials/'
    asset_path = path + dat['name'] + '.arm'
    arm.utils.write_arm(asset_path, output)
    assets.add(asset_path)
コード例 #4
0
ファイル: make_world.py プロジェクト: xetrocoen/armory
def write_output(output):
    # Add datas to khafile
    dir_name = 'world'
    # Append world defs
    wrd = bpy.data.worlds['Arm']
    data_name = 'world' + wrd.world_defs + wrd.rp_defs

    # Reference correct shader context
    dat = output['material_datas'][0]
    dat['shader'] = data_name + '/' + data_name
    assets.add_shader2(dir_name, data_name)

    # Write material json
    path = 'build/compiled/Assets/materials/'
    asset_path = path + dat['name'] + '.arm'
    arm.utils.write_arm(asset_path, output)
    assets.add(asset_path)
コード例 #5
0
ファイル: make_renderpath.py プロジェクト: xetrocoen/armory
def make_draw_quad(stage,
                   node_group,
                   node,
                   context_index=1,
                   shader_context=None):
    stage['command'] = 'draw_shader_quad'
    # Append world defs to get proper context
    world_defs = bpy.data.worlds['Arm'].world_defs + bpy.data.worlds[
        'Arm'].rp_defs
    if shader_context == None:
        shader_context = node.inputs[context_index].default_value
    scon = shader_context.split('/')
    stage['params'].append(scon[0] + world_defs + '/' + scon[1] + world_defs +
                           '/' + scon[2])
    # Include data and shaders
    dir_name = scon[0]
    # Append world defs
    data_name = scon[1] + world_defs
    assets.add_shader2(dir_name, data_name)
コード例 #6
0
def build():
    assets_path = arm.utils.get_sdk_path() + 'armory/Assets/'
    wrd = bpy.data.worlds['Arm']
    rpdat = arm.utils.get_rp()

    mobile_mat = rpdat.arm_material_model == 'Mobile' or rpdat.arm_material_model == 'Solid'
    if not mobile_mat:
        # Always include
        assets.add(assets_path + 'brdf.png')
        assets.add_embedded_data('brdf.png')

    if rpdat.rp_hdr:
        assets.add_khafile_def('rp_hdr')

    assets.add_khafile_def('rp_renderer={0}'.format(rpdat.rp_renderer))
    if rpdat.rp_depthprepass:
        assets.add_khafile_def('rp_depthprepass')

    if rpdat.rp_shadowmap != 'Off':
        assets.add_khafile_def('rp_shadowmap')
        assets.add_khafile_def('rp_shadowmap_size={0}'.format(
            rpdat.rp_shadowmap))

    assets.add_khafile_def('rp_background={0}'.format(rpdat.rp_background))
    if rpdat.rp_background == 'World':
        if '_EnvClouds' in wrd.world_defs:
            assets.add(assets_path + 'noise256.png')
            assets.add_embedded_data('noise256.png')

    if rpdat.rp_render_to_texture:
        assets.add_khafile_def('rp_render_to_texture')

        if rpdat.rp_compositornodes:
            assets.add_khafile_def('rp_compositornodes')
            compo_depth = False
            if wrd.arm_tonemap != 'Off':
                wrd.compo_defs = '_CTone' + wrd.arm_tonemap
            if rpdat.rp_antialiasing != 'Off':
                wrd.compo_defs += '_CFXAA'
            if wrd.arm_letterbox:
                wrd.compo_defs += '_CLetterbox'
            if wrd.arm_grain:
                wrd.compo_defs += '_CGrain'
            if bpy.data.scenes[0].cycles.film_exposure != 1.0:
                wrd.compo_defs += '_CExposure'
            if wrd.arm_fog:
                wrd.compo_defs += '_CFog'
                compo_depth = True
            if len(bpy.data.cameras
                   ) > 0 and bpy.data.cameras[0].dof_distance > 0.0:
                wrd.compo_defs += '_CDOF'
                compo_depth = True
            if compo_depth:
                wrd.compo_defs += '_CDepth'
            if wrd.arm_lens_texture != '':
                wrd.compo_defs += '_CLensTex'
                assets.add_embedded_data('lenstexture.jpg')
            if wrd.arm_fisheye:
                wrd.compo_defs += '_CFishEye'
            if wrd.arm_vignette:
                wrd.compo_defs += '_CVignette'
            if wrd.arm_lensflare:
                wrd.compo_defs += '_CGlare'
            assets.add_shader2('compositor_pass', 'compositor_pass')
        else:
            assets.add_shader2('copy_pass', 'copy_pass')

        assets.add_khafile_def('rp_antialiasing={0}'.format(
            rpdat.rp_antialiasing))

        if rpdat.rp_antialiasing == 'SMAA' or rpdat.rp_antialiasing == 'TAA':
            assets.add_shader2('smaa_edge_detect', 'smaa_edge_detect')
            assets.add_shader2('smaa_blend_weight', 'smaa_blend_weight')
            assets.add_shader2('smaa_neighborhood_blend',
                               'smaa_neighborhood_blend')
            assets.add(assets_path + 'smaa_area.png')
            assets.add(assets_path + 'smaa_search.png')
            assets.add_embedded_data('smaa_area.png')
            assets.add_embedded_data('smaa_search.png')
            wrd.world_defs += '_SMAA'
            if rpdat.rp_antialiasing == 'TAA':
                assets.add_shader2('taa_pass', 'taa_pass')
                assets.add_shader2('copy_pass', 'copy_pass')

        if rpdat.rp_antialiasing == 'TAA' or rpdat.rp_motionblur == 'Object':
            assets.add_khafile_def('arm_veloc')
            wrd.world_defs += '_Veloc'
            if rpdat.rp_antialiasing == 'TAA':
                assets.add_khafile_def('arm_taa')

        assets.add_khafile_def('rp_supersampling={0}'.format(
            rpdat.rp_supersampling))
        if rpdat.rp_supersampling == '4':
            assets.add_shader2('supersample_resolve', 'supersample_resolve')

    if rpdat.rp_overlays:
        assets.add_khafile_def('rp_overlays')

    if rpdat.rp_translucency:
        assets.add_khafile_def('rp_translucency')
        assets.add_shader2('translucent_resolve', 'translucent_resolve')

    if rpdat.rp_stereo:
        assets.add_khafile_def('rp_stereo')
        assets.add_khafile_def('arm_vr')
        wrd.world_defs += '_VR'
        assets.add(assets_path + 'vr.png')
        assets.add_embedded_data('vr.png')

    assets.add_khafile_def('rp_gi={0}'.format(rpdat.rp_gi))
    if rpdat.rp_gi != 'Off':
        assets.add_khafile_def('rp_gi={0}'.format(rpdat.rp_gi))
        assets.add_khafile_def('rp_voxelgi_resolution={0}'.format(
            rpdat.rp_voxelgi_resolution))
        assets.add_khafile_def('rp_voxelgi_resolution_z={0}'.format(
            rpdat.rp_voxelgi_resolution_z))
        if rpdat.rp_voxelgi_hdr:
            assets.add_khafile_def('rp_voxelgi_hdr')
        if rpdat.arm_voxelgi_shadows:
            assets.add_khafile_def('rp_voxelgi_shadows')
        if rpdat.arm_voxelgi_refraction:
            assets.add_khafile_def('rp_voxelgi_refraction')

    if rpdat.arm_rp_resolution != 'Display':
        assets.add_khafile_def('rp_resolution={0}'.format(
            rpdat.arm_rp_resolution))

    assets.add_khafile_def('rp_ssgi={0}'.format(rpdat.rp_ssgi))
    if rpdat.rp_ssgi != 'Off':
        wrd.world_defs += '_SSAO'
        if rpdat.rp_ssgi == 'SSAO':
            assets.add_shader2('ssao_pass', 'ssao_pass')
            assets.add_shader2('blur_edge_pass', 'blur_edge_pass')
            assets.add(assets_path + 'noise8.png')
            assets.add_embedded_data('noise8.png')
        else:
            assets.add_shader2('ssgi_pass', 'ssgi_pass')
            assets.add_shader2('ssgi_blur_pass', 'ssgi_blur_pass')

    if rpdat.rp_renderer == 'Deferred':
        assets.add_shader2('deferred_indirect', 'deferred_indirect')
        assets.add_shader2('deferred_light', 'deferred_light')
        assets.add_shader2('deferred_light_quad', 'deferred_light_quad')

    if rpdat.rp_rendercapture:
        assets.add_khafile_def('rp_rendercapture')
        assets.add_khafile_def('rp_rendercapture_format={0}'.format(
            wrd.rp_rendercapture_format))
        assets.add_shader2('copy_pass', 'copy_pass')

    if rpdat.rp_volumetriclight:
        assets.add_khafile_def('rp_volumetriclight')
        assets.add_shader2('volumetric_light_quad', 'volumetric_light_quad')
        assets.add_shader2('volumetric_light', 'volumetric_light')
        assets.add_shader2('blur_edge_pass', 'blur_edge_pass')

    if rpdat.rp_decals:
        assets.add_khafile_def('rp_decals')

    if rpdat.rp_ocean:
        assets.add_khafile_def('rp_ocean')
        assets.add_shader2('water_pass', 'water_pass')

    if rpdat.rp_blending_state != 'Off':
        assets.add_khafile_def('rp_blending')

    if rpdat.rp_bloom:
        assets.add_khafile_def('rp_bloom')
        assets.add_shader2('bloom_pass', 'bloom_pass')
        assets.add_shader2('blur_gaus_pass', 'blur_gaus_pass')

    if rpdat.rp_sss:
        assets.add_khafile_def('rp_sss')
        wrd.world_defs += '_SSS'
        assets.add_shader2('sss_pass', 'sss_pass')

    if rpdat.rp_ssr:
        assets.add_khafile_def('rp_ssr')
        assets.add_shader2('ssr_pass', 'ssr_pass')
        assets.add_shader2('blur_adaptive_pass', 'blur_adaptive_pass')
        if rpdat.arm_ssr_half_res:
            assets.add_khafile_def('rp_ssr_half')

    if rpdat.rp_motionblur != 'Off':
        assets.add_khafile_def('rp_motionblur={0}'.format(rpdat.rp_motionblur))
        assets.add_shader2('copy_pass', 'copy_pass')
        if rpdat.rp_motionblur == 'Camera':
            assets.add_shader2('motion_blur_pass', 'motion_blur_pass')
        else:
            assets.add_shader2('motion_blur_veloc_pass',
                               'motion_blur_veloc_pass')

    if rpdat.rp_compositornodes and rpdat.rp_autoexposure:
        assets.add_khafile_def('rp_autoexposure')

    if rpdat.rp_dynres:
        assets.add_khafile_def('rp_dynres')