Project

General

Profile

« Previous | Next » 

Revision 36d65d88

Added by Leszek Koltunski almost 4 years ago

Progress making it possible to apply Vertex Effects only to some Components of a Mesh.

View differences:

src/main/java/org/distorted/library/main/DistortedLibrary.java
215 215

  
216 216
    String mainVertHeader= mGLSL_VERSION + ("#define NUM_VERTEX "   + ( numV>0 ? getMax(EffectType.VERTEX  ) : 0 ) + "\n");
217 217
    String mainFragHeader= mGLSL_VERSION + ("#define NUM_FRAGMENT " + ( numF>0 ? getMax(EffectType.FRAGMENT) : 0 ) + "\n");
218

  
219
    mainVertHeader += "#define MAX_COMPON " + MeshBase.getMaxComponents() + "\n";
220

  
218 221
    String enabledEffectV= VertexEffect.getGLSL();
219 222
    String enabledEffectF= FragmentEffect.getGLSL();
220 223

  
......
233 236

  
234 237
    int mainProgramH = mMainProgram.getProgramHandle();
235 238
    EffectQueue.getUniforms(mainProgramH,0);
239
    MeshBase.getUniforms(mainProgramH,0);
236 240
    mMainTextureH= GLES30.glGetUniformLocation( mainProgramH, "u_Texture");
237 241

  
238 242
    // BLIT PROGRAM ////////////////////////////////////
......
302 306

  
303 307
    String fullVertHeader= mGLSL_VERSION + ("#define NUM_VERTEX "   + ( numV>0 ? getMax(EffectType.VERTEX ) : 0 ) + "\n");
304 308
    String fullFragHeader= mGLSL_VERSION + ("#define NUM_FRAGMENT " +                                         0   + "\n");
309

  
310
    fullVertHeader += "#define MAX_COMPON " + MeshBase.getMaxComponents() + "\n";
311

  
305 312
    String enabledEffectV= VertexEffect.getAllGLSL();
306 313
    String enabledEffectF= "{}";
307 314

  
......
322 329

  
323 330
    int fullProgramH = mFullProgram.getProgramHandle();
324 331
    EffectQueue.getUniforms(fullProgramH,3);
332
    MeshBase.getUniforms(fullProgramH,3);
325 333
    }
326 334

  
327 335
///////////////////////////////////////////////////////////////////////////////////////////////////
......
338 346
    String mainVertHeader= mGLSL_VERSION + ("#define NUM_VERTEX "   + ( numV>0 ? getMax(EffectType.VERTEX  ) : 0 ) + "\n") + ("#define OIT\n");
339 347
    String mainFragHeader= mGLSL_VERSION + ("#define NUM_FRAGMENT " + ( numF>0 ? getMax(EffectType.FRAGMENT) : 0 ) + "\n") + ("#define OIT\n");
340 348

  
349
    mainVertHeader += "#define MAX_COMPON " + MeshBase.getMaxComponents() + "\n";
350

  
341 351
    String enabledEffectV= VertexEffect.getGLSL();
342 352
    String enabledEffectF= FragmentEffect.getGLSL();
343 353

  
......
354 364

  
355 365
    int mainOITProgramH = mMainOITProgram.getProgramHandle();
356 366
    EffectQueue.getUniforms(mainOITProgramH,1);
367
    MeshBase.getUniforms(mainOITProgramH,1);
357 368
    mMainOITTextureH    = GLES30.glGetUniformLocation( mainOITProgramH, "u_Texture");
358 369
    mMainOITSizeH       = GLES30.glGetUniformLocation( mainOITProgramH, "u_Size");
359 370
    mMainOITNumRecordsH = GLES30.glGetUniformLocation( mainOITProgramH, "u_numRecords");
......
468 479
    {
469 480
    if( mFullProgram!=null )
470 481
      {
471
      GLES30.glViewport(0, 0, 500, 500 ); // TODO ???
482
      GLES30.glViewport(0, 0, 500, 500 ); // this is fine, we don't need viewport at all
472 483

  
473 484
      int num = mesh.getNumVertices();
474 485
      int tfo = mesh.getTFO();
......
477 488
      mesh.bindVertexAttribs(mFullProgram);
478 489
      mesh.computeQueue();
479 490
      mesh.sendQueue();
491
      mesh.send(3);
480 492

  
481 493
      GLES30.glBindBufferBase(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 0, tfo );
482 494
      GLES30.glBeginTransformFeedback( GLES30.GL_POINTS);
......
503 515
    GLES30.glUniform2ui(DistortedLibrary.mMainOITSizeH, surface.mWidth, surface.mHeight);
504 516
    GLES30.glUniform1ui(DistortedLibrary.mMainOITNumRecordsH, (int)(DistortedLibrary.mBufferSize*surface.mWidth*surface.mHeight) );
505 517
    mesh.bindVertexAttribs(DistortedLibrary.mMainOITProgram);
518
    mesh.send(1);
506 519

  
507 520
    float inflate     = mesh.getInflate();
508 521
    float distance    = surface.mDistance;
......
515 528
    if( mesh.getShowNormals() )
516 529
      {
517 530
      DistortedLibrary.mMainProgram.useProgram();
531
      mesh.send(0);
518 532
      EffectQueue.send(queues, distance, mipmap, projection, inflate, mesh, 0 );
519 533
      displayNormals(queues,mesh);
520 534
      }
......
534 548
      mMainProgram.useProgram();
535 549
      GLES30.glUniform1i(DistortedLibrary.mMainTextureH, 0);
536 550
      mesh.bindVertexAttribs(DistortedLibrary.mMainProgram);
551
      mesh.send(0);
537 552

  
538 553
      float inflate     = mesh.getInflate();
539 554
      float distance    = surface.mDistance;

Also available in: Unified diff