OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa _intel.h" | 5 #include "gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa _intel.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "gpu/command_buffer/service/framebuffer_manager.h" | 8 #include "gpu/command_buffer/service/framebuffer_manager.h" |
9 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" | 9 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" |
10 #include "ui/gl/gl_context.h" | 10 #include "ui/gl/gl_context.h" |
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
392 | 392 |
393 glActiveTexture(GL_TEXTURE1); | 393 glActiveTexture(GL_TEXTURE1); |
394 glBindTexture(GL_TEXTURE_2D, mini4_edge_texture_); | 394 glBindTexture(GL_TEXTURE_2D, mini4_edge_texture_); |
395 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); | 395 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); |
396 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); | 396 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); |
397 | 397 |
398 glDrawArrays(GL_TRIANGLES, 0, 3); | 398 glDrawArrays(GL_TRIANGLES, 0, 3); |
399 } | 399 } |
400 | 400 |
401 // - Combine RightBottom (.xy) edges from previous pass into | 401 // - Combine RightBottom (.xy) edges from previous pass into |
402 // RightBottomLeftTop (.xyzw) edges and output it into the mask (have to | 402 // RightBottomLeftTop (.xyzw) edges and output it into the mask. |
403 // fill in the whole buffer including empty ones for the line length | |
404 // detection to work correctly). | |
dshwang
2016/07/06 10:27:30
It's wrong, because all edge information is genera
| |
405 // - On all pixels with any edge, input buffer into a temporary color buffer | 403 // - On all pixels with any edge, input buffer into a temporary color buffer |
406 // needed for correct blending in the next pass (other pixels not needed | 404 // needed for correct blending in the next pass (other pixels not needed |
407 // so not copied to avoid bandwidth use). | 405 // so not copied to avoid bandwidth use). |
408 // - On all pixels with 2 or more edges output positive depth mask for the | 406 // - On all pixels with 2 or more edges output positive depth mask for the |
409 // next pass. | 407 // next pass. |
410 | 408 |
411 // Inputs | 409 // Inputs |
412 // g_src0TextureFlt edge_texture_b tex1 //ps | 410 // g_src0TextureFlt edge_texture_b tex1 //ps |
413 // Outputs | 411 // Outputs |
414 // image2D g_resultTextureSlot2 edge_texture_a image2 | 412 // image2D g_resultTextureSlot2 edge_texture_a image2 |
415 // gl_FragDepth mini4_edge_texture_ fbo.depth | 413 // gl_FragDepth mini4_edge_texture_ fbo.depth |
416 { | 414 { |
417 // Combine edges: each pixel will now contain info on all (top, right, | 415 // Combine edges: each pixel will now contain info on all (top, right, |
418 // bottom, left) edges; also create depth mask as above depth and mark | 416 // bottom, left) edges; also mark depth 1 value on all pixels with any edge |
419 // potential Z sAND also copy source color data but only on edge pixels | 417 // and also copy source color data but only on edge pixels |
420 glUseProgram(edges_combine_shader_); | 418 glUseProgram(edges_combine_shader_); |
421 glUniform1f(0, 1.0f); | 419 glUniform1f(0, 0.0f); |
422 glUniform2f(1, 1.0f / width_, 1.0f / height_); | 420 glUniform2f(1, 1.0f / width_, 1.0f / height_); |
423 glDepthMask(GL_TRUE); | 421 glDepthMask(GL_TRUE); |
424 glDepthFunc(GL_ALWAYS); | 422 glDepthFunc(GL_LESS); |
425 glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); | 423 glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); |
426 | 424 |
427 if (!is_gles31_compatible_) { | 425 if (!is_gles31_compatible_) { |
428 glUniform1i(edges_combine_shader_result_texture_slot2_, 2); | 426 glUniform1i(edges_combine_shader_result_texture_slot2_, 2); |
429 } | 427 } |
430 glBindImageTextureEXT(2, edge_texture_a, 0, GL_FALSE, 0, GL_WRITE_ONLY, | 428 glBindImageTextureEXT(2, edge_texture_a, 0, GL_FALSE, 0, GL_WRITE_ONLY, |
431 edge_format); | 429 edge_format); |
432 | 430 |
433 glActiveTexture(GL_TEXTURE1); | 431 glActiveTexture(GL_TEXTURE1); |
434 glBindTexture(GL_TEXTURE_2D, edge_texture_b); | 432 glBindTexture(GL_TEXTURE_2D, edge_texture_b); |
(...skipping 1448 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1883 \n#ifdef OUT_FBO\n | 1881 \n#ifdef OUT_FBO\n |
1884 outColor = pixel; | 1882 outColor = pixel; |
1885 \n#else\n | 1883 \n#else\n |
1886 imageStore(outTexture, screenPosI, pixel); | 1884 imageStore(outTexture, screenPosI, pixel); |
1887 \n#endif\n | 1885 \n#endif\n |
1888 } | 1886 } |
1889 ); | 1887 ); |
1890 /* clang-format on */ | 1888 /* clang-format on */ |
1891 | 1889 |
1892 } // namespace gpu | 1890 } // namespace gpu |
OLD | NEW |