| 214 | } |
| 215 | |
| 216 | public void drawInto(Scene s) { |
| 217 | BaseMesh mesh = BaseMesh.triangleList(4, 2); |
| 218 | MeshBuilder mb = new MeshBuilder(mesh); |
| 219 | mb.v(-1, -1, 0); |
| 220 | mb.v(1, -1, 0); |
| 221 | mb.v(1, 1, 0); |
| 222 | mb.v(-1, 1, 0); |
| 223 | mb.e_quad(0, 1, 2, 3); |
| 224 | Shader shader = new Shader(); |
| 225 | |
| 226 | shader.addSource(Shader.Type.vertex, "#version 410\n" + |
| 227 | "layout(location=0) in vec3 position;\n" + |
| 228 | "out vec2 tc;\n" + |
| 229 | "void main()\n" + |
| 230 | "{\n" + |
| 231 | " gl_Position = vec4(position.xy, 0.5, 1.0);\n" + |
| 232 | " tc = vec2(position.xy+vec2(1,1))/2;\n" + |
| 233 | "}"); |
| 234 | |
| 235 | shader.addSource(Shader.Type.fragment, "#version 410\n" + |
| 236 | "layout(location=0) out vec4 _output;\n" + |
| 237 | "uniform sampler2D te;\n" + |
| 238 | "uniform float mainAlpha;\n" + |
| 239 | "in vec2 tc;\n" + |
| 240 | "void main()\n" + |
| 241 | "{\n" + |
| 242 | // " vec4 t = texelFetch(te, ivec2(gl_FragCoord.xy), 0);\n" + |
| 243 | " vec4 t = texture(te, tc.xy);\n" + |
| 244 | "\t_output = vec4(t.xyz, mainAlpha);\n" + |
| 245 | "\n" + |
| 246 | "}"); |
| 247 | s.attach(mesh); |
| 248 | shader.attach(new Uniform<Float>("mainAlpha", () -> fadeup ? 0.1f : 1f)); |
| 249 | mesh.attach(shader); |
| 250 | guard = new Guard(() -> fbo, (i) -> true); |
| 251 | mesh.attach(guard); |
| 252 | } |
| 253 | |
| 254 | public void compositeWith(Layer underlayer, Scene s) { |
| 255 | BaseMesh mesh = BaseMesh.triangleList(4, 2); |