SHOW:
|
|
- or go back to the newest paste.
| 1 | private void renderLightRuneFx(Vec3Int coord) {
| |
| 2 | glPushMatrix(); | |
| 3 | ||
| 4 | EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer; | |
| 5 | ||
| 6 | ||
| 7 | double offsetX = coord.x - (player.lastTickPosX + (player.posX - player.lastTickPosX) * partialTicks) + 0.5; | |
| 8 | double offsetY = coord.y - (player.lastTickPosY + (player.posY - player.lastTickPosY) * partialTicks) + 5.5; | |
| 9 | double offsetZ = coord.z - (player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * partialTicks) + 0.5; | |
| 10 | ||
| 11 | int renderDistBlocks = FMLClientHandler.instance().getClient().gameSettings.renderDistanceChunks * 16; | |
| 12 | if ((offsetX*offsetX + offsetZ*offsetZ) > (renderDistBlocks*renderDistBlocks)) return; | |
| 13 | ||
| 14 | glTranslated(offsetX, offsetY, offsetZ); | |
| 15 | glColor4f(0.8f, 0.8f, 1f, 0.9f); | |
| 16 | glRotatef(renderTick, 0, 1, 0); | |
| 17 | glDisable(GL_TEXTURE_2D); | |
| 18 | ||
| 19 | glEnable(GL_BLEND); | |
| 20 | glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); | |
| 21 | ||
| 22 | ||
| 23 | blurredXTexBuffer.bindFramebuffer(true); // true = adjust viewport | |
| 24 | ShaderHelper.useShader(ShaderHelper.GAUSSIAN); | |
| 25 | ShaderHelper.setUniform(ShaderHelper.GAUSSIAN, "direction", DIRECTION_X); | |
| 26 | ||
| 27 | sphere.draw(2, 24, 24); | |
| 28 | ||
| 29 | glEnable(GL_TEXTURE_2D); | |
| 30 | blurredYTexBuffer.bindFramebuffer(true); | |
| 31 | ShaderHelper.useShader(ShaderHelper.GAUSSIAN); | |
| 32 | ShaderHelper.setUniform(ShaderHelper.GAUSSIAN, "direction", DIRECTION_Y); | |
| 33 | glBindTexture(GL_TEXTURE_2D, blurredXTexBuffer.framebufferTexture); | |
| 34 | glDrawArrays(GL_TRIANGLES, 0, 6); | |
| 35 | ||
| 36 | blurredYTexBuffer.unbindFramebuffer(); | |
| 37 | ShaderHelper.useShader(ShaderHelper.GAUSSIAN); | |
| 38 | ShaderHelper.setUniform(ShaderHelper.GAUSSIAN, "direction", DIRECTION_Z); | |
| 39 | glBindTexture(GL_TEXTURE_2D, blurredYTexBuffer.framebufferTexture); | |
| 40 | glDrawArrays(GL_TRIANGLES, 0, 6); | |
| 41 | ||
| 42 | glEnable(GL_TEXTURE_2D); | |
| 43 | glDisable(GL_BLEND); | |
| 44 | glPopMatrix(); | |
| 45 | } | |
| 46 | ||
| 47 | public static void setUniform(int shader, String name, IntBuffer values) {
| |
| 48 | int location = ARBShaderObjects.glGetUniformLocationARB(shader, name); | |
| 49 | ARBShaderObjects.glUniform1ARB(location, values); | |
| 50 | } | |
| 51 | ||
| 52 | public static void useShader(int shader, IntConsumer callback) {
| |
| 53 | if(!useShaders()) | |
| 54 | return; | |
| 55 | ||
| 56 | ARBShaderObjects.glUseProgramObjectARB(shader); | |
| 57 | ||
| 58 | if(shader != 0) {
| |
| 59 | // We'll see if we need this | |
| 60 | //int time = ARBShaderObjects.glGetUniformLocationARB(shader, "time"); | |
| 61 | //ARBShaderObjects.glUniform1iARB(time, ClientTickHandler.ticksInGame); | |
| 62 | ||
| 63 | if(callback != null) | |
| 64 | callback.accept(shader); | |
| 65 | } | |
| 66 | } |