Clean shader names

This commit is contained in:
Lubos Lenco 2017-11-04 19:34:09 +01:00
parent d2944f83fa
commit a8da0a18d0
5 changed files with 20 additions and 39 deletions

View file

@ -7,8 +7,6 @@ def write_data(res, defs, json_data, base_name):
res['shader_datas'].append(sres)
shader_id = base_name
for s in defs:
shader_id += s
sres['name'] = shader_id
sres['contexts'] = []
@ -31,15 +29,6 @@ def write_data(res, defs, json_data, base_name):
tesc_name = c['tesscontrol_shader'].split('.')[0]
if 'tesseval_shader' in c:
tese_name = c['tesseval_shader'].split('.')[0]
for d in defs:
vert_name += d
frag_name += d
if 'geometry_shader' in c:
geom_name += d
if 'tesscontrol_shader' in c:
tesc_name += d
if 'tesseval_shader' in c:
tese_name += d
con['vertex_shader'] = vert_name + '.vert'
con['fragment_shader'] = frag_name + '.frag'
@ -264,14 +253,10 @@ def parse_shader(sres, c, con, defs, lines, parse_attributes):
break
con['constants'].append(const)
def save_data(path, base_name, subset, res):
res_name = base_name
for s in subset:
res_name += s
def save_data(path, base_name, res):
r = {}
r['shader_datas'] = [res['shader_datas'][-1]]
arm.utils.write_arm(path + '/' + res_name + '.arm', r)
arm.utils.write_arm(path + '/' + base_name + '.arm', r)
def make(base_name, json_data, fp, defs):
@ -283,4 +268,4 @@ def make(base_name, json_data, fp, defs):
res['shader_datas'] = []
write_data(res, defs, json_data, base_name)
save_data(path, base_name, defs, res)
save_data(path, base_name, res)

View file

@ -67,14 +67,11 @@ def make(base_name, json_data, fp, defs):
shader['tese'] = f.read().splitlines()
for shader in shaders:
ext = ''
for s in defs:
ext += s
write_variant(path, shader['vert_name'] + ext + '.vert.glsl', defs, shader['vert'])
write_variant(path, shader['frag_name'] + ext + '.frag.glsl', defs, shader['frag'])
write_variant(path, shader['vert_name'] + '.vert.glsl', defs, shader['vert'])
write_variant(path, shader['frag_name'] + '.frag.glsl', defs, shader['frag'])
if 'geom' in shader:
write_variant(path, shader['geom_name'] + ext + '.geom.glsl', defs, shader['geom'])
write_variant(path, shader['geom_name'] + '.geom.glsl', defs, shader['geom'])
if 'tesc' in shader:
write_variant(path, shader['tesc_name'] + ext + '.tesc.glsl', defs, shader['tesc'])
write_variant(path, shader['tesc_name'] + '.tesc.glsl', defs, shader['tesc'])
if 'tese' in shader:
write_variant(path, shader['tese_name'] + ext + '.tese.glsl', defs, shader['tese'])
write_variant(path, shader['tese_name'] + '.tese.glsl', defs, shader['tese'])

View file

@ -143,17 +143,21 @@ def export_data(fp, sdk_path, is_play=False, is_publish=False, in_viewport=False
modules.append('ui')
print('Exported modules: ' + str(modules))
defs = make_utils.def_strings_to_array(wrd.world_defs)
print('Shader flags: ' + str(defs))
# Write referenced shader variants
for ref in assets.shader_datas:
# Data does not exist yet
if not os.path.isfile(fp + '/' + ref):
shader_name = ref.split('/')[3] # Extract from 'build/compiled/...'
defs = make_utils.def_strings_to_array(wrd.world_defs)
if shader_name.startswith('compositor_pass'):
defs += make_utils.def_strings_to_array(wrd.compo_defs)
cdefs = make_utils.def_strings_to_array(wrd.compo_defs)
compile_shader(raw_shaders_path, shader_name, defs + cdefs)
elif shader_name.startswith('grease_pencil'):
defs = []
compile_shader(raw_shaders_path, shader_name, defs)
compile_shader(raw_shaders_path, shader_name, [])
else:
compile_shader(raw_shaders_path, shader_name, defs)
# Reset path
os.chdir(fp)

View file

@ -201,17 +201,14 @@ def make_draw_material_quad(stage, node_group, node, context_index=1):
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
wrd = bpy.data.worlds['Arm']
world_defs = wrd.world_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])
stage['params'].append(scon[0] + '/' + scon[1] + '/' + scon[2])
# Include data and shaders
dir_name = scon[0]
# Append world defs
data_name = scon[1] + world_defs
data_name = scon[1]
assets.add_shader2(dir_name, data_name)
def make_draw_world(stage, node_group, node, dome=True):
@ -269,7 +266,7 @@ def make_draw_compositor(stage, node_group, node, with_fxaa=False):
wrd.compo_defs = compositor_defs
defs = world_defs + compositor_defs
data_name = scon + defs
data_name = scon
stage['command'] = 'draw_shader_quad'
stage['params'].append(data_name + '/' + data_name + '/' + scon)

View file

@ -177,9 +177,7 @@ def build_node_tree(world):
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
data_name = 'world'
# Reference correct shader context
dat = output['material_datas'][0]