Project

General

Profile

« Previous | Next » 

Revision e6519ac8

Added by Leszek Koltunski about 6 years ago

Up library requirements to OpenGL ES 3.1 (needed for the upcoming GL_SHADER_STORAGE_BUFFER)

View differences:

src/main/java/org/distorted/library/main/DistortedEffects.java
20 20
package org.distorted.library.main;
21 21

  
22 22
import android.content.res.Resources;
23
import android.opengl.GLES30;
23
import android.opengl.GLES31;
24
import android.util.Log;
24 25

  
25 26
import org.distorted.library.R;
26 27
import org.distorted.library.effect.Effect;
......
118 119
    EffectQueueFragment.getUniforms(mainProgramH);
119 120
    EffectQueueVertex.getUniforms(mainProgramH);
120 121
    EffectQueueMatrix.getUniforms(mainProgramH);
121
    mMainTextureH= GLES30.glGetUniformLocation( mainProgramH, "u_Texture");
122
    mMainTextureH= GLES31.glGetUniformLocation( mainProgramH, "u_Texture");
122 123

  
123 124
    // BLIT PROGRAM ////////////////////////////////////
124 125
    final InputStream blitVertStream = resources.openRawResource(R.raw.blit_vertex_shader);
......
133 134
      }
134 135
    catch(Exception e)
135 136
      {
136
      android.util.Log.e("EFFECTS", "exception trying to compile BLIT program: "+e.getMessage());
137
      Log.e("EFFECTS", "exception trying to compile BLIT program: "+e.getMessage());
137 138
      throw new RuntimeException(e.getMessage());
138 139
      }
139 140

  
140 141
    int blitProgramH = mBlitProgram.getProgramHandle();
141
    mBlitTextureH  = GLES30.glGetUniformLocation( blitProgramH, "u_Texture");
142
    mBlitDepthH    = GLES30.glGetUniformLocation( blitProgramH, "u_Depth");
142
    mBlitTextureH  = GLES31.glGetUniformLocation( blitProgramH, "u_Texture");
143
    mBlitDepthH    = GLES31.glGetUniformLocation( blitProgramH, "u_Depth");
143 144

  
144 145
    // BLIT DEPTH PROGRAM ////////////////////////////////////
145 146
    final InputStream blitDepthVertStream = resources.openRawResource(R.raw.blit_depth_vertex_shader);
......
151 152
      }
152 153
    catch(Exception e)
153 154
      {
154
      android.util.Log.e("EFFECTS", "exception trying to compile BLIT DEPTH program: "+e.getMessage());
155
      Log.e("EFFECTS", "exception trying to compile BLIT DEPTH program: "+e.getMessage());
155 156
      throw new RuntimeException(e.getMessage());
156 157
      }
157 158

  
158 159
    int blitDepthProgramH   = mBlitDepthProgram.getProgramHandle();
159
    mBlitDepthTextureH      = GLES30.glGetUniformLocation( blitDepthProgramH, "u_Texture");
160
    mBlitDepthDepthTextureH = GLES30.glGetUniformLocation( blitDepthProgramH, "u_DepthTexture");
161
    mBlitDepthDepthH        = GLES30.glGetUniformLocation( blitDepthProgramH, "u_Depth");
160
    mBlitDepthTextureH      = GLES31.glGetUniformLocation( blitDepthProgramH, "u_Texture");
161
    mBlitDepthDepthTextureH = GLES31.glGetUniformLocation( blitDepthProgramH, "u_DepthTexture");
162
    mBlitDepthDepthH        = GLES31.glGetUniformLocation( blitDepthProgramH, "u_Depth");
162 163

  
163 164
    // NORMAL PROGRAM //////////////////////////////////////
164 165
    final InputStream normalVertexStream   = resources.openRawResource(R.raw.normal_vertex_shader);
......
170 171
      }
171 172
    catch(Exception e)
172 173
      {
173
      android.util.Log.e("EFFECTS", "exception trying to compile NORMAL program: "+e.getMessage());
174
      Log.e("EFFECTS", "exception trying to compile NORMAL program: "+e.getMessage());
174 175
      throw new RuntimeException(e.getMessage());
175 176
      }
176 177

  
177 178
    int normalProgramH = mNormalProgram.getProgramHandle();
178
    mNormalMVPMatrixH  = GLES30.glGetUniformLocation( normalProgramH, "u_MVPMatrix");
179
    mNormalMVPMatrixH  = GLES31.glGetUniformLocation( normalProgramH, "u_MVPMatrix");
179 180
    }
180 181

  
181 182
///////////////////////////////////////////////////////////////////////////////////////////////////
......
248 249

  
249 250
  private void displayNormals(MeshObject mesh)
250 251
    {
251
    GLES30.glBindBufferBase(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 0, mesh.mAttTFO[0]);
252
    GLES30.glBeginTransformFeedback( GLES30.GL_POINTS);
252
    GLES31.glBindBufferBase(GLES31.GL_TRANSFORM_FEEDBACK_BUFFER, 0, mesh.mAttTFO[0]);
253
    GLES31.glBeginTransformFeedback( GLES31.GL_POINTS);
253 254
    DistortedRenderState.switchOffDrawing();
254
    GLES30.glDrawArrays( GLES30.GL_POINTS, 0, mesh.numVertices);
255
    GLES31.glDrawArrays( GLES31.GL_POINTS, 0, mesh.numVertices);
255 256
    DistortedRenderState.restoreDrawing();
256
    GLES30.glEndTransformFeedback();
257
    GLES30.glBindBufferBase(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 0, 0);
257
    GLES31.glEndTransformFeedback();
258
    GLES31.glBindBufferBase(GLES31.GL_TRANSFORM_FEEDBACK_BUFFER, 0, 0);
258 259

  
259 260
    mNormalProgram.useProgram();
260
    GLES30.glUniformMatrix4fv(mNormalMVPMatrixH, 1, false, mM.getMVP() , 0);
261
    GLES30.glBindBuffer(GLES30.GL_ARRAY_BUFFER, mesh.mAttTFO[0]);
262
    GLES30.glVertexAttribPointer(mNormalProgram.mAttribute[0], MeshObject.POS_DATA_SIZE, GLES30.GL_FLOAT, false, 0, 0);
263
    GLES30.glBindBuffer(GLES30.GL_ARRAY_BUFFER, 0);
264
    GLES30.glLineWidth(8.0f);
265
    GLES30.glDrawArrays(GLES30.GL_LINES, 0, 2*mesh.numVertices);
261
    GLES31.glUniformMatrix4fv(mNormalMVPMatrixH, 1, false, mM.getMVP() , 0);
262
    GLES31.glBindBuffer(GLES31.GL_ARRAY_BUFFER, mesh.mAttTFO[0]);
263
    GLES31.glVertexAttribPointer(mNormalProgram.mAttribute[0], MeshObject.POS_DATA_SIZE, GLES31.GL_FLOAT, false, 0, 0);
264
    GLES31.glBindBuffer(GLES31.GL_ARRAY_BUFFER, 0);
265
    GLES31.glLineWidth(8.0f);
266
    GLES31.glDrawArrays(GLES31.GL_LINES, 0, 2*mesh.numVertices);
266 267
    }
267 268

  
268 269
///////////////////////////////////////////////////////////////////////////////////////////////////
......
276 277
    mF.compute(currTime,halfW,halfH);
277 278
    mP.compute(currTime);
278 279

  
279
    GLES30.glViewport(0, 0, surface.mWidth, surface.mHeight );
280
    GLES31.glViewport(0, 0, surface.mWidth, surface.mHeight );
280 281

  
281 282
    mMainProgram.useProgram();
282
    GLES30.glUniform1i(mMainTextureH, 0);
283
    GLES31.glUniform1i(mMainTextureH, 0);
283 284

  
284 285
    if( Distorted.GLSL >= 300 )
285 286
      {
286
      GLES30.glBindBuffer(GLES30.GL_ARRAY_BUFFER, mesh.mAttVBO[0]);
287
      GLES30.glVertexAttribPointer(mMainProgram.mAttribute[0], MeshObject.POS_DATA_SIZE, GLES30.GL_FLOAT, false, MeshObject.VERTSIZE, MeshObject.OFFSET0);
288
      GLES30.glVertexAttribPointer(mMainProgram.mAttribute[1], MeshObject.NOR_DATA_SIZE, GLES30.GL_FLOAT, false, MeshObject.VERTSIZE, MeshObject.OFFSET1);
289
      GLES30.glVertexAttribPointer(mMainProgram.mAttribute[2], MeshObject.TEX_DATA_SIZE, GLES30.GL_FLOAT, false, MeshObject.VERTSIZE, MeshObject.OFFSET2);
290
      GLES30.glBindBuffer(GLES30.GL_ARRAY_BUFFER, 0);
287
      GLES31.glBindBuffer(GLES31.GL_ARRAY_BUFFER, mesh.mAttVBO[0]);
288
      GLES31.glVertexAttribPointer(mMainProgram.mAttribute[0], MeshObject.POS_DATA_SIZE, GLES31.GL_FLOAT, false, MeshObject.VERTSIZE, MeshObject.OFFSET0);
289
      GLES31.glVertexAttribPointer(mMainProgram.mAttribute[1], MeshObject.NOR_DATA_SIZE, GLES31.GL_FLOAT, false, MeshObject.VERTSIZE, MeshObject.OFFSET1);
290
      GLES31.glVertexAttribPointer(mMainProgram.mAttribute[2], MeshObject.TEX_DATA_SIZE, GLES31.GL_FLOAT, false, MeshObject.VERTSIZE, MeshObject.OFFSET2);
291
      GLES31.glBindBuffer(GLES31.GL_ARRAY_BUFFER, 0);
291 292
      }
292 293
    else
293 294
      {
294 295
      mesh.mVertAttribs.position(0);
295
      GLES30.glVertexAttribPointer(mMainProgram.mAttribute[0], MeshObject.POS_DATA_SIZE, GLES30.GL_FLOAT, false, MeshObject.VERTSIZE, mesh.mVertAttribs);
296
      GLES31.glVertexAttribPointer(mMainProgram.mAttribute[0], MeshObject.POS_DATA_SIZE, GLES31.GL_FLOAT, false, MeshObject.VERTSIZE, mesh.mVertAttribs);
296 297
      mesh.mVertAttribs.position(MeshObject.POS_DATA_SIZE);
297
      GLES30.glVertexAttribPointer(mMainProgram.mAttribute[1], MeshObject.NOR_DATA_SIZE, GLES30.GL_FLOAT, false, MeshObject.VERTSIZE, mesh.mVertAttribs);
298
      GLES31.glVertexAttribPointer(mMainProgram.mAttribute[1], MeshObject.NOR_DATA_SIZE, GLES31.GL_FLOAT, false, MeshObject.VERTSIZE, mesh.mVertAttribs);
298 299
      mesh.mVertAttribs.position(MeshObject.POS_DATA_SIZE+MeshObject.NOR_DATA_SIZE);
299
      GLES30.glVertexAttribPointer(mMainProgram.mAttribute[2], MeshObject.TEX_DATA_SIZE, GLES30.GL_FLOAT, false, MeshObject.VERTSIZE, mesh.mVertAttribs);
300
      GLES31.glVertexAttribPointer(mMainProgram.mAttribute[2], MeshObject.TEX_DATA_SIZE, GLES31.GL_FLOAT, false, MeshObject.VERTSIZE, mesh.mVertAttribs);
300 301
      }
301 302

  
302 303
    mM.send(surface,halfW,halfH,halfZ,marginInPixels);
303 304
    mV.send();
304 305
    mF.send();
305 306

  
306
    GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, mesh.numVertices);
307
    GLES31.glDrawArrays(GLES31.GL_TRIANGLE_STRIP, 0, mesh.numVertices);
307 308

  
308 309
    if( mesh.mShowNormals ) displayNormals(mesh);
309 310
    }
......
318 319
    {
319 320
    mBlitProgram.useProgram();
320 321

  
321
    GLES30.glViewport(0, 0, surface.mWidth, surface.mHeight );
322
    GLES30.glUniform1i(mBlitTextureH, 0);
323
    GLES30.glUniform1f( mBlitDepthH , 1.0f-surface.mNear);
324
    GLES30.glVertexAttribPointer(mBlitProgram.mAttribute[0], 2, GLES30.GL_FLOAT, false, 0, mQuadPositions);
325
    GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, 4);
322
    GLES31.glViewport(0, 0, surface.mWidth, surface.mHeight );
323
    GLES31.glUniform1i(mBlitTextureH, 0);
324
    GLES31.glUniform1f( mBlitDepthH , 1.0f-surface.mNear);
325
    GLES31.glVertexAttribPointer(mBlitProgram.mAttribute[0], 2, GLES31.GL_FLOAT, false, 0, mQuadPositions);
326
    GLES31.glDrawArrays(GLES31.GL_TRIANGLE_STRIP, 0, 4);
326 327
    }
327 328

  
328 329
///////////////////////////////////////////////////////////////////////////////////////////////////
......
331 332
    {
332 333
    mBlitDepthProgram.useProgram();
333 334

  
334
    GLES30.glViewport(0, 0, surface.mWidth, surface.mHeight );
335
    GLES30.glUniform1i(mBlitDepthTextureH, 0);
336
    GLES30.glUniform1i(mBlitDepthDepthTextureH, 1);
337
    GLES30.glUniform1f( mBlitDepthDepthH , 1.0f-surface.mNear);
338
    GLES30.glVertexAttribPointer(mBlitDepthProgram.mAttribute[0], 2, GLES30.GL_FLOAT, false, 0, mQuadPositions);
339
    GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, 4);
335
    GLES31.glViewport(0, 0, surface.mWidth, surface.mHeight );
336
    GLES31.glUniform1i(mBlitDepthTextureH, 0);
337
    GLES31.glUniform1i(mBlitDepthDepthTextureH, 1);
338
    GLES31.glUniform1f( mBlitDepthDepthH , 1.0f-surface.mNear);
339
    GLES31.glVertexAttribPointer(mBlitDepthProgram.mAttribute[0], 2, GLES31.GL_FLOAT, false, 0, mQuadPositions);
340
    GLES31.glDrawArrays(GLES31.GL_TRIANGLE_STRIP, 0, 4);
340 341
    }
341 342

  
342 343
///////////////////////////////////////////////////////////////////////////////////////////////////

Also available in: Unified diff