import os
def create_technique_resource(material, resources):
+ # This operates on a Blender material, not a custom object
from .datafile import Resource, Statement
tech_res = Resource(material.name+".tech", "technique")
for u in material.uniforms:
ss.sub.append(Statement("uniform", u.name, *u.values[:u.size]))
st.sub.append(ss)
+ else:
+ if material.receive_shadows:
+ st.sub.append(Statement("receive_shadows", True))
+ if material.image_based_lighting:
+ st.sub.append(Statement("image_based_lighting", True))
tech_res.statements.append(st)
+ if material.shadow_method!='NONE':
+ st = Statement("pass", "shadow")
+ if material.render_mode=='CUSTOM':
+ shader = material.shadow_shader or material.shader
+ if shader.endswith(".glsl"):
+ shader += ".shader"
+ st.sub.append(Statement("shader", shader))
+ else:
+ st.sub.append(Statement("shader", "_occluder.glsl.shader"))
+ tech_res.statements.append(st)
+
return tech_res
class MaterialExporter:
mat_res = Resource(material.name+".mat", "material")
if material.type!="pbr" and material.type!="unlit":
- raise Exception("Can't export unknown material type "+material.type)
+ raise Exception("Can't export material {} of unknown type {}".format(material.name, material.type))
mat_res.statements.append(Statement("type", Token(material.type)));
for p in material.properties: