267 :(NSString *)name
268 cacheKey:(NSString *)cacheKey
269 configuration:(NSDictionary *)configuration
270 macros:(NSDictionary *)macros
271 bindingTarget:(id<OOWeakReferenceSupport>)object
272 forSmoothedMesh:(BOOL)smooth
273{
275
276#if OO_SHADERS
277
279 {
280 if ([OOShaderMaterial configurationDictionarySpecifiesShaderMaterial:configuration])
281 {
282 result = [OOShaderMaterial shaderMaterialWithName:name
283 configuration:configuration
284 macros:macros
285 bindingTarget:object];
286 }
287
288
290 (smooth ||
293 [configuration oo_combinedSpecularMapSpecifier] !=
nil ||
294 [configuration oo_normalMapSpecifier] !=
nil ||
295 [configuration oo_parallaxMapSpecifier] !=
nil ||
296 [configuration oo_normalAndParallaxMapSpecifier] !=
nil ||
297 [configuration oo_emissionMapSpecifier] !=
nil ||
298 [configuration oo_illuminationMapSpecifier] !=
nil ||
299 [configuration oo_emissionAndIlluminationMapSpecifier] !=
nil
300 ))
301 {
302 result = [self defaultShaderMaterialWithName:name
303 cacheKey:cacheKey
304 configuration:configuration
305 macros:macros
306 bindingTarget:(id<OOWeakReferenceSupport>)object];
307 }
308 }
309#endif
310
311#if OO_MULTITEXTURE
313 {
314 if ([configuration oo_emissionMapSpecifier] !=
nil ||
315 [configuration oo_illuminationMapSpecifier] ||
316 [configuration oo_emissionAndIlluminationMapSpecifier] !=
nil)
317 {
318 result = [[OOMultiTextureMaterial alloc] initWithName:name configuration:configuration];
319 [result autorelease];
320 }
321 }
322#endif
323
325 {
326 if ([configuration oo_diffuseMapSpecifierWithDefaultName:name] ==
nil)
327 {
328 result = [[
OOBasicMaterial alloc] initWithName:name configuration:configuration];
329 }
330 else
331 {
333 }
335 {
336 result = [[
OOBasicMaterial alloc] initWithName:name configuration:configuration];
337 }
338 [result autorelease];
339 }
340 return result;
341}
@ DEBUG_NO_SHADER_FALLBACK