Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
# Set up vertex normal defines
if program_flags & ProgramFlags.VERTEX_NORMALS:
defines['VERTEX_NORMALS'] = 1
if program_flags & ProgramFlags.FACE_NORMALS:
defines['FACE_NORMALS'] = 1
# Set up material texture defines
if bool(program_flags & ProgramFlags.USE_MATERIAL):
tf = primitive.material.tex_flags
if tf & TexFlags.NORMAL:
defines['HAS_NORMAL_TEX'] = 1
if tf & TexFlags.OCCLUSION:
defines['HAS_OCCLUSION_TEX'] = 1
if tf & TexFlags.EMISSIVE:
defines['HAS_EMISSIVE_TEX'] = 1
if tf & TexFlags.BASE_COLOR:
defines['HAS_BASE_COLOR_TEX'] = 1
if tf & TexFlags.METALLIC_ROUGHNESS:
defines['HAS_METALLIC_ROUGHNESS_TEX'] = 1
if tf & TexFlags.DIFFUSE:
defines['HAS_DIFFUSE_TEX'] = 1
if tf & TexFlags.SPECULAR_GLOSSINESS:
defines['HAS_SPECULAR_GLOSSINESS_TEX'] = 1
if isinstance(primitive.material, MetallicRoughnessMaterial):
defines['USE_METALLIC_MATERIAL'] = 1
elif isinstance(material, SpecularGlossinessMaterial):
defines['USE_GLOSSY_MATERIAL'] = 1
program = self._program_cache.get_program(
vertex_shader=vertex_shader,
fragment_shader=fragment_shader,
geometry_shader=geometry_shader,
def _compute_tex_flags(self):
tex_flags = super(MetallicRoughnessMaterial, self)._compute_tex_flags()
if self.baseColorTexture is not None:
tex_flags |= TexFlags.BASE_COLOR
if self.metallicRoughnessTexture is not None:
tex_flags |= TexFlags.METALLIC_ROUGHNESS
return tex_flags
def _compute_tex_flags(self):
tex_flags = TexFlags.NONE
if self.normalTexture is not None:
tex_flags |= TexFlags.NORMAL
if self.occlusionTexture is not None:
tex_flags |= TexFlags.OCCLUSION
if self.emissiveTexture is not None:
tex_flags |= TexFlags.EMISSIVE
return tex_flags
def _compute_tex_flags(self):
tex_flags = TexFlags.NONE
if self.normalTexture is not None:
tex_flags |= TexFlags.NORMAL
if self.occlusionTexture is not None:
tex_flags |= TexFlags.OCCLUSION
if self.emissiveTexture is not None:
tex_flags |= TexFlags.EMISSIVE
return tex_flags
# Set up material texture defines
if bool(program_flags & ProgramFlags.USE_MATERIAL):
tf = primitive.material.tex_flags
if tf & TexFlags.NORMAL:
defines['HAS_NORMAL_TEX'] = 1
if tf & TexFlags.OCCLUSION:
defines['HAS_OCCLUSION_TEX'] = 1
if tf & TexFlags.EMISSIVE:
defines['HAS_EMISSIVE_TEX'] = 1
if tf & TexFlags.BASE_COLOR:
defines['HAS_BASE_COLOR_TEX'] = 1
if tf & TexFlags.METALLIC_ROUGHNESS:
defines['HAS_METALLIC_ROUGHNESS_TEX'] = 1
if tf & TexFlags.DIFFUSE:
defines['HAS_DIFFUSE_TEX'] = 1
if tf & TexFlags.SPECULAR_GLOSSINESS:
defines['HAS_SPECULAR_GLOSSINESS_TEX'] = 1
if isinstance(primitive.material, MetallicRoughnessMaterial):
defines['USE_METALLIC_MATERIAL'] = 1
elif isinstance(material, SpecularGlossinessMaterial):
defines['USE_GLOSSY_MATERIAL'] = 1
program = self._program_cache.get_program(
vertex_shader=vertex_shader,
fragment_shader=fragment_shader,
geometry_shader=geometry_shader,
defines=defines
)
if not program._in_context():
program._add_to_context()
defines['MAX_DIRECTIONAL_LIGHTS'] = max_n_lights[0]
defines['MAX_SPOT_LIGHTS'] = max_n_lights[1]
defines['MAX_POINT_LIGHTS'] = max_n_lights[2]
# Set up vertex normal defines
if program_flags & ProgramFlags.VERTEX_NORMALS:
defines['VERTEX_NORMALS'] = 1
if program_flags & ProgramFlags.FACE_NORMALS:
defines['FACE_NORMALS'] = 1
# Set up material texture defines
if bool(program_flags & ProgramFlags.USE_MATERIAL):
tf = primitive.material.tex_flags
if tf & TexFlags.NORMAL:
defines['HAS_NORMAL_TEX'] = 1
if tf & TexFlags.OCCLUSION:
defines['HAS_OCCLUSION_TEX'] = 1
if tf & TexFlags.EMISSIVE:
defines['HAS_EMISSIVE_TEX'] = 1
if tf & TexFlags.BASE_COLOR:
defines['HAS_BASE_COLOR_TEX'] = 1
if tf & TexFlags.METALLIC_ROUGHNESS:
defines['HAS_METALLIC_ROUGHNESS_TEX'] = 1
if tf & TexFlags.DIFFUSE:
defines['HAS_DIFFUSE_TEX'] = 1
if tf & TexFlags.SPECULAR_GLOSSINESS:
defines['HAS_SPECULAR_GLOSSINESS_TEX'] = 1
if isinstance(primitive.material, MetallicRoughnessMaterial):
defines['USE_METALLIC_MATERIAL'] = 1
elif isinstance(material, SpecularGlossinessMaterial):
defines['USE_GLOSSY_MATERIAL'] = 1
def _bind_and_draw_primitive(self, primitive, pose, program, flags):
# Set model pose matrix
program.set_uniform('M', pose)
# Bind mesh buffers
primitive._bind()
# Bind mesh material
if not flags & RenderFlags.DEPTH_ONLY:
material = primitive.material
# Bind textures
tf = material.tex_flags
if tf & TexFlags.NORMAL:
self._bind_texture(material.normalTexture,
'material.normal_texture', program)
if tf & TexFlags.OCCLUSION:
self._bind_texture(material.occlusionTexture,
'material.occlusion_texture', program)
if tf & TexFlags.EMISSIVE:
self._bind_texture(material.emissiveTexture,
'material.emissive_texture', program)
if tf & TexFlags.BASE_COLOR:
self._bind_texture(material.baseColorTexture,
'material.base_color_texture', program)
if tf & TexFlags.METALLIC_ROUGHNESS:
self._bind_texture(material.metallicRoughnessTexture,
'material.metallic_roughness_texture',
program)
if tf & TexFlags.DIFFUSE:
defines['MAX_POINT_LIGHTS'] = max_n_lights[2]
# Set up vertex normal defines
if program_flags & ProgramFlags.VERTEX_NORMALS:
defines['VERTEX_NORMALS'] = 1
if program_flags & ProgramFlags.FACE_NORMALS:
defines['FACE_NORMALS'] = 1
# Set up material texture defines
if bool(program_flags & ProgramFlags.USE_MATERIAL):
tf = primitive.material.tex_flags
if tf & TexFlags.NORMAL:
defines['HAS_NORMAL_TEX'] = 1
if tf & TexFlags.OCCLUSION:
defines['HAS_OCCLUSION_TEX'] = 1
if tf & TexFlags.EMISSIVE:
defines['HAS_EMISSIVE_TEX'] = 1
if tf & TexFlags.BASE_COLOR:
defines['HAS_BASE_COLOR_TEX'] = 1
if tf & TexFlags.METALLIC_ROUGHNESS:
defines['HAS_METALLIC_ROUGHNESS_TEX'] = 1
if tf & TexFlags.DIFFUSE:
defines['HAS_DIFFUSE_TEX'] = 1
if tf & TexFlags.SPECULAR_GLOSSINESS:
defines['HAS_SPECULAR_GLOSSINESS_TEX'] = 1
if isinstance(primitive.material, MetallicRoughnessMaterial):
defines['USE_METALLIC_MATERIAL'] = 1
elif isinstance(material, SpecularGlossinessMaterial):
defines['USE_GLOSSY_MATERIAL'] = 1
program = self._program_cache.get_program(
vertex_shader=vertex_shader,
def _compute_tex_flags(self):
flags = super(SpecularGlossinessMaterial, self)._compute_tex_flags()
if self.diffuseTexture is not None:
flags |= TexFlags.DIFFUSE
if self.specularGlossinessTexture is not None:
flags |= TexFlags.SPECULAR_GLOSSINESS
return flags
defines['FACE_NORMALS'] = 1
# Set up material texture defines
if bool(program_flags & ProgramFlags.USE_MATERIAL):
tf = primitive.material.tex_flags
if tf & TexFlags.NORMAL:
defines['HAS_NORMAL_TEX'] = 1
if tf & TexFlags.OCCLUSION:
defines['HAS_OCCLUSION_TEX'] = 1
if tf & TexFlags.EMISSIVE:
defines['HAS_EMISSIVE_TEX'] = 1
if tf & TexFlags.BASE_COLOR:
defines['HAS_BASE_COLOR_TEX'] = 1
if tf & TexFlags.METALLIC_ROUGHNESS:
defines['HAS_METALLIC_ROUGHNESS_TEX'] = 1
if tf & TexFlags.DIFFUSE:
defines['HAS_DIFFUSE_TEX'] = 1
if tf & TexFlags.SPECULAR_GLOSSINESS:
defines['HAS_SPECULAR_GLOSSINESS_TEX'] = 1
if isinstance(primitive.material, MetallicRoughnessMaterial):
defines['USE_METALLIC_MATERIAL'] = 1
elif isinstance(material, SpecularGlossinessMaterial):
defines['USE_GLOSSY_MATERIAL'] = 1
program = self._program_cache.get_program(
vertex_shader=vertex_shader,
fragment_shader=fragment_shader,
geometry_shader=geometry_shader,
defines=defines
)
if not program._in_context():