Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.57 KB | None | 0 0
  1. package com.vaalentin.watchfaceexperiments.ethereal;
  2.  
  3. import android.content.Context;
  4.  
  5. import static android.opengl.GLES20.*;
  6.  
  7. import com.vaalentin.watchfaceexperiments.BaseWatchFace;
  8. import com.vaalentin.watchfaceexperiments.ethereal.views.Time;
  9. import com.vaalentin.watchfaceexperiments.shared.opengl.FrameBuffer;
  10. import com.vaalentin.watchfaceexperiments.shared.opengl.Mesh;
  11. import com.vaalentin.watchfaceexperiments.shared.opengl.Program;
  12. import com.vaalentin.watchfaceexperiments.shared.opengl.Shader;
  13. import com.vaalentin.watchfaceexperiments.shared.utilities.File;
  14.  
  15. public class EtherealWatchFace extends BaseWatchFace {
  16. private static final String TAG = EtherealWatchFace.class.getSimpleName();
  17.  
  18. private Time mTime;
  19.  
  20. private FrameBuffer mFbo;
  21. private Mesh mFsQuad;
  22. private Program mPostProcessingProgram;
  23. private int mPositionId;
  24. private int mUvId;
  25. private int mTextureId;
  26. private int mRadiusId;
  27. private int mSoftnessId;
  28. private int mStrengthId;
  29. private int mTimeId;
  30. private int mNoiseInfluenceId;
  31.  
  32. private float mT;
  33.  
  34. @Override
  35. public long getUpdateRate() {
  36. return 1000 / 30;
  37. }
  38.  
  39. @Override
  40. public void onGlContextCreated() {
  41. super.onGlContextCreated();
  42. }
  43.  
  44. @Override
  45. public void onGlSurfaceCreated(int width, int height) {
  46. super.onGlSurfaceCreated(width, height);
  47.  
  48. glClearColor(0f, 0f, 0f, 0f);
  49. glViewport(0, 0, width, height);
  50.  
  51. Context context = getApplicationContext();
  52.  
  53. mTime = new Time(context, width, height);
  54.  
  55. mFbo = FrameBuffer.create(width, height);
  56.  
  57. mFsQuad = Mesh.createQuad();
  58.  
  59. int vertexShader = Shader.create(GL_VERTEX_SHADER, File.readFile(context, "shaders/ethereal/postProcessing.vert"));
  60. int fragmentShader = Shader.create(GL_FRAGMENT_SHADER, File.readFile(context, "shaders/ethereal/postProcessing.frag"));
  61.  
  62. mPostProcessingProgram = Program.create(vertexShader, fragmentShader);
  63. mPositionId = mPostProcessingProgram.registerAttribute("position", 2, GL_FLOAT);
  64. mUvId = mPostProcessingProgram.registerAttribute("uv", 2, GL_FLOAT);
  65.  
  66. mTextureId = mPostProcessingProgram.registerUniform("texture", GL_INT);
  67. mRadiusId = mPostProcessingProgram.registerUniform("radius", GL_FLOAT);
  68. mSoftnessId = mPostProcessingProgram.registerUniform("softness", GL_FLOAT);
  69. mStrengthId = mPostProcessingProgram.registerUniform("strength", GL_FLOAT_VEC2);
  70. mTimeId = mPostProcessingProgram.registerUniform("time", GL_FLOAT);
  71. mNoiseInfluenceId = mPostProcessingProgram.registerUniform("noiseInfluence", GL_FLOAT);
  72.  
  73. mT = 0f;
  74. }
  75.  
  76. @Override
  77. public void onDraw() {
  78. super.onDraw();
  79.  
  80. mT += 0.02f;
  81.  
  82. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  83.  
  84. mFbo.bind();
  85. mTime.draw();
  86. mFbo.unbind();
  87.  
  88. mPostProcessingProgram.use();
  89.  
  90. mFsQuad.positions.bind();
  91. mPostProcessingProgram.setAttributePointer(mPositionId);
  92.  
  93. mFsQuad.uvs.bind();
  94. mPostProcessingProgram.setAttributePointer(mUvId);
  95.  
  96. mPostProcessingProgram.setUniform(mTextureId, mFbo.getTexture().bind(0));
  97. mPostProcessingProgram.setUniform(mRadiusId, 0.8f);
  98. mPostProcessingProgram.setUniform(mSoftnessId, 0.9f);
  99. mPostProcessingProgram.setUniform(mStrengthId, new float[] {0f, 0.2f});
  100. mPostProcessingProgram.setUniform(mTimeId, mT);
  101. mPostProcessingProgram.setUniform(mNoiseInfluenceId, 1f);
  102.  
  103. mFsQuad.indices.bind();
  104. glDrawElements(GL_TRIANGLES, mFsQuad.indicesCount, GL_UNSIGNED_SHORT, 0);
  105. }
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement