Author: Not specified Language: cpp
Description: Not specified Timestamp: 2013-06-07 21:06:43 +0000
View raw paste Reply
  1. /* Shader_* maps to the COM_* stuff not whats on repo up above in tr_shader right now */
  2.  
  3. /* ... */
  4.  
  5.         // load and parse shader files
  6.         for ( i = 0; i < numShaderFiles; i++ )
  7.         {
  8.                 char filename[MAX_QPATH];
  9.  
  10.                 Com_sprintf( filename, sizeof( filename ), "%s/%s", path, shaderFiles[i] );
  11.                 ri.Printf( PRINT_DEVELOPER, "...loading '%s'\n", filename );
  12.                 summand = ri.FS_ReadFile( filename, (void **)&buffers[i] );
  13.                 if ( !buffers[i] ) {
  14.                         ri.Error( ERR_DROP, "Couldn't load %s", filename );
  15.                 }
  16.  
  17.                 // Do a simple check on the shader structure in that file to make sure one bad shader file cannot fuck up all other shaders.
  18.                 p = buffers[i];
  19.                 Shader_BeginParseSession(filename);
  20.                 while(1)
  21.                 {
  22.                         token = Shader_ParseExt((const char **)&p, qtrue);
  23.                        
  24.                         if(!*token)
  25.                                 break;
  26.  
  27.                         Q_strncpyz(shaderName, token, sizeof(shaderName));
  28.                         shaderLine = Shader_GetCurrentParseLine();
  29.                        
  30.                         token = Shader_ParseExt((const char **)&p, qtrue);
  31.                         if(token[0] != '{' && token[1] != '\0')
  32.                         {
  33.                                 ri.Printf(PRINT_WARNING, "WARNING: Ignoring shader file %s. Shader \"%s\" on line %d missing opening brace", filename, shaderName, shaderLine);
  34.                                 if (token[0])
  35.                                 {
  36.                                         ri.Printf(PRINT_WARNING, " (found \"%s\" on line %d)", token, COM_GetCurrentParseLine());
  37.                                 }
  38.                                 ri.Printf(PRINT_WARNING, ".\n");
  39.                                 ri.FS_FreeFile(buffers[i]);
  40.                                 buffers[i] = NULL;
  41.                                 break;
  42.                         }
  43.  
  44.                         if(!Shader_SkipBracedSection((const char **)&p, 1))
  45.                         {
  46.                                 ri.Printf(PRINT_WARNING, "WARNING: Ignoring shader file %s. Shader \"%s\" on line %d missing closing brace.\n", filename, shaderName, shaderLine);
  47.                                 ri.FS_FreeFile(buffers[i]);
  48.                                 buffers[i] = NULL;
  49.                                 break;
  50.                         }
  51.                 }
  52.  
  53.                 if (buffers[i])
  54.                         sum += summand;
  55.         }
  56.  
  57. /* ... */
View raw paste Reply