Revision 36d65d88
Added by Leszek Koltunski almost 4 years ago
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
Progress making it possible to apply Vertex Effects only to some Components of a Mesh.