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)
- elif material.receive_shadows:
- st.sub.append(Statement("receive_shadows", True))
+ 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")
- st.sub.append(Statement("shader", "_occluder.glsl.shader"))
+ 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