Project

General

Profile

« Previous | Next » 

Revision 47d838ca

Added by Leszek Koltunski over 7 years ago

NUM_POSTPROCESS corectly #defined now.

View differences:

src/main/java/org/distorted/library/program/DistortedProgram.java
216 216

  
217 217
    if (shaderHandle != 0)
218 218
      {
219
      GLES20.glShaderSource(shaderHandle, "#version 100 \n"+ generateShaderHeader(shaderType) + shaderSource);
219
      GLES20.glShaderSource(shaderHandle, shaderSource);
220 220
      GLES20.glCompileShader(shaderHandle);
221 221
      final int[] compileStatus = new int[1];
222 222
      GLES20.glGetShaderiv(shaderHandle, GLES20.GL_COMPILE_STATUS, compileStatus, 0);
......
243 243
    return shaderHandle;
244 244
    }
245 245

  
246
///////////////////////////////////////////////////////////////////////////////////////////////////
247

  
248
  private static String generateShaderHeader(final int type)
249
    {
250
    String header="";
251

  
252
    switch(type)
253
      {
254
      case GLES20.GL_VERTEX_SHADER  : header += ("#define NUM_VERTEX "  + DistortedEffects.getMaxVertex()+"\n");
255

  
256
                                      for(EffectNames name: EffectNames.values() )
257
                                        {
258
                                        if( name.getType()== EffectTypes.VERTEX)
259
                                        header += ("#define "+name.name()+" "+name.ordinal()+"\n");
260
                                        }
261
                                      break;
262
      case GLES20.GL_FRAGMENT_SHADER: header += ("#define NUM_FRAGMENT "+ DistortedEffects.getMaxFragment()+"\n");
263

  
264
                                      for(EffectNames name: EffectNames.values() )
265
                                        {
266
                                        if( name.getType()==EffectTypes.FRAGMENT)
267
                                        header += ("#define "+name.name()+" "+name.ordinal()+"\n");
268
                                        }
269
                                      break;
270
     }
271

  
272
    //android.util.Log.d("program",""+header);
273

  
274
    return header;
275
    }
276

  
277 246
///////////////////////////////////////////////////////////////////////////////////////////////////
278 247
// PUBLIC API
279 248
///////////////////////////////////////////////////////////////////////////////////////////////////
......
291 260
   * @throws LinkingException
292 261
   */
293 262

  
294
  public DistortedProgram(final InputStream vertex, final InputStream fragment)
263
  public DistortedProgram(final InputStream vertex, final InputStream fragment, final String vertexHeader, final String fragmentHeader)
295 264
  throws FragmentCompilationException,VertexCompilationException,VertexUniformsException,FragmentUniformsException,LinkingException
296 265
    {
297 266
    mNumAttributes = 0;
......
301 270

  
302 271
    sanitizeMaxValues();
303 272

  
304
    final int vertexShaderHandle   = compileShader(GLES20.GL_VERTEX_SHADER  , vertexShader  );
305
    final int fragmentShaderHandle = compileShader(GLES20.GL_FRAGMENT_SHADER, fragmentShader);
273
    final int vertexShaderHandle   = compileShader(GLES20.GL_VERTEX_SHADER  , vertexHeader   + vertexShader  );
274
    final int fragmentShaderHandle = compileShader(GLES20.GL_FRAGMENT_SHADER, fragmentHeader + fragmentShader);
306 275

  
307 276
    mProgramHandle = createAndLinkProgram(vertexShaderHandle, fragmentShaderHandle, mAttributeName);
308 277
    }

Also available in: Unified diff