code: function getGetUniformHook1(defaultNormalMap, defaultRoughnessMap, defaultDiffuseMap) {
  
      return function (renderable, gBufferMat, symbol) {
          var standardMaterial = renderable.material;
          if (symbol === 'doubleSided') {
              return standardMaterial.isDefined('fragment', 'DOUBLE_SIDED');
          }
          else if (symbol === 'uvRepeat' || symbol === 'uvOffset' || symbol === 'alpha') {
              return standardMaterial.get(symbol);
          }
          else if (symbol === 'normalMap') {
              return standardMaterial.get(symbol) || defaultNormalMap;
          }
          else if (symbol === 'diffuseMap') {
              return standardMaterial.get(symbol) || defaultDiffuseMap;
          }
          else if (symbol === 'alphaCutoff') {
              // TODO DIFFUSEMAP_ALPHA_ALPHA
              if (standardMaterial.isDefined('fragment', 'ALPHA_TEST')) {
                  var alphaCutoff = standardMaterial.get('alphaCutoff');
                  return alphaCutoff || 0;
              }
              return 0;
          }
          else {
              var useRoughnessWorkflow = standardMaterial.isDefined('fragment', 'USE_ROUGHNESS');
              var roughGlossMap = useRoughnessWorkflow ? standardMaterial.get('roughnessMap') : standardMaterial.get('glossinessMap');
              switch (symbol) {
                  case 'glossiness':
                      return useRoughnessWorkflow ? (1.0 - standardMaterial.get('roughness')) : standardMaterial.get('glossiness');
                  case 'roughGlossMap':
                      return roughGlossMap;
                  case 'useRoughGlossMap':
                      return !!roughGlossMap;
                  case 'useRoughness':
                      return useRoughnessWorkflow;
                  case 'roughGlossChannel':
                      return useRoughnessWorkflow
                          ? standardMaterial.getDefine('fragment', 'ROUGHNESS_CHANNEL')
                          : standardMaterial.getDefine('fragment', 'GLOSSINESS_CHANNEL');
              }
          }
      };
  }
docs: TODO specularColor TODO Performance improvement