291 template<
typename UniformParamType,
typename ParamValueType>
328 template<
typename UniformParamType,
typename ParamValueType>
331#ifndef HIDDEN_FROM_DOC
333#define MAKE_HELPHER_FUNC_SET_SHADER_PARAMETER(ParamType)\
335 template<typename ParamValueType>\
337 setShaderParameter ## ParamType(const SbString& name, ParamValueType val)\
339 setShaderParameter<SoShaderParameter ## ParamType>(name, val);\
341 MAKE_HELPHER_FUNC_SET_SHADER_PARAMETER(1i)
342 MAKE_HELPHER_FUNC_SET_SHADER_PARAMETER(2i)
343 MAKE_HELPHER_FUNC_SET_SHADER_PARAMETER(3i)
344 MAKE_HELPHER_FUNC_SET_SHADER_PARAMETER(4i)
345 MAKE_HELPHER_FUNC_SET_SHADER_PARAMETER(1f)
346 MAKE_HELPHER_FUNC_SET_SHADER_PARAMETER(2f)
347 MAKE_HELPHER_FUNC_SET_SHADER_PARAMETER(3f)
348 MAKE_HELPHER_FUNC_SET_SHADER_PARAMETER(4f)
349 MAKE_HELPHER_FUNC_SET_SHADER_PARAMETER(Array1f)
350 MAKE_HELPHER_FUNC_SET_SHADER_PARAMETER(Array2f)
351 MAKE_HELPHER_FUNC_SET_SHADER_PARAMETER(Array3f)
352 MAKE_HELPHER_FUNC_SET_SHADER_PARAMETER(Array4f)
353 MAKE_HELPHER_FUNC_SET_SHADER_PARAMETER(Array1i)
354 MAKE_HELPHER_FUNC_SET_SHADER_PARAMETER(Array2i)
355 MAKE_HELPHER_FUNC_SET_SHADER_PARAMETER(Array3i)
356 MAKE_HELPHER_FUNC_SET_SHADER_PARAMETER(Array4i)
357 MAKE_HELPHER_FUNC_SET_SHADER_PARAMETER(Matrix)
358 MAKE_HELPHER_FUNC_SET_SHADER_PARAMETER(Matrix3)
359#undef MAKE_HELPHER_FUNC_SET_SHADER_PARAMETER
362#define MAKE_HELPHER_FUNC_ADD_SHADER_PARAMETER(ParamType)\
364 template<typename ParamValueType>\
365 SoShaderParameter ## ParamType *\
366 addShaderParameter ## ParamType(const SbString& name, ParamValueType val)\
368 return addShaderParameter<SoShaderParameter ## ParamType>(name, val);\
370 MAKE_HELPHER_FUNC_ADD_SHADER_PARAMETER(1i)
371 MAKE_HELPHER_FUNC_ADD_SHADER_PARAMETER(2i)
372 MAKE_HELPHER_FUNC_ADD_SHADER_PARAMETER(3i)
373 MAKE_HELPHER_FUNC_ADD_SHADER_PARAMETER(4i)
374 MAKE_HELPHER_FUNC_ADD_SHADER_PARAMETER(1f)
375 MAKE_HELPHER_FUNC_ADD_SHADER_PARAMETER(2f)
376 MAKE_HELPHER_FUNC_ADD_SHADER_PARAMETER(3f)
377 MAKE_HELPHER_FUNC_ADD_SHADER_PARAMETER(4f)
378 MAKE_HELPHER_FUNC_ADD_SHADER_PARAMETER(Array1f)
379 MAKE_HELPHER_FUNC_ADD_SHADER_PARAMETER(Array2f)
380 MAKE_HELPHER_FUNC_ADD_SHADER_PARAMETER(Array3f)
381 MAKE_HELPHER_FUNC_ADD_SHADER_PARAMETER(Array4f)
382 MAKE_HELPHER_FUNC_ADD_SHADER_PARAMETER(Array1i)
383 MAKE_HELPHER_FUNC_ADD_SHADER_PARAMETER(Array2i)
384 MAKE_HELPHER_FUNC_ADD_SHADER_PARAMETER(Array3i)
385 MAKE_HELPHER_FUNC_ADD_SHADER_PARAMETER(Array4i)
386 MAKE_HELPHER_FUNC_ADD_SHADER_PARAMETER(Matrix)
387 MAKE_HELPHER_FUNC_ADD_SHADER_PARAMETER(Matrix3)
388#undef MAKE_HELPHER_FUNC_ADD_SHADER_PARAMETER
401 static void initClass();
402 static void exitClass() ;
408 SbBool isInternal()
const;
411 SbBool containStateMatrixParameters()
const
412 {
return (m_stateMatrixParameters.
getLength() != 0) ; }
414 const SbString& getSourceProgram()
const
415 {
return m_sourceProgram;}
420 inline bool isFileFound()
const;
423 inline bool needUpdate()
const {
return m_needUpdate; }
429 void setDefine(
const char* name,
const char* value);
430 void setDefine(
const char* name,
const SbString& value)
431 { setDefine(name,value.toLatin1()); }
434 void removeDefine(
const char* name);
437 void checkValidity();
440 inline void setVersion(
const SbString& version) { m_version = version; }
449 inline void setProfile(
const SbString& profile) { m_profile = profile; }
452 static bool isShaderObjectAvailable(
SoState* state);
455 static bool isGLSLLanguageAvailable(
SoState* state);
458 void invalidateSource();
461 void buildSourceToLoad(
SbString &builtSource);
467 virtual void notify(SoNotList *list);
470 void getHeaderFilenames( std::vector<SbString>& filenames );
473 void setIsFixedPipeline(
bool isFixedPipelineShader)
475 m_isFixedPipelineShader = isFixedPipelineShader;
479 bool isFixedPipeline()
const
481 return m_isFixedPipelineShader;
488 typedef SbConstCharMap<SbString> DefineMap;
489 typedef DefineMap::iterator DefineMapIt;
492 typedef std::vector<SbString> SbStringVector;
495 void setGlobalDefine(
const DefineMap& map);
498 void setDefine(DefineMap::value_type& p);
501 bool hasDefine(
const char* name)
const;
504 typedef std::set<SbString> HeaderSet;
505 typedef HeaderSet::iterator HeaderSetIt;
508 void setGlobalHeader(
const HeaderSet& map);
522 SoShaderParser* m_parser;
529 typedef std::map<std::string, std::string> ExtensionMap;
530 ExtensionMap m_extensionList;
532 typedef std::map<SbString, SbString> StrStrMap;
544 bool isEmptyLine(
const std::string& line)
const;
547 static SbString definesExtension(
const SbString& source,
const ExtensionMap::value_type& p);
550 static SbString definesAcc(
const SbString& source,
const DefineMap::value_type& p);
554 void getSourceFilename(std::vector<SbString>& filenames)
const;
557 DefineMap m_defineMap;
560 DefineMap m_defineGlobalMap;
563 HeaderSet m_headerGlobalSet;
566 SbStringVector m_includeSourceVector;
569 SbStringVector m_includeFilenameVector;
575 void updateStateMatrixList() ;
589 bool m_isFixedPipelineShader;
592 static StrStrMap s_shadersPaths;
594 static bool s_debugCache;