27 #ifndef _ShaderGenerator_
28 #define _ShaderGenerator_
62 static bool initialize();
67 static void finalize();
128 void setTargetLanguage(
const String& shaderLanguage);
139 void setVertexShaderProfiles(
const String& vertexShaderProfiles);
156 void setFragmentShaderProfiles(
const String& fragmentShaderProfiles);
174 void setShaderCachePath(
const String& cachePath);
185 void flushShaderCache();
210 bool hasRenderState(
const String& schemeName)
const;
243 size_t getNumSubRenderStateFactories()
const;
283 bool hasShaderBasedTechnique(
const String& materialName,
const String& srcTechniqueSchemeName,
const String& dstTechniqueSchemeName)
const;
293 bool hasShaderBasedTechnique(
const String& materialName,
const String& groupName,
const String& srcTechniqueSchemeName,
const String& dstTechniqueSchemeName)
const;
304 bool createShaderBasedTechnique(
const String& materialName,
const String& srcTechniqueSchemeName,
const String& dstTechniqueSchemeName,
bool overProgrammable =
false);
316 bool createShaderBasedTechnique(
const String& materialName,
const String& groupName,
const String& srcTechniqueSchemeName,
const String& dstTechniqueSchemeName,
bool overProgrammable =
false);
327 bool removeShaderBasedTechnique(
const String& materialName,
const String& srcTechniqueSchemeName,
const String& dstTechniqueSchemeName);
338 bool removeShaderBasedTechnique(
const String& materialName,
const String& groupName,
const String& srcTechniqueSchemeName,
const String& dstTechniqueSchemeName);
359 bool cloneShaderBasedTechniques(
const String& srcMaterialName,
360 const String& srcGroupName,
const String& dstMaterialName,
const String& dstGroupName);
365 void removeAllShaderBasedTechniques();
371 void createScheme(
const String& schemeName);
378 void invalidateScheme(
const String& schemeName);
385 bool validateScheme(
const String& schemeName);
421 size_t getVertexShaderCount()
const;
425 size_t getFragmentShaderCount()
const;
456 size_t getRTShaderSchemeCount()
const;
460 const String& getRTShaderScheme(
size_t index)
const;
478 int cmpVal = strcmp(p1.first.c_str(),p2.first.c_str());
479 return (cmpVal < 0) || ((cmpVal == 0) && (strcmp(p1.second.c_str(),p2.second.c_str()) < 0));
516 void buildTargetRenderState();
519 void acquirePrograms();
522 void releasePrograms();
583 void buildTargetRenderState();
586 void acquirePrograms();
589 void releasePrograms();
600 RenderState* getRenderState(
unsigned short passIndex);
602 bool hasRenderState(
unsigned short passIndex);
610 void createSGPasses();
613 void destroySGPasses();
676 bool empty()
const {
return mTechniqueEntries.empty(); }
717 void synchronizeWithLightSettings();
720 void synchronizeWithFogSettings();
754 const LightList* pLightList,
bool suppressRenderStateChanges)
756 mOwner->notifyRenderSingleObject(rend, pass, source, pLightList, suppressRenderStateChanges);
778 mOwner->preFindVisibleObjects(source, irs, v);
793 Camera* camera,
size_t iteration)
821 return mOwner->getNumTranslators();
827 return mOwner->getTranslator(node);
859 Technique* findSourceTechnique(
const String& materialName,
const String& groupName,
const String& srcTechniqueSchemeName,
bool allowProgrammable);
862 bool isProgrammable(
Technique* tech)
const;
871 void createSubRenderStateExFactories();
874 void destroySubRenderStateExFactories();
909 bool removeCustomScriptTranslator(
const String& key);
912 size_t getNumTranslators()
const;
949 bool getIsFinalizing()
const;
1011 friend class FFPRenderStateBuilder;