@@ -1829,6 +1829,7 @@ cg_analyze_shader(const ShaderCaps &caps) {
18291829 // }
18301830 // }
18311831
1832+ cg_release_resources ();
18321833 return true ;
18331834}
18341835
@@ -2657,9 +2658,12 @@ make(const string &body, ShaderLanguage lang) {
26572658#endif
26582659
26592660 ShaderFile sbody (body);
2660- ShaderTable::const_iterator i = _make_table.find (sbody);
2661- if (i != _make_table.end () && (lang == SL_none || lang == i->second ->_language )) {
2662- return i->second ;
2661+
2662+ if (cache_generated_shaders) {
2663+ ShaderTable::const_iterator i = _make_table.find (sbody);
2664+ if (i != _make_table.end () && (lang == SL_none || lang == i->second ->_language )) {
2665+ return i->second ;
2666+ }
26632667 }
26642668
26652669 PT (Shader) shader = new Shader (lang);
@@ -2678,7 +2682,9 @@ make(const string &body, ShaderLanguage lang) {
26782682 }
26792683#endif
26802684
2681- _make_table[sbody] = shader;
2685+ if (cache_generated_shaders) {
2686+ _make_table[sbody] = shader;
2687+ }
26822688
26832689 if (dump_generated_shaders) {
26842690 ostringstream fns;
@@ -2718,9 +2724,11 @@ make(ShaderLanguage lang, const string &vertex, const string &fragment,
27182724
27192725 ShaderFile sbody (vertex, fragment, geometry, tess_control, tess_evaluation);
27202726
2721- ShaderTable::const_iterator i = _make_table.find (sbody);
2722- if (i != _make_table.end () && (lang == SL_none || lang == i->second ->_language )) {
2723- return i->second ;
2727+ if (cache_generated_shaders) {
2728+ ShaderTable::const_iterator i = _make_table.find (sbody);
2729+ if (i != _make_table.end () && (lang == SL_none || lang == i->second ->_language )) {
2730+ return i->second ;
2731+ }
27242732 }
27252733
27262734 PT (Shader) shader = new Shader (lang);
@@ -2737,8 +2745,10 @@ make(ShaderLanguage lang, const string &vertex, const string &fragment,
27372745 }
27382746#endif
27392747
2748+ if (cache_generated_shaders) {
2749+ _make_table[sbody] = shader;
2750+ }
27402751
2741- _make_table[sbody] = shader;
27422752 return shader;
27432753}
27442754
@@ -2759,16 +2769,22 @@ make_compute(ShaderLanguage lang, const string &body) {
27592769 sbody._separate = true ;
27602770 sbody._compute = body;
27612771
2762- ShaderTable::const_iterator i = _make_table.find (sbody);
2763- if (i != _make_table.end () && (lang == SL_none || lang == i->second ->_language )) {
2764- return i->second ;
2772+
2773+ if (cache_generated_shaders) {
2774+ ShaderTable::const_iterator i = _make_table.find (sbody);
2775+ if (i != _make_table.end () && (lang == SL_none || lang == i->second ->_language )) {
2776+ return i->second ;
2777+ }
27652778 }
27662779
27672780 PT (Shader) shader = new Shader (lang);
27682781 shader->_filename = ShaderFile (" created-shader" );
27692782 shader->_text = sbody;
27702783
2771- _make_table[sbody] = shader;
2784+ if (cache_generated_shaders) {
2785+ _make_table[sbody] = shader;
2786+ }
2787+
27722788 return shader;
27732789}
27742790
0 commit comments