From 6afa55381a0ddc6ab845a7f7b05d09b5316ea224 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Sat, 29 Mar 2014 16:26:01 -0700 Subject: [PATCH] Updated glsl-optimizer. --- 3rdparty/glsl-optimizer/Changelog.md | 15 + .../glsl-optimizer/contrib/glslopt/Main.cpp | 2 +- 3rdparty/glsl-optimizer/src/glsl/ast.h | 69 +- .../glsl-optimizer/src/glsl/ast_function.cpp | 59 +- .../glsl-optimizer/src/glsl/ast_to_hir.cpp | 248 +- 3rdparty/glsl-optimizer/src/glsl/ast_type.cpp | 20 + .../src/glsl/builtin_functions.cpp | 270 +- .../src/glsl/builtin_type_macros.h | 116 +- .../glsl-optimizer/src/glsl/builtin_types.cpp | 70 + .../src/glsl/builtin_variables.cpp | 88 + .../glsl-optimizer/src/glsl/glcpp/glcpp-lex.c | 92 +- .../glsl-optimizer/src/glsl/glcpp/glcpp-lex.l | 2 - .../src/glsl/glcpp/glcpp-parse.c | 186 +- .../src/glsl/glcpp/glcpp-parse.y | 12 + .../glsl-optimizer/src/glsl/glsl_lexer.cpp | 1806 ++++---- .../glsl-optimizer/src/glsl/glsl_lexer.ll | 78 +- .../src/glsl/glsl_optimizer.cpp | 13 +- .../glsl-optimizer/src/glsl/glsl_optimizer.h | 2 + .../glsl-optimizer/src/glsl/glsl_parser.cpp | 4085 ++++++++++------- .../glsl-optimizer/src/glsl/glsl_parser.h | 274 +- .../glsl-optimizer/src/glsl/glsl_parser.yy | 252 +- .../src/glsl/glsl_parser_extras.cpp | 69 +- .../src/glsl/glsl_parser_extras.h | 35 + .../glsl-optimizer/src/glsl/glsl_types.cpp | 36 +- 3rdparty/glsl-optimizer/src/glsl/glsl_types.h | 29 +- 3rdparty/glsl-optimizer/src/glsl/ir.cpp | 22 +- 3rdparty/glsl-optimizer/src/glsl/ir.h | 16 +- 3rdparty/glsl-optimizer/src/glsl/ir_clone.cpp | 1 + .../src/glsl/ir_print_glsl_visitor.cpp | 11 + 3rdparty/glsl-optimizer/src/glsl/ir_uniform.h | 39 +- .../src/glsl/link_uniform_initializers.cpp | 1 + .../glsl-optimizer/src/glsl/link_uniforms.cpp | 78 +- 3rdparty/glsl-optimizer/src/glsl/linker.cpp | 120 +- .../glsl-optimizer/src/glsl/loop_analysis.cpp | 12 + .../glsl-optimizer/src/glsl/loop_analysis.h | 2 + .../glsl-optimizer/src/glsl/loop_unroll.cpp | 2 +- 3rdparty/glsl-optimizer/src/glsl/main.cpp | 16 +- .../glsl-optimizer/src/glsl/opt_algebraic.cpp | 67 + .../glsl-optimizer/src/glsl/opt_vectorize.cpp | 49 +- .../src/glsl/standalone_scaffolding.cpp | 12 + .../src/glsl/standalone_scaffolding.h | 2 + .../glsl-optimizer/src/mesa/main/config.h | 9 + 3rdparty/glsl-optimizer/src/mesa/main/dd.h | 6 +- .../glsl-optimizer/src/mesa/main/glheader.h | 38 + .../glsl-optimizer/src/mesa/main/glminimal.h | 56 + .../glsl-optimizer/src/mesa/main/mtypes.h | 36 +- .../tests/fragment/array-const-irES.txt | 18 +- .../tests/fragment/array-constconst-irES.txt | 18 +- .../fragment/bug-loop-share-index-in.txt | 21 + .../fragment/bug-loop-share-index-ir.txt | 53 + .../fragment/bug-loop-share-index-out.txt | 23 + .../tests/fragment/derivatives-irES.txt | 170 +- .../tests/fragment/fragdepth-irES.txt | 4 +- .../fragment/in-struct-ret-vals-irES.txt | 2 +- .../tests/fragment/intrinsics-irES.txt | 176 +- .../tests/fragment/loop-for-irES.txt | 2 +- .../fragment/loop-forafterdiscard-irES.txt | 2 +- .../fragment/loop-forarounddiscard-irES.txt | 2 +- .../tests/fragment/loop-fornounroll-irES.txt | 2 +- .../tests/fragment/loop-forunbounded-irES.txt | 2 +- .../glsl-optimizer/tests/fragment/mrt-in.txt | 7 + .../tests/fragment/mrt-inES3.txt | 9 + .../glsl-optimizer/tests/fragment/mrt-ir.txt | 16 + .../tests/fragment/mrt-irES3.txt | 18 + .../glsl-optimizer/tests/fragment/mrt-out.txt | 10 + .../tests/fragment/mrt-outES3.txt | 12 + .../fragment/opt-movevars-sideeffect-irES.txt | 6 +- .../opt-movevars-sideeffect2-irES.txt | 2 +- .../fragment/opt-movevars-simple-irES.txt | 2 +- .../fragment/opt-vectorize-retval-in.txt | 22 + .../fragment/opt-vectorize-retval-ir.txt | 85 + .../fragment/opt-vectorize-retval-out.txt | 28 + .../tests/fragment/prec-default-inES.txt | 4 +- .../tests/fragment/prec-default-irES.txt | 44 +- .../tests/fragment/prec-default-outES.txt | 19 +- .../tests/fragment/prec-inlineexpr1-irES.txt | 16 +- .../tests/fragment/prec-inlineexpr2-irES.txt | 18 +- .../tests/fragment/prec-temps-irES.txt | 4 +- .../tests/fragment/syntax-irES.txt | 2 +- .../tests/fragment/ternary-irES.txt | 12 +- .../tests/fragment/ternary-outES.txt | 10 +- .../tests/fragment/ternary-vec4-irES.txt | 54 +- .../tests/fragment/ternary-vec4-outES.txt | 50 +- .../tests/fragment/tex2dgrad-irES.txt | 10 +- .../tests/fragment/tex2dgrad-outES.txt | 2 +- .../tests/fragment/tex2dlod-irES.txt | 6 +- .../tests/fragment/tex2dshadow-irES.txt | 16 +- .../tests/fragment/varyings-irES.txt | 2 +- .../tests/fragment/z-collectshadows-irES.txt | 8 +- .../fragment/z-fxaa3-11-consolepc-irES.txt | 36 +- .../tests/fragment/z-fxaa3-11-pc39-irES.txt | 154 +- .../tests/fragment/z-particle-irES.txt | 2 +- .../tests/fragment/z-prepasslight-irES.txt | 138 +- .../tests/fragment/z-treeleaf-irES.txt | 96 +- .../tests/fragment/z-treeleafloop-irES.txt | 4 +- .../fragment/zun-MobileBumpSpec-irES.txt | 18 +- .../tests/fragment/zun-SSAO24-irES3.txt | 22 +- .../tests/fragment/zun-SSAO24-outES3.txt | 2 +- .../tests/fragment/zun-SSAO8-inES.txt | 131 + .../tests/fragment/zun-SSAO8-irES.txt | 355 ++ .../tests/fragment/zun-SSAO8-outES.txt | 94 + .../zunity-MotionBlur-TileMax-out.txt | 102 +- .../tests/vertex/z-NichsHybridLight-in.txt | 187 + .../tests/vertex/z-NichsHybridLight-ir.txt | 587 +++ .../tests/vertex/z-NichsHybridLight-out.txt | 200 + examples/02-metaballs/fs_metaballs.bin.h | 20 +- examples/02-metaballs/vs_metaballs.bin.h | 38 +- examples/17-drawstress/fs_drawstress.bin.h | 11 +- examples/17-drawstress/vs_drawstress.bin.h | 31 +- examples/common/font/fs_font_basic.bin.h | 7 +- .../common/font/fs_font_distance_field.bin.h | 33 +- .../fs_font_distance_field_subpixel.bin.h | 114 +- examples/common/font/vs_font_basic.bin.h | 42 +- .../common/font/vs_font_distance_field.bin.h | 42 +- .../vs_font_distance_field_subpixel.bin.h | 42 +- examples/common/imgui/fs_imgui_color.bin.h | 11 +- examples/common/imgui/fs_imgui_texture.bin.h | 7 +- examples/common/imgui/vs_imgui_color.bin.h | 33 +- examples/common/imgui/vs_imgui_texture.bin.h | 40 +- examples/makefile | 1 + examples/runtime/shaders/gles/fs_bump.bin | Bin 4392 -> 4584 bytes examples/runtime/shaders/gles/fs_callback.bin | Bin 455 -> 495 bytes examples/runtime/shaders/gles/fs_cubes.bin | Bin 77 -> 85 bytes examples/runtime/shaders/gles/fs_hdr_blur.bin | Bin 791 -> 831 bytes .../runtime/shaders/gles/fs_hdr_bright.bin | Bin 2171 -> 2187 bytes examples/runtime/shaders/gles/fs_hdr_lum.bin | Bin 2276 -> 2284 bytes .../runtime/shaders/gles/fs_hdr_lumavg.bin | Bin 3091 -> 3099 bytes examples/runtime/shaders/gles/fs_hdr_mesh.bin | Bin 1608 -> 1712 bytes .../runtime/shaders/gles/fs_hdr_skybox.bin | Bin 589 -> 621 bytes .../runtime/shaders/gles/fs_hdr_tonemap.bin | Bin 2297 -> 2345 bytes examples/runtime/shaders/gles/fs_ibl_mesh.bin | Bin 1789 -> 1909 bytes .../runtime/shaders/gles/fs_ibl_skybox.bin | Bin 496 -> 512 bytes .../runtime/shaders/gles/fs_instancing.bin | Bin 77 -> 85 bytes examples/runtime/shaders/gles/fs_mesh.bin | Bin 1319 -> 1415 bytes examples/runtime/shaders/gles/fs_oit.bin | Bin 75 -> 83 bytes examples/runtime/shaders/gles/fs_oit_wb.bin | Bin 335 -> 359 bytes .../runtime/shaders/gles/fs_oit_wb_blit.bin | Bin 363 -> 371 bytes .../shaders/gles/fs_oit_wb_separate.bin | Bin 282 -> 306 bytes .../shaders/gles/fs_oit_wb_separate_blit.bin | Bin 363 -> 371 bytes .../runtime/shaders/gles/fs_raymarching.bin | 323 +- .../fs_shadowmaps_color_lightning_esm.bin | Bin 3730 -> 3962 bytes .../fs_shadowmaps_color_lightning_esm_csm.bin | 88 +- ..._shadowmaps_color_lightning_esm_linear.bin | Bin 3774 -> 4006 bytes ...dowmaps_color_lightning_esm_linear_csm.bin | 88 +- ...owmaps_color_lightning_esm_linear_omni.bin | Bin 6906 -> 7250 bytes ...fs_shadowmaps_color_lightning_esm_omni.bin | Bin 6860 -> 7204 bytes .../fs_shadowmaps_color_lightning_hard.bin | Bin 3608 -> 3832 bytes ...fs_shadowmaps_color_lightning_hard_csm.bin | 80 +- ...shadowmaps_color_lightning_hard_linear.bin | Bin 3640 -> 3864 bytes ...owmaps_color_lightning_hard_linear_csm.bin | 80 +- ...wmaps_color_lightning_hard_linear_omni.bin | Bin 6773 -> 7109 bytes ...s_shadowmaps_color_lightning_hard_omni.bin | Bin 6739 -> 7075 bytes .../fs_shadowmaps_color_lightning_pcf.bin | 154 +- .../fs_shadowmaps_color_lightning_pcf_csm.bin | 466 +- ..._shadowmaps_color_lightning_pcf_linear.bin | 156 +- ...dowmaps_color_lightning_pcf_linear_csm.bin | 474 +- ...owmaps_color_lightning_pcf_linear_omni.bin | 186 +- ...fs_shadowmaps_color_lightning_pcf_omni.bin | 184 +- .../fs_shadowmaps_color_lightning_vsm.bin | Bin 4154 -> 4386 bytes .../fs_shadowmaps_color_lightning_vsm_csm.bin | 88 +- ..._shadowmaps_color_lightning_vsm_linear.bin | Bin 4198 -> 4430 bytes ...dowmaps_color_lightning_vsm_linear_csm.bin | 88 +- ...owmaps_color_lightning_vsm_linear_omni.bin | Bin 7332 -> 7676 bytes ...fs_shadowmaps_color_lightning_vsm_omni.bin | Bin 7286 -> 7630 bytes .../gles/fs_shadowmaps_color_texture.bin | Bin 577 -> 593 bytes .../shaders/gles/fs_shadowmaps_hblur.bin | Bin 1532 -> 1572 bytes .../shaders/gles/fs_shadowmaps_hblur_vsm.bin | Bin 2780 -> 2820 bytes .../shaders/gles/fs_shadowmaps_packdepth.bin | Bin 283 -> 299 bytes .../gles/fs_shadowmaps_packdepth_linear.bin | Bin 235 -> 251 bytes .../gles/fs_shadowmaps_packdepth_vsm.bin | Bin 459 -> 499 bytes .../fs_shadowmaps_packdepth_vsm_linear.bin | Bin 376 -> 408 bytes .../shaders/gles/fs_shadowmaps_texture.bin | Bin 182 -> 190 bytes .../gles/fs_shadowmaps_unpackdepth.bin | Bin 318 -> 334 bytes .../gles/fs_shadowmaps_unpackdepth_vsm.bin | Bin 293 -> 309 bytes .../shaders/gles/fs_shadowmaps_vblur.bin | Bin 1532 -> 1572 bytes .../shaders/gles/fs_shadowmaps_vblur_vsm.bin | Bin 2780 -> 2820 bytes .../gles/fs_shadowvolume_color_lightning.bin | Bin 1891 -> 2128 bytes .../gles/fs_shadowvolume_color_texture.bin | Bin 577 -> 593 bytes .../gles/fs_shadowvolume_svbackcolor.bin | Bin 108 -> 116 bytes .../gles/fs_shadowvolume_svbacktex1.bin | Bin 421 -> 437 bytes .../gles/fs_shadowvolume_svbacktex2.bin | Bin 421 -> 437 bytes .../gles/fs_shadowvolume_svfrontcolor.bin | Bin 108 -> 116 bytes .../gles/fs_shadowvolume_svfronttex1.bin | Bin 418 -> 434 bytes .../gles/fs_shadowvolume_svfronttex2.bin | Bin 418 -> 434 bytes .../shaders/gles/fs_shadowvolume_svside.bin | Bin 442 -> 466 bytes .../gles/fs_shadowvolume_svsidecolor.bin | Bin 108 -> 116 bytes .../gles/fs_shadowvolume_svsidetex.bin | Bin 521 -> 553 bytes .../shaders/gles/fs_shadowvolume_texture.bin | Bin 182 -> 190 bytes .../fs_shadowvolume_texture_lightning.bin | Bin 2120 -> 2349 bytes examples/runtime/shaders/gles/fs_sms_mesh.bin | Bin 7574 -> 8143 bytes .../runtime/shaders/gles/fs_sms_mesh_pd.bin | Bin 7795 -> 8236 bytes .../runtime/shaders/gles/fs_sms_shadow_pd.bin | Bin 283 -> 299 bytes .../gles/fs_stencil_color_lightning.bin | Bin 1913 -> 2065 bytes .../shaders/gles/fs_stencil_color_texture.bin | Bin 577 -> 593 bytes .../shaders/gles/fs_stencil_texture.bin | Bin 182 -> 190 bytes .../gles/fs_stencil_texture_lightning.bin | Bin 2207 -> 2367 bytes examples/runtime/shaders/gles/fs_tree.bin | Bin 1113 -> 1185 bytes examples/runtime/shaders/gles/fs_update.bin | Bin 184 -> 192 bytes .../runtime/shaders/gles/fs_update_cmp.bin | Bin 201 -> 209 bytes examples/runtime/shaders/gles/vs_bump.bin | Bin 1543 -> 1743 bytes .../shaders/gles/vs_bump_instanced.bin | Bin 1720 -> 1960 bytes examples/runtime/shaders/gles/vs_callback.bin | Bin 422 -> 478 bytes examples/runtime/shaders/gles/vs_cubes.bin | Bin 267 -> 307 bytes examples/runtime/shaders/gles/vs_hdr_blur.bin | Bin 1301 -> 1437 bytes .../runtime/shaders/gles/vs_hdr_bright.bin | Bin 279 -> 319 bytes examples/runtime/shaders/gles/vs_hdr_lum.bin | Bin 279 -> 319 bytes .../runtime/shaders/gles/vs_hdr_lumavg.bin | Bin 279 -> 319 bytes examples/runtime/shaders/gles/vs_hdr_mesh.bin | Bin 611 -> 691 bytes .../runtime/shaders/gles/vs_hdr_skybox.bin | Bin 279 -> 319 bytes .../runtime/shaders/gles/vs_hdr_tonemap.bin | Bin 1267 -> 1387 bytes examples/runtime/shaders/gles/vs_ibl_mesh.bin | Bin 566 -> 638 bytes .../runtime/shaders/gles/vs_ibl_skybox.bin | Bin 392 -> 448 bytes .../runtime/shaders/gles/vs_instancing.bin | Bin 513 -> 601 bytes examples/runtime/shaders/gles/vs_mesh.bin | Bin 1356 -> 1516 bytes examples/runtime/shaders/gles/vs_oit.bin | Bin 549 -> 613 bytes examples/runtime/shaders/gles/vs_oit_blit.bin | Bin 279 -> 319 bytes .../runtime/shaders/gles/vs_raymarching.bin | Bin 350 -> 406 bytes .../shaders/gles/vs_shadowmaps_color.bin | Bin 196 -> 220 bytes .../gles/vs_shadowmaps_color_lightning.bin | Bin 795 -> 907 bytes .../vs_shadowmaps_color_lightning_csm.bin | Bin 1282 -> 1458 bytes .../vs_shadowmaps_color_lightning_linear.bin | Bin 883 -> 1003 bytes ..._shadowmaps_color_lightning_linear_csm.bin | Bin 1630 -> 1838 bytes ...shadowmaps_color_lightning_linear_omni.bin | Bin 1585 -> 1801 bytes .../vs_shadowmaps_color_lightning_omni.bin | Bin 1237 -> 1421 bytes .../gles/vs_shadowmaps_color_texture.bin | Bin 279 -> 319 bytes .../shaders/gles/vs_shadowmaps_depth.bin | Bin 196 -> 220 bytes .../shaders/gles/vs_shadowmaps_hblur.bin | Bin 1317 -> 1445 bytes .../shaders/gles/vs_shadowmaps_packdepth.bin | Bin 292 -> 324 bytes .../gles/vs_shadowmaps_packdepth_linear.bin | Bin 305 -> 337 bytes .../shaders/gles/vs_shadowmaps_texture.bin | Bin 279 -> 319 bytes .../gles/vs_shadowmaps_texture_lightning.bin | Bin 608 -> 696 bytes .../gles/vs_shadowmaps_unpackdepth.bin | Bin 279 -> 319 bytes .../shaders/gles/vs_shadowmaps_vblur.bin | Bin 1317 -> 1445 bytes .../gles/vs_shadowvolume_color_lightning.bin | Bin 681 -> 766 bytes .../gles/vs_shadowvolume_color_texture.bin | Bin 279 -> 319 bytes .../shaders/gles/vs_shadowvolume_svback.bin | Bin 354 -> 386 bytes .../shaders/gles/vs_shadowvolume_svfront.bin | Bin 196 -> 220 bytes .../shaders/gles/vs_shadowvolume_svside.bin | Bin 520 -> 576 bytes .../shaders/gles/vs_shadowvolume_texture.bin | Bin 279 -> 319 bytes .../vs_shadowvolume_texture_lightning.bin | Bin 764 -> 865 bytes examples/runtime/shaders/gles/vs_sms_mesh.bin | Bin 765 -> 869 bytes .../runtime/shaders/gles/vs_sms_shadow.bin | Bin 196 -> 220 bytes .../runtime/shaders/gles/vs_sms_shadow_pd.bin | Bin 292 -> 324 bytes .../runtime/shaders/gles/vs_stencil_color.bin | Bin 196 -> 220 bytes .../gles/vs_stencil_color_lightning.bin | Bin 525 -> 597 bytes .../shaders/gles/vs_stencil_color_texture.bin | Bin 279 -> 319 bytes .../shaders/gles/vs_stencil_texture.bin | Bin 279 -> 319 bytes .../gles/vs_stencil_texture_lightning.bin | Bin 608 -> 696 bytes examples/runtime/shaders/gles/vs_tree.bin | Bin 709 -> 805 bytes examples/runtime/shaders/gles/vs_update.bin | Bin 279 -> 319 bytes .../runtime/shaders/glsl/fs_raymarching.bin | 159 +- examples/runtime/shaders/glsl/fs_sms_mesh.bin | Bin 7543 -> 7520 bytes .../runtime/shaders/glsl/fs_sms_mesh_pd.bin | Bin 7785 -> 7762 bytes src/renderer_d3d9.cpp | 2 +- src/renderer_gl.cpp | 4 - 255 files changed, 9616 insertions(+), 5116 deletions(-) create mode 100644 3rdparty/glsl-optimizer/tests/fragment/bug-loop-share-index-in.txt create mode 100644 3rdparty/glsl-optimizer/tests/fragment/bug-loop-share-index-ir.txt create mode 100644 3rdparty/glsl-optimizer/tests/fragment/bug-loop-share-index-out.txt create mode 100644 3rdparty/glsl-optimizer/tests/fragment/mrt-in.txt create mode 100644 3rdparty/glsl-optimizer/tests/fragment/mrt-inES3.txt create mode 100644 3rdparty/glsl-optimizer/tests/fragment/mrt-ir.txt create mode 100644 3rdparty/glsl-optimizer/tests/fragment/mrt-irES3.txt create mode 100644 3rdparty/glsl-optimizer/tests/fragment/mrt-out.txt create mode 100644 3rdparty/glsl-optimizer/tests/fragment/mrt-outES3.txt create mode 100644 3rdparty/glsl-optimizer/tests/fragment/opt-vectorize-retval-in.txt create mode 100644 3rdparty/glsl-optimizer/tests/fragment/opt-vectorize-retval-ir.txt create mode 100644 3rdparty/glsl-optimizer/tests/fragment/opt-vectorize-retval-out.txt create mode 100644 3rdparty/glsl-optimizer/tests/fragment/zun-SSAO8-inES.txt create mode 100644 3rdparty/glsl-optimizer/tests/fragment/zun-SSAO8-irES.txt create mode 100644 3rdparty/glsl-optimizer/tests/fragment/zun-SSAO8-outES.txt create mode 100644 3rdparty/glsl-optimizer/tests/vertex/z-NichsHybridLight-in.txt create mode 100644 3rdparty/glsl-optimizer/tests/vertex/z-NichsHybridLight-ir.txt create mode 100644 3rdparty/glsl-optimizer/tests/vertex/z-NichsHybridLight-out.txt diff --git a/3rdparty/glsl-optimizer/Changelog.md b/3rdparty/glsl-optimizer/Changelog.md index 31fb93c89..8f7567f55 100644 --- a/3rdparty/glsl-optimizer/Changelog.md +++ b/3rdparty/glsl-optimizer/Changelog.md @@ -1,6 +1,20 @@ GLSL optimizer Change Log ========================= +2014 03 +------- + +Fixes: + +* Fixed missing precision qualifier in some ES shaders (mostly due to expansion of ternary ?: check). + +2014 02 +------- + +Fixes: + +* Fixed vectorize pass introduced last month going wrong with dot products. + 2014 01 ------- @@ -15,6 +29,7 @@ Fixes: * Fixed array assignments sometimes appearing in pre-GLSL1.20 versions, especially with complex loops that couldn't be unrolled. * Fixed output of textureOffset and texelFetch. +* Fixed error messages on MRT outputs on GL & GLES3 (now supports 4 MRTs). 2013 12 ------- diff --git a/3rdparty/glsl-optimizer/contrib/glslopt/Main.cpp b/3rdparty/glsl-optimizer/contrib/glslopt/Main.cpp index c9e2546bc..bf2bbf4fd 100644 --- a/3rdparty/glsl-optimizer/contrib/glslopt/Main.cpp +++ b/3rdparty/glsl-optimizer/contrib/glslopt/Main.cpp @@ -17,7 +17,7 @@ static int printhelp(const char* msg) static bool init() { - gContext = glslopt_initialize(false); + gContext = glslopt_initialize(kGlslTargetOpenGL); if( !gContext ) return false; return true; diff --git a/3rdparty/glsl-optimizer/src/glsl/ast.h b/3rdparty/glsl-optimizer/src/glsl/ast.h index 91a60917b..c6f45c008 100644 --- a/3rdparty/glsl-optimizer/src/glsl/ast.h +++ b/3rdparty/glsl-optimizer/src/glsl/ast.h @@ -460,12 +460,29 @@ struct ast_type_qualifier { unsigned prim_type:1; unsigned max_vertices:1; /** \} */ + + /** + * local_size_{x,y,z} flags for compute shaders. Bit 0 represents + * local_size_x, and so on. + */ + unsigned local_size:3; + + /** \name Layout and memory qualifiers for ARB_shader_image_load_store. */ + /** \{ */ + unsigned early_fragment_tests:1; + unsigned explicit_image_format:1; + unsigned coherent:1; + unsigned _volatile:1; + unsigned restrict_flag:1; + unsigned read_only:1; /**< "readonly" qualifier. */ + unsigned write_only:1; /**< "writeonly" qualifier. */ + /** \} */ } /** \brief Set of flags, accessed by name. */ q; /** \brief Set of flags, accessed as a bitmask. */ - unsigned i; + uint64_t i; } flags; /** Precision of the type (highp/medium/lowp). */ @@ -509,6 +526,32 @@ struct ast_type_qualifier { */ int offset; + /** + * Local size specified via GL_ARB_compute_shader's "local_size_{x,y,z}" + * layout qualifier. Element i of this array is only valid if + * flags.q.local_size & (1 << i) is set. + */ + int local_size[3]; + + /** + * Image format specified with an ARB_shader_image_load_store + * layout qualifier. + * + * \note + * This field is only valid if \c explicit_image_format is set. + */ + GLenum image_format; + + /** + * Base type of the data read from or written to this image. Only + * the following enumerants are allowed: GLSL_TYPE_UINT, + * GLSL_TYPE_INT, GLSL_TYPE_FLOAT. + * + * \note + * This field is only valid if \c explicit_image_format is set. + */ + glsl_base_type image_base_type; + /** * Return true if and only if an interpolation qualifier is present. */ @@ -889,14 +932,13 @@ public: ast_node *body; -private: /** * Generate IR from the condition of a loop * * This is factored out of ::hir because some loops have the condition * test at the top (for and while), and others have it at the end (do-while). */ - void condition_to_hir(class ir_loop *, struct _mesa_glsl_parse_state *); + void condition_to_hir(exec_list *, struct _mesa_glsl_parse_state *); }; @@ -991,6 +1033,27 @@ private: const GLenum prim_type; }; + +/** + * AST node representing a decalaration of the input layout for compute + * shaders. + */ +class ast_cs_input_layout : public ast_node +{ +public: + ast_cs_input_layout(const struct YYLTYPE &locp, const unsigned *local_size) + { + memcpy(this->local_size, local_size, sizeof(this->local_size)); + set_location(locp); + } + + virtual ir_rvalue *hir(exec_list *instructions, + struct _mesa_glsl_parse_state *state); + +private: + unsigned local_size[3]; +}; + /*@}*/ extern void diff --git a/3rdparty/glsl-optimizer/src/glsl/ast_function.cpp b/3rdparty/glsl-optimizer/src/glsl/ast_function.cpp index 805e44a65..b80307b45 100644 --- a/3rdparty/glsl-optimizer/src/glsl/ast_function.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/ast_function.cpp @@ -93,7 +93,6 @@ prototype_string(const glsl_type *return_type, const char *name, return str; } - static glsl_precision precision_for_call (const ir_function_signature* sig, glsl_precision max_prec, glsl_precision first_prec) { if (sig->precision != glsl_precision_undefined) @@ -146,6 +145,57 @@ static glsl_precision precision_for_call (const ir_function_signature* sig, exec return precision_for_call (sig, prec_params_max, prec_params_first); } +static bool +verify_image_parameter(YYLTYPE *loc, _mesa_glsl_parse_state *state, + const ir_variable *formal, const ir_variable *actual) +{ + /** + * From the ARB_shader_image_load_store specification: + * + * "The values of image variables qualified with coherent, + * volatile, restrict, readonly, or writeonly may not be passed + * to functions whose formal parameters lack such + * qualifiers. [...] It is legal to have additional qualifiers + * on a formal parameter, but not to have fewer." + */ + if (actual->data.image.coherent && !formal->data.image.coherent) { + _mesa_glsl_error(loc, state, + "function call parameter `%s' drops " + "`coherent' qualifier", formal->name); + return false; + } + + if (actual->data.image._volatile && !formal->data.image._volatile) { + _mesa_glsl_error(loc, state, + "function call parameter `%s' drops " + "`volatile' qualifier", formal->name); + return false; + } + + if (actual->data.image.restrict_flag && !formal->data.image.restrict_flag) { + _mesa_glsl_error(loc, state, + "function call parameter `%s' drops " + "`restrict' qualifier", formal->name); + return false; + } + + if (actual->data.image.read_only && !formal->data.image.read_only) { + _mesa_glsl_error(loc, state, + "function call parameter `%s' drops " + "`readonly' qualifier", formal->name); + return false; + } + + if (actual->data.image.write_only && !formal->data.image.write_only) { + _mesa_glsl_error(loc, state, + "function call parameter `%s' drops " + "`writeonly' qualifier", formal->name); + return false; + } + + return true; +} + /** * Verify that 'out' and 'inout' actual parameters are lvalues. Also, verify @@ -234,6 +284,13 @@ verify_parameter_modes(_mesa_glsl_parse_state *state, } } + if (formal->type->is_image() && + actual->variable_referenced()) { + if (!verify_image_parameter(&loc, state, formal, + actual->variable_referenced())) + return false; + } + actual_ir_node = actual_ir_node->next; actual_ast_node = actual_ast_node->next; } diff --git a/3rdparty/glsl-optimizer/src/glsl/ast_to_hir.cpp b/3rdparty/glsl-optimizer/src/glsl/ast_to_hir.cpp index c4ff8ff01..c18249b1c 100644 --- a/3rdparty/glsl-optimizer/src/glsl/ast_to_hir.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/ast_to_hir.cpp @@ -77,6 +77,7 @@ _mesa_ast_to_hir(exec_list *instructions, struct _mesa_glsl_parse_state *state) state->toplevel_ir = instructions; state->gs_input_prim_type_specified = false; + state->cs_input_local_size_specified = false; /* Section 4.2 of the GLSL 1.20 specification states: * "The built-in functions are scoped in a scope outside the global scope @@ -994,6 +995,7 @@ do_comparison(void *mem_ctx, int operation, ir_rvalue *op0, ir_rvalue *op1) case GLSL_TYPE_ERROR: case GLSL_TYPE_VOID: case GLSL_TYPE_SAMPLER: + case GLSL_TYPE_IMAGE: case GLSL_TYPE_INTERFACE: case GLSL_TYPE_ATOMIC_UINT: /* I assume a comparison of a struct containing a sampler just @@ -2186,6 +2188,12 @@ validate_explicit_location(const struct ast_type_qualifier *qual, fail = true; break; + + case MESA_SHADER_COMPUTE: + _mesa_glsl_error(loc, state, + "compute shader variables cannot be given " + "explicit locations"); + return; }; if (fail) { @@ -2234,6 +2242,54 @@ validate_explicit_location(const struct ast_type_qualifier *qual, return; } +static void +apply_image_qualifier_to_variable(const struct ast_type_qualifier *qual, + ir_variable *var, + struct _mesa_glsl_parse_state *state, + YYLTYPE *loc) +{ + const glsl_type *base_type = + (var->type->is_array() ? var->type->element_type() : var->type); + + if (base_type->is_image()) { + if (var->data.mode != ir_var_uniform && + var->data.mode != ir_var_function_in) { + _mesa_glsl_error(loc, state, "image variables may only be declared as " + "function parameters or uniform-qualified " + "global variables"); + } + + var->data.image.read_only |= qual->flags.q.read_only; + var->data.image.write_only |= qual->flags.q.write_only; + var->data.image.coherent |= qual->flags.q.coherent; + var->data.image._volatile |= qual->flags.q._volatile; + var->data.image.restrict_flag |= qual->flags.q.restrict_flag; + var->data.read_only = true; + + if (qual->flags.q.explicit_image_format) { + if (var->data.mode == ir_var_function_in) { + _mesa_glsl_error(loc, state, "format qualifiers cannot be " + "used on image function parameters"); + } + + if (qual->image_base_type != base_type->sampler_type) { + _mesa_glsl_error(loc, state, "format qualifier doesn't match the " + "base data type of the image"); + } + + var->data.image.format = qual->image_format; + } else { + if (var->data.mode == ir_var_uniform && !qual->flags.q.write_only) { + _mesa_glsl_error(loc, state, "uniforms not qualified with " + "`writeonly' must have a format layout " + "qualifier"); + } + + var->data.image.format = GL_NONE; + } + } +} + static void apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual, ir_variable *var, @@ -2306,6 +2362,13 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual, var->data.mode = ir_var_uniform; if (!is_parameter && is_varying_var(var, state->stage)) { + /* User-defined ins/outs are not permitted in compute shaders. */ + if (state->stage == MESA_SHADER_COMPUTE) { + _mesa_glsl_error(loc, state, + "user-defined input and output variables are not " + "permitted in compute shaders"); + } + /* This variable is being used to link data between shader stages (in * pre-glsl-1.30 parlance, it's a "varying"). Check that it has a type * that is allowed for such purposes. @@ -2368,6 +2431,9 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual, if (var->data.mode == ir_var_shader_in) var->data.invariant = true; break; + case MESA_SHADER_COMPUTE: + /* Invariance isn't meaningful in compute shaders. */ + break; } } @@ -2514,6 +2580,9 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual, if (qual->flags.q.row_major || qual->flags.q.column_major) { validate_matrix_layout_for_type(state, loc, var->type, var); } + + if (var->type->contains_image()) + apply_image_qualifier_to_variable(qual, var, state, loc); } /** @@ -2673,9 +2742,15 @@ process_initializer(ir_variable *var, ast_declaration *decl, "cannot initialize uniforms"); } - if (var->type->is_sampler()) { + /* From section 4.1.7 of the GLSL 4.40 spec: + * + * "Opaque variables [...] are initialized only through the + * OpenGL API; they cannot be declared with an initializer in a + * shader." + */ + if (var->type->contains_opaque()) { _mesa_glsl_error(& initializer_loc, state, - "cannot initialize samplers"); + "cannot initialize opaque variable"); } if ((var->data.mode == ir_var_shader_in) && (state->current_function == NULL)) { @@ -3449,15 +3524,15 @@ ast_declarator_list::hir(exec_list *instructions, ", integer and sampler types"); } - /* From page 17 (page 23 of the PDF) of the GLSL 1.20 spec: + /* From section 4.1.7 of the GLSL 4.40 spec: * - * "[Sampler types] can only be declared as function - * parameters or uniform variables (see Section 4.3.5 - * "Uniform")". + * "[Opaque types] can only be declared as function + * parameters or uniform-qualified variables." */ - if (var_type->contains_sampler() && + if (var_type->contains_opaque() && !this->type->qualifier.flags.q.uniform) { - _mesa_glsl_error(&loc, state, "samplers must be declared uniform"); + _mesa_glsl_error(&loc, state, + "opaque variables must be declared uniform"); } /* Process the initializer and add its instructions to a temporary @@ -3658,15 +3733,16 @@ ast_parameter_declarator::hir(exec_list *instructions, true); apply_precision_to_variable(this->type->qualifier, var, state); - /* From page 17 (page 23 of the PDF) of the GLSL 1.20 spec: + /* From section 4.1.7 of the GLSL 4.40 spec: * - * "Samplers cannot be treated as l-values; hence cannot be used - * as out or inout function parameters, nor can they be assigned - * into." + * "Opaque variables cannot be treated as l-values; hence cannot + * be used as out or inout function parameters, nor can they be + * assigned into." */ if ((var->data.mode == ir_var_function_inout || var->data.mode == ir_var_function_out) - && type->contains_sampler()) { - _mesa_glsl_error(&loc, state, "out and inout parameters cannot contain samplers"); + && type->contains_opaque()) { + _mesa_glsl_error(&loc, state, "out and inout parameters cannot " + "contain opaque variables"); type = glsl_type::error_type; } @@ -3821,15 +3897,15 @@ ast_function::hir(exec_list *instructions, "sized", name); } - /* From page 17 (page 23 of the PDF) of the GLSL 1.20 spec: + /* From section 4.1.7 of the GLSL 4.40 spec: * - * "[Sampler types] can only be declared as function parameters - * or uniform variables (see Section 4.3.5 "Uniform")". + * "[Opaque types] can only be declared as function parameters + * or uniform-qualified variables." */ - if (return_type->contains_sampler()) { + if (return_type->contains_opaque()) { YYLTYPE loc = this->get_location(); _mesa_glsl_error(&loc, state, - "function `%s' return type can't contain a sampler", + "function `%s' return type can't contain an opaque type", name); } @@ -4083,17 +4159,22 @@ ast_jump_statement::hir(exec_list *instructions, _mesa_glsl_error(& loc, state, "break may only appear in a loop or a switch"); } else { - /* For a loop, inline the for loop expression again, - * since we don't know where near the end of - * the loop body the normal copy of it - * is going to be placed. + /* For a loop, inline the for loop expression again, since we don't + * know where near the end of the loop body the normal copy of it is + * going to be placed. Same goes for the condition for a do-while + * loop. */ if (state->loop_nesting_ast != NULL && - mode == ast_continue && - state->loop_nesting_ast->rest_expression) { - state->loop_nesting_ast->rest_expression->hir(instructions, - state); - } + mode == ast_continue) { + if (state->loop_nesting_ast->rest_expression) { + state->loop_nesting_ast->rest_expression->hir(instructions, + state); + } + if (state->loop_nesting_ast->mode == + ast_iteration_statement::ast_do_while) { + state->loop_nesting_ast->condition_to_hir(instructions, state); + } + } if (state->switch_state.is_switch_innermost && mode == ast_break) { @@ -4423,14 +4504,14 @@ ast_case_label::hir(exec_list *instructions, } void -ast_iteration_statement::condition_to_hir(ir_loop *stmt, +ast_iteration_statement::condition_to_hir(exec_list *instructions, struct _mesa_glsl_parse_state *state) { void *ctx = state; if (condition != NULL) { ir_rvalue *const cond = - condition->hir(& stmt->body_instructions, state); + condition->hir(instructions, state); if ((cond == NULL) || !cond->type->is_boolean() || !cond->type->is_scalar()) { @@ -4451,7 +4532,7 @@ ast_iteration_statement::condition_to_hir(ir_loop *stmt, new(ctx) ir_loop_jump(ir_loop_jump::jump_break); if_stmt->then_instructions.push_tail(break_stmt); - stmt->body_instructions.push_tail(if_stmt); + instructions->push_tail(if_stmt); } } } @@ -4486,7 +4567,7 @@ ast_iteration_statement::hir(exec_list *instructions, state->switch_state.is_switch_innermost = false; if (mode != ast_do_while) - condition_to_hir(stmt, state); + condition_to_hir(&stmt->body_instructions, state); if (body != NULL) body->hir(& stmt->body_instructions, state); @@ -4495,7 +4576,7 @@ ast_iteration_statement::hir(exec_list *instructions, rest_expression->hir(& stmt->body_instructions, state); if (mode == ast_do_while) - condition_to_hir(stmt, state); + condition_to_hir(&stmt->body_instructions, state); if (mode != ast_do_while) state->symbols->pop_scope(); @@ -4647,6 +4728,7 @@ ast_type_specifier::hir(exec_list *instructions, ir_var_temporary, (glsl_precision)this->default_precision); state->symbols->add_variable(junk); + state->had_float_precision = true; } /* FINISHME: Translate precision statements into IR. */ @@ -4742,12 +4824,9 @@ ast_process_structure_or_interface_block(exec_list *instructions, if (!allow_reserved_names) validate_identifier(decl->identifier, loc, state); - /* From the GL_ARB_uniform_buffer_object spec: + /* From section 4.3.9 of the GLSL 4.40 spec: * - * "Sampler types are not allowed inside of uniform - * blocks. All other types, arrays, and structures - * allowed for uniforms are allowed within a uniform - * block." + * "[In interface blocks] opaque types are not allowed." * * It should be impossible for decl_type to be NULL here. Cases that * might naturally lead to decl_type being NULL, especially for the @@ -4757,10 +4836,11 @@ ast_process_structure_or_interface_block(exec_list *instructions, const struct glsl_type *field_type = decl_type != NULL ? decl_type : glsl_type::error_type; - if (is_interface && field_type->contains_sampler()) { + if (is_interface && field_type->contains_opaque()) { YYLTYPE loc = decl_list->get_location(); _mesa_glsl_error(&loc, state, - "uniform in non-default uniform block contains sampler"); + "uniform in non-default uniform block contains " + "opaque variable"); } if (field_type->contains_atomic()) { @@ -4774,6 +4854,16 @@ ast_process_structure_or_interface_block(exec_list *instructions, "uniform block"); } + if (field_type->contains_image()) { + /* FINISHME: Same problem as with atomic counters. + * FINISHME: Request clarification from Khronos and add + * FINISHME: spec quotation here. + */ + YYLTYPE loc = decl_list->get_location(); + _mesa_glsl_error(&loc, state, + "image in structure or uniform block"); + } + const struct ast_type_qualifier *const qual = & decl_list->type->qualifier; if (qual->flags.q.std140 || @@ -5376,6 +5466,84 @@ ast_gs_input_layout::hir(exec_list *instructions, } +ir_rvalue * +ast_cs_input_layout::hir(exec_list *instructions, + struct _mesa_glsl_parse_state *state) +{ + YYLTYPE loc = this->get_location(); + + /* If any compute input layout declaration preceded this one, make sure it + * was consistent with this one. + */ + if (state->cs_input_local_size_specified) { + for (int i = 0; i < 3; i++) { + if (state->cs_input_local_size[i] != this->local_size[i]) { + _mesa_glsl_error(&loc, state, + "compute shader input layout does not match" + " previous declaration"); + return NULL; + } + } + } + + /* From the ARB_compute_shader specification: + * + * If the local size of the shader in any dimension is greater + * than the maximum size supported by the implementation for that + * dimension, a compile-time error results. + * + * It is not clear from the spec how the error should be reported if + * the total size of the work group exceeds + * MAX_COMPUTE_WORK_GROUP_INVOCATIONS, but it seems reasonable to + * report it at compile time as well. + */ + GLuint64 total_invocations = 1; + for (int i = 0; i < 3; i++) { + if (this->local_size[i] > state->ctx->Const.MaxComputeWorkGroupSize[i]) { + _mesa_glsl_error(&loc, state, + "local_size_%c exceeds MAX_COMPUTE_WORK_GROUP_SIZE" + " (%d)", 'x' + i, + state->ctx->Const.MaxComputeWorkGroupSize[i]); + break; + } + total_invocations *= this->local_size[i]; + if (total_invocations > + state->ctx->Const.MaxComputeWorkGroupInvocations) { + _mesa_glsl_error(&loc, state, + "product of local_sizes exceeds " + "MAX_COMPUTE_WORK_GROUP_INVOCATIONS (%d)", + state->ctx->Const.MaxComputeWorkGroupInvocations); + break; + } + } + + state->cs_input_local_size_specified = true; + for (int i = 0; i < 3; i++) + state->cs_input_local_size[i] = this->local_size[i]; + + /* We may now declare the built-in constant gl_WorkGroupSize (see + * builtin_variable_generator::generate_constants() for why we didn't + * declare it earlier). + */ + ir_variable *var = new(state->symbols) + ir_variable(glsl_type::ivec3_type, "gl_WorkGroupSize", ir_var_auto, glsl_precision_undefined); + var->data.how_declared = ir_var_declared_implicitly; + var->data.read_only = true; + instructions->push_tail(var); + state->symbols->add_variable(var); + ir_constant_data data; + memset(&data, 0, sizeof(data)); + for (int i = 0; i < 3; i++) + data.i[i] = this->local_size[i]; + var->constant_value = new(var) ir_constant(glsl_type::ivec3_type, &data); + var->constant_initializer = + new(var) ir_constant(glsl_type::ivec3_type, &data); + var->data.has_initializer = true; + + return NULL; +} + + static void detect_conflicting_assignments(struct _mesa_glsl_parse_state *state, exec_list *instructions) diff --git a/3rdparty/glsl-optimizer/src/glsl/ast_type.cpp b/3rdparty/glsl-optimizer/src/glsl/ast_type.cpp index 637da0dfb..200566c6d 100644 --- a/3rdparty/glsl-optimizer/src/glsl/ast_type.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/ast_type.cpp @@ -118,6 +118,7 @@ ast_type_qualifier::merge_qualifier(YYLTYPE *loc, ubo_layout_mask.flags.q.shared = 1; ast_type_qualifier ubo_binding_mask; + ubo_binding_mask.flags.i = 0; ubo_binding_mask.flags.q.explicit_binding = 1; ubo_binding_mask.flags.q.explicit_offset = 1; @@ -158,6 +159,20 @@ ast_type_qualifier::merge_qualifier(YYLTYPE *loc, if ((q.flags.i & ubo_layout_mask.flags.i) != 0) this->flags.i &= ~ubo_layout_mask.flags.i; + for (int i = 0; i < 3; i++) { + if (q.flags.q.local_size & (1 << i)) { + if ((this->flags.q.local_size & (1 << i)) && + this->local_size[i] != q.local_size[i]) { + _mesa_glsl_error(loc, state, + "compute shader set conflicting values for " + "local_size_%c (%d and %d)", 'x' + i, + this->local_size[i], q.local_size[i]); + return false; + } + this->local_size[i] = q.local_size[i]; + } + } + this->flags.i |= q.flags.i; if (q.flags.q.explicit_location) @@ -175,6 +190,11 @@ ast_type_qualifier::merge_qualifier(YYLTYPE *loc, if (q.precision != ast_precision_none) this->precision = q.precision; + if (q.flags.q.explicit_image_format) { + this->image_format = q.image_format; + this->image_base_type = q.image_base_type; + } + return true; } diff --git a/3rdparty/glsl-optimizer/src/glsl/builtin_functions.cpp b/3rdparty/glsl-optimizer/src/glsl/builtin_functions.cpp index a2ec5c22f..680638b34 100644 --- a/3rdparty/glsl-optimizer/src/glsl/builtin_functions.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/builtin_functions.cpp @@ -366,6 +366,13 @@ shader_trinary_minmax(const _mesa_glsl_parse_state *state) return state->AMD_shader_trinary_minmax_enable; } +static bool +shader_image_load_store(const _mesa_glsl_parse_state *state) +{ + return (state->is_version(420, 0) || + state->ARB_shader_image_load_store_enable); +} + /** @} */ /******************************************************************************/ @@ -439,6 +446,33 @@ private: /** Create a new function and add the given signatures. */ void add_function(const char *name, ...); + enum image_function_flags { + IMAGE_FUNCTION_EMIT_STUB = (1 << 0), + IMAGE_FUNCTION_RETURNS_VOID = (1 << 1), + IMAGE_FUNCTION_HAS_VECTOR_DATA_TYPE = (1 << 2), + IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE = (1 << 3), + IMAGE_FUNCTION_READ_ONLY = (1 << 4), + IMAGE_FUNCTION_WRITE_ONLY = (1 << 5) + }; + + /** + * Create a new image built-in function for all known image types. + * \p flags is a bitfield of \c image_function_flags flags. + */ + void add_image_function(const char *name, + const char *intrinsic_name, + unsigned num_arguments, + unsigned flags); + + /** + * Create new functions for all known image built-ins and types. + * If \p glsl is \c true, use the GLSL built-in names and emit code + * to call into the actual compiler intrinsic. If \p glsl is + * false, emit a function prototype with no body for each image + * intrinsic name. + */ + void add_image_functions(bool glsl); + ir_function_signature *new_sig(const glsl_type *return_type, builtin_available_predicate avail, int num_params, ...); @@ -606,6 +640,20 @@ private: B1(max3) B1(mid3) + ir_function_signature *_image_prototype(const glsl_type *image_type, + const char *intrinsic_name, + unsigned num_arguments, + unsigned flags); + ir_function_signature *_image(const glsl_type *image_type, + const char *intrinsic_name, + unsigned num_arguments, + unsigned flags); + + ir_function_signature *_memory_barrier_intrinsic( + builtin_available_predicate avail); + ir_function_signature *_memory_barrier( + builtin_available_predicate avail); + #undef B0 #undef B1 #undef B2 @@ -720,6 +768,12 @@ builtin_builder::create_intrinsics() add_function("__intrinsic_atomic_predecrement", _atomic_intrinsic(shader_atomic_counters), NULL); + + add_image_functions(false); + + add_function("__intrinsic_memory_barrier", + _memory_barrier_intrinsic(shader_image_load_store), + NULL); } /** @@ -2221,6 +2275,12 @@ builtin_builder::create_builtins() _mid3(glsl_type::uvec4_type), NULL); + add_image_functions(true); + + add_function("memoryBarrier", + _memory_barrier(shader_image_load_store), + NULL); + #undef F #undef FI #undef FIU @@ -2254,6 +2314,104 @@ builtin_builder::add_function(const char *name, ...) shader->symbols->add_function(f); } +void +builtin_builder::add_image_function(const char *name, + const char *intrinsic_name, + unsigned num_arguments, + unsigned flags) +{ + static const glsl_type *const types[] = { + glsl_type::image1D_type, + glsl_type::image2D_type, + glsl_type::image3D_type, + glsl_type::image2DRect_type, + glsl_type::imageCube_type, + glsl_type::imageBuffer_type, + glsl_type::image1DArray_type, + glsl_type::image2DArray_type, + glsl_type::imageCubeArray_type, + glsl_type::image2DMS_type, + glsl_type::image2DMSArray_type, + glsl_type::iimage1D_type, + glsl_type::iimage2D_type, + glsl_type::iimage3D_type, + glsl_type::iimage2DRect_type, + glsl_type::iimageCube_type, + glsl_type::iimageBuffer_type, + glsl_type::iimage1DArray_type, + glsl_type::iimage2DArray_type, + glsl_type::iimageCubeArray_type, + glsl_type::iimage2DMS_type, + glsl_type::iimage2DMSArray_type, + glsl_type::uimage1D_type, + glsl_type::uimage2D_type, + glsl_type::uimage3D_type, + glsl_type::uimage2DRect_type, + glsl_type::uimageCube_type, + glsl_type::uimageBuffer_type, + glsl_type::uimage1DArray_type, + glsl_type::uimage2DArray_type, + glsl_type::uimageCubeArray_type, + glsl_type::uimage2DMS_type, + glsl_type::uimage2DMSArray_type + }; + ir_function *f = new(mem_ctx) ir_function(name); + + for (unsigned i = 0; i < Elements(types); ++i) { + if (types[i]->sampler_type != GLSL_TYPE_FLOAT || + (flags & IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE)) + f->add_signature(_image(types[i], intrinsic_name, + num_arguments, flags)); + } + + shader->symbols->add_function(f); +} + +void +builtin_builder::add_image_functions(bool glsl) +{ + const unsigned flags = (glsl ? IMAGE_FUNCTION_EMIT_STUB : 0); + + add_image_function(glsl ? "imageLoad" : "__intrinsic_image_load", + "__intrinsic_image_load", 0, + (flags | IMAGE_FUNCTION_HAS_VECTOR_DATA_TYPE | + IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE | + IMAGE_FUNCTION_READ_ONLY)); + + add_image_function(glsl ? "imageStore" : "__intrinsic_image_store", + "__intrinsic_image_store", 1, + (flags | IMAGE_FUNCTION_RETURNS_VOID | + IMAGE_FUNCTION_HAS_VECTOR_DATA_TYPE | + IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE | + IMAGE_FUNCTION_WRITE_ONLY)); + + add_image_function(glsl ? "imageAtomicAdd" : "__intrinsic_image_atomic_add", + "__intrinsic_image_atomic_add", 1, flags); + + add_image_function(glsl ? "imageAtomicMin" : "__intrinsic_image_atomic_min", + "__intrinsic_image_atomic_min", 1, flags); + + add_image_function(glsl ? "imageAtomicMax" : "__intrinsic_image_atomic_max", + "__intrinsic_image_atomic_max", 1, flags); + + add_image_function(glsl ? "imageAtomicAnd" : "__intrinsic_image_atomic_and", + "__intrinsic_image_atomic_and", 1, flags); + + add_image_function(glsl ? "imageAtomicOr" : "__intrinsic_image_atomic_or", + "__intrinsic_image_atomic_or", 1, flags); + + add_image_function(glsl ? "imageAtomicXor" : "__intrinsic_image_atomic_xor", + "__intrinsic_image_atomic_xor", 1, flags); + + add_image_function((glsl ? "imageAtomicExchange" : + "__intrinsic_image_atomic_exchange"), + "__intrinsic_image_atomic_exchange", 1, flags); + + add_image_function((glsl ? "imageAtomicCompSwap" : + "__intrinsic_image_atomic_comp_swap"), + "__intrinsic_image_atomic_comp_swap", 2, flags); +} + ir_variable * builtin_builder::in_var(const glsl_type *type, const char *name) { @@ -3603,7 +3761,7 @@ builtin_builder::_texture(ir_texture_opcode opcode, ir_texture *tex = new(mem_ctx) ir_texture(opcode); tex->set_sampler(var_ref(s), return_type); - const int coord_size = sampler_type->sampler_coordinate_components(); + const int coord_size = sampler_type->coordinate_components(); // removed for glsl optimizer //if (coord_size == coord_type->vector_elements) { @@ -4151,12 +4309,112 @@ builtin_builder::_mid3(const glsl_type *type) return sig; } +ir_function_signature * +builtin_builder::_image_prototype(const glsl_type *image_type, + const char *intrinsic_name, + unsigned num_arguments, + unsigned flags) +{ + const glsl_type *data_type = glsl_type::get_instance( + image_type->sampler_type, + (flags & IMAGE_FUNCTION_HAS_VECTOR_DATA_TYPE ? 4 : 1), + 1); + const glsl_type *ret_type = (flags & IMAGE_FUNCTION_RETURNS_VOID ? + glsl_type::void_type : data_type); + + /* Addressing arguments that are always present. */ + ir_variable *image = in_var(image_type, "image"); + ir_variable *coord = in_var( + glsl_type::ivec(image_type->coordinate_components()), "coord"); + + ir_function_signature *sig = new_sig( + ret_type, shader_image_load_store, 2, image, coord); + + /* Sample index for multisample images. */ + if (image_type->sampler_dimensionality == GLSL_SAMPLER_DIM_MS) + sig->parameters.push_tail(in_var(glsl_type::int_type, "sample")); + + /* Data arguments. */ + for (unsigned i = 0; i < num_arguments; ++i) + sig->parameters.push_tail(in_var(data_type, + ralloc_asprintf(NULL, "arg%d", i))); + + /* Set the maximal set of qualifiers allowed for this image + * built-in. Function calls with arguments having fewer + * qualifiers than present in the prototype are allowed by the + * spec, but not with more, i.e. this will make the compiler + * accept everything that needs to be accepted, and reject cases + * like loads from write-only or stores to read-only images. + */ + image->data.image.read_only = flags & IMAGE_FUNCTION_READ_ONLY; + image->data.image.write_only = flags & IMAGE_FUNCTION_WRITE_ONLY; + image->data.image.coherent = true; + image->data.image._volatile = true; + image->data.image.restrict_flag = true; + + return sig; +} + +ir_function_signature * +builtin_builder::_image(const glsl_type *image_type, + const char *intrinsic_name, + unsigned num_arguments, + unsigned flags) +{ + ir_function_signature *sig = _image_prototype(image_type, intrinsic_name, + num_arguments, flags); + + if (flags & IMAGE_FUNCTION_EMIT_STUB) { + ir_factory body(&sig->body, mem_ctx); + ir_function *f = shader->symbols->get_function(intrinsic_name); + + if (flags & IMAGE_FUNCTION_RETURNS_VOID) { + body.emit(call(f, NULL, sig->parameters)); + } else { + ir_variable *ret_val = + body.make_temp(sig->return_type, "_ret_val"); + body.emit(call(f, ret_val, sig->parameters)); + body.emit(ret(ret_val)); + } + + sig->is_defined = true; + + } else { + sig->is_intrinsic = true; + } + + return sig; +} + +ir_function_signature * +builtin_builder::_memory_barrier_intrinsic(builtin_available_predicate avail) +{ + MAKE_INTRINSIC(glsl_type::void_type, avail, 0); + return sig; +} + +ir_function_signature * +builtin_builder::_memory_barrier(builtin_available_predicate avail) +{ + MAKE_SIG(glsl_type::void_type, avail, 0); + body.emit(call(shader->symbols->get_function("__intrinsic_memory_barrier"), + NULL, sig->parameters)); + return sig; +} + /** @} */ /******************************************************************************/ +//@TODO: implement +#define _glthread_DECLARE_STATIC_MUTEX(name) +#define _glthread_LOCK_MUTEX(name) +#define _glthread_UNLOCK_MUTEX(name) + + /* The singleton instance of builtin_builder. */ static builtin_builder builtins; +_glthread_DECLARE_STATIC_MUTEX(builtins_lock); /** * External API (exposing the built-in module to the rest of the compiler): @@ -4165,20 +4423,28 @@ static builtin_builder builtins; void _mesa_glsl_initialize_builtin_functions() { + _glthread_LOCK_MUTEX(builtins_lock); builtins.initialize(); + _glthread_UNLOCK_MUTEX(builtins_lock); } void _mesa_glsl_release_builtin_functions() { + _glthread_LOCK_MUTEX(builtins_lock); builtins.release(); + _glthread_UNLOCK_MUTEX(builtins_lock); } ir_function_signature * _mesa_glsl_find_builtin_function(_mesa_glsl_parse_state *state, const char *name, exec_list *actual_parameters) { - return builtins.find(state, name, actual_parameters); + ir_function_signature * s; + _glthread_LOCK_MUTEX(builtins_lock); + s = builtins.find(state, name, actual_parameters); + _glthread_UNLOCK_MUTEX(builtins_lock); + return s; } gl_shader * diff --git a/3rdparty/glsl-optimizer/src/glsl/builtin_type_macros.h b/3rdparty/glsl-optimizer/src/glsl/builtin_type_macros.h index 06b4dbd0f..236e1ce8c 100644 --- a/3rdparty/glsl-optimizer/src/glsl/builtin_type_macros.h +++ b/3rdparty/glsl-optimizer/src/glsl/builtin_type_macros.h @@ -64,51 +64,85 @@ DECL_TYPE(mat3x4, GL_FLOAT_MAT3x4, GLSL_TYPE_FLOAT, 4, 3) DECL_TYPE(mat4x2, GL_FLOAT_MAT4x2, GLSL_TYPE_FLOAT, 2, 4) DECL_TYPE(mat4x3, GL_FLOAT_MAT4x3, GLSL_TYPE_FLOAT, 3, 4) -DECL_TYPE(sampler1D, GL_SAMPLER_1D, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler2D, GL_SAMPLER_2D, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler3D, GL_SAMPLER_3D, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(samplerCube, GL_SAMPLER_CUBE, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler1DArray, GL_SAMPLER_1D_ARRAY, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler2DArray, GL_SAMPLER_2D_ARRAY, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_FLOAT) -DECL_TYPE(samplerCubeArray, GL_SAMPLER_CUBE_MAP_ARRAY, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler2DRect, GL_SAMPLER_2D_RECT, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(samplerBuffer, GL_SAMPLER_BUFFER, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler2DMS, GL_SAMPLER_2D_MULTISAMPLE, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler2DMSArray, GL_SAMPLER_2D_MULTISAMPLE_ARRAY, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler1D, GL_SAMPLER_1D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler2D, GL_SAMPLER_2D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler3D, GL_SAMPLER_3D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(samplerCube, GL_SAMPLER_CUBE, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler1DArray, GL_SAMPLER_1D_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler2DArray, GL_SAMPLER_2D_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_FLOAT) +DECL_TYPE(samplerCubeArray, GL_SAMPLER_CUBE_MAP_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler2DRect, GL_SAMPLER_2D_RECT, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(samplerBuffer, GL_SAMPLER_BUFFER, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler2DMS, GL_SAMPLER_2D_MULTISAMPLE, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler2DMSArray, GL_SAMPLER_2D_MULTISAMPLE_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_FLOAT) -DECL_TYPE(isampler1D, GL_INT_SAMPLER_1D, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_INT) -DECL_TYPE(isampler2D, GL_INT_SAMPLER_2D, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_INT) -DECL_TYPE(isampler3D, GL_INT_SAMPLER_3D, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_INT) -DECL_TYPE(isamplerCube, GL_INT_SAMPLER_CUBE, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_INT) -DECL_TYPE(isampler1DArray, GL_INT_SAMPLER_1D_ARRAY, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_INT) -DECL_TYPE(isampler2DArray, GL_INT_SAMPLER_2D_ARRAY, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_INT) -DECL_TYPE(isamplerCubeArray, GL_INT_SAMPLER_CUBE_MAP_ARRAY, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_INT) -DECL_TYPE(isampler2DRect, GL_INT_SAMPLER_2D_RECT, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_INT) -DECL_TYPE(isamplerBuffer, GL_INT_SAMPLER_BUFFER, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_INT) -DECL_TYPE(isampler2DMS, GL_INT_SAMPLER_2D_MULTISAMPLE, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_INT) -DECL_TYPE(isampler2DMSArray, GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_INT) +DECL_TYPE(isampler1D, GL_INT_SAMPLER_1D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_INT) +DECL_TYPE(isampler2D, GL_INT_SAMPLER_2D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_INT) +DECL_TYPE(isampler3D, GL_INT_SAMPLER_3D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_INT) +DECL_TYPE(isamplerCube, GL_INT_SAMPLER_CUBE, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_INT) +DECL_TYPE(isampler1DArray, GL_INT_SAMPLER_1D_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_INT) +DECL_TYPE(isampler2DArray, GL_INT_SAMPLER_2D_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_INT) +DECL_TYPE(isamplerCubeArray, GL_INT_SAMPLER_CUBE_MAP_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_INT) +DECL_TYPE(isampler2DRect, GL_INT_SAMPLER_2D_RECT, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_INT) +DECL_TYPE(isamplerBuffer, GL_INT_SAMPLER_BUFFER, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_INT) +DECL_TYPE(isampler2DMS, GL_INT_SAMPLER_2D_MULTISAMPLE, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_INT) +DECL_TYPE(isampler2DMSArray, GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_INT) -DECL_TYPE(usampler1D, GL_UNSIGNED_INT_SAMPLER_1D, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_UINT) -DECL_TYPE(usampler2D, GL_UNSIGNED_INT_SAMPLER_2D, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_UINT) -DECL_TYPE(usampler3D, GL_UNSIGNED_INT_SAMPLER_3D, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_UINT) -DECL_TYPE(usamplerCube, GL_UNSIGNED_INT_SAMPLER_CUBE, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_UINT) -DECL_TYPE(usampler1DArray, GL_UNSIGNED_INT_SAMPLER_1D_ARRAY, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_UINT) -DECL_TYPE(usampler2DArray, GL_UNSIGNED_INT_SAMPLER_2D_ARRAY, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_UINT) -DECL_TYPE(usamplerCubeArray, GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_UINT) -DECL_TYPE(usampler2DRect, GL_UNSIGNED_INT_SAMPLER_2D_RECT, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_UINT) -DECL_TYPE(usamplerBuffer, GL_UNSIGNED_INT_SAMPLER_BUFFER, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_UINT) -DECL_TYPE(usampler2DMS, GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_UINT) -DECL_TYPE(usampler2DMSArray, GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_UINT) +DECL_TYPE(usampler1D, GL_UNSIGNED_INT_SAMPLER_1D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_UINT) +DECL_TYPE(usampler2D, GL_UNSIGNED_INT_SAMPLER_2D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_UINT) +DECL_TYPE(usampler3D, GL_UNSIGNED_INT_SAMPLER_3D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_UINT) +DECL_TYPE(usamplerCube, GL_UNSIGNED_INT_SAMPLER_CUBE, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_UINT) +DECL_TYPE(usampler1DArray, GL_UNSIGNED_INT_SAMPLER_1D_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_UINT) +DECL_TYPE(usampler2DArray, GL_UNSIGNED_INT_SAMPLER_2D_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_UINT) +DECL_TYPE(usamplerCubeArray, GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_UINT) +DECL_TYPE(usampler2DRect, GL_UNSIGNED_INT_SAMPLER_2D_RECT, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_UINT) +DECL_TYPE(usamplerBuffer, GL_UNSIGNED_INT_SAMPLER_BUFFER, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_UINT) +DECL_TYPE(usampler2DMS, GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_UINT) +DECL_TYPE(usampler2DMSArray, GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_UINT) -DECL_TYPE(sampler1DShadow, GL_SAMPLER_1D_SHADOW, GLSL_SAMPLER_DIM_1D, 1, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler2DShadow, GL_SAMPLER_2D_SHADOW, GLSL_SAMPLER_DIM_2D, 1, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(samplerCubeShadow, GL_SAMPLER_CUBE_SHADOW, GLSL_SAMPLER_DIM_CUBE, 1, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler1DArrayShadow, GL_SAMPLER_1D_ARRAY_SHADOW, GLSL_SAMPLER_DIM_1D, 1, 1, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler2DArrayShadow, GL_SAMPLER_2D_ARRAY_SHADOW, GLSL_SAMPLER_DIM_2D, 1, 1, GLSL_TYPE_FLOAT) -DECL_TYPE(samplerCubeArrayShadow, GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW, GLSL_SAMPLER_DIM_CUBE, 1, 1, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler2DRectShadow, GL_SAMPLER_2D_RECT_SHADOW, GLSL_SAMPLER_DIM_RECT, 1, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler1DShadow, GL_SAMPLER_1D_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 1, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler2DShadow, GL_SAMPLER_2D_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 1, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(samplerCubeShadow, GL_SAMPLER_CUBE_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 1, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler1DArrayShadow, GL_SAMPLER_1D_ARRAY_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 1, 1, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler2DArrayShadow, GL_SAMPLER_2D_ARRAY_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 1, 1, GLSL_TYPE_FLOAT) +DECL_TYPE(samplerCubeArrayShadow, GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 1, 1, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler2DRectShadow, GL_SAMPLER_2D_RECT_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_RECT, 1, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(samplerExternalOES, GL_SAMPLER_EXTERNAL_OES, GLSL_SAMPLER_DIM_EXTERNAL, 0, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(samplerExternalOES, GL_SAMPLER_EXTERNAL_OES, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_EXTERNAL, 0, 0, GLSL_TYPE_FLOAT) + +DECL_TYPE(image1D, GL_IMAGE_1D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_FLOAT); +DECL_TYPE(image2D, GL_IMAGE_2D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_FLOAT); +DECL_TYPE(image3D, GL_IMAGE_3D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_FLOAT); +DECL_TYPE(image2DRect, GL_IMAGE_2D_RECT, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_FLOAT); +DECL_TYPE(imageCube, GL_IMAGE_CUBE, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_FLOAT); +DECL_TYPE(imageBuffer, GL_IMAGE_BUFFER, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_FLOAT); +DECL_TYPE(image1DArray, GL_IMAGE_1D_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_FLOAT); +DECL_TYPE(image2DArray, GL_IMAGE_2D_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_FLOAT); +DECL_TYPE(imageCubeArray, GL_IMAGE_CUBE_MAP_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_FLOAT); +DECL_TYPE(image2DMS, GL_IMAGE_2D_MULTISAMPLE, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_FLOAT); +DECL_TYPE(image2DMSArray, GL_IMAGE_2D_MULTISAMPLE_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_FLOAT); +DECL_TYPE(iimage1D, GL_INT_IMAGE_1D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_INT); +DECL_TYPE(iimage2D, GL_INT_IMAGE_2D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_INT); +DECL_TYPE(iimage3D, GL_INT_IMAGE_3D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_INT); +DECL_TYPE(iimage2DRect, GL_INT_IMAGE_2D_RECT, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_INT); +DECL_TYPE(iimageCube, GL_INT_IMAGE_CUBE, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_INT); +DECL_TYPE(iimageBuffer, GL_INT_IMAGE_BUFFER, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_INT); +DECL_TYPE(iimage1DArray, GL_INT_IMAGE_1D_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_INT); +DECL_TYPE(iimage2DArray, GL_INT_IMAGE_2D_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_INT); +DECL_TYPE(iimageCubeArray, GL_INT_IMAGE_CUBE_MAP_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_INT); +DECL_TYPE(iimage2DMS, GL_INT_IMAGE_2D_MULTISAMPLE, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_INT); +DECL_TYPE(iimage2DMSArray, GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_INT); +DECL_TYPE(uimage1D, GL_UNSIGNED_INT_IMAGE_1D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_UINT); +DECL_TYPE(uimage2D, GL_UNSIGNED_INT_IMAGE_2D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_UINT); +DECL_TYPE(uimage3D, GL_UNSIGNED_INT_IMAGE_3D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_UINT); +DECL_TYPE(uimage2DRect, GL_UNSIGNED_INT_IMAGE_2D_RECT, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_UINT); +DECL_TYPE(uimageCube, GL_UNSIGNED_INT_IMAGE_CUBE, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_UINT); +DECL_TYPE(uimageBuffer, GL_UNSIGNED_INT_IMAGE_BUFFER, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_UINT); +DECL_TYPE(uimage1DArray, GL_UNSIGNED_INT_IMAGE_1D_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_UINT); +DECL_TYPE(uimage2DArray, GL_UNSIGNED_INT_IMAGE_2D_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_UINT); +DECL_TYPE(uimageCubeArray, GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_UINT); +DECL_TYPE(uimage2DMS, GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_UINT); +DECL_TYPE(uimage2DMSArray, GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_UINT); DECL_TYPE(atomic_uint, GL_UNSIGNED_INT_ATOMIC_COUNTER, GLSL_TYPE_ATOMIC_UINT, 1, 1) diff --git a/3rdparty/glsl-optimizer/src/glsl/builtin_types.cpp b/3rdparty/glsl-optimizer/src/glsl/builtin_types.cpp index 14042d41e..5e62f5419 100644 --- a/3rdparty/glsl-optimizer/src/glsl/builtin_types.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/builtin_types.cpp @@ -204,6 +204,40 @@ const static struct builtin_type_versions { T(struct_gl_DepthRangeParameters, 110, 100) + T(image1D, 420, 999) + T(image2D, 420, 999) + T(image3D, 420, 999) + T(image2DRect, 420, 999) + T(imageCube, 420, 999) + T(imageBuffer, 420, 999) + T(image1DArray, 420, 999) + T(image2DArray, 420, 999) + T(imageCubeArray, 420, 999) + T(image2DMS, 420, 999) + T(image2DMSArray, 420, 999) + T(iimage1D, 420, 999) + T(iimage2D, 420, 999) + T(iimage3D, 420, 999) + T(iimage2DRect, 420, 999) + T(iimageCube, 420, 999) + T(iimageBuffer, 420, 999) + T(iimage1DArray, 420, 999) + T(iimage2DArray, 420, 999) + T(iimageCubeArray, 420, 999) + T(iimage2DMS, 420, 999) + T(iimage2DMSArray, 420, 999) + T(uimage1D, 420, 999) + T(uimage2D, 420, 999) + T(uimage3D, 420, 999) + T(uimage2DRect, 420, 999) + T(uimageCube, 420, 999) + T(uimageBuffer, 420, 999) + T(uimage1DArray, 420, 999) + T(uimage2DArray, 420, 999) + T(uimageCubeArray, 420, 999) + T(uimage2DMS, 420, 999) + T(uimage2DMSArray, 420, 999) + T(atomic_uint, 420, 999) }; @@ -291,6 +325,42 @@ _mesa_glsl_initialize_types(struct _mesa_glsl_parse_state *state) add_type(symbols, glsl_type::sampler3D_type); } + if (state->ARB_shader_image_load_store_enable) { + add_type(symbols, glsl_type::image1D_type); + add_type(symbols, glsl_type::image2D_type); + add_type(symbols, glsl_type::image3D_type); + add_type(symbols, glsl_type::image2DRect_type); + add_type(symbols, glsl_type::imageCube_type); + add_type(symbols, glsl_type::imageBuffer_type); + add_type(symbols, glsl_type::image1DArray_type); + add_type(symbols, glsl_type::image2DArray_type); + add_type(symbols, glsl_type::imageCubeArray_type); + add_type(symbols, glsl_type::image2DMS_type); + add_type(symbols, glsl_type::image2DMSArray_type); + add_type(symbols, glsl_type::iimage1D_type); + add_type(symbols, glsl_type::iimage2D_type); + add_type(symbols, glsl_type::iimage3D_type); + add_type(symbols, glsl_type::iimage2DRect_type); + add_type(symbols, glsl_type::iimageCube_type); + add_type(symbols, glsl_type::iimageBuffer_type); + add_type(symbols, glsl_type::iimage1DArray_type); + add_type(symbols, glsl_type::iimage2DArray_type); + add_type(symbols, glsl_type::iimageCubeArray_type); + add_type(symbols, glsl_type::iimage2DMS_type); + add_type(symbols, glsl_type::iimage2DMSArray_type); + add_type(symbols, glsl_type::uimage1D_type); + add_type(symbols, glsl_type::uimage2D_type); + add_type(symbols, glsl_type::uimage3D_type); + add_type(symbols, glsl_type::uimage2DRect_type); + add_type(symbols, glsl_type::uimageCube_type); + add_type(symbols, glsl_type::uimageBuffer_type); + add_type(symbols, glsl_type::uimage1DArray_type); + add_type(symbols, glsl_type::uimage2DArray_type); + add_type(symbols, glsl_type::uimageCubeArray_type); + add_type(symbols, glsl_type::uimage2DMS_type); + add_type(symbols, glsl_type::uimage2DMSArray_type); + } + if (state->ARB_shader_atomic_counters_enable) { add_type(symbols, glsl_type::atomic_uint_type); } diff --git a/3rdparty/glsl-optimizer/src/glsl/builtin_variables.cpp b/3rdparty/glsl-optimizer/src/glsl/builtin_variables.cpp index 322d2ebfd..e537c352c 100644 --- a/3rdparty/glsl-optimizer/src/glsl/builtin_variables.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/builtin_variables.cpp @@ -370,6 +370,7 @@ public: void generate_vs_special_vars(); void generate_gs_special_vars(); void generate_fs_special_vars(); + void generate_cs_special_vars(); void generate_varyings(); private: @@ -403,6 +404,7 @@ private: enum ir_variable_mode mode, int slot, glsl_precision prec); ir_variable *add_uniform(const glsl_type *type, const char *name, glsl_precision prec); ir_variable *add_const(const char *name, int value); + ir_variable *add_const_ivec3(const char *name, int x, int y, int z); void add_varying(int slot, const glsl_type *type, const char *name, const char *name_as_gs_input, glsl_precision prec); @@ -546,6 +548,25 @@ builtin_variable_generator::add_const(const char *name, int value) } +ir_variable * +builtin_variable_generator::add_const_ivec3(const char *name, int x, int y, + int z) +{ + ir_variable *const var = add_variable(name, glsl_type::ivec3_type, + ir_var_auto, -1, glsl_precision_undefined); + ir_constant_data data; + memset(&data, 0, sizeof(data)); + data.i[0] = x; + data.i[1] = y; + data.i[2] = z; + var->constant_value = new(var) ir_constant(glsl_type::ivec3_type, &data); + var->constant_initializer = + new(var) ir_constant(glsl_type::ivec3_type, &data); + var->data.has_initializer = true; + return var; +} + + void builtin_variable_generator::generate_constants() { @@ -676,6 +697,57 @@ builtin_variable_generator::generate_constants() add_const("gl_MaxTessControlAtomicCounters", 0); add_const("gl_MaxTessEvaluationAtomicCounters", 0); } + + if (state->is_version(430, 0) || state->ARB_compute_shader_enable) { + add_const_ivec3("gl_MaxComputeWorkGroupCount", + state->Const.MaxComputeWorkGroupCount[0], + state->Const.MaxComputeWorkGroupCount[1], + state->Const.MaxComputeWorkGroupCount[2]); + add_const_ivec3("gl_MaxComputeWorkGroupSize", + state->Const.MaxComputeWorkGroupSize[0], + state->Const.MaxComputeWorkGroupSize[1], + state->Const.MaxComputeWorkGroupSize[2]); + + /* From the GLSL 4.40 spec, section 7.1 (Built-In Language Variables): + * + * The built-in constant gl_WorkGroupSize is a compute-shader + * constant containing the local work-group size of the shader. The + * size of the work group in the X, Y, and Z dimensions is stored in + * the x, y, and z components. The constants values in + * gl_WorkGroupSize will match those specified in the required + * local_size_x, local_size_y, and local_size_z layout qualifiers + * for the current shader. This is a constant so that it can be + * used to size arrays of memory that can be shared within the local + * work group. It is a compile-time error to use gl_WorkGroupSize + * in a shader that does not declare a fixed local group size, or + * before that shader has declared a fixed local group size, using + * local_size_x, local_size_y, and local_size_z. + * + * To prevent the shader from trying to refer to gl_WorkGroupSize before + * the layout declaration, we don't define it here. Intead we define it + * in ast_cs_input_layout::hir(). + */ + } + + if (state->is_version(420, 0) || + state->ARB_shader_image_load_store_enable) { + add_const("gl_MaxImageUnits", + state->Const.MaxImageUnits); + add_const("gl_MaxCombinedImageUnitsAndFragmentOutputs", + state->Const.MaxCombinedImageUnitsAndFragmentOutputs); + add_const("gl_MaxImageSamples", + state->Const.MaxImageSamples); + add_const("gl_MaxVertexImageUniforms", + state->Const.MaxVertexImageUniforms); + add_const("gl_MaxTessControlImageUniforms", 0); + add_const("gl_MaxTessEvaluationImageUniforms", 0); + add_const("gl_MaxGeometryImageUniforms", + state->Const.MaxGeometryImageUniforms); + add_const("gl_MaxFragmentImageUniforms", + state->Const.MaxFragmentImageUniforms); + add_const("gl_MaxCombinedImageUniforms", + state->Const.MaxCombinedImageUniforms); + } } @@ -892,6 +964,16 @@ builtin_variable_generator::generate_fs_special_vars() } +/** + * Generate variables which only exist in compute shaders. + */ +void +builtin_variable_generator::generate_cs_special_vars() +{ + /* TODO: finish this. */ +} + + /** * Add a single "varying" variable. The variable's type and direction (input * or output) are adjusted as appropriate for the type of shader being @@ -914,6 +996,9 @@ builtin_variable_generator::add_varying(int slot, const glsl_type *type, case MESA_SHADER_FRAGMENT: add_input(slot, type, name, prec); break; + case MESA_SHADER_COMPUTE: + /* Compute shaders don't have varyings. */ + break; } } @@ -1001,5 +1086,8 @@ _mesa_glsl_initialize_variables(exec_list *instructions, case MESA_SHADER_FRAGMENT: gen.generate_fs_special_vars(); break; + case MESA_SHADER_COMPUTE: + gen.generate_cs_special_vars(); + break; } } diff --git a/3rdparty/glsl-optimizer/src/glsl/glcpp/glcpp-lex.c b/3rdparty/glsl-optimizer/src/glsl/glcpp/glcpp-lex.c index 3e4daff2d..ccd1a2b28 100644 --- a/3rdparty/glsl-optimizer/src/glsl/glcpp/glcpp-lex.c +++ b/3rdparty/glsl-optimizer/src/glsl/glcpp/glcpp-lex.c @@ -1040,41 +1040,39 @@ case 1: YY_RULE_SETUP #line 158 "src/glsl/glcpp/glcpp-lex.l" { - if (parser->commented_newlines) - BEGIN NEWLINE_CATCHUP; } YY_BREAK /* Multi-line comments */ case 2: YY_RULE_SETUP -#line 164 "src/glsl/glcpp/glcpp-lex.l" +#line 162 "src/glsl/glcpp/glcpp-lex.l" { yy_push_state(COMMENT, yyscanner); } YY_BREAK case 3: YY_RULE_SETUP -#line 165 "src/glsl/glcpp/glcpp-lex.l" +#line 163 "src/glsl/glcpp/glcpp-lex.l" YY_BREAK case 4: /* rule 4 can match eol */ YY_RULE_SETUP -#line 166 "src/glsl/glcpp/glcpp-lex.l" +#line 164 "src/glsl/glcpp/glcpp-lex.l" { yylineno++; yycolumn = 0; parser->commented_newlines++; } YY_BREAK case 5: YY_RULE_SETUP -#line 167 "src/glsl/glcpp/glcpp-lex.l" +#line 165 "src/glsl/glcpp/glcpp-lex.l" YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 168 "src/glsl/glcpp/glcpp-lex.l" +#line 166 "src/glsl/glcpp/glcpp-lex.l" { yylineno++; yycolumn = 0; parser->commented_newlines++; } YY_BREAK case 7: YY_RULE_SETUP -#line 169 "src/glsl/glcpp/glcpp-lex.l" +#line 167 "src/glsl/glcpp/glcpp-lex.l" { yy_pop_state(yyscanner); if (yyextra->space_tokens) @@ -1083,7 +1081,7 @@ YY_RULE_SETUP YY_BREAK case 8: YY_RULE_SETUP -#line 175 "src/glsl/glcpp/glcpp-lex.l" +#line 173 "src/glsl/glcpp/glcpp-lex.l" { yylval->str = ralloc_strdup (yyextra, yytext); yyextra->space_tokens = 0; @@ -1094,7 +1092,7 @@ YY_RULE_SETUP * Simply pass them through to the main compiler's lexer/parser. */ case 9: YY_RULE_SETUP -#line 183 "src/glsl/glcpp/glcpp-lex.l" +#line 181 "src/glsl/glcpp/glcpp-lex.l" { if (parser->commented_newlines) BEGIN NEWLINE_CATCHUP; @@ -1106,7 +1104,7 @@ YY_RULE_SETUP YY_BREAK case 10: YY_RULE_SETUP -#line 192 "src/glsl/glcpp/glcpp-lex.l" +#line 190 "src/glsl/glcpp/glcpp-lex.l" { return HASH_LINE; } @@ -1114,7 +1112,7 @@ YY_RULE_SETUP case 11: YY_RULE_SETUP -#line 197 "src/glsl/glcpp/glcpp-lex.l" +#line 195 "src/glsl/glcpp/glcpp-lex.l" { yyextra->lexing_if = 1; yyextra->space_tokens = 0; @@ -1123,7 +1121,7 @@ YY_RULE_SETUP YY_BREAK case 12: YY_RULE_SETUP -#line 203 "src/glsl/glcpp/glcpp-lex.l" +#line 201 "src/glsl/glcpp/glcpp-lex.l" { yyextra->lexing_if = 1; yyextra->space_tokens = 0; @@ -1136,7 +1134,7 @@ case 13: yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 209 "src/glsl/glcpp/glcpp-lex.l" +#line 207 "src/glsl/glcpp/glcpp-lex.l" { yyextra->lexing_if = 1; yyextra->space_tokens = 0; @@ -1149,7 +1147,7 @@ case 14: yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 215 "src/glsl/glcpp/glcpp-lex.l" +#line 213 "src/glsl/glcpp/glcpp-lex.l" { yyextra->lexing_if = 1; yyextra->space_tokens = 0; @@ -1158,7 +1156,7 @@ YY_RULE_SETUP YY_BREAK case 15: YY_RULE_SETUP -#line 221 "src/glsl/glcpp/glcpp-lex.l" +#line 219 "src/glsl/glcpp/glcpp-lex.l" { yyextra->space_tokens = 0; return HASH_ELSE; @@ -1166,7 +1164,7 @@ YY_RULE_SETUP YY_BREAK case 16: YY_RULE_SETUP -#line 226 "src/glsl/glcpp/glcpp-lex.l" +#line 224 "src/glsl/glcpp/glcpp-lex.l" { yyextra->space_tokens = 0; return HASH_ENDIF; @@ -1175,7 +1173,7 @@ YY_RULE_SETUP case 17: YY_RULE_SETUP -#line 232 "src/glsl/glcpp/glcpp-lex.l" +#line 230 "src/glsl/glcpp/glcpp-lex.l" { if (parser->commented_newlines) BEGIN NEWLINE_CATCHUP; @@ -1183,7 +1181,7 @@ YY_RULE_SETUP YY_BREAK case 18: YY_RULE_SETUP -#line 237 "src/glsl/glcpp/glcpp-lex.l" +#line 235 "src/glsl/glcpp/glcpp-lex.l" { char *p; for (p = yytext; !isalpha(p[0]); p++); /* skip " # " */ @@ -1193,7 +1191,7 @@ YY_RULE_SETUP YY_BREAK case 19: YY_RULE_SETUP -#line 244 "src/glsl/glcpp/glcpp-lex.l" +#line 242 "src/glsl/glcpp/glcpp-lex.l" { yyextra->space_tokens = 0; yy_push_state(DEFINE, yyscanner); @@ -1205,7 +1203,7 @@ case 20: yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 250 "src/glsl/glcpp/glcpp-lex.l" +#line 248 "src/glsl/glcpp/glcpp-lex.l" { yy_pop_state(yyscanner); yylval->str = ralloc_strdup (yyextra, yytext); @@ -1214,7 +1212,7 @@ YY_RULE_SETUP YY_BREAK case 21: YY_RULE_SETUP -#line 256 "src/glsl/glcpp/glcpp-lex.l" +#line 254 "src/glsl/glcpp/glcpp-lex.l" { yy_pop_state(yyscanner); yylval->str = ralloc_strdup (yyextra, yytext); @@ -1223,7 +1221,7 @@ YY_RULE_SETUP YY_BREAK case 22: YY_RULE_SETUP -#line 262 "src/glsl/glcpp/glcpp-lex.l" +#line 260 "src/glsl/glcpp/glcpp-lex.l" { yyextra->space_tokens = 0; return HASH_UNDEF; @@ -1231,7 +1229,7 @@ YY_RULE_SETUP YY_BREAK case 23: YY_RULE_SETUP -#line 267 "src/glsl/glcpp/glcpp-lex.l" +#line 265 "src/glsl/glcpp/glcpp-lex.l" { yyextra->space_tokens = 0; return HASH; @@ -1239,7 +1237,7 @@ YY_RULE_SETUP YY_BREAK case 24: YY_RULE_SETUP -#line 272 "src/glsl/glcpp/glcpp-lex.l" +#line 270 "src/glsl/glcpp/glcpp-lex.l" { yylval->str = ralloc_strdup (yyextra, yytext); return INTEGER_STRING; @@ -1247,7 +1245,7 @@ YY_RULE_SETUP YY_BREAK case 25: YY_RULE_SETUP -#line 277 "src/glsl/glcpp/glcpp-lex.l" +#line 275 "src/glsl/glcpp/glcpp-lex.l" { yylval->str = ralloc_strdup (yyextra, yytext); return INTEGER_STRING; @@ -1255,7 +1253,7 @@ YY_RULE_SETUP YY_BREAK case 26: YY_RULE_SETUP -#line 282 "src/glsl/glcpp/glcpp-lex.l" +#line 280 "src/glsl/glcpp/glcpp-lex.l" { yylval->str = ralloc_strdup (yyextra, yytext); return INTEGER_STRING; @@ -1263,63 +1261,63 @@ YY_RULE_SETUP YY_BREAK case 27: YY_RULE_SETUP -#line 287 "src/glsl/glcpp/glcpp-lex.l" +#line 285 "src/glsl/glcpp/glcpp-lex.l" { return LEFT_SHIFT; } YY_BREAK case 28: YY_RULE_SETUP -#line 291 "src/glsl/glcpp/glcpp-lex.l" +#line 289 "src/glsl/glcpp/glcpp-lex.l" { return RIGHT_SHIFT; } YY_BREAK case 29: YY_RULE_SETUP -#line 295 "src/glsl/glcpp/glcpp-lex.l" +#line 293 "src/glsl/glcpp/glcpp-lex.l" { return LESS_OR_EQUAL; } YY_BREAK case 30: YY_RULE_SETUP -#line 299 "src/glsl/glcpp/glcpp-lex.l" +#line 297 "src/glsl/glcpp/glcpp-lex.l" { return GREATER_OR_EQUAL; } YY_BREAK case 31: YY_RULE_SETUP -#line 303 "src/glsl/glcpp/glcpp-lex.l" +#line 301 "src/glsl/glcpp/glcpp-lex.l" { return EQUAL; } YY_BREAK case 32: YY_RULE_SETUP -#line 307 "src/glsl/glcpp/glcpp-lex.l" +#line 305 "src/glsl/glcpp/glcpp-lex.l" { return NOT_EQUAL; } YY_BREAK case 33: YY_RULE_SETUP -#line 311 "src/glsl/glcpp/glcpp-lex.l" +#line 309 "src/glsl/glcpp/glcpp-lex.l" { return AND; } YY_BREAK case 34: YY_RULE_SETUP -#line 315 "src/glsl/glcpp/glcpp-lex.l" +#line 313 "src/glsl/glcpp/glcpp-lex.l" { return OR; } YY_BREAK case 35: YY_RULE_SETUP -#line 319 "src/glsl/glcpp/glcpp-lex.l" +#line 317 "src/glsl/glcpp/glcpp-lex.l" { if (parser->is_gles) glcpp_error(yylloc, yyextra, "Token pasting (##) is illegal in GLES"); @@ -1328,14 +1326,14 @@ YY_RULE_SETUP YY_BREAK case 36: YY_RULE_SETUP -#line 325 "src/glsl/glcpp/glcpp-lex.l" +#line 323 "src/glsl/glcpp/glcpp-lex.l" { return DEFINED; } YY_BREAK case 37: YY_RULE_SETUP -#line 329 "src/glsl/glcpp/glcpp-lex.l" +#line 327 "src/glsl/glcpp/glcpp-lex.l" { yylval->str = ralloc_strdup (yyextra, yytext); return IDENTIFIER; @@ -1343,14 +1341,14 @@ YY_RULE_SETUP YY_BREAK case 38: YY_RULE_SETUP -#line 334 "src/glsl/glcpp/glcpp-lex.l" +#line 332 "src/glsl/glcpp/glcpp-lex.l" { return yytext[0]; } YY_BREAK case 39: YY_RULE_SETUP -#line 338 "src/glsl/glcpp/glcpp-lex.l" +#line 336 "src/glsl/glcpp/glcpp-lex.l" { yylval->str = ralloc_strdup (yyextra, yytext); return OTHER; @@ -1358,7 +1356,7 @@ YY_RULE_SETUP YY_BREAK case 40: YY_RULE_SETUP -#line 343 "src/glsl/glcpp/glcpp-lex.l" +#line 341 "src/glsl/glcpp/glcpp-lex.l" { if (yyextra->space_tokens) { return SPACE; @@ -1368,7 +1366,7 @@ YY_RULE_SETUP case 41: /* rule 41 can match eol */ YY_RULE_SETUP -#line 349 "src/glsl/glcpp/glcpp-lex.l" +#line 347 "src/glsl/glcpp/glcpp-lex.l" { if (parser->commented_newlines) { BEGIN NEWLINE_CATCHUP; @@ -1381,7 +1379,7 @@ YY_RULE_SETUP YY_BREAK /* Handle missing newline at EOF. */ case YY_STATE_EOF(INITIAL): -#line 360 "src/glsl/glcpp/glcpp-lex.l" +#line 358 "src/glsl/glcpp/glcpp-lex.l" { BEGIN DONE; /* Don't keep matching this rule forever. */ yyextra->lexing_if = 0; @@ -1394,7 +1392,7 @@ case YY_STATE_EOF(INITIAL): warnings. */ case 42: YY_RULE_SETUP -#line 370 "src/glsl/glcpp/glcpp-lex.l" +#line 368 "src/glsl/glcpp/glcpp-lex.l" { unput('.'); yy_top_state(yyextra); @@ -1402,10 +1400,10 @@ YY_RULE_SETUP YY_BREAK case 43: YY_RULE_SETUP -#line 375 "src/glsl/glcpp/glcpp-lex.l" +#line 373 "src/glsl/glcpp/glcpp-lex.l" ECHO; YY_BREAK -#line 1409 "src/glsl/glcpp/glcpp-lex.c" +#line 1407 "src/glsl/glcpp/glcpp-lex.c" case YY_STATE_EOF(DONE): case YY_STATE_EOF(COMMENT): case YY_STATE_EOF(UNREACHABLE): @@ -2629,7 +2627,7 @@ void glcpp_free (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 375 "src/glsl/glcpp/glcpp-lex.l" +#line 373 "src/glsl/glcpp/glcpp-lex.l" diff --git a/3rdparty/glsl-optimizer/src/glsl/glcpp/glcpp-lex.l b/3rdparty/glsl-optimizer/src/glsl/glcpp/glcpp-lex.l index fcbf80342..07d8405e4 100644 --- a/3rdparty/glsl-optimizer/src/glsl/glcpp/glcpp-lex.l +++ b/3rdparty/glsl-optimizer/src/glsl/glcpp/glcpp-lex.l @@ -156,8 +156,6 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]? /* Single-line comments */ "//"[^\n]* { - if (parser->commented_newlines) - BEGIN NEWLINE_CATCHUP; } /* Multi-line comments */ diff --git a/3rdparty/glsl-optimizer/src/glsl/glcpp/glcpp-parse.c b/3rdparty/glsl-optimizer/src/glsl/glcpp/glcpp-parse.c index 8de3d3eed..d8f83bcda 100644 --- a/3rdparty/glsl-optimizer/src/glsl/glcpp/glcpp-parse.c +++ b/3rdparty/glsl-optimizer/src/glsl/glcpp/glcpp-parse.c @@ -683,15 +683,15 @@ static const yytype_uint16 yyrline[] = 0, 188, 188, 190, 194, 197, 197, 208, 213, 214, 218, 221, 224, 232, 245, 248, 251, 257, 257, 260, 260, 270, 270, 292, 302, 302, 309, 309, 316, 341, - 361, 361, 374, 374, 377, 380, 383, 389, 398, 403, - 404, 409, 412, 415, 418, 421, 424, 427, 430, 433, - 436, 439, 442, 445, 448, 451, 454, 462, 470, 473, - 476, 479, 482, 485, 491, 496, 504, 505, 509, 515, - 516, 519, 521, 528, 532, 536, 541, 545, 552, 557, - 564, 568, 572, 576, 580, 587, 588, 589, 590, 591, - 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, - 612, 613, 614, 615, 616, 617 + 361, 361, 374, 374, 377, 383, 389, 395, 404, 409, + 410, 415, 418, 421, 424, 427, 430, 433, 436, 439, + 442, 445, 448, 451, 454, 457, 460, 468, 476, 479, + 482, 485, 488, 491, 497, 502, 510, 511, 515, 521, + 522, 525, 527, 534, 538, 542, 547, 551, 558, 563, + 570, 574, 578, 582, 586, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, + 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, + 618, 619, 620, 621, 622, 623 }; #endif @@ -2251,21 +2251,27 @@ yyreduce: /* Line 1787 of yacc.c */ #line 377 "src/glsl/glcpp/glcpp-parse.y" { + if (parser->version_resolved) { + glcpp_error(& (yylsp[(1) - (3)]), parser, "#version must appear on the first line"); + } _glcpp_parser_handle_version_declaration(parser, (yyvsp[(2) - (3)].ival), NULL, true); } break; case 35: /* Line 1787 of yacc.c */ -#line 380 "src/glsl/glcpp/glcpp-parse.y" +#line 383 "src/glsl/glcpp/glcpp-parse.y" { + if (parser->version_resolved) { + glcpp_error(& (yylsp[(1) - (4)]), parser, "#version must appear on the first line"); + } _glcpp_parser_handle_version_declaration(parser, (yyvsp[(2) - (4)].ival), (yyvsp[(3) - (4)].str), true); } break; case 36: /* Line 1787 of yacc.c */ -#line 383 "src/glsl/glcpp/glcpp-parse.y" +#line 389 "src/glsl/glcpp/glcpp-parse.y" { glcpp_parser_resolve_implicit_version(parser); } @@ -2273,7 +2279,7 @@ yyreduce: case 37: /* Line 1787 of yacc.c */ -#line 389 "src/glsl/glcpp/glcpp-parse.y" +#line 395 "src/glsl/glcpp/glcpp-parse.y" { if (strlen ((yyvsp[(1) - (1)].str)) >= 3 && strncmp ((yyvsp[(1) - (1)].str), "0x", 2) == 0) { (yyval.ival) = (int)strtoll ((yyvsp[(1) - (1)].str) + 2, NULL, 16); @@ -2287,7 +2293,7 @@ yyreduce: case 38: /* Line 1787 of yacc.c */ -#line 398 "src/glsl/glcpp/glcpp-parse.y" +#line 404 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (1)].ival); } @@ -2295,7 +2301,7 @@ yyreduce: case 40: /* Line 1787 of yacc.c */ -#line 404 "src/glsl/glcpp/glcpp-parse.y" +#line 410 "src/glsl/glcpp/glcpp-parse.y" { if (parser->is_gles) glcpp_error(& (yylsp[(1) - (1)]), parser, "undefined macro %s in expression (illegal in GLES)", (yyvsp[(1) - (1)].str)); @@ -2305,7 +2311,7 @@ yyreduce: case 41: /* Line 1787 of yacc.c */ -#line 409 "src/glsl/glcpp/glcpp-parse.y" +#line 415 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) || (yyvsp[(3) - (3)].ival); } @@ -2313,7 +2319,7 @@ yyreduce: case 42: /* Line 1787 of yacc.c */ -#line 412 "src/glsl/glcpp/glcpp-parse.y" +#line 418 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) && (yyvsp[(3) - (3)].ival); } @@ -2321,7 +2327,7 @@ yyreduce: case 43: /* Line 1787 of yacc.c */ -#line 415 "src/glsl/glcpp/glcpp-parse.y" +#line 421 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); } @@ -2329,7 +2335,7 @@ yyreduce: case 44: /* Line 1787 of yacc.c */ -#line 418 "src/glsl/glcpp/glcpp-parse.y" +#line 424 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) ^ (yyvsp[(3) - (3)].ival); } @@ -2337,7 +2343,7 @@ yyreduce: case 45: /* Line 1787 of yacc.c */ -#line 421 "src/glsl/glcpp/glcpp-parse.y" +#line 427 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) & (yyvsp[(3) - (3)].ival); } @@ -2345,7 +2351,7 @@ yyreduce: case 46: /* Line 1787 of yacc.c */ -#line 424 "src/glsl/glcpp/glcpp-parse.y" +#line 430 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) != (yyvsp[(3) - (3)].ival); } @@ -2353,7 +2359,7 @@ yyreduce: case 47: /* Line 1787 of yacc.c */ -#line 427 "src/glsl/glcpp/glcpp-parse.y" +#line 433 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) == (yyvsp[(3) - (3)].ival); } @@ -2361,7 +2367,7 @@ yyreduce: case 48: /* Line 1787 of yacc.c */ -#line 430 "src/glsl/glcpp/glcpp-parse.y" +#line 436 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) >= (yyvsp[(3) - (3)].ival); } @@ -2369,7 +2375,7 @@ yyreduce: case 49: /* Line 1787 of yacc.c */ -#line 433 "src/glsl/glcpp/glcpp-parse.y" +#line 439 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) <= (yyvsp[(3) - (3)].ival); } @@ -2377,7 +2383,7 @@ yyreduce: case 50: /* Line 1787 of yacc.c */ -#line 436 "src/glsl/glcpp/glcpp-parse.y" +#line 442 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) > (yyvsp[(3) - (3)].ival); } @@ -2385,7 +2391,7 @@ yyreduce: case 51: /* Line 1787 of yacc.c */ -#line 439 "src/glsl/glcpp/glcpp-parse.y" +#line 445 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) < (yyvsp[(3) - (3)].ival); } @@ -2393,7 +2399,7 @@ yyreduce: case 52: /* Line 1787 of yacc.c */ -#line 442 "src/glsl/glcpp/glcpp-parse.y" +#line 448 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) >> (yyvsp[(3) - (3)].ival); } @@ -2401,7 +2407,7 @@ yyreduce: case 53: /* Line 1787 of yacc.c */ -#line 445 "src/glsl/glcpp/glcpp-parse.y" +#line 451 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) << (yyvsp[(3) - (3)].ival); } @@ -2409,7 +2415,7 @@ yyreduce: case 54: /* Line 1787 of yacc.c */ -#line 448 "src/glsl/glcpp/glcpp-parse.y" +#line 454 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) - (yyvsp[(3) - (3)].ival); } @@ -2417,7 +2423,7 @@ yyreduce: case 55: /* Line 1787 of yacc.c */ -#line 451 "src/glsl/glcpp/glcpp-parse.y" +#line 457 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) + (yyvsp[(3) - (3)].ival); } @@ -2425,7 +2431,7 @@ yyreduce: case 56: /* Line 1787 of yacc.c */ -#line 454 "src/glsl/glcpp/glcpp-parse.y" +#line 460 "src/glsl/glcpp/glcpp-parse.y" { if ((yyvsp[(3) - (3)].ival) == 0) { yyerror (& (yylsp[(1) - (3)]), parser, @@ -2438,7 +2444,7 @@ yyreduce: case 57: /* Line 1787 of yacc.c */ -#line 462 "src/glsl/glcpp/glcpp-parse.y" +#line 468 "src/glsl/glcpp/glcpp-parse.y" { if ((yyvsp[(3) - (3)].ival) == 0) { yyerror (& (yylsp[(1) - (3)]), parser, @@ -2451,7 +2457,7 @@ yyreduce: case 58: /* Line 1787 of yacc.c */ -#line 470 "src/glsl/glcpp/glcpp-parse.y" +#line 476 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) * (yyvsp[(3) - (3)].ival); } @@ -2459,7 +2465,7 @@ yyreduce: case 59: /* Line 1787 of yacc.c */ -#line 473 "src/glsl/glcpp/glcpp-parse.y" +#line 479 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = ! (yyvsp[(2) - (2)].ival); } @@ -2467,7 +2473,7 @@ yyreduce: case 60: /* Line 1787 of yacc.c */ -#line 476 "src/glsl/glcpp/glcpp-parse.y" +#line 482 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = ~ (yyvsp[(2) - (2)].ival); } @@ -2475,7 +2481,7 @@ yyreduce: case 61: /* Line 1787 of yacc.c */ -#line 479 "src/glsl/glcpp/glcpp-parse.y" +#line 485 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = - (yyvsp[(2) - (2)].ival); } @@ -2483,7 +2489,7 @@ yyreduce: case 62: /* Line 1787 of yacc.c */ -#line 482 "src/glsl/glcpp/glcpp-parse.y" +#line 488 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = + (yyvsp[(2) - (2)].ival); } @@ -2491,7 +2497,7 @@ yyreduce: case 63: /* Line 1787 of yacc.c */ -#line 485 "src/glsl/glcpp/glcpp-parse.y" +#line 491 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = (yyvsp[(2) - (3)].ival); } @@ -2499,7 +2505,7 @@ yyreduce: case 64: /* Line 1787 of yacc.c */ -#line 491 "src/glsl/glcpp/glcpp-parse.y" +#line 497 "src/glsl/glcpp/glcpp-parse.y" { (yyval.string_list) = _string_list_create (parser); _string_list_append_item ((yyval.string_list), (yyvsp[(1) - (1)].str)); @@ -2509,7 +2515,7 @@ yyreduce: case 65: /* Line 1787 of yacc.c */ -#line 496 "src/glsl/glcpp/glcpp-parse.y" +#line 502 "src/glsl/glcpp/glcpp-parse.y" { (yyval.string_list) = (yyvsp[(1) - (3)].string_list); _string_list_append_item ((yyval.string_list), (yyvsp[(3) - (3)].str)); @@ -2519,13 +2525,13 @@ yyreduce: case 66: /* Line 1787 of yacc.c */ -#line 504 "src/glsl/glcpp/glcpp-parse.y" +#line 510 "src/glsl/glcpp/glcpp-parse.y" { (yyval.token_list) = NULL; } break; case 68: /* Line 1787 of yacc.c */ -#line 509 "src/glsl/glcpp/glcpp-parse.y" +#line 515 "src/glsl/glcpp/glcpp-parse.y" { yyerror (& (yylsp[(1) - (2)]), parser, "Invalid tokens after #"); } @@ -2533,13 +2539,13 @@ yyreduce: case 69: /* Line 1787 of yacc.c */ -#line 515 "src/glsl/glcpp/glcpp-parse.y" +#line 521 "src/glsl/glcpp/glcpp-parse.y" { (yyval.token_list) = NULL; } break; case 72: /* Line 1787 of yacc.c */ -#line 521 "src/glsl/glcpp/glcpp-parse.y" +#line 527 "src/glsl/glcpp/glcpp-parse.y" { glcpp_warning(&(yylsp[(1) - (1)]), parser, "extra tokens at end of directive"); } @@ -2547,7 +2553,7 @@ yyreduce: case 73: /* Line 1787 of yacc.c */ -#line 528 "src/glsl/glcpp/glcpp-parse.y" +#line 534 "src/glsl/glcpp/glcpp-parse.y" { int v = hash_table_find (parser->defines, (yyvsp[(2) - (2)].str)) ? 1 : 0; (yyval.token) = _token_create_ival (parser, INTEGER, v); @@ -2556,7 +2562,7 @@ yyreduce: case 74: /* Line 1787 of yacc.c */ -#line 532 "src/glsl/glcpp/glcpp-parse.y" +#line 538 "src/glsl/glcpp/glcpp-parse.y" { int v = hash_table_find (parser->defines, (yyvsp[(3) - (4)].str)) ? 1 : 0; (yyval.token) = _token_create_ival (parser, INTEGER, v); @@ -2565,7 +2571,7 @@ yyreduce: case 76: /* Line 1787 of yacc.c */ -#line 541 "src/glsl/glcpp/glcpp-parse.y" +#line 547 "src/glsl/glcpp/glcpp-parse.y" { (yyval.token_list) = _token_list_create (parser); _token_list_append ((yyval.token_list), (yyvsp[(1) - (1)].token)); @@ -2574,7 +2580,7 @@ yyreduce: case 77: /* Line 1787 of yacc.c */ -#line 545 "src/glsl/glcpp/glcpp-parse.y" +#line 551 "src/glsl/glcpp/glcpp-parse.y" { (yyval.token_list) = (yyvsp[(1) - (2)].token_list); _token_list_append ((yyval.token_list), (yyvsp[(2) - (2)].token)); @@ -2583,7 +2589,7 @@ yyreduce: case 78: /* Line 1787 of yacc.c */ -#line 552 "src/glsl/glcpp/glcpp-parse.y" +#line 558 "src/glsl/glcpp/glcpp-parse.y" { parser->space_tokens = 1; (yyval.token_list) = _token_list_create (parser); @@ -2593,7 +2599,7 @@ yyreduce: case 79: /* Line 1787 of yacc.c */ -#line 557 "src/glsl/glcpp/glcpp-parse.y" +#line 563 "src/glsl/glcpp/glcpp-parse.y" { (yyval.token_list) = (yyvsp[(1) - (2)].token_list); _token_list_append ((yyval.token_list), (yyvsp[(2) - (2)].token)); @@ -2602,7 +2608,7 @@ yyreduce: case 80: /* Line 1787 of yacc.c */ -#line 564 "src/glsl/glcpp/glcpp-parse.y" +#line 570 "src/glsl/glcpp/glcpp-parse.y" { (yyval.token) = _token_create_str (parser, IDENTIFIER, (yyvsp[(1) - (1)].str)); (yyval.token)->location = yylloc; @@ -2611,7 +2617,7 @@ yyreduce: case 81: /* Line 1787 of yacc.c */ -#line 568 "src/glsl/glcpp/glcpp-parse.y" +#line 574 "src/glsl/glcpp/glcpp-parse.y" { (yyval.token) = _token_create_str (parser, INTEGER_STRING, (yyvsp[(1) - (1)].str)); (yyval.token)->location = yylloc; @@ -2620,7 +2626,7 @@ yyreduce: case 82: /* Line 1787 of yacc.c */ -#line 572 "src/glsl/glcpp/glcpp-parse.y" +#line 578 "src/glsl/glcpp/glcpp-parse.y" { (yyval.token) = _token_create_ival (parser, (yyvsp[(1) - (1)].ival), (yyvsp[(1) - (1)].ival)); (yyval.token)->location = yylloc; @@ -2629,7 +2635,7 @@ yyreduce: case 83: /* Line 1787 of yacc.c */ -#line 576 "src/glsl/glcpp/glcpp-parse.y" +#line 582 "src/glsl/glcpp/glcpp-parse.y" { (yyval.token) = _token_create_str (parser, OTHER, (yyvsp[(1) - (1)].str)); (yyval.token)->location = yylloc; @@ -2638,7 +2644,7 @@ yyreduce: case 84: /* Line 1787 of yacc.c */ -#line 580 "src/glsl/glcpp/glcpp-parse.y" +#line 586 "src/glsl/glcpp/glcpp-parse.y" { (yyval.token) = _token_create_ival (parser, SPACE, SPACE); (yyval.token)->location = yylloc; @@ -2647,193 +2653,193 @@ yyreduce: case 85: /* Line 1787 of yacc.c */ -#line 587 "src/glsl/glcpp/glcpp-parse.y" +#line 593 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = '['; } break; case 86: /* Line 1787 of yacc.c */ -#line 588 "src/glsl/glcpp/glcpp-parse.y" +#line 594 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = ']'; } break; case 87: /* Line 1787 of yacc.c */ -#line 589 "src/glsl/glcpp/glcpp-parse.y" +#line 595 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = '('; } break; case 88: /* Line 1787 of yacc.c */ -#line 590 "src/glsl/glcpp/glcpp-parse.y" +#line 596 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = ')'; } break; case 89: /* Line 1787 of yacc.c */ -#line 591 "src/glsl/glcpp/glcpp-parse.y" +#line 597 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = '{'; } break; case 90: /* Line 1787 of yacc.c */ -#line 592 "src/glsl/glcpp/glcpp-parse.y" +#line 598 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = '}'; } break; case 91: /* Line 1787 of yacc.c */ -#line 593 "src/glsl/glcpp/glcpp-parse.y" +#line 599 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = '.'; } break; case 92: /* Line 1787 of yacc.c */ -#line 594 "src/glsl/glcpp/glcpp-parse.y" +#line 600 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = '&'; } break; case 93: /* Line 1787 of yacc.c */ -#line 595 "src/glsl/glcpp/glcpp-parse.y" +#line 601 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = '*'; } break; case 94: /* Line 1787 of yacc.c */ -#line 596 "src/glsl/glcpp/glcpp-parse.y" +#line 602 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = '+'; } break; case 95: /* Line 1787 of yacc.c */ -#line 597 "src/glsl/glcpp/glcpp-parse.y" +#line 603 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = '-'; } break; case 96: /* Line 1787 of yacc.c */ -#line 598 "src/glsl/glcpp/glcpp-parse.y" +#line 604 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = '~'; } break; case 97: /* Line 1787 of yacc.c */ -#line 599 "src/glsl/glcpp/glcpp-parse.y" +#line 605 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = '!'; } break; case 98: /* Line 1787 of yacc.c */ -#line 600 "src/glsl/glcpp/glcpp-parse.y" +#line 606 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = '/'; } break; case 99: /* Line 1787 of yacc.c */ -#line 601 "src/glsl/glcpp/glcpp-parse.y" +#line 607 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = '%'; } break; case 100: /* Line 1787 of yacc.c */ -#line 602 "src/glsl/glcpp/glcpp-parse.y" +#line 608 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = LEFT_SHIFT; } break; case 101: /* Line 1787 of yacc.c */ -#line 603 "src/glsl/glcpp/glcpp-parse.y" +#line 609 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = RIGHT_SHIFT; } break; case 102: /* Line 1787 of yacc.c */ -#line 604 "src/glsl/glcpp/glcpp-parse.y" +#line 610 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = '<'; } break; case 103: /* Line 1787 of yacc.c */ -#line 605 "src/glsl/glcpp/glcpp-parse.y" +#line 611 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = '>'; } break; case 104: /* Line 1787 of yacc.c */ -#line 606 "src/glsl/glcpp/glcpp-parse.y" +#line 612 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = LESS_OR_EQUAL; } break; case 105: /* Line 1787 of yacc.c */ -#line 607 "src/glsl/glcpp/glcpp-parse.y" +#line 613 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = GREATER_OR_EQUAL; } break; case 106: /* Line 1787 of yacc.c */ -#line 608 "src/glsl/glcpp/glcpp-parse.y" +#line 614 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = EQUAL; } break; case 107: /* Line 1787 of yacc.c */ -#line 609 "src/glsl/glcpp/glcpp-parse.y" +#line 615 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = NOT_EQUAL; } break; case 108: /* Line 1787 of yacc.c */ -#line 610 "src/glsl/glcpp/glcpp-parse.y" +#line 616 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = '^'; } break; case 109: /* Line 1787 of yacc.c */ -#line 611 "src/glsl/glcpp/glcpp-parse.y" +#line 617 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = '|'; } break; case 110: /* Line 1787 of yacc.c */ -#line 612 "src/glsl/glcpp/glcpp-parse.y" +#line 618 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = AND; } break; case 111: /* Line 1787 of yacc.c */ -#line 613 "src/glsl/glcpp/glcpp-parse.y" +#line 619 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = OR; } break; case 112: /* Line 1787 of yacc.c */ -#line 614 "src/glsl/glcpp/glcpp-parse.y" +#line 620 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = ';'; } break; case 113: /* Line 1787 of yacc.c */ -#line 615 "src/glsl/glcpp/glcpp-parse.y" +#line 621 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = ','; } break; case 114: /* Line 1787 of yacc.c */ -#line 616 "src/glsl/glcpp/glcpp-parse.y" +#line 622 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = '='; } break; case 115: /* Line 1787 of yacc.c */ -#line 617 "src/glsl/glcpp/glcpp-parse.y" +#line 623 "src/glsl/glcpp/glcpp-parse.y" { (yyval.ival) = PASTE; } break; /* Line 1787 of yacc.c */ -#line 2837 "src/glsl/glcpp/glcpp-parse.c" +#line 2843 "src/glsl/glcpp/glcpp-parse.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3072,7 +3078,7 @@ yyreturn: /* Line 2050 of yacc.c */ -#line 620 "src/glsl/glcpp/glcpp-parse.y" +#line 626 "src/glsl/glcpp/glcpp-parse.y" string_list_t * @@ -4573,6 +4579,12 @@ _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser, intmax_t versio if (extensions->ARB_viewport_array) add_builtin_define(parser, "GL_ARB_viewport_array", 1); + + if (extensions->ARB_compute_shader) + add_builtin_define(parser, "GL_ARB_compute_shader", 1); + + if (extensions->ARB_shader_image_load_store) + add_builtin_define(parser, "GL_ARB_shader_image_load_store", 1); } } diff --git a/3rdparty/glsl-optimizer/src/glsl/glcpp/glcpp-parse.y b/3rdparty/glsl-optimizer/src/glsl/glcpp/glcpp-parse.y index d931e5f0c..d93a7e2f2 100644 --- a/3rdparty/glsl-optimizer/src/glsl/glcpp/glcpp-parse.y +++ b/3rdparty/glsl-optimizer/src/glsl/glcpp/glcpp-parse.y @@ -375,9 +375,15 @@ control_line: _glcpp_parser_skip_stack_pop (parser, & @1); } NEWLINE | HASH_VERSION integer_constant NEWLINE { + if (parser->version_resolved) { + glcpp_error(& @1, parser, "#version must appear on the first line"); + } _glcpp_parser_handle_version_declaration(parser, $2, NULL, true); } | HASH_VERSION integer_constant IDENTIFIER NEWLINE { + if (parser->version_resolved) { + glcpp_error(& @1, parser, "#version must appear on the first line"); + } _glcpp_parser_handle_version_declaration(parser, $2, $3, true); } | HASH NEWLINE { @@ -2117,6 +2123,12 @@ _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser, intmax_t versio if (extensions->ARB_viewport_array) add_builtin_define(parser, "GL_ARB_viewport_array", 1); + + if (extensions->ARB_compute_shader) + add_builtin_define(parser, "GL_ARB_compute_shader", 1); + + if (extensions->ARB_shader_image_load_store) + add_builtin_define(parser, "GL_ARB_shader_image_load_store", 1); } } diff --git a/3rdparty/glsl-optimizer/src/glsl/glsl_lexer.cpp b/3rdparty/glsl-optimizer/src/glsl/glsl_lexer.cpp index 8e35d558b..0c363f65f 100644 --- a/3rdparty/glsl-optimizer/src/glsl/glsl_lexer.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/glsl_lexer.cpp @@ -358,8 +358,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 234 -#define YY_END_OF_BUFFER 235 +#define YY_NUM_RULES 246 +#define YY_END_OF_BUFFER 247 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -367,113 +367,119 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[960] = +static yyconst flex_int16_t yy_accept[1008] = { 0, - 0, 0, 16, 16, 0, 0, 235, 233, 1, 21, - 233, 233, 233, 233, 233, 233, 233, 233, 132, 130, - 233, 233, 233, 232, 233, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 233, 1, 233, 234, 16, - 20, 234, 19, 17, 18, 14, 13, 1, 114, 123, - 115, 126, 120, 109, 122, 110, 129, 134, 121, 135, - 132, 0, 0, 137, 132, 0, 130, 130, 118, 111, - 113, 112, 119, 232, 127, 117, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 30, 232, + 0, 0, 16, 16, 0, 0, 247, 245, 1, 21, + 245, 245, 245, 245, 245, 245, 245, 245, 174, 172, + 245, 245, 245, 244, 245, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 245, 1, 245, 246, 16, + 20, 246, 19, 17, 18, 14, 13, 1, 156, 165, + 157, 168, 162, 151, 164, 152, 171, 176, 163, 177, + 174, 0, 0, 179, 174, 0, 172, 172, 160, 153, + 155, 154, 161, 244, 169, 159, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 30, 244, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 34, 232, 232, 61, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 128, 116, 1, 0, 0, 2, 0, 0, 0, 0, - 16, 15, 19, 18, 0, 134, 133, 0, 135, 0, - 136, 131, 124, 125, 232, 140, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 33, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 34, 244, 244, 61, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 170, 158, 1, 0, 0, 2, 0, 0, 0, 0, + 16, 15, 19, 18, 0, 176, 175, 0, 177, 0, + 178, 173, 166, 167, 244, 182, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 33, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 26, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 62, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 0, 0, - 0, 0, 15, 0, 134, 0, 133, 0, 135, 136, - 131, 232, 232, 232, 24, 232, 232, 187, 180, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 32, - 143, 232, 232, 232, 232, 68, 232, 232, 148, 162, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 26, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 62, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 0, 0, + 0, 0, 15, 0, 176, 0, 175, 0, 177, 178, + 173, 244, 244, 244, 24, 244, 244, 228, 221, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 32, + 185, 244, 244, 244, 244, 68, 244, 244, 190, 203, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 159, 183, 49, 50, 51, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 146, 138, 232, 232, 27, 232, 232, 232, - 232, 232, 232, 232, 46, 47, 48, 107, 232, 232, - 232, 0, 0, 0, 0, 0, 133, 232, 232, 232, - 28, 37, 38, 39, 232, 141, 232, 232, 23, 232, - 232, 232, 232, 170, 171, 172, 232, 139, 232, 163, - 25, 173, 174, 175, 185, 167, 168, 169, 232, 232, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 200, 224, 49, 50, 51, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 188, 180, 244, 244, 27, 244, 244, 244, + 244, 244, 244, 244, 46, 47, 48, 149, 244, 244, + 244, 0, 0, 0, 0, 0, 175, 244, 244, 244, + 28, 37, 38, 39, 244, 183, 244, 244, 23, 244, + 244, 244, 244, 211, 212, 213, 244, 181, 244, 204, + 25, 214, 215, 216, 226, 208, 209, 210, 244, 244, - 232, 63, 165, 232, 232, 232, 40, 41, 42, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 229, 232, 232, 232, 232, 232, 232, 232, 232, 160, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 142, 232, 232, 182, 43, 44, 45, 232, 232, - 31, 232, 0, 0, 0, 0, 190, 232, 232, 232, - 232, 188, 232, 232, 232, 161, 156, 193, 232, 232, - 232, 232, 232, 232, 151, 232, 232, 232, 108, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 232, 232, - 232, 232, 166, 147, 232, 232, 154, 232, 232, 232, + 244, 63, 206, 244, 244, 244, 40, 41, 42, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 241, 244, 244, 244, 244, 244, 244, 244, 244, 201, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 184, 244, 244, 223, 43, 44, 45, 244, 244, + 31, 244, 0, 0, 0, 0, 231, 244, 244, 244, + 244, 229, 244, 244, 244, 202, 197, 234, 244, 244, + 244, 244, 244, 244, 193, 244, 244, 244, 150, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 244, 244, + 244, 244, 207, 189, 244, 244, 195, 244, 244, 244, - 36, 232, 230, 179, 69, 155, 106, 232, 191, 149, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 0, - 0, 0, 0, 232, 232, 232, 232, 232, 150, 35, - 232, 232, 232, 232, 232, 232, 194, 195, 196, 232, - 232, 232, 232, 232, 184, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 144, 232, 232, - 232, 232, 232, 64, 232, 232, 65, 232, 232, 0, - 0, 0, 0, 0, 232, 232, 66, 224, 29, 157, - 198, 199, 200, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 152, 232, 232, 232, 226, + 36, 244, 242, 220, 69, 196, 148, 244, 232, 191, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 0, + 0, 0, 0, 244, 244, 244, 244, 244, 192, 35, + 244, 244, 244, 244, 244, 244, 105, 106, 107, 244, + 244, 244, 244, 244, 225, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 186, 244, 244, + 244, 244, 244, 64, 244, 244, 65, 244, 244, 0, + 0, 0, 0, 0, 244, 244, 66, 142, 29, 198, + 116, 117, 118, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 194, 244, 244, - 228, 225, 232, 232, 232, 232, 232, 232, 232, 232, - 145, 202, 203, 204, 232, 232, 164, 232, 153, 232, - 0, 0, 6, 0, 0, 0, 12, 3, 232, 22, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 197, - 158, 67, 232, 232, 232, 232, 232, 181, 232, 189, - 186, 219, 71, 72, 73, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 227, 0, - 0, 0, 0, 0, 0, 0, 232, 232, 232, 232, - 201, 232, 232, 232, 232, 232, 82, 83, 84, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 244, 145, 240, 144, 244, 244, 244, 244, 244, 244, + 244, 244, 187, 127, 128, 129, 244, 244, 205, 244, + 143, 244, 0, 0, 6, 0, 0, 0, 12, 3, + 244, 22, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 114, 244, 244, 244, 109, 199, 67, 244, 244, + 244, 244, 244, 222, 244, 230, 227, 235, 71, 72, + 73, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 146, 0, 0, 0, + 0, 0, 0, 0, 244, 244, 244, 125, 244, 244, + 120, 244, 244, 244, 244, 244, 244, 244, 244, 82, - 232, 232, 231, 232, 232, 232, 205, 88, 89, 90, - 232, 232, 4, 0, 5, 0, 0, 0, 0, 0, - 0, 105, 232, 232, 232, 232, 232, 232, 232, 216, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 94, 232, 232, 232, 232, 74, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 0, 0, 0, 0, - 232, 232, 217, 206, 232, 207, 232, 232, 232, 95, - 232, 232, 85, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 218, 232, 232, - 96, 232, 232, 91, 0, 0, 0, 208, 209, 232, + 83, 84, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 243, 244, 244, 136, 244, + 244, 131, 88, 89, 90, 244, 244, 4, 0, 5, + 0, 0, 0, 0, 0, 0, 147, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 108, 244, 110, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 94, 244, 244, 244, 244, 74, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 0, 0, 0, 0, 244, 244, 244, 119, 121, 244, + 111, 244, 112, 244, 244, 244, 244, 244, 95, 244, - 212, 232, 213, 232, 232, 232, 232, 232, 232, 70, - 232, 232, 232, 232, 176, 232, 177, 192, 232, 232, - 232, 210, 211, 232, 232, 232, 232, 232, 232, 0, - 0, 0, 232, 232, 232, 232, 232, 220, 222, 232, - 75, 232, 76, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 221, 223, 232, 0, 0, 0, 0, 232, - 232, 86, 87, 232, 232, 232, 77, 232, 232, 232, - 78, 232, 232, 232, 92, 93, 232, 232, 0, 0, - 0, 0, 232, 232, 232, 232, 232, 232, 97, 232, - 100, 232, 232, 232, 232, 0, 0, 0, 0, 232, + 244, 85, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 130, 132, 244, + 244, 244, 96, 244, 244, 91, 0, 0, 0, 122, + 123, 244, 244, 244, 138, 244, 244, 139, 244, 244, + 244, 244, 244, 244, 244, 70, 244, 244, 244, 244, + 217, 244, 218, 233, 244, 244, 244, 133, 134, 244, + 244, 244, 244, 244, 244, 244, 244, 0, 0, 0, + 244, 244, 244, 244, 115, 113, 244, 244, 244, 236, + 238, 244, 75, 244, 76, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 237, 239, 244, 0, - 232, 98, 101, 232, 232, 232, 232, 79, 232, 99, - 102, 0, 0, 0, 7, 0, 0, 214, 215, 232, - 232, 232, 232, 104, 0, 0, 8, 0, 0, 232, - 232, 178, 232, 0, 0, 0, 80, 81, 232, 0, - 0, 0, 9, 232, 0, 0, 10, 103, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 11, 0 + 0, 0, 0, 126, 124, 244, 244, 86, 87, 244, + 244, 244, 77, 244, 244, 244, 78, 244, 244, 244, + 137, 135, 92, 93, 244, 244, 0, 0, 0, 0, + 244, 244, 244, 244, 244, 244, 97, 244, 100, 244, + 244, 244, 244, 0, 0, 0, 0, 244, 244, 98, + 101, 244, 244, 244, 244, 79, 244, 99, 102, 0, + 0, 0, 7, 0, 0, 140, 141, 244, 244, 244, + 244, 104, 0, 0, 8, 0, 0, 244, 244, 219, + 244, 0, 0, 0, 80, 81, 244, 0, 0, 0, + 9, 244, 0, 0, 10, 103, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 11, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -519,227 +525,239 @@ static yyconst flex_int32_t yy_meta[71] = 5, 5, 5, 5, 5, 5, 5, 5, 5, 1 } ; -static yyconst flex_int16_t yy_base[970] = +static yyconst flex_int16_t yy_base[1018] = { 0, - 0, 69, 75, 145, 1329, 1328, 1330, 1333, 70, 1333, - 1304, 1303, 94, 1302, 91, 92, 90, 1301, 202, 256, - 89, 1300, 95, 0, 79, 68, 64, 79, 124, 76, - 131, 1265, 127, 141, 81, 88, 82, 1259, 136, 126, - 183, 177, 149, 168, 134, 180, 206, 251, 1333, 140, - 1333, 1307, 239, 1333, 0, 1333, 1333, 228, 1333, 1333, - 1333, 1333, 1333, 1333, 1333, 1333, 1333, 231, 1333, 233, - 137, 307, 273, 1333, 1333, 0, 0, 1333, 1296, 1333, - 1333, 1333, 1295, 0, 1333, 1333, 1256, 1261, 115, 1258, - 1267, 1266, 1252, 1255, 1267, 244, 1261, 1248, 1245, 1259, + 0, 69, 75, 145, 1377, 1376, 1378, 1381, 70, 1381, + 1352, 1351, 94, 1350, 91, 92, 90, 1349, 202, 256, + 89, 1348, 95, 0, 79, 68, 64, 79, 124, 76, + 131, 1313, 127, 141, 81, 88, 82, 1307, 136, 126, + 183, 177, 149, 168, 134, 180, 206, 251, 1381, 140, + 1381, 1355, 239, 1381, 0, 1381, 1381, 228, 1381, 1381, + 1381, 1381, 1381, 1381, 1381, 1381, 1381, 231, 1381, 233, + 137, 307, 273, 1381, 1381, 0, 0, 1381, 1344, 1381, + 1381, 1381, 1343, 0, 1381, 1381, 1304, 1309, 115, 1306, + 1315, 1314, 1300, 1303, 1315, 244, 1309, 1296, 1293, 1307, - 1245, 1242, 1242, 1248, 126, 180, 1242, 1253, 1238, 1244, - 1248, 1249, 0, 1240, 1251, 254, 1250, 1245, 1225, 143, - 1229, 1243, 1233, 188, 1226, 271, 1239, 1241, 285, 1220, - 1228, 1225, 1214, 1223, 223, 252, 1228, 1223, 1226, 1214, - 1217, 246, 246, 226, 1227, 1214, 1227, 83, 1220, 1219, - 1333, 1333, 329, 334, 340, 1333, 1204, 1217, 1208, 1219, - 342, 0, 333, 0, 346, 1333, 329, 390, 1333, 353, - 397, 281, 1333, 1333, 1214, 0, 1209, 1204, 1208, 1218, - 1215, 328, 1198, 1198, 1210, 1201, 278, 1212, 1209, 1209, - 1207, 1204, 1195, 1202, 1188, 1186, 1199, 1184, 1201, 0, + 1293, 1290, 1290, 1296, 126, 180, 1290, 1301, 1286, 1292, + 1296, 1297, 0, 1288, 1299, 254, 1298, 1293, 1273, 143, + 1277, 1291, 1281, 188, 1274, 271, 1287, 1289, 285, 1268, + 1276, 1273, 1262, 1271, 223, 252, 1276, 1271, 1274, 1262, + 1265, 246, 246, 226, 1275, 1262, 1275, 83, 1268, 1267, + 1381, 1381, 329, 334, 340, 1381, 1252, 1265, 1256, 1267, + 342, 0, 333, 0, 346, 1381, 329, 390, 1381, 353, + 397, 281, 1381, 1381, 1262, 0, 1257, 1252, 1256, 1266, + 1263, 328, 1246, 1246, 1258, 1249, 278, 1260, 1257, 1257, + 1255, 1252, 1243, 1250, 1236, 1234, 1247, 1232, 1249, 0, - 1198, 1185, 1193, 1190, 1194, 1195, 1188, 1185, 1173, 1172, - 1186, 1189, 1176, 1185, 1172, 1179, 1169, 362, 1175, 1178, - 1168, 1176, 1164, 1168, 1159, 1174, 1173, 1163, 1170, 325, - 1153, 1172, 1155, 1153, 1164, 1153, 1148, 1146, 1148, 1159, - 1144, 1146, 1143, 1155, 1154, 1157, 1138, 326, 1147, 1142, - 1140, 1150, 1128, 402, 1147, 1149, 1137, 1129, 1128, 1132, - 1144, 1127, 0, 414, 421, 438, 1333, 445, 456, 1333, - 1333, 1122, 1133, 1132, 0, 1129, 405, 0, 0, 1122, - 1120, 1120, 1121, 1116, 1125, 1113, 1131, 1119, 408, 0, - 0, 1113, 1124, 1123, 1123, 0, 1107, 426, 0, 0, + 1246, 1233, 1241, 1238, 1242, 1243, 1236, 1233, 1221, 1220, + 1234, 1237, 1224, 1233, 1220, 1227, 1217, 362, 1223, 1226, + 1216, 1224, 1212, 1216, 1207, 1222, 1221, 1211, 1218, 325, + 1201, 1220, 1203, 1201, 1212, 1201, 1196, 1194, 1196, 1207, + 1192, 1194, 1191, 1203, 1202, 1205, 1186, 326, 1195, 1190, + 1188, 1198, 1176, 402, 1195, 1197, 1185, 1177, 1176, 1180, + 1192, 1175, 0, 414, 421, 438, 1381, 445, 456, 1381, + 1381, 1170, 1181, 1180, 0, 1177, 405, 0, 0, 1170, + 1168, 1168, 1169, 1164, 1173, 1161, 1179, 1167, 408, 0, + 0, 1161, 1172, 1171, 1171, 0, 1155, 426, 0, 0, - 1109, 450, 1117, 1118, 1108, 1102, 1101, 1102, 1101, 1101, - 461, 1096, 0, 0, 1092, 1091, 1090, 1092, 1093, 1098, - 1092, 1088, 1102, 1097, 1097, 1095, 1094, 1087, 1081, 1083, - 1082, 1085, 1085, 1077, 1080, 1075, 1084, 1089, 1076, 1073, - 1086, 1076, 0, 0, 1083, 1079, 0, 1070, 1070, 1076, - 1066, 1074, 464, 1071, 0, 0, 0, 0, 1060, 1073, - 1072, 1071, 1070, 1067, 1055, 473, 480, 1067, 1068, 1068, - 0, 0, 0, 0, 1054, 0, 1063, 1053, 0, 1052, - 1053, 1047, 1058, 0, 0, 0, 1048, 0, 1044, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1055, 486, + 1157, 450, 1165, 1166, 1156, 1150, 1149, 1150, 1149, 1149, + 461, 1144, 0, 0, 1140, 1139, 1138, 1140, 1141, 1146, + 1140, 1136, 1150, 1145, 1145, 1143, 1142, 1135, 1129, 1131, + 1130, 1133, 1133, 1125, 1128, 1123, 1132, 1137, 1124, 1121, + 1134, 1124, 0, 0, 1131, 1127, 0, 1118, 1118, 1124, + 1114, 1122, 464, 1119, 0, 0, 0, 0, 1108, 1121, + 1120, 1119, 1118, 1115, 1103, 473, 480, 1115, 1116, 1116, + 0, 0, 0, 0, 1102, 0, 1111, 1101, 0, 1100, + 1101, 1095, 1106, 0, 0, 0, 1096, 0, 1092, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1103, 486, - 1054, 0, 0, 1052, 1048, 1044, 0, 0, 0, 1036, - 467, 489, 498, 1041, 1037, 1043, 1033, 1031, 1045, 1029, - 0, 1029, 1043, 1031, 1027, 1034, 1028, 1040, 1035, 0, - 1033, 1030, 1034, 1017, 1015, 1018, 1025, 1031, 1026, 1025, - 1012, 0, 1014, 1015, 0, 0, 0, 0, 1012, 1016, - 0, 1009, 1009, 1064, 1008, 1011, 0, 1019, 998, 1008, - 1002, 0, 995, 995, 1009, 0, 1011, 0, 503, 1025, - 1024, 1023, 988, 987, 0, 1005, 1004, 999, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 987, 1001, - 987, 984, 0, 0, 990, 989, 0, 985, 993, 992, + 1102, 0, 0, 1100, 1096, 1092, 0, 0, 0, 1084, + 467, 489, 498, 1089, 1085, 1091, 1081, 1079, 1093, 1077, + 0, 1077, 1091, 1079, 1075, 1082, 1076, 1088, 1083, 0, + 1081, 1078, 1082, 1065, 1063, 1066, 1073, 1079, 1074, 1073, + 1060, 0, 1062, 1063, 0, 0, 0, 0, 1060, 1064, + 0, 1057, 1057, 1112, 1056, 1059, 0, 1067, 1046, 1056, + 1050, 0, 1043, 1043, 1057, 0, 1059, 0, 503, 1073, + 1072, 1071, 1036, 1035, 0, 1053, 1052, 1047, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1035, 1049, + 1035, 1032, 0, 0, 1038, 1037, 0, 1033, 1041, 1040, - 0, 984, 976, 0, 0, 0, 0, 973, 0, 0, - 972, 984, 506, 976, 983, 982, 979, 973, 970, 965, - 524, 981, 966, 960, 960, 974, 958, 971, 0, 0, - 963, 988, 987, 986, 951, 950, 359, 365, 0, 963, - 966, 964, 952, 948, 0, 961, 958, 957, 946, 945, - 935, 953, 938, 941, 519, 946, 949, 0, 967, 966, - 965, 930, 929, 0, 944, 930, 0, 941, 933, 935, - 549, 555, 985, 928, 932, 935, 0, 0, 0, 0, - 956, 955, 0, 931, 934, 918, 926, 916, 924, 925, - 925, 924, 909, 561, 922, 0, 923, 911, 910, 0, + 0, 1032, 1024, 0, 0, 0, 0, 1021, 0, 0, + 1020, 1032, 506, 1024, 1031, 1030, 1027, 1021, 1018, 1013, + 524, 1029, 1014, 1008, 1008, 1022, 1006, 1019, 0, 0, + 1011, 1036, 1035, 1034, 999, 998, 359, 500, 0, 1011, + 1014, 1012, 1000, 996, 0, 1009, 1006, 1005, 994, 993, + 983, 1001, 986, 989, 530, 994, 997, 0, 1015, 1014, + 1013, 978, 977, 0, 992, 978, 0, 989, 981, 983, + 548, 554, 1033, 976, 980, 983, 0, 0, 0, 0, + 1004, 550, 0, 980, 983, 967, 975, 965, 986, 975, + 971, 972, 972, 971, 956, 563, 969, 0, 970, 958, - 0, 0, 906, 936, 935, 934, 899, 898, 894, 902, - 0, 932, 931, 0, 907, 910, 0, 564, 0, 887, - 895, 582, 1333, 592, 0, 603, 594, 1333, 895, 0, - 891, 890, 900, 900, 887, 902, 885, 900, 895, 0, - 0, 0, 913, 912, 911, 876, 875, 0, 875, 0, - 0, 0, 500, 590, 899, 886, 889, 871, 884, 871, - 870, 880, 880, 898, 897, 896, 861, 860, 0, 865, - 628, 638, 446, 882, 872, 860, 856, 857, 856, 867, - 0, 870, 866, 868, 864, 850, 883, 526, 0, 859, - 862, 854, 845, 853, 843, 864, 853, 849, 851, 849, + 957, 0, 0, 0, 953, 983, 982, 981, 946, 945, + 941, 949, 0, 979, 551, 0, 955, 958, 0, 566, + 0, 935, 943, 600, 1381, 607, 0, 627, 594, 1381, + 943, 0, 939, 938, 959, 948, 946, 946, 933, 948, + 931, 964, 943, 944, 939, 960, 0, 0, 956, 955, + 954, 919, 918, 0, 918, 0, 0, 0, 365, 623, + 942, 929, 932, 914, 927, 914, 913, 934, 923, 921, + 921, 939, 938, 937, 902, 901, 0, 906, 649, 655, + 446, 923, 913, 901, 897, 898, 897, 930, 909, 906, + 927, 908, 904, 906, 889, 886, 900, 886, 885, 918, - 849, 848, 0, 835, 834, 845, 0, 866, 600, 0, - 842, 845, 1333, 508, 1333, 648, 0, 659, 860, 843, - 825, 0, 842, 841, 824, 816, 824, 814, 822, 0, - 819, 818, 839, 828, 826, 826, 809, 812, 827, 810, - 843, 822, 823, 820, 817, 522, 804, 819, 818, 794, - 772, 771, 792, 781, 779, 779, 526, 794, 762, 772, - 755, 754, 0, 782, 754, 780, 752, 756, 755, 788, - 767, 764, 784, 761, 764, 760, 760, 743, 740, 754, - 10, 170, 176, 190, 209, 241, 247, 0, 326, 332, - 368, 350, 352, 425, 478, 468, 476, 0, 0, 502, + 570, 0, 894, 897, 889, 880, 888, 878, 899, 888, + 884, 886, 884, 884, 883, 0, 870, 869, 902, 881, + 878, 899, 898, 651, 0, 874, 877, 1381, 508, 1381, + 677, 0, 683, 892, 875, 857, 0, 874, 873, 856, + 853, 854, 853, 845, 853, 843, 842, 0, 822, 0, + 819, 818, 817, 838, 827, 825, 825, 808, 810, 825, + 808, 841, 820, 821, 818, 815, 566, 802, 817, 816, + 798, 795, 796, 795, 792, 791, 812, 801, 23, 182, + 526, 204, 178, 214, 241, 247, 326, 0, 0, 332, + 356, 331, 362, 407, 447, 474, 472, 476, 525, 506, - 0, 503, 0, 511, 514, 499, 500, 525, 526, 0, - 520, 538, 539, 553, 576, 559, 0, 0, 571, 589, - 590, 0, 0, 592, 594, 582, 589, 602, 610, 670, - 680, 620, 629, 638, 616, 617, 625, 0, 0, 626, - 649, 624, 652, 647, 641, 628, 651, 649, 642, 631, - 632, 640, 0, 0, 641, 701, 702, 703, 637, 659, - 660, 0, 0, 664, 665, 660, 0, 661, 646, 670, - 0, 648, 658, 681, 0, 0, 674, 675, 663, 720, - 673, 675, 666, 667, 659, 660, 684, 685, 0, 684, - 694, 668, 704, 668, 669, 673, 689, 738, 740, 675, + 505, 528, 511, 517, 515, 534, 537, 536, 552, 538, + 543, 546, 559, 554, 545, 546, 570, 0, 0, 571, + 573, 574, 609, 590, 589, 612, 605, 590, 597, 0, + 0, 610, 611, 608, 0, 611, 596, 0, 613, 637, + 638, 623, 625, 629, 631, 0, 638, 648, 640, 648, + 671, 652, 0, 0, 651, 668, 669, 0, 0, 670, + 672, 673, 674, 659, 658, 661, 662, 722, 723, 673, + 659, 660, 684, 685, 0, 0, 663, 665, 673, 0, + 0, 674, 697, 671, 699, 694, 688, 675, 697, 695, + 688, 677, 678, 679, 680, 688, 0, 0, 689, 749, - 677, 0, 0, 696, 697, 687, 695, 0, 711, 0, - 0, 706, 750, 751, 1333, 754, 753, 0, 0, 698, - 699, 693, 719, 0, 704, 764, 1333, 765, 718, 703, - 704, 0, 723, 719, 723, 773, 0, 0, 718, 733, - 778, 779, 1333, 716, 726, 783, 1333, 0, 723, 785, - 788, 789, 790, 739, 740, 796, 797, 1333, 1333, 835, - 840, 843, 846, 797, 798, 849, 853, 856, 858 + 750, 751, 685, 0, 0, 707, 708, 0, 0, 712, + 713, 708, 0, 709, 694, 718, 0, 696, 706, 729, + 0, 0, 0, 0, 722, 723, 711, 768, 721, 723, + 714, 715, 707, 708, 732, 733, 0, 732, 742, 716, + 752, 716, 717, 721, 737, 786, 788, 723, 725, 0, + 0, 744, 745, 735, 743, 0, 759, 0, 0, 754, + 798, 799, 1381, 802, 801, 0, 0, 746, 747, 741, + 767, 0, 752, 812, 1381, 813, 766, 751, 752, 0, + 771, 767, 771, 821, 0, 0, 766, 781, 826, 827, + 1381, 764, 774, 831, 1381, 0, 771, 833, 836, 837, + + 838, 787, 788, 844, 845, 1381, 1381, 883, 888, 891, + 894, 845, 846, 897, 901, 904, 906 } ; -static yyconst flex_int16_t yy_def[970] = +static yyconst flex_int16_t yy_def[1018] = { 0, - 959, 1, 960, 960, 961, 961, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 962, 959, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 963, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 964, 959, 965, - 19, 959, 959, 959, 959, 966, 20, 959, 959, 959, - 959, 959, 959, 962, 959, 959, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, + 1007, 1, 1008, 1008, 1009, 1009, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1010, 1007, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1011, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1012, 1007, 1013, + 19, 1007, 1007, 1007, 1007, 1014, 20, 1007, 1007, 1007, + 1007, 1007, 1007, 1010, 1007, 1007, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 967, 959, 963, 959, 959, 965, 959, 959, 959, - 959, 966, 959, 959, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1015, 1007, 1011, 1007, 1007, 1013, 1007, 1007, 1007, + 1007, 1014, 1007, 1007, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 959, 959, - 959, 959, 967, 959, 959, 959, 959, 959, 959, 959, - 959, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1007, 1007, + 1007, 1007, 1015, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 959, 959, 959, 959, 959, 959, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1007, 1007, 1007, 1007, 1007, 1007, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 959, 959, 959, 959, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1007, 1007, 1007, 1007, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 959, - 959, 959, 959, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 959, - 959, 959, 959, 959, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1007, + 1007, 1007, 1007, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1007, + 1007, 1007, 1007, 1007, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 959, 959, 959, 959, 968, 959, 959, 959, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 959, - 959, 959, 968, 959, 959, 959, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1007, 1007, 1007, 1007, 1016, 1007, 1007, 1007, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1007, 1007, 1007, + 1016, 1007, 1007, 1007, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 959, 959, 959, 959, 969, 959, 959, 959, - 959, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 969, 959, 959, 959, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 959, 959, 959, 962, 962, 962, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1007, 1007, 1007, + 1007, 1017, 1007, 1007, 1007, 1007, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1017, 1007, 1007, 1007, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 959, - 959, 959, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 959, 959, 959, 959, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 959, 959, - 959, 959, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 959, 959, 959, 959, 962, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1007, 1007, 1007, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1007, 1007, 1007, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1007, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 959, 959, 959, 959, 959, 959, 962, 962, 962, - 962, 962, 962, 962, 959, 959, 959, 959, 959, 962, - 962, 962, 962, 959, 959, 959, 962, 962, 962, 959, - 959, 959, 959, 962, 959, 959, 959, 962, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 0, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959 + 1007, 1007, 1007, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1007, 1007, 1007, 1007, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1007, 1007, 1007, 1007, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1007, + 1007, 1007, 1007, 1007, 1007, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1007, 1007, 1007, 1007, 1007, 1010, 1010, 1010, + 1010, 1007, 1007, 1007, 1010, 1010, 1010, 1007, 1007, 1007, + 1007, 1010, 1007, 1007, 1007, 1010, 1007, 1007, 1007, 1007, + + 1007, 1007, 1007, 1007, 1007, 1007, 0, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007 } ; -static yyconst flex_int16_t yy_nxt[1404] = +static yyconst flex_int16_t yy_nxt[1452] = { 0, 8, 9, 10, 9, 11, 8, 12, 13, 8, 8, 14, 15, 16, 17, 18, 19, 20, 20, 20, 20, @@ -748,7 +766,7 @@ static yyconst flex_int16_t yy_nxt[1404] = 24, 24, 25, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 24, 24, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 24, 24, 24, 46, - 47, 58, 817, 58, 48, 49, 50, 51, 50, 49, + 47, 58, 825, 58, 48, 49, 50, 51, 50, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 49, 53, 53, 53, 53, 53, 53, 54, 49, 49, @@ -759,146 +777,151 @@ static yyconst flex_int16_t yy_nxt[1404] = 124, 161, 103, 161, 49, 49, 50, 51, 50, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52, 49, 53, 53, 53, 53, 53, 53, 54, 49, 49, - 49, 110, 97, 177, 129, 104, 98, 178, 959, 111, + 49, 110, 97, 177, 129, 104, 98, 178, 1007, 111, 126, 196, 99, 105, 130, 149, 106, 49, 100, 107, 113, 112, 197, 114, 150, 108, 127, 115, 116, 128, - 216, 142, 117, 959, 151, 118, 143, 153, 217, 58, + 216, 142, 117, 1007, 151, 118, 143, 153, 217, 58, 144, 154, 146, 145, 49, 70, 147, 71, 71, 71, 71, 71, 71, 72, 198, 138, 148, 131, 139, 58, - 818, 58, 73, 74, 132, 133, 819, 140, 199, 134, - 221, 820, 75, 76, 141, 135, 136, 222, 137, 152, + 826, 58, 73, 74, 132, 133, 827, 140, 199, 134, + 221, 828, 75, 76, 141, 135, 136, 222, 137, 152, 73, 74, 155, 156, 163, 163, 163, 163, 163, 163, - 163, 165, 166, 168, 169, 75, 821, 237, 76, 70, + 163, 165, 166, 168, 169, 75, 829, 237, 76, 70, 250, 77, 77, 77, 77, 77, 77, 77, 251, 165, 166, 168, 169, 238, 170, 170, 73, 74, 171, 171, 171, 171, 171, 171, 171, 185, 78, 239, 248, 157, - 186, 187, 246, 247, 73, 74, 158, 249, 822, 208, - 159, 240, 209, 210, 823, 160, 211, 224, 212, 78, + 186, 187, 246, 247, 73, 74, 158, 249, 830, 208, + 159, 240, 209, 210, 831, 160, 211, 224, 212, 78, 70, 271, 72, 72, 72, 72, 72, 72, 72, 229, 153, 225, 58, 226, 154, 155, 156, 73, 74, 284, 285, 155, 156, 161, 271, 161, 230, 231, 163, 163, 163, 163, 163, 163, 163, 73, 74, 264, 264, 266, 267, 265, 265, 265, 265, 265, 265, 265, 171, 171, 171, 171, 171, 171, 171, 348, 278, 266, 267, 315, - 316, 317, 157, 329, 349, 586, 824, 330, 157, 158, - 279, 588, 825, 159, 826, 158, 827, 587, 160, 159, + 316, 317, 157, 329, 349, 586, 832, 330, 157, 158, + 279, 706, 833, 159, 834, 158, 835, 587, 160, 159, - 828, 268, 268, 589, 160, 269, 269, 269, 269, 269, + 836, 268, 268, 707, 160, 269, 269, 269, 269, 269, 269, 269, 171, 171, 171, 171, 171, 171, 171, 355, 356, 357, 372, 373, 374, 384, 385, 386, 270, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, - 265, 265, 265, 392, 393, 394, 270, 622, 623, 366, - 366, 829, 166, 367, 367, 367, 367, 367, 367, 367, + 265, 265, 265, 392, 393, 394, 270, 624, 625, 366, + 366, 837, 166, 367, 367, 367, 367, 367, 367, 367, 269, 269, 269, 269, 269, 269, 269, 396, 397, 398, 166, 269, 269, 269, 269, 269, 269, 269, 407, 408, 409, 446, 447, 448, 480, 481, 482, 169, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 470, 471, 472, 169, 483, 484, 485, 714, - 715, 267, 830, 473, 474, 486, 487, 488, 831, 532, - 533, 534, 559, 560, 561, 521, 693, 714, 715, 267, - 535, 536, 832, 562, 563, 604, 605, 606, 694, 571, - 572, 572, 572, 572, 572, 572, 607, 608, 783, 609, - 622, 623, 732, 833, 834, 835, 622, 623, 836, 837, - 784, 733, 838, 734, 624, 624, 624, 624, 624, 624, - 626, 626, 626, 626, 626, 626, 626, 643, 644, 645, - 664, 665, 666, 622, 623, 839, 840, 841, 646, 647, - 625, 667, 668, 622, 623, 627, 842, 671, 672, 672, + 367, 367, 470, 471, 472, 169, 483, 484, 485, 729, + 730, 267, 838, 473, 474, 486, 487, 488, 839, 532, + 533, 534, 559, 560, 561, 521, 588, 729, 730, 267, + 535, 536, 840, 562, 563, 589, 841, 590, 591, 571, + 572, 572, 572, 572, 572, 572, 606, 607, 608, 624, + 625, 842, 843, 844, 845, 624, 625, 609, 610, 846, + 611, 847, 848, 626, 626, 626, 626, 626, 626, 628, + 628, 628, 628, 628, 628, 628, 634, 667, 849, 649, + 650, 651, 672, 673, 674, 635, 668, 636, 669, 627, + 652, 653, 812, 675, 676, 629, 753, 850, 851, 852, - 672, 672, 672, 672, 622, 623, 843, 624, 624, 624, - 624, 624, 624, 844, 845, 625, 695, 846, 626, 626, - 626, 626, 626, 626, 626, 696, 752, 697, 698, 714, - 715, 847, 674, 848, 849, 753, 850, 754, 851, 714, - 715, 675, 852, 716, 716, 716, 716, 716, 716, 714, - 715, 853, 676, 718, 718, 718, 718, 718, 718, 718, - 714, 715, 854, 716, 716, 716, 716, 716, 716, 717, - 855, 856, 859, 860, 718, 718, 718, 718, 718, 718, - 718, 857, 861, 862, 863, 864, 865, 866, 858, 867, - 868, 869, 870, 871, 717, 872, 873, 874, 875, 876, + 853, 624, 625, 854, 813, 754, 855, 755, 624, 625, + 856, 857, 858, 859, 627, 679, 680, 680, 680, 680, + 680, 680, 626, 626, 626, 626, 626, 626, 624, 625, + 860, 861, 682, 862, 863, 864, 865, 866, 867, 868, + 869, 683, 628, 628, 628, 628, 628, 628, 628, 708, + 729, 730, 684, 870, 871, 872, 729, 730, 709, 873, + 710, 711, 874, 875, 731, 731, 731, 731, 731, 731, + 733, 733, 733, 733, 733, 733, 733, 776, 729, 730, + 876, 877, 878, 879, 729, 730, 777, 880, 778, 881, + 732, 882, 731, 731, 731, 731, 731, 731, 733, 733, - 877, 878, 856, 857, 880, 882, 883, 884, 885, 886, - 858, 887, 888, 889, 890, 891, 892, 893, 894, 895, - 896, 880, 897, 899, 900, 901, 902, 903, 904, 905, - 898, 906, 907, 908, 909, 910, 911, 912, 913, 914, - 918, 916, 919, 920, 921, 922, 923, 915, 917, 924, - 925, 926, 914, 879, 928, 916, 930, 931, 932, 927, - 915, 881, 917, 933, 934, 926, 928, 935, 937, 938, - 939, 940, 941, 927, 942, 936, 944, 945, 881, 946, - 942, 948, 943, 949, 946, 950, 951, 947, 943, 951, - 953, 953, 947, 952, 955, 956, 952, 957, 957, 68, + 733, 733, 733, 733, 733, 883, 884, 885, 886, 887, + 888, 889, 890, 891, 892, 732, 893, 894, 895, 896, + 897, 898, 899, 900, 901, 903, 904, 905, 906, 907, + 908, 902, 909, 910, 911, 912, 913, 914, 915, 916, + 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, + 900, 901, 928, 930, 931, 932, 933, 934, 902, 935, + 936, 937, 938, 939, 940, 941, 942, 943, 944, 928, + 945, 947, 948, 949, 950, 951, 952, 953, 946, 954, + 955, 956, 957, 958, 959, 960, 961, 962, 966, 964, + 967, 968, 969, 970, 971, 963, 965, 972, 973, 974, - 167, 816, 815, 814, 813, 958, 958, 812, 811, 810, - 809, 929, 808, 807, 806, 805, 804, 803, 802, 801, - 800, 799, 798, 929, 797, 796, 795, 794, 793, 792, - 791, 790, 789, 954, 954, 55, 55, 55, 55, 55, - 56, 56, 56, 56, 56, 84, 84, 84, 164, 164, - 164, 172, 172, 263, 788, 263, 263, 263, 673, 673, - 757, 757, 787, 786, 785, 782, 781, 780, 779, 778, - 777, 776, 775, 774, 773, 772, 771, 770, 769, 768, - 767, 766, 765, 764, 763, 762, 761, 760, 759, 758, - 756, 755, 751, 750, 749, 748, 747, 746, 745, 744, + 962, 927, 976, 964, 978, 979, 980, 975, 963, 929, + 965, 981, 982, 974, 976, 983, 985, 986, 987, 988, + 989, 975, 990, 984, 992, 993, 929, 994, 990, 996, + 991, 997, 994, 998, 999, 995, 991, 999, 1001, 1001, + 995, 1000, 1003, 1004, 1000, 1005, 1005, 68, 167, 824, + 823, 822, 821, 1006, 1006, 820, 819, 818, 817, 977, + 816, 815, 814, 811, 810, 809, 808, 807, 806, 805, + 804, 977, 803, 802, 801, 800, 799, 798, 797, 796, + 795, 1002, 1002, 55, 55, 55, 55, 55, 56, 56, + 56, 56, 56, 84, 84, 84, 164, 164, 164, 172, - 743, 742, 741, 740, 739, 738, 737, 736, 735, 731, - 730, 729, 728, 727, 726, 725, 724, 723, 722, 721, - 720, 719, 713, 712, 711, 710, 709, 708, 707, 706, - 705, 704, 703, 702, 701, 700, 699, 692, 691, 690, - 689, 688, 687, 686, 685, 684, 683, 682, 681, 680, - 679, 678, 677, 670, 669, 663, 662, 661, 660, 659, - 658, 657, 656, 655, 654, 653, 652, 651, 650, 649, - 648, 642, 641, 640, 639, 638, 637, 636, 635, 634, - 633, 632, 631, 630, 629, 628, 627, 621, 620, 619, - 618, 617, 616, 615, 614, 613, 612, 611, 610, 603, + 172, 263, 794, 263, 263, 263, 681, 681, 781, 781, + 793, 792, 791, 790, 789, 788, 787, 786, 785, 784, + 783, 782, 780, 779, 775, 774, 773, 772, 771, 770, + 769, 768, 767, 766, 765, 764, 763, 762, 761, 760, + 759, 758, 757, 756, 752, 751, 750, 749, 748, 747, + 746, 745, 744, 743, 742, 741, 740, 739, 738, 737, + 736, 735, 734, 728, 727, 726, 725, 724, 723, 722, + 721, 720, 719, 718, 717, 716, 715, 714, 713, 712, + 705, 704, 703, 702, 701, 700, 699, 698, 697, 696, + 695, 694, 693, 692, 691, 690, 689, 688, 687, 686, + 685, 678, 677, 671, 670, 666, 665, 664, 663, 662, + 661, 660, 659, 658, 657, 656, 655, 654, 648, 647, + 646, 645, 644, 643, 642, 641, 640, 639, 638, 637, + 633, 632, 631, 630, 629, 623, 622, 621, 620, 619, + 618, 617, 616, 615, 614, 613, 612, 605, 604, 603, 602, 601, 600, 599, 598, 597, 596, 595, 594, 593, - 592, 591, 590, 585, 584, 583, 582, 581, 580, 579, - 578, 577, 576, 575, 574, 573, 570, 569, 568, 567, - 566, 565, 564, 558, 557, 556, 555, 554, 553, 552, - 551, 550, 549, 548, 547, 546, 545, 544, 543, 542, - 541, 540, 539, 538, 537, 531, 530, 529, 528, 527, - 526, 525, 524, 523, 522, 521, 520, 519, 518, 517, - 516, 515, 514, 513, 512, 511, 510, 509, 508, 507, - 506, 505, 504, 503, 502, 501, 500, 499, 498, 497, - 496, 495, 494, 493, 492, 491, 490, 489, 479, 478, + 592, 585, 584, 583, 582, 581, 580, 579, 578, 577, + 576, 575, 574, 573, 570, 569, 568, 567, 566, 565, + 564, 558, 557, 556, 555, 554, 553, 552, 551, 550, + 549, 548, 547, 546, 545, 544, 543, 542, 541, 540, - 477, 476, 475, 469, 468, 467, 466, 465, 464, 463, - 462, 461, 460, 459, 458, 457, 456, 455, 454, 453, - 452, 451, 450, 449, 445, 444, 443, 442, 441, 440, - 439, 438, 437, 436, 435, 434, 433, 432, 431, 430, - 429, 428, 427, 426, 425, 424, 423, 422, 421, 420, - 419, 418, 417, 416, 415, 414, 413, 412, 411, 410, - 406, 405, 404, 403, 402, 401, 400, 399, 395, 391, - 390, 389, 388, 387, 383, 382, 381, 380, 379, 378, - 377, 376, 375, 371, 370, 369, 368, 365, 364, 363, - 362, 361, 360, 359, 358, 354, 353, 352, 351, 350, + 539, 538, 537, 531, 530, 529, 528, 527, 526, 525, + 524, 523, 522, 521, 520, 519, 518, 517, 516, 515, + 514, 513, 512, 511, 510, 509, 508, 507, 506, 505, + 504, 503, 502, 501, 500, 499, 498, 497, 496, 495, + 494, 493, 492, 491, 490, 489, 479, 478, 477, 476, + 475, 469, 468, 467, 466, 465, 464, 463, 462, 461, + 460, 459, 458, 457, 456, 455, 454, 453, 452, 451, + 450, 449, 445, 444, 443, 442, 441, 440, 439, 438, + 437, 436, 435, 434, 433, 432, 431, 430, 429, 428, + 427, 426, 425, 424, 423, 422, 421, 420, 419, 418, - 347, 346, 345, 344, 343, 342, 341, 340, 339, 338, - 337, 336, 335, 334, 333, 332, 331, 328, 327, 326, - 325, 324, 323, 322, 321, 320, 319, 318, 314, 313, - 312, 311, 310, 309, 308, 307, 306, 305, 304, 303, - 302, 301, 300, 299, 298, 297, 296, 295, 294, 293, - 292, 291, 290, 289, 288, 287, 286, 283, 282, 281, - 280, 277, 276, 275, 274, 273, 272, 262, 261, 260, - 259, 258, 257, 254, 253, 252, 245, 244, 243, 242, - 241, 236, 235, 234, 233, 232, 228, 227, 223, 220, - 219, 218, 215, 214, 213, 207, 206, 205, 204, 203, + 417, 416, 415, 414, 413, 412, 411, 410, 406, 405, + 404, 403, 402, 401, 400, 399, 395, 391, 390, 389, + 388, 387, 383, 382, 381, 380, 379, 378, 377, 376, + 375, 371, 370, 369, 368, 365, 364, 363, 362, 361, + 360, 359, 358, 354, 353, 352, 351, 350, 347, 346, + 345, 344, 343, 342, 341, 340, 339, 338, 337, 336, + 335, 334, 333, 332, 331, 328, 327, 326, 325, 324, + 323, 322, 321, 320, 319, 318, 314, 313, 312, 311, + 310, 309, 308, 307, 306, 305, 304, 303, 302, 301, + 300, 299, 298, 297, 296, 295, 294, 293, 292, 291, - 202, 201, 200, 195, 194, 193, 192, 191, 190, 189, - 188, 184, 183, 182, 181, 180, 179, 176, 175, 174, - 173, 162, 125, 109, 81, 69, 63, 60, 59, 959, - 57, 57, 7, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, + 290, 289, 288, 287, 286, 283, 282, 281, 280, 277, + 276, 275, 274, 273, 272, 262, 261, 260, 259, 258, + 257, 254, 253, 252, 245, 244, 243, 242, 241, 236, + 235, 234, 233, 232, 228, 227, 223, 220, 219, 218, + 215, 214, 213, 207, 206, 205, 204, 203, 202, 201, + 200, 195, 194, 193, 192, 191, 190, 189, 188, 184, + 183, 182, 181, 180, 179, 176, 175, 174, 173, 162, + 125, 109, 81, 69, 63, 60, 59, 1007, 57, 57, + 7, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, - 959, 959, 959 + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007 } ; -static yyconst flex_int16_t yy_chk[1404] = +static yyconst flex_int16_t yy_chk[1452] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -907,7 +930,7 @@ static yyconst flex_int16_t yy_chk[1404] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 9, 781, 9, 2, 3, 3, 3, 3, 3, + 2, 9, 779, 9, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, @@ -925,136 +948,141 @@ static yyconst flex_int16_t yy_chk[1404] = 120, 43, 34, 71, 46, 34, 43, 47, 120, 47, 43, 47, 44, 43, 4, 19, 44, 19, 19, 19, 19, 19, 19, 19, 106, 42, 44, 41, 42, 58, - 782, 58, 19, 19, 41, 41, 783, 42, 106, 41, - 124, 784, 19, 19, 42, 41, 41, 124, 41, 46, + 780, 58, 19, 19, 41, 41, 782, 42, 106, 41, + 124, 783, 19, 19, 42, 41, 41, 124, 41, 46, 19, 19, 48, 48, 53, 53, 53, 53, 53, 53, - 53, 68, 68, 70, 70, 19, 785, 135, 19, 20, + 53, 68, 68, 70, 70, 19, 784, 135, 19, 20, 144, 20, 20, 20, 20, 20, 20, 20, 144, 68, 68, 70, 70, 135, 73, 73, 20, 20, 73, 73, 73, 73, 73, 73, 73, 96, 20, 136, 143, 48, - 96, 96, 142, 142, 20, 20, 48, 143, 786, 116, - 48, 136, 116, 116, 787, 48, 116, 126, 116, 20, + 96, 96, 142, 142, 20, 20, 48, 143, 785, 116, + 48, 136, 116, 116, 786, 48, 116, 126, 116, 20, 72, 172, 72, 72, 72, 72, 72, 72, 72, 129, 153, 126, 153, 126, 153, 154, 154, 72, 72, 187, 187, 155, 155, 161, 172, 161, 129, 129, 163, 163, 163, 163, 163, 163, 163, 72, 72, 165, 165, 167, 167, 165, 165, 165, 165, 165, 165, 165, 170, 170, 170, 170, 170, 170, 170, 248, 182, 167, 167, 218, - 218, 218, 154, 230, 248, 537, 789, 230, 155, 154, - 182, 538, 790, 154, 791, 155, 792, 537, 154, 155, + 218, 218, 154, 230, 248, 537, 787, 230, 155, 154, + 182, 659, 790, 154, 791, 155, 792, 537, 154, 155, - 793, 168, 168, 538, 155, 168, 168, 168, 168, 168, + 793, 168, 168, 659, 155, 168, 168, 168, 168, 168, 168, 168, 171, 171, 171, 171, 171, 171, 171, 254, 254, 254, 277, 277, 277, 289, 289, 289, 171, 264, 264, 264, 264, 264, 264, 264, 265, 265, 265, 265, - 265, 265, 265, 298, 298, 298, 171, 673, 673, 266, + 265, 265, 265, 298, 298, 298, 171, 681, 681, 266, 266, 794, 265, 266, 266, 266, 266, 266, 266, 266, 268, 268, 268, 268, 268, 268, 268, 302, 302, 302, 265, 269, 269, 269, 269, 269, 269, 269, 311, 311, 311, 353, 353, 353, 411, 411, 411, 269, 366, 366, 366, 366, 366, 366, 366, 367, 367, 367, 367, 367, - 367, 367, 400, 400, 400, 269, 412, 412, 412, 714, - 714, 367, 795, 400, 400, 413, 413, 413, 796, 469, - 469, 469, 513, 513, 513, 521, 653, 757, 757, 367, - 469, 469, 797, 513, 513, 555, 555, 555, 653, 521, - 521, 521, 521, 521, 521, 521, 555, 555, 746, 555, - 571, 571, 688, 800, 802, 804, 572, 572, 805, 806, - 746, 688, 807, 688, 571, 571, 571, 571, 571, 571, - 572, 572, 572, 572, 572, 572, 572, 594, 594, 594, - 618, 618, 618, 622, 622, 808, 809, 811, 594, 594, - 571, 618, 618, 624, 624, 627, 812, 622, 622, 622, + 367, 367, 400, 400, 400, 269, 412, 412, 412, 729, + 729, 367, 795, 400, 400, 413, 413, 413, 796, 469, + 469, 469, 513, 513, 513, 521, 538, 781, 781, 367, + 469, 469, 797, 513, 513, 538, 798, 538, 538, 521, + 521, 521, 521, 521, 521, 521, 555, 555, 555, 571, + 571, 799, 800, 801, 802, 572, 572, 555, 555, 803, + 555, 804, 805, 571, 571, 571, 571, 571, 571, 572, + 572, 572, 572, 572, 572, 572, 582, 615, 806, 596, + 596, 596, 620, 620, 620, 582, 615, 582, 615, 571, + 596, 596, 767, 620, 620, 629, 701, 807, 808, 809, - 622, 622, 622, 622, 626, 626, 813, 624, 624, 624, - 624, 624, 624, 814, 815, 571, 654, 816, 626, 626, - 626, 626, 626, 626, 626, 654, 709, 654, 654, 671, - 671, 819, 627, 820, 821, 709, 824, 709, 825, 672, - 672, 627, 826, 671, 671, 671, 671, 671, 671, 716, - 716, 827, 627, 672, 672, 672, 672, 672, 672, 672, - 718, 718, 828, 716, 716, 716, 716, 716, 716, 671, - 829, 830, 832, 833, 718, 718, 718, 718, 718, 718, - 718, 831, 834, 835, 836, 837, 840, 841, 831, 842, - 843, 844, 845, 846, 671, 847, 848, 849, 850, 851, + 810, 624, 624, 811, 767, 701, 812, 701, 626, 626, + 813, 814, 815, 816, 571, 624, 624, 624, 624, 624, + 624, 624, 626, 626, 626, 626, 626, 626, 628, 628, + 817, 820, 629, 821, 822, 823, 824, 825, 826, 827, + 828, 629, 628, 628, 628, 628, 628, 628, 628, 660, + 679, 679, 629, 829, 832, 833, 680, 680, 660, 834, + 660, 660, 836, 837, 679, 679, 679, 679, 679, 679, + 680, 680, 680, 680, 680, 680, 680, 724, 731, 731, + 839, 840, 841, 842, 733, 733, 724, 843, 724, 844, + 679, 845, 731, 731, 731, 731, 731, 731, 733, 733, - 852, 855, 856, 857, 858, 859, 860, 861, 864, 865, - 857, 866, 868, 869, 870, 872, 873, 874, 877, 878, - 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, - 881, 890, 891, 892, 893, 894, 895, 896, 897, 898, - 900, 899, 901, 904, 905, 906, 907, 898, 899, 909, - 912, 913, 914, 856, 917, 916, 920, 921, 922, 913, - 914, 858, 916, 923, 925, 926, 928, 929, 930, 931, - 933, 934, 935, 926, 936, 929, 939, 940, 880, 941, - 942, 944, 936, 945, 946, 949, 950, 941, 942, 951, - 952, 953, 946, 950, 954, 955, 951, 956, 957, 964, + 733, 733, 733, 733, 733, 847, 848, 849, 850, 851, + 852, 855, 856, 857, 860, 679, 861, 862, 863, 864, + 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, + 877, 869, 878, 879, 882, 883, 884, 885, 886, 887, + 888, 889, 890, 891, 892, 893, 894, 895, 896, 899, + 900, 901, 902, 903, 906, 907, 910, 911, 901, 912, + 914, 915, 916, 918, 919, 920, 925, 926, 927, 928, + 929, 930, 931, 932, 933, 934, 935, 936, 929, 938, + 939, 940, 941, 942, 943, 944, 945, 946, 948, 947, + 949, 952, 953, 954, 955, 946, 947, 957, 960, 961, - 965, 780, 779, 778, 777, 956, 957, 776, 775, 774, - 773, 917, 772, 771, 770, 769, 768, 767, 766, 765, - 764, 762, 761, 928, 760, 759, 758, 756, 755, 754, - 753, 752, 751, 952, 953, 960, 960, 960, 960, 960, - 961, 961, 961, 961, 961, 962, 962, 962, 963, 963, - 963, 966, 966, 967, 750, 967, 967, 967, 968, 968, - 969, 969, 749, 748, 747, 745, 744, 743, 742, 741, - 740, 739, 738, 737, 736, 735, 734, 733, 732, 731, - 729, 728, 727, 726, 725, 724, 723, 721, 720, 719, - 712, 711, 708, 706, 705, 704, 702, 701, 700, 699, + 962, 900, 965, 964, 968, 969, 970, 961, 962, 902, + 964, 971, 973, 974, 976, 977, 978, 979, 981, 982, + 983, 974, 984, 977, 987, 988, 928, 989, 990, 992, + 984, 993, 994, 997, 998, 989, 990, 999, 1000, 1001, + 994, 998, 1002, 1003, 999, 1004, 1005, 1012, 1013, 778, + 777, 776, 775, 1004, 1005, 774, 773, 772, 771, 965, + 770, 769, 768, 766, 765, 764, 763, 762, 761, 760, + 759, 976, 758, 757, 756, 755, 754, 753, 752, 751, + 749, 1000, 1001, 1008, 1008, 1008, 1008, 1008, 1009, 1009, + 1009, 1009, 1009, 1010, 1010, 1010, 1011, 1011, 1011, 1014, - 698, 697, 696, 695, 694, 693, 692, 691, 690, 687, - 686, 685, 684, 683, 682, 680, 679, 678, 677, 676, - 675, 674, 670, 668, 667, 666, 665, 664, 663, 662, - 661, 660, 659, 658, 657, 656, 655, 649, 647, 646, - 645, 644, 643, 639, 638, 637, 636, 635, 634, 633, - 632, 631, 629, 621, 620, 616, 615, 613, 612, 610, - 609, 608, 607, 606, 605, 604, 603, 599, 598, 597, - 595, 593, 592, 591, 590, 589, 588, 587, 586, 585, - 584, 582, 581, 576, 575, 574, 573, 570, 569, 568, - 566, 565, 563, 562, 561, 560, 559, 557, 556, 554, + 1014, 1015, 747, 1015, 1015, 1015, 1016, 1016, 1017, 1017, + 746, 745, 744, 743, 742, 741, 740, 739, 738, 736, + 735, 734, 727, 726, 723, 722, 721, 720, 719, 718, + 717, 715, 714, 713, 712, 711, 710, 709, 708, 707, + 706, 705, 704, 703, 700, 699, 698, 697, 696, 695, + 694, 693, 692, 691, 690, 689, 688, 687, 686, 685, + 684, 683, 682, 678, 676, 675, 674, 673, 672, 671, + 670, 669, 668, 667, 666, 665, 664, 663, 662, 661, + 655, 653, 652, 651, 650, 649, 646, 645, 644, 643, + 642, 641, 640, 639, 638, 637, 636, 635, 634, 633, - 553, 552, 551, 550, 549, 548, 547, 546, 544, 543, - 542, 541, 540, 536, 535, 534, 533, 532, 531, 528, - 527, 526, 525, 524, 523, 522, 520, 519, 518, 517, - 516, 515, 514, 512, 511, 508, 503, 502, 500, 499, - 498, 496, 495, 492, 491, 490, 489, 478, 477, 476, - 474, 473, 472, 471, 470, 467, 465, 464, 463, 461, - 460, 459, 458, 456, 455, 454, 453, 452, 450, 449, - 444, 443, 441, 440, 439, 438, 437, 436, 435, 434, - 433, 432, 431, 429, 428, 427, 426, 425, 424, 423, - 422, 420, 419, 418, 417, 416, 415, 414, 410, 406, + 631, 623, 622, 618, 617, 614, 612, 611, 610, 609, + 608, 607, 606, 605, 601, 600, 599, 597, 595, 594, + 593, 592, 591, 590, 589, 588, 587, 586, 585, 584, + 581, 576, 575, 574, 573, 570, 569, 568, 566, 565, + 563, 562, 561, 560, 559, 557, 556, 554, 553, 552, + 551, 550, 549, 548, 547, 546, 544, 543, 542, 541, + 540, 536, 535, 534, 533, 532, 531, 528, 527, 526, + 525, 524, 523, 522, 520, 519, 518, 517, 516, 515, + 514, 512, 511, 508, 503, 502, 500, 499, 498, 496, + 495, 492, 491, 490, 489, 478, 477, 476, 474, 473, - 405, 404, 401, 399, 389, 387, 383, 382, 381, 380, - 378, 377, 375, 370, 369, 368, 365, 364, 363, 362, - 361, 360, 359, 354, 352, 351, 350, 349, 348, 346, - 345, 342, 341, 340, 339, 338, 337, 336, 335, 334, - 333, 332, 331, 330, 329, 328, 327, 326, 325, 324, - 323, 322, 321, 320, 319, 318, 317, 316, 315, 312, - 310, 309, 308, 307, 306, 305, 304, 303, 301, 297, - 295, 294, 293, 292, 288, 287, 286, 285, 284, 283, - 282, 281, 280, 276, 274, 273, 272, 262, 261, 260, - 259, 258, 257, 256, 255, 253, 252, 251, 250, 249, + 472, 471, 470, 467, 465, 464, 463, 461, 460, 459, + 458, 456, 455, 454, 453, 452, 450, 449, 444, 443, + 441, 440, 439, 438, 437, 436, 435, 434, 433, 432, + 431, 429, 428, 427, 426, 425, 424, 423, 422, 420, + 419, 418, 417, 416, 415, 414, 410, 406, 405, 404, + 401, 399, 389, 387, 383, 382, 381, 380, 378, 377, + 375, 370, 369, 368, 365, 364, 363, 362, 361, 360, + 359, 354, 352, 351, 350, 349, 348, 346, 345, 342, + 341, 340, 339, 338, 337, 336, 335, 334, 333, 332, + 331, 330, 329, 328, 327, 326, 325, 324, 323, 322, - 247, 246, 245, 244, 243, 242, 241, 240, 239, 238, - 237, 236, 235, 234, 233, 232, 231, 229, 228, 227, - 226, 225, 224, 223, 222, 221, 220, 219, 217, 216, - 215, 214, 213, 212, 211, 210, 209, 208, 207, 206, - 205, 204, 203, 202, 201, 199, 198, 197, 196, 195, - 194, 193, 192, 191, 190, 189, 188, 186, 185, 184, - 183, 181, 180, 179, 178, 177, 175, 160, 159, 158, - 157, 150, 149, 147, 146, 145, 141, 140, 139, 138, - 137, 134, 133, 132, 131, 130, 128, 127, 125, 123, - 122, 121, 119, 118, 117, 115, 114, 112, 111, 110, + 321, 320, 319, 318, 317, 316, 315, 312, 310, 309, + 308, 307, 306, 305, 304, 303, 301, 297, 295, 294, + 293, 292, 288, 287, 286, 285, 284, 283, 282, 281, + 280, 276, 274, 273, 272, 262, 261, 260, 259, 258, + 257, 256, 255, 253, 252, 251, 250, 249, 247, 246, + 245, 244, 243, 242, 241, 240, 239, 238, 237, 236, + 235, 234, 233, 232, 231, 229, 228, 227, 226, 225, + 224, 223, 222, 221, 220, 219, 217, 216, 215, 214, + 213, 212, 211, 210, 209, 208, 207, 206, 205, 204, + 203, 202, 201, 199, 198, 197, 196, 195, 194, 193, - 109, 108, 107, 104, 103, 102, 101, 100, 99, 98, - 97, 95, 94, 93, 92, 91, 90, 88, 87, 83, - 79, 52, 38, 32, 22, 18, 14, 12, 11, 7, - 6, 5, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, + 192, 191, 190, 189, 188, 186, 185, 184, 183, 181, + 180, 179, 178, 177, 175, 160, 159, 158, 157, 150, + 149, 147, 146, 145, 141, 140, 139, 138, 137, 134, + 133, 132, 131, 130, 128, 127, 125, 123, 122, 121, + 119, 118, 117, 115, 114, 112, 111, 110, 109, 108, + 107, 104, 103, 102, 101, 100, 99, 98, 97, 95, + 94, 93, 92, 91, 90, 88, 87, 83, 79, 52, + 38, 32, 22, 18, 14, 12, 11, 7, 6, 5, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, - 959, 959, 959 + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, + 1007 } ; /* The intent behind this definition is that it'll catch @@ -1218,7 +1246,7 @@ literal_integer(char *text, int len, struct _mesa_glsl_parse_state *state, literal_integer(yytext, yyleng, yyextra, yylval, yylloc, base) -#line 1222 "src/glsl/glsl_lexer.cpp" +#line 1250 "src/glsl/glsl_lexer.cpp" #define INITIAL 0 #define PP 1 @@ -1460,7 +1488,7 @@ YY_DECL #line 170 "src/glsl/glsl_lexer.ll" -#line 1464 "src/glsl/glsl_lexer.cpp" +#line 1492 "src/glsl/glsl_lexer.cpp" yylval = yylval_param; @@ -1518,13 +1546,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 960 ) + if ( yy_current_state >= 1008 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_current_state != 959 ); + while ( yy_current_state != 1007 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -2133,24 +2161,235 @@ YY_RULE_SETUP return IDENTIFIER; } YY_BREAK +/* keywords available with ARB_shader_image_load_store */ case 105: YY_RULE_SETUP -#line 346 "src/glsl/glsl_lexer.ll" -KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_atomic_counters_enable, ATOMIC_UINT); +#line 347 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE1D); YY_BREAK case 106: YY_RULE_SETUP #line 348 "src/glsl/glsl_lexer.ll" -return STRUCT; +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2D); YY_BREAK case 107: YY_RULE_SETUP #line 349 "src/glsl/glsl_lexer.ll" -return VOID_TOK; +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE3D); YY_BREAK case 108: YY_RULE_SETUP +#line 350 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DRECT); + YY_BREAK +case 109: +YY_RULE_SETUP #line 351 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGECUBE); + YY_BREAK +case 110: +YY_RULE_SETUP +#line 352 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGEBUFFER); + YY_BREAK +case 111: +YY_RULE_SETUP +#line 353 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE1DARRAY); + YY_BREAK +case 112: +YY_RULE_SETUP +#line 354 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DARRAY); + YY_BREAK +case 113: +YY_RULE_SETUP +#line 355 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGECUBEARRAY); + YY_BREAK +case 114: +YY_RULE_SETUP +#line 356 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DMS); + YY_BREAK +case 115: +YY_RULE_SETUP +#line 357 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DMSARRAY); + YY_BREAK +case 116: +YY_RULE_SETUP +#line 358 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE1D); + YY_BREAK +case 117: +YY_RULE_SETUP +#line 359 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2D); + YY_BREAK +case 118: +YY_RULE_SETUP +#line 360 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE3D); + YY_BREAK +case 119: +YY_RULE_SETUP +#line 361 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DRECT); + YY_BREAK +case 120: +YY_RULE_SETUP +#line 362 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGECUBE); + YY_BREAK +case 121: +YY_RULE_SETUP +#line 363 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGEBUFFER); + YY_BREAK +case 122: +YY_RULE_SETUP +#line 364 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE1DARRAY); + YY_BREAK +case 123: +YY_RULE_SETUP +#line 365 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DARRAY); + YY_BREAK +case 124: +YY_RULE_SETUP +#line 366 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGECUBEARRAY); + YY_BREAK +case 125: +YY_RULE_SETUP +#line 367 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DMS); + YY_BREAK +case 126: +YY_RULE_SETUP +#line 368 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DMSARRAY); + YY_BREAK +case 127: +YY_RULE_SETUP +#line 369 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE1D); + YY_BREAK +case 128: +YY_RULE_SETUP +#line 370 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2D); + YY_BREAK +case 129: +YY_RULE_SETUP +#line 371 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE3D); + YY_BREAK +case 130: +YY_RULE_SETUP +#line 372 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DRECT); + YY_BREAK +case 131: +YY_RULE_SETUP +#line 373 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGECUBE); + YY_BREAK +case 132: +YY_RULE_SETUP +#line 374 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGEBUFFER); + YY_BREAK +case 133: +YY_RULE_SETUP +#line 375 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE1DARRAY); + YY_BREAK +case 134: +YY_RULE_SETUP +#line 376 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DARRAY); + YY_BREAK +case 135: +YY_RULE_SETUP +#line 377 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGECUBEARRAY); + YY_BREAK +case 136: +YY_RULE_SETUP +#line 378 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DMS); + YY_BREAK +case 137: +YY_RULE_SETUP +#line 379 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DMSARRAY); + YY_BREAK +case 138: +YY_RULE_SETUP +#line 380 "src/glsl/glsl_lexer.ll" +KEYWORD(130, 300, 0, 0, IMAGE1DSHADOW); + YY_BREAK +case 139: +YY_RULE_SETUP +#line 381 "src/glsl/glsl_lexer.ll" +KEYWORD(130, 300, 0, 0, IMAGE2DSHADOW); + YY_BREAK +case 140: +YY_RULE_SETUP +#line 382 "src/glsl/glsl_lexer.ll" +KEYWORD(130, 300, 0, 0, IMAGE1DARRAYSHADOW); + YY_BREAK +case 141: +YY_RULE_SETUP +#line 383 "src/glsl/glsl_lexer.ll" +KEYWORD(130, 300, 0, 0, IMAGE2DARRAYSHADOW); + YY_BREAK +case 142: +YY_RULE_SETUP +#line 385 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, COHERENT); + YY_BREAK +case 143: +YY_RULE_SETUP +#line 386 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(110, 100, 420, 0, yyextra->ARB_shader_image_load_store_enable, VOLATILE); + YY_BREAK +case 144: +YY_RULE_SETUP +#line 387 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, RESTRICT); + YY_BREAK +case 145: +YY_RULE_SETUP +#line 388 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, READONLY); + YY_BREAK +case 146: +YY_RULE_SETUP +#line 389 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, WRITEONLY); + YY_BREAK +case 147: +YY_RULE_SETUP +#line 391 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_atomic_counters_enable, ATOMIC_UINT); + YY_BREAK +case 148: +YY_RULE_SETUP +#line 393 "src/glsl/glsl_lexer.ll" +return STRUCT; + YY_BREAK +case 149: +YY_RULE_SETUP +#line 394 "src/glsl/glsl_lexer.ll" +return VOID_TOK; + YY_BREAK +case 150: +YY_RULE_SETUP +#line 396 "src/glsl/glsl_lexer.ll" { if ((yyextra->is_version(140, 300)) || yyextra->AMD_conservative_depth_enable @@ -2158,7 +2397,8 @@ YY_RULE_SETUP || yyextra->ARB_explicit_attrib_location_enable || yyextra->ARB_uniform_buffer_object_enable || yyextra->ARB_fragment_coord_conventions_enable - || yyextra->ARB_shading_language_420pack_enable) { + || yyextra->ARB_shading_language_420pack_enable + || yyextra->ARB_compute_shader_enable) { return LAYOUT_TOK; } else { yylval->identifier = strdup(yytext); @@ -2166,656 +2406,506 @@ YY_RULE_SETUP } } YY_BREAK -case 109: +case 151: YY_RULE_SETUP -#line 366 "src/glsl/glsl_lexer.ll" +#line 412 "src/glsl/glsl_lexer.ll" return INC_OP; YY_BREAK -case 110: +case 152: YY_RULE_SETUP -#line 367 "src/glsl/glsl_lexer.ll" +#line 413 "src/glsl/glsl_lexer.ll" return DEC_OP; YY_BREAK -case 111: +case 153: YY_RULE_SETUP -#line 368 "src/glsl/glsl_lexer.ll" +#line 414 "src/glsl/glsl_lexer.ll" return LE_OP; YY_BREAK -case 112: +case 154: YY_RULE_SETUP -#line 369 "src/glsl/glsl_lexer.ll" +#line 415 "src/glsl/glsl_lexer.ll" return GE_OP; YY_BREAK -case 113: +case 155: YY_RULE_SETUP -#line 370 "src/glsl/glsl_lexer.ll" +#line 416 "src/glsl/glsl_lexer.ll" return EQ_OP; YY_BREAK -case 114: +case 156: YY_RULE_SETUP -#line 371 "src/glsl/glsl_lexer.ll" +#line 417 "src/glsl/glsl_lexer.ll" return NE_OP; YY_BREAK -case 115: +case 157: YY_RULE_SETUP -#line 372 "src/glsl/glsl_lexer.ll" +#line 418 "src/glsl/glsl_lexer.ll" return AND_OP; YY_BREAK -case 116: +case 158: YY_RULE_SETUP -#line 373 "src/glsl/glsl_lexer.ll" +#line 419 "src/glsl/glsl_lexer.ll" return OR_OP; YY_BREAK -case 117: +case 159: YY_RULE_SETUP -#line 374 "src/glsl/glsl_lexer.ll" +#line 420 "src/glsl/glsl_lexer.ll" return XOR_OP; YY_BREAK -case 118: +case 160: YY_RULE_SETUP -#line 375 "src/glsl/glsl_lexer.ll" +#line 421 "src/glsl/glsl_lexer.ll" return LEFT_OP; YY_BREAK -case 119: +case 161: YY_RULE_SETUP -#line 376 "src/glsl/glsl_lexer.ll" +#line 422 "src/glsl/glsl_lexer.ll" return RIGHT_OP; YY_BREAK -case 120: +case 162: YY_RULE_SETUP -#line 378 "src/glsl/glsl_lexer.ll" +#line 424 "src/glsl/glsl_lexer.ll" return MUL_ASSIGN; YY_BREAK -case 121: +case 163: YY_RULE_SETUP -#line 379 "src/glsl/glsl_lexer.ll" +#line 425 "src/glsl/glsl_lexer.ll" return DIV_ASSIGN; YY_BREAK -case 122: +case 164: YY_RULE_SETUP -#line 380 "src/glsl/glsl_lexer.ll" +#line 426 "src/glsl/glsl_lexer.ll" return ADD_ASSIGN; YY_BREAK -case 123: +case 165: YY_RULE_SETUP -#line 381 "src/glsl/glsl_lexer.ll" +#line 427 "src/glsl/glsl_lexer.ll" return MOD_ASSIGN; YY_BREAK -case 124: +case 166: YY_RULE_SETUP -#line 382 "src/glsl/glsl_lexer.ll" +#line 428 "src/glsl/glsl_lexer.ll" return LEFT_ASSIGN; YY_BREAK -case 125: +case 167: YY_RULE_SETUP -#line 383 "src/glsl/glsl_lexer.ll" +#line 429 "src/glsl/glsl_lexer.ll" return RIGHT_ASSIGN; YY_BREAK -case 126: +case 168: YY_RULE_SETUP -#line 384 "src/glsl/glsl_lexer.ll" +#line 430 "src/glsl/glsl_lexer.ll" return AND_ASSIGN; YY_BREAK -case 127: +case 169: YY_RULE_SETUP -#line 385 "src/glsl/glsl_lexer.ll" +#line 431 "src/glsl/glsl_lexer.ll" return XOR_ASSIGN; YY_BREAK -case 128: +case 170: YY_RULE_SETUP -#line 386 "src/glsl/glsl_lexer.ll" +#line 432 "src/glsl/glsl_lexer.ll" return OR_ASSIGN; YY_BREAK -case 129: +case 171: YY_RULE_SETUP -#line 387 "src/glsl/glsl_lexer.ll" +#line 433 "src/glsl/glsl_lexer.ll" return SUB_ASSIGN; YY_BREAK -case 130: +case 172: YY_RULE_SETUP -#line 389 "src/glsl/glsl_lexer.ll" +#line 435 "src/glsl/glsl_lexer.ll" { return LITERAL_INTEGER(10); } YY_BREAK -case 131: +case 173: YY_RULE_SETUP -#line 392 "src/glsl/glsl_lexer.ll" +#line 438 "src/glsl/glsl_lexer.ll" { return LITERAL_INTEGER(16); } YY_BREAK -case 132: +case 174: YY_RULE_SETUP -#line 395 "src/glsl/glsl_lexer.ll" +#line 441 "src/glsl/glsl_lexer.ll" { return LITERAL_INTEGER(8); } YY_BREAK -case 133: +case 175: YY_RULE_SETUP -#line 399 "src/glsl/glsl_lexer.ll" +#line 445 "src/glsl/glsl_lexer.ll" { yylval->real = glsl_strtof(yytext, NULL); return FLOATCONSTANT; } YY_BREAK -case 134: +case 176: YY_RULE_SETUP -#line 403 "src/glsl/glsl_lexer.ll" +#line 449 "src/glsl/glsl_lexer.ll" { yylval->real = glsl_strtof(yytext, NULL); return FLOATCONSTANT; } YY_BREAK -case 135: +case 177: YY_RULE_SETUP -#line 407 "src/glsl/glsl_lexer.ll" +#line 453 "src/glsl/glsl_lexer.ll" { yylval->real = glsl_strtof(yytext, NULL); return FLOATCONSTANT; } YY_BREAK -case 136: +case 178: YY_RULE_SETUP -#line 411 "src/glsl/glsl_lexer.ll" +#line 457 "src/glsl/glsl_lexer.ll" { yylval->real = glsl_strtof(yytext, NULL); return FLOATCONSTANT; } YY_BREAK -case 137: +case 179: YY_RULE_SETUP -#line 415 "src/glsl/glsl_lexer.ll" +#line 461 "src/glsl/glsl_lexer.ll" { yylval->real = glsl_strtof(yytext, NULL); return FLOATCONSTANT; } YY_BREAK -case 138: +case 180: YY_RULE_SETUP -#line 420 "src/glsl/glsl_lexer.ll" +#line 466 "src/glsl/glsl_lexer.ll" { yylval->n = 1; return BOOLCONSTANT; } YY_BREAK -case 139: +case 181: YY_RULE_SETUP -#line 424 "src/glsl/glsl_lexer.ll" +#line 470 "src/glsl/glsl_lexer.ll" { yylval->n = 0; return BOOLCONSTANT; } YY_BREAK /* Reserved words in GLSL 1.10. */ -case 140: -YY_RULE_SETUP -#line 431 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, ASM); - YY_BREAK -case 141: -YY_RULE_SETUP -#line 432 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, CLASS); - YY_BREAK -case 142: -YY_RULE_SETUP -#line 433 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, UNION); - YY_BREAK -case 143: -YY_RULE_SETUP -#line 434 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, ENUM); - YY_BREAK -case 144: -YY_RULE_SETUP -#line 435 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, TYPEDEF); - YY_BREAK -case 145: -YY_RULE_SETUP -#line 436 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, TEMPLATE); - YY_BREAK -case 146: -YY_RULE_SETUP -#line 437 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, THIS); - YY_BREAK -case 147: -YY_RULE_SETUP -#line 438 "src/glsl/glsl_lexer.ll" -KEYWORD_WITH_ALT(110, 100, 140, 300, yyextra->ARB_uniform_buffer_object_enable, PACKED_TOK); - YY_BREAK -case 148: -YY_RULE_SETUP -#line 439 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, GOTO); - YY_BREAK -case 149: -YY_RULE_SETUP -#line 440 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 130, 300, SWITCH); - YY_BREAK -case 150: -YY_RULE_SETUP -#line 441 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 130, 300, DEFAULT); - YY_BREAK -case 151: -YY_RULE_SETUP -#line 442 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, INLINE_TOK); - YY_BREAK -case 152: -YY_RULE_SETUP -#line 443 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, NOINLINE); - YY_BREAK -case 153: -YY_RULE_SETUP -#line 444 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, VOLATILE); - YY_BREAK -case 154: -YY_RULE_SETUP -#line 445 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, PUBLIC_TOK); - YY_BREAK -case 155: -YY_RULE_SETUP -#line 446 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, STATIC); - YY_BREAK -case 156: -YY_RULE_SETUP -#line 447 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, EXTERN); - YY_BREAK -case 157: -YY_RULE_SETUP -#line 448 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, EXTERNAL); - YY_BREAK -case 158: -YY_RULE_SETUP -#line 449 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, INTERFACE); - YY_BREAK -case 159: -YY_RULE_SETUP -#line 450 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, LONG_TOK); - YY_BREAK -case 160: -YY_RULE_SETUP -#line 451 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, SHORT_TOK); - YY_BREAK -case 161: -YY_RULE_SETUP -#line 452 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 400, 0, DOUBLE_TOK); - YY_BREAK -case 162: -YY_RULE_SETUP -#line 453 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, HALF); - YY_BREAK -case 163: -YY_RULE_SETUP -#line 454 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, FIXED_TOK); - YY_BREAK -case 164: -YY_RULE_SETUP -#line 455 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, UNSIGNED); - YY_BREAK -case 165: -YY_RULE_SETUP -#line 456 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, INPUT_TOK); - YY_BREAK -case 166: -YY_RULE_SETUP -#line 457 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, OUTPUT); - YY_BREAK -case 167: -YY_RULE_SETUP -#line 458 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, HVEC2); - YY_BREAK -case 168: -YY_RULE_SETUP -#line 459 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, HVEC3); - YY_BREAK -case 169: -YY_RULE_SETUP -#line 460 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, HVEC4); - YY_BREAK -case 170: -YY_RULE_SETUP -#line 461 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 400, 0, DVEC2); - YY_BREAK -case 171: -YY_RULE_SETUP -#line 462 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 400, 0, DVEC3); - YY_BREAK -case 172: -YY_RULE_SETUP -#line 463 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 400, 0, DVEC4); - YY_BREAK -case 173: -YY_RULE_SETUP -#line 464 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, FVEC2); - YY_BREAK -case 174: -YY_RULE_SETUP -#line 465 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, FVEC3); - YY_BREAK -case 175: -YY_RULE_SETUP -#line 466 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, FVEC4); - YY_BREAK -case 176: -YY_RULE_SETUP -#line 467 "src/glsl/glsl_lexer.ll" -DEPRECATED_ES_KEYWORD(SAMPLER2DRECT); - YY_BREAK -case 177: -YY_RULE_SETUP -#line 468 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, SAMPLER3DRECT); - YY_BREAK -case 178: -YY_RULE_SETUP -#line 469 "src/glsl/glsl_lexer.ll" -DEPRECATED_ES_KEYWORD(SAMPLER2DRECTSHADOW); - YY_BREAK -case 179: -YY_RULE_SETUP -#line 470 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, SIZEOF); - YY_BREAK -case 180: -YY_RULE_SETUP -#line 471 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, CAST); - YY_BREAK -case 181: -YY_RULE_SETUP -#line 472 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, NAMESPACE); - YY_BREAK case 182: YY_RULE_SETUP -#line 473 "src/glsl/glsl_lexer.ll" -KEYWORD(110, 100, 0, 0, USING); +#line 477 "src/glsl/glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, ASM); YY_BREAK -/* Additional reserved words in GLSL 1.20. */ case 183: YY_RULE_SETUP -#line 476 "src/glsl/glsl_lexer.ll" -KEYWORD(120, 100, 130, 100, LOWP); +#line 478 "src/glsl/glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, CLASS); YY_BREAK case 184: YY_RULE_SETUP -#line 477 "src/glsl/glsl_lexer.ll" -KEYWORD(120, 100, 130, 100, MEDIUMP); +#line 479 "src/glsl/glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, UNION); YY_BREAK case 185: YY_RULE_SETUP -#line 478 "src/glsl/glsl_lexer.ll" -KEYWORD(120, 100, 130, 100, HIGHP); +#line 480 "src/glsl/glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, ENUM); YY_BREAK case 186: YY_RULE_SETUP -#line 479 "src/glsl/glsl_lexer.ll" -KEYWORD(120, 100, 130, 100, PRECISION); +#line 481 "src/glsl/glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, TYPEDEF); YY_BREAK -/* Additional reserved words in GLSL 1.30. */ case 187: YY_RULE_SETUP #line 482 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 130, 300, CASE); +KEYWORD(110, 100, 0, 0, TEMPLATE); YY_BREAK case 188: YY_RULE_SETUP #line 483 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, COMMON); +KEYWORD(110, 100, 0, 0, THIS); YY_BREAK case 189: YY_RULE_SETUP #line 484 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, PARTITION); +KEYWORD_WITH_ALT(110, 100, 140, 300, yyextra->ARB_uniform_buffer_object_enable, PACKED_TOK); YY_BREAK case 190: YY_RULE_SETUP #line 485 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, ACTIVE); +KEYWORD(110, 100, 0, 0, GOTO); YY_BREAK case 191: YY_RULE_SETUP #line 486 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 100, 0, 0, SUPERP); +KEYWORD(110, 100, 130, 300, SWITCH); YY_BREAK case 192: YY_RULE_SETUP #line 487 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 140, 0, SAMPLERBUFFER); +KEYWORD(110, 100, 130, 300, DEFAULT); YY_BREAK case 193: YY_RULE_SETUP #line 488 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, FILTER); +KEYWORD(110, 100, 0, 0, INLINE_TOK); YY_BREAK case 194: YY_RULE_SETUP #line 489 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGE1D); +KEYWORD(110, 100, 0, 0, NOINLINE); YY_BREAK case 195: YY_RULE_SETUP #line 490 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGE2D); +KEYWORD(110, 100, 0, 0, PUBLIC_TOK); YY_BREAK case 196: YY_RULE_SETUP #line 491 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGE3D); +KEYWORD(110, 100, 0, 0, STATIC); YY_BREAK case 197: YY_RULE_SETUP #line 492 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGECUBE); +KEYWORD(110, 100, 0, 0, EXTERN); YY_BREAK case 198: YY_RULE_SETUP #line 493 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IIMAGE1D); +KEYWORD(110, 100, 0, 0, EXTERNAL); YY_BREAK case 199: YY_RULE_SETUP #line 494 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IIMAGE2D); +KEYWORD(110, 100, 0, 0, INTERFACE); YY_BREAK case 200: YY_RULE_SETUP #line 495 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IIMAGE3D); +KEYWORD(110, 100, 0, 0, LONG_TOK); YY_BREAK case 201: YY_RULE_SETUP #line 496 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IIMAGECUBE); +KEYWORD(110, 100, 0, 0, SHORT_TOK); YY_BREAK case 202: YY_RULE_SETUP #line 497 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, UIMAGE1D); +KEYWORD(110, 100, 400, 0, DOUBLE_TOK); YY_BREAK case 203: YY_RULE_SETUP #line 498 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, UIMAGE2D); +KEYWORD(110, 100, 0, 0, HALF); YY_BREAK case 204: YY_RULE_SETUP #line 499 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, UIMAGE3D); +KEYWORD(110, 100, 0, 0, FIXED_TOK); YY_BREAK case 205: YY_RULE_SETUP #line 500 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, UIMAGECUBE); +KEYWORD(110, 100, 0, 0, UNSIGNED); YY_BREAK case 206: YY_RULE_SETUP #line 501 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGE1DARRAY); +KEYWORD(110, 100, 0, 0, INPUT_TOK); YY_BREAK case 207: YY_RULE_SETUP #line 502 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGE2DARRAY); +KEYWORD(110, 100, 0, 0, OUTPUT); YY_BREAK case 208: YY_RULE_SETUP #line 503 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IIMAGE1DARRAY); +KEYWORD(110, 100, 0, 0, HVEC2); YY_BREAK case 209: YY_RULE_SETUP #line 504 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IIMAGE2DARRAY); +KEYWORD(110, 100, 0, 0, HVEC3); YY_BREAK case 210: YY_RULE_SETUP #line 505 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, UIMAGE1DARRAY); +KEYWORD(110, 100, 0, 0, HVEC4); YY_BREAK case 211: YY_RULE_SETUP #line 506 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, UIMAGE2DARRAY); +KEYWORD(110, 100, 400, 0, DVEC2); YY_BREAK case 212: YY_RULE_SETUP #line 507 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGE1DSHADOW); +KEYWORD(110, 100, 400, 0, DVEC3); YY_BREAK case 213: YY_RULE_SETUP #line 508 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGE2DSHADOW); +KEYWORD(110, 100, 400, 0, DVEC4); YY_BREAK case 214: YY_RULE_SETUP #line 509 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGE1DARRAYSHADOW); +KEYWORD(110, 100, 0, 0, FVEC2); YY_BREAK case 215: YY_RULE_SETUP #line 510 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGE2DARRAYSHADOW); +KEYWORD(110, 100, 0, 0, FVEC3); YY_BREAK case 216: YY_RULE_SETUP #line 511 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IMAGEBUFFER); +KEYWORD(110, 100, 0, 0, FVEC4); YY_BREAK case 217: YY_RULE_SETUP #line 512 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, IIMAGEBUFFER); +DEPRECATED_ES_KEYWORD(SAMPLER2DRECT); YY_BREAK case 218: YY_RULE_SETUP #line 513 "src/glsl/glsl_lexer.ll" -KEYWORD(130, 300, 0, 0, UIMAGEBUFFER); +KEYWORD(110, 100, 0, 0, SAMPLER3DRECT); YY_BREAK case 219: YY_RULE_SETUP #line 514 "src/glsl/glsl_lexer.ll" -KEYWORD_WITH_ALT(130, 0, 140, 0, yyextra->ARB_uniform_buffer_object_enable && !yyextra->es_shader, ROW_MAJOR); +DEPRECATED_ES_KEYWORD(SAMPLER2DRECTSHADOW); YY_BREAK -/* Additional reserved words in GLSL 1.40 */ case 220: YY_RULE_SETUP -#line 517 "src/glsl/glsl_lexer.ll" -KEYWORD(140, 300, 140, 0, ISAMPLER2DRECT); +#line 515 "src/glsl/glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, SIZEOF); YY_BREAK case 221: YY_RULE_SETUP -#line 518 "src/glsl/glsl_lexer.ll" -KEYWORD(140, 300, 140, 0, USAMPLER2DRECT); +#line 516 "src/glsl/glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, CAST); YY_BREAK case 222: YY_RULE_SETUP -#line 519 "src/glsl/glsl_lexer.ll" -KEYWORD(140, 300, 140, 0, ISAMPLERBUFFER); +#line 517 "src/glsl/glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, NAMESPACE); YY_BREAK case 223: YY_RULE_SETUP -#line 520 "src/glsl/glsl_lexer.ll" -KEYWORD(140, 300, 140, 0, USAMPLERBUFFER); +#line 518 "src/glsl/glsl_lexer.ll" +KEYWORD(110, 100, 0, 0, USING); YY_BREAK -/* Additional reserved words in GLSL ES 3.00 */ +/* Additional reserved words in GLSL 1.20. */ case 224: YY_RULE_SETUP -#line 523 "src/glsl/glsl_lexer.ll" -KEYWORD(0, 300, 0, 0, COHERENT); +#line 521 "src/glsl/glsl_lexer.ll" +KEYWORD(120, 100, 130, 100, LOWP); YY_BREAK case 225: YY_RULE_SETUP -#line 524 "src/glsl/glsl_lexer.ll" -KEYWORD(0, 300, 0, 0, RESTRICT); +#line 522 "src/glsl/glsl_lexer.ll" +KEYWORD(120, 100, 130, 100, MEDIUMP); YY_BREAK case 226: YY_RULE_SETUP -#line 525 "src/glsl/glsl_lexer.ll" -KEYWORD(0, 300, 0, 0, READONLY); +#line 523 "src/glsl/glsl_lexer.ll" +KEYWORD(120, 100, 130, 100, HIGHP); YY_BREAK case 227: YY_RULE_SETUP -#line 526 "src/glsl/glsl_lexer.ll" -KEYWORD(0, 300, 0, 0, WRITEONLY); +#line 524 "src/glsl/glsl_lexer.ll" +KEYWORD(120, 100, 130, 100, PRECISION); YY_BREAK +/* Additional reserved words in GLSL 1.30. */ case 228: YY_RULE_SETUP #line 527 "src/glsl/glsl_lexer.ll" -KEYWORD(0, 300, 0, 0, RESOURCE); +KEYWORD(130, 300, 130, 300, CASE); YY_BREAK case 229: YY_RULE_SETUP #line 528 "src/glsl/glsl_lexer.ll" -KEYWORD(0, 300, 0, 0, PATCH); +KEYWORD(130, 300, 0, 0, COMMON); YY_BREAK case 230: YY_RULE_SETUP #line 529 "src/glsl/glsl_lexer.ll" -KEYWORD_WITH_ALT(400, 300, 400, 0, yyextra->ARB_gpu_shader5_enable, SAMPLE); +KEYWORD(130, 300, 0, 0, PARTITION); YY_BREAK case 231: YY_RULE_SETUP #line 530 "src/glsl/glsl_lexer.ll" -KEYWORD(0, 300, 0, 0, SUBROUTINE); +KEYWORD(130, 300, 0, 0, ACTIVE); YY_BREAK case 232: YY_RULE_SETUP +#line 531 "src/glsl/glsl_lexer.ll" +KEYWORD(130, 100, 0, 0, SUPERP); + YY_BREAK +case 233: +YY_RULE_SETUP +#line 532 "src/glsl/glsl_lexer.ll" +KEYWORD(130, 300, 140, 0, SAMPLERBUFFER); + YY_BREAK +case 234: +YY_RULE_SETUP #line 533 "src/glsl/glsl_lexer.ll" +KEYWORD(130, 300, 0, 0, FILTER); + YY_BREAK +case 235: +YY_RULE_SETUP +#line 534 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(130, 0, 140, 0, yyextra->ARB_uniform_buffer_object_enable && !yyextra->es_shader, ROW_MAJOR); + YY_BREAK +/* Additional reserved words in GLSL 1.40 */ +case 236: +YY_RULE_SETUP +#line 537 "src/glsl/glsl_lexer.ll" +KEYWORD(140, 300, 140, 0, ISAMPLER2DRECT); + YY_BREAK +case 237: +YY_RULE_SETUP +#line 538 "src/glsl/glsl_lexer.ll" +KEYWORD(140, 300, 140, 0, USAMPLER2DRECT); + YY_BREAK +case 238: +YY_RULE_SETUP +#line 539 "src/glsl/glsl_lexer.ll" +KEYWORD(140, 300, 140, 0, ISAMPLERBUFFER); + YY_BREAK +case 239: +YY_RULE_SETUP +#line 540 "src/glsl/glsl_lexer.ll" +KEYWORD(140, 300, 140, 0, USAMPLERBUFFER); + YY_BREAK +/* Additional reserved words in GLSL ES 3.00 */ +case 240: +YY_RULE_SETUP +#line 543 "src/glsl/glsl_lexer.ll" +KEYWORD(0, 300, 0, 0, RESOURCE); + YY_BREAK +case 241: +YY_RULE_SETUP +#line 544 "src/glsl/glsl_lexer.ll" +KEYWORD(0, 300, 0, 0, PATCH); + YY_BREAK +case 242: +YY_RULE_SETUP +#line 545 "src/glsl/glsl_lexer.ll" +KEYWORD_WITH_ALT(400, 300, 400, 0, yyextra->ARB_gpu_shader5_enable, SAMPLE); + YY_BREAK +case 243: +YY_RULE_SETUP +#line 546 "src/glsl/glsl_lexer.ll" +KEYWORD(0, 300, 0, 0, SUBROUTINE); + YY_BREAK +case 244: +YY_RULE_SETUP +#line 549 "src/glsl/glsl_lexer.ll" { struct _mesa_glsl_parse_state *state = yyextra; void *ctx = state; @@ -2823,17 +2913,17 @@ YY_RULE_SETUP return classify_identifier(state, yytext); } YY_BREAK -case 233: +case 245: YY_RULE_SETUP -#line 540 "src/glsl/glsl_lexer.ll" +#line 556 "src/glsl/glsl_lexer.ll" { return yytext[0]; } YY_BREAK -case 234: +case 246: YY_RULE_SETUP -#line 542 "src/glsl/glsl_lexer.ll" +#line 558 "src/glsl/glsl_lexer.ll" ECHO; YY_BREAK -#line 2837 "src/glsl/glsl_lexer.cpp" +#line 2927 "src/glsl/glsl_lexer.cpp" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(PP): case YY_STATE_EOF(PRAGMA): @@ -3131,7 +3221,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 960 ) + if ( yy_current_state >= 1008 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -3160,11 +3250,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 960 ) + if ( yy_current_state >= 1008 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 959); + yy_is_jam = (yy_current_state == 1007); return yy_is_jam ? 0 : yy_current_state; } @@ -3976,7 +4066,7 @@ void _mesa_glsl_lexer_free (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 542 "src/glsl/glsl_lexer.ll" +#line 558 "src/glsl/glsl_lexer.ll" diff --git a/3rdparty/glsl-optimizer/src/glsl/glsl_lexer.ll b/3rdparty/glsl-optimizer/src/glsl/glsl_lexer.ll index 885bdd911..90acdc3cc 100644 --- a/3rdparty/glsl-optimizer/src/glsl/glsl_lexer.ll +++ b/3rdparty/glsl-optimizer/src/glsl/glsl_lexer.ll @@ -343,6 +343,51 @@ samplerExternalOES { return IDENTIFIER; } + /* keywords available with ARB_shader_image_load_store */ +image1D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE1D); +image2D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2D); +image3D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE3D); +image2DRect KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DRECT); +imageCube KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGECUBE); +imageBuffer KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGEBUFFER); +image1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE1DARRAY); +image2DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DARRAY); +imageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGECUBEARRAY); +image2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DMS); +image2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DMSARRAY); +iimage1D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE1D); +iimage2D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2D); +iimage3D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE3D); +iimage2DRect KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DRECT); +iimageCube KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGECUBE); +iimageBuffer KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGEBUFFER); +iimage1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE1DARRAY); +iimage2DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DARRAY); +iimageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGECUBEARRAY); +iimage2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DMS); +iimage2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DMSARRAY); +uimage1D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE1D); +uimage2D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2D); +uimage3D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE3D); +uimage2DRect KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DRECT); +uimageCube KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGECUBE); +uimageBuffer KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGEBUFFER); +uimage1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE1DARRAY); +uimage2DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DARRAY); +uimageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGECUBEARRAY); +uimage2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DMS); +uimage2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DMSARRAY); +image1DShadow KEYWORD(130, 300, 0, 0, IMAGE1DSHADOW); +image2DShadow KEYWORD(130, 300, 0, 0, IMAGE2DSHADOW); +image1DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE1DARRAYSHADOW); +image2DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE2DARRAYSHADOW); + +coherent KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, COHERENT); +volatile KEYWORD_WITH_ALT(110, 100, 420, 0, yyextra->ARB_shader_image_load_store_enable, VOLATILE); +restrict KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, RESTRICT); +readonly KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, READONLY); +writeonly KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, WRITEONLY); + atomic_uint KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_atomic_counters_enable, ATOMIC_UINT); struct return STRUCT; @@ -355,7 +400,8 @@ layout { || yyextra->ARB_explicit_attrib_location_enable || yyextra->ARB_uniform_buffer_object_enable || yyextra->ARB_fragment_coord_conventions_enable - || yyextra->ARB_shading_language_420pack_enable) { + || yyextra->ARB_shading_language_420pack_enable + || yyextra->ARB_compute_shader_enable) { return LAYOUT_TOK; } else { yylval->identifier = strdup(yytext); @@ -441,7 +487,6 @@ switch KEYWORD(110, 100, 130, 300, SWITCH); default KEYWORD(110, 100, 130, 300, DEFAULT); inline KEYWORD(110, 100, 0, 0, INLINE_TOK); noinline KEYWORD(110, 100, 0, 0, NOINLINE); -volatile KEYWORD(110, 100, 0, 0, VOLATILE); public KEYWORD(110, 100, 0, 0, PUBLIC_TOK); static KEYWORD(110, 100, 0, 0, STATIC); extern KEYWORD(110, 100, 0, 0, EXTERN); @@ -486,31 +531,6 @@ active KEYWORD(130, 300, 0, 0, ACTIVE); superp KEYWORD(130, 100, 0, 0, SUPERP); samplerBuffer KEYWORD(130, 300, 140, 0, SAMPLERBUFFER); filter KEYWORD(130, 300, 0, 0, FILTER); -image1D KEYWORD(130, 300, 0, 0, IMAGE1D); -image2D KEYWORD(130, 300, 0, 0, IMAGE2D); -image3D KEYWORD(130, 300, 0, 0, IMAGE3D); -imageCube KEYWORD(130, 300, 0, 0, IMAGECUBE); -iimage1D KEYWORD(130, 300, 0, 0, IIMAGE1D); -iimage2D KEYWORD(130, 300, 0, 0, IIMAGE2D); -iimage3D KEYWORD(130, 300, 0, 0, IIMAGE3D); -iimageCube KEYWORD(130, 300, 0, 0, IIMAGECUBE); -uimage1D KEYWORD(130, 300, 0, 0, UIMAGE1D); -uimage2D KEYWORD(130, 300, 0, 0, UIMAGE2D); -uimage3D KEYWORD(130, 300, 0, 0, UIMAGE3D); -uimageCube KEYWORD(130, 300, 0, 0, UIMAGECUBE); -image1DArray KEYWORD(130, 300, 0, 0, IMAGE1DARRAY); -image2DArray KEYWORD(130, 300, 0, 0, IMAGE2DARRAY); -iimage1DArray KEYWORD(130, 300, 0, 0, IIMAGE1DARRAY); -iimage2DArray KEYWORD(130, 300, 0, 0, IIMAGE2DARRAY); -uimage1DArray KEYWORD(130, 300, 0, 0, UIMAGE1DARRAY); -uimage2DArray KEYWORD(130, 300, 0, 0, UIMAGE2DARRAY); -image1DShadow KEYWORD(130, 300, 0, 0, IMAGE1DSHADOW); -image2DShadow KEYWORD(130, 300, 0, 0, IMAGE2DSHADOW); -image1DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE1DARRAYSHADOW); -image2DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE2DARRAYSHADOW); -imageBuffer KEYWORD(130, 300, 0, 0, IMAGEBUFFER); -iimageBuffer KEYWORD(130, 300, 0, 0, IIMAGEBUFFER); -uimageBuffer KEYWORD(130, 300, 0, 0, UIMAGEBUFFER); row_major KEYWORD_WITH_ALT(130, 0, 140, 0, yyextra->ARB_uniform_buffer_object_enable && !yyextra->es_shader, ROW_MAJOR); /* Additional reserved words in GLSL 1.40 */ @@ -520,10 +540,6 @@ isamplerBuffer KEYWORD(140, 300, 140, 0, ISAMPLERBUFFER); usamplerBuffer KEYWORD(140, 300, 140, 0, USAMPLERBUFFER); /* Additional reserved words in GLSL ES 3.00 */ -coherent KEYWORD(0, 300, 0, 0, COHERENT); -restrict KEYWORD(0, 300, 0, 0, RESTRICT); -readonly KEYWORD(0, 300, 0, 0, READONLY); -writeonly KEYWORD(0, 300, 0, 0, WRITEONLY); resource KEYWORD(0, 300, 0, 0, RESOURCE); patch KEYWORD(0, 300, 0, 0, PATCH); sample KEYWORD_WITH_ALT(400, 300, 400, 0, yyextra->ARB_gpu_shader5_enable, SAMPLE); diff --git a/3rdparty/glsl-optimizer/src/glsl/glsl_optimizer.cpp b/3rdparty/glsl-optimizer/src/glsl/glsl_optimizer.cpp index 488dc7f7b..ee4a3179f 100644 --- a/3rdparty/glsl-optimizer/src/glsl/glsl_optimizer.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/glsl_optimizer.cpp @@ -75,12 +75,14 @@ struct glslopt_ctx { glslopt_ctx (glslopt_target target) { mem_ctx = ralloc_context (NULL); initialize_mesa_context (&mesa_ctx, target); + max_unroll_iterations = 8; } ~glslopt_ctx() { ralloc_free (mem_ctx); } struct gl_context mesa_ctx; void* mem_ctx; + unsigned int max_unroll_iterations; }; glslopt_ctx* glslopt_initialize (glslopt_target target) @@ -94,6 +96,11 @@ void glslopt_cleanup (glslopt_ctx* ctx) _mesa_destroy_shader_compiler(); } +void glslopt_set_max_unroll_iterations (glslopt_ctx* ctx, unsigned iterations) +{ + ctx->max_unroll_iterations = iterations; +} + struct glslopt_shader_input { const char* name; @@ -284,7 +291,7 @@ static bool propagate_precision(exec_list* list) } -static void do_optimization_passes(exec_list* ir, bool linked, _mesa_glsl_parse_state* state, void* mem_ctx) +static void do_optimization_passes(exec_list* ir, bool linked, unsigned max_unroll_iterations, _mesa_glsl_parse_state* state, void* mem_ctx) { bool progress; do { @@ -336,7 +343,7 @@ static void do_optimization_passes(exec_list* ir, bool linked, _mesa_glsl_parse_ loop_state *ls = analyze_loop_variables(ir); if (ls->loop_found) { progress2 = set_loop_controls(ir, ls); progress |= progress2; if (progress2) debug_print_ir ("After set loop", ir, state, mem_ctx); - progress2 = unroll_loops(ir, ls, 8); progress |= progress2; if (progress2) debug_print_ir ("After unroll", ir, state, mem_ctx); + progress2 = unroll_loops(ir, ls, max_unroll_iterations); progress |= progress2; if (progress2) debug_print_ir ("After unroll", ir, state, mem_ctx); } delete ls; } @@ -443,7 +450,7 @@ glslopt_shader* glslopt_optimize (glslopt_ctx* ctx, glslopt_shader_type type, co if (!state->error && !ir->is_empty()) { const bool linked = !(options & kGlslOptionNotFullShader); - do_optimization_passes(ir, linked, state, shader); + do_optimization_passes(ir, linked, ctx->max_unroll_iterations, state, shader); validate_ir_tree(ir); } diff --git a/3rdparty/glsl-optimizer/src/glsl/glsl_optimizer.h b/3rdparty/glsl-optimizer/src/glsl/glsl_optimizer.h index a724aed52..6f95f4608 100644 --- a/3rdparty/glsl-optimizer/src/glsl/glsl_optimizer.h +++ b/3rdparty/glsl-optimizer/src/glsl/glsl_optimizer.h @@ -45,6 +45,8 @@ enum glslopt_target { glslopt_ctx* glslopt_initialize (glslopt_target target); void glslopt_cleanup (glslopt_ctx* ctx); +void glslopt_set_max_unroll_iterations (glslopt_ctx* ctx, unsigned iterations); + glslopt_shader* glslopt_optimize (glslopt_ctx* ctx, glslopt_shader_type type, const char* shaderSource, unsigned options); bool glslopt_get_status (glslopt_shader* shader); const char* glslopt_get_output (glslopt_shader* shader); diff --git a/3rdparty/glsl-optimizer/src/glsl/glsl_parser.cpp b/3rdparty/glsl-optimizer/src/glsl/glsl_parser.cpp index 0d7c103f0..a462b6ef6 100644 --- a/3rdparty/glsl-optimizer/src/glsl/glsl_parser.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/glsl_parser.cpp @@ -274,136 +274,148 @@ extern int _mesa_glsl_debug; ISAMPLER2DMSARRAY = 343, USAMPLER2DMSARRAY = 344, SAMPLEREXTERNALOES = 345, - ATOMIC_UINT = 346, - STRUCT = 347, - VOID_TOK = 348, - WHILE = 349, - IDENTIFIER = 350, - TYPE_IDENTIFIER = 351, - NEW_IDENTIFIER = 352, - FLOATCONSTANT = 353, - INTCONSTANT = 354, - UINTCONSTANT = 355, - BOOLCONSTANT = 356, - FIELD_SELECTION = 357, - LEFT_OP = 358, - RIGHT_OP = 359, - INC_OP = 360, - DEC_OP = 361, - LE_OP = 362, - GE_OP = 363, - EQ_OP = 364, - NE_OP = 365, - AND_OP = 366, - OR_OP = 367, - XOR_OP = 368, - MUL_ASSIGN = 369, - DIV_ASSIGN = 370, - ADD_ASSIGN = 371, - MOD_ASSIGN = 372, - LEFT_ASSIGN = 373, - RIGHT_ASSIGN = 374, - AND_ASSIGN = 375, - XOR_ASSIGN = 376, - OR_ASSIGN = 377, - SUB_ASSIGN = 378, - INVARIANT = 379, - LOWP = 380, - MEDIUMP = 381, - HIGHP = 382, - SUPERP = 383, - PRECISION = 384, - VERSION_TOK = 385, - EXTENSION = 386, - LINE = 387, - COLON = 388, - EOL = 389, - INTERFACE = 390, - OUTPUT = 391, - PRAGMA_DEBUG_ON = 392, - PRAGMA_DEBUG_OFF = 393, - PRAGMA_OPTIMIZE_ON = 394, - PRAGMA_OPTIMIZE_OFF = 395, - PRAGMA_INVARIANT_ALL = 396, - LAYOUT_TOK = 397, - ASM = 398, - CLASS = 399, - UNION = 400, - ENUM = 401, - TYPEDEF = 402, - TEMPLATE = 403, - THIS = 404, - PACKED_TOK = 405, - GOTO = 406, - INLINE_TOK = 407, - NOINLINE = 408, - VOLATILE = 409, - PUBLIC_TOK = 410, - STATIC = 411, - EXTERN = 412, - EXTERNAL = 413, - LONG_TOK = 414, - SHORT_TOK = 415, - DOUBLE_TOK = 416, - HALF = 417, - FIXED_TOK = 418, - UNSIGNED = 419, - INPUT_TOK = 420, - OUPTUT = 421, - HVEC2 = 422, - HVEC3 = 423, - HVEC4 = 424, - DVEC2 = 425, - DVEC3 = 426, - DVEC4 = 427, - FVEC2 = 428, - FVEC3 = 429, - FVEC4 = 430, - SAMPLER3DRECT = 431, - SIZEOF = 432, - CAST = 433, - NAMESPACE = 434, - USING = 435, - COHERENT = 436, - RESTRICT = 437, - READONLY = 438, - WRITEONLY = 439, - RESOURCE = 440, - PATCH = 441, - SAMPLE = 442, - SUBROUTINE = 443, - ERROR_TOK = 444, - COMMON = 445, - PARTITION = 446, - ACTIVE = 447, - FILTER = 448, - IMAGE1D = 449, - IMAGE2D = 450, - IMAGE3D = 451, - IMAGECUBE = 452, - IMAGE1DARRAY = 453, - IMAGE2DARRAY = 454, - IIMAGE1D = 455, - IIMAGE2D = 456, - IIMAGE3D = 457, - IIMAGECUBE = 458, - IIMAGE1DARRAY = 459, - IIMAGE2DARRAY = 460, - UIMAGE1D = 461, - UIMAGE2D = 462, - UIMAGE3D = 463, - UIMAGECUBE = 464, - UIMAGE1DARRAY = 465, - UIMAGE2DARRAY = 466, - IMAGE1DSHADOW = 467, - IMAGE2DSHADOW = 468, - IMAGEBUFFER = 469, - IIMAGEBUFFER = 470, - UIMAGEBUFFER = 471, - IMAGE1DARRAYSHADOW = 472, - IMAGE2DARRAYSHADOW = 473, - ROW_MAJOR = 474, - THEN = 475 + IMAGE1D = 346, + IMAGE2D = 347, + IMAGE3D = 348, + IMAGE2DRECT = 349, + IMAGECUBE = 350, + IMAGEBUFFER = 351, + IMAGE1DARRAY = 352, + IMAGE2DARRAY = 353, + IMAGECUBEARRAY = 354, + IMAGE2DMS = 355, + IMAGE2DMSARRAY = 356, + IIMAGE1D = 357, + IIMAGE2D = 358, + IIMAGE3D = 359, + IIMAGE2DRECT = 360, + IIMAGECUBE = 361, + IIMAGEBUFFER = 362, + IIMAGE1DARRAY = 363, + IIMAGE2DARRAY = 364, + IIMAGECUBEARRAY = 365, + IIMAGE2DMS = 366, + IIMAGE2DMSARRAY = 367, + UIMAGE1D = 368, + UIMAGE2D = 369, + UIMAGE3D = 370, + UIMAGE2DRECT = 371, + UIMAGECUBE = 372, + UIMAGEBUFFER = 373, + UIMAGE1DARRAY = 374, + UIMAGE2DARRAY = 375, + UIMAGECUBEARRAY = 376, + UIMAGE2DMS = 377, + UIMAGE2DMSARRAY = 378, + IMAGE1DSHADOW = 379, + IMAGE2DSHADOW = 380, + IMAGE1DARRAYSHADOW = 381, + IMAGE2DARRAYSHADOW = 382, + COHERENT = 383, + VOLATILE = 384, + RESTRICT = 385, + READONLY = 386, + WRITEONLY = 387, + ATOMIC_UINT = 388, + STRUCT = 389, + VOID_TOK = 390, + WHILE = 391, + IDENTIFIER = 392, + TYPE_IDENTIFIER = 393, + NEW_IDENTIFIER = 394, + FLOATCONSTANT = 395, + INTCONSTANT = 396, + UINTCONSTANT = 397, + BOOLCONSTANT = 398, + FIELD_SELECTION = 399, + LEFT_OP = 400, + RIGHT_OP = 401, + INC_OP = 402, + DEC_OP = 403, + LE_OP = 404, + GE_OP = 405, + EQ_OP = 406, + NE_OP = 407, + AND_OP = 408, + OR_OP = 409, + XOR_OP = 410, + MUL_ASSIGN = 411, + DIV_ASSIGN = 412, + ADD_ASSIGN = 413, + MOD_ASSIGN = 414, + LEFT_ASSIGN = 415, + RIGHT_ASSIGN = 416, + AND_ASSIGN = 417, + XOR_ASSIGN = 418, + OR_ASSIGN = 419, + SUB_ASSIGN = 420, + INVARIANT = 421, + LOWP = 422, + MEDIUMP = 423, + HIGHP = 424, + SUPERP = 425, + PRECISION = 426, + VERSION_TOK = 427, + EXTENSION = 428, + LINE = 429, + COLON = 430, + EOL = 431, + INTERFACE = 432, + OUTPUT = 433, + PRAGMA_DEBUG_ON = 434, + PRAGMA_DEBUG_OFF = 435, + PRAGMA_OPTIMIZE_ON = 436, + PRAGMA_OPTIMIZE_OFF = 437, + PRAGMA_INVARIANT_ALL = 438, + LAYOUT_TOK = 439, + ASM = 440, + CLASS = 441, + UNION = 442, + ENUM = 443, + TYPEDEF = 444, + TEMPLATE = 445, + THIS = 446, + PACKED_TOK = 447, + GOTO = 448, + INLINE_TOK = 449, + NOINLINE = 450, + PUBLIC_TOK = 451, + STATIC = 452, + EXTERN = 453, + EXTERNAL = 454, + LONG_TOK = 455, + SHORT_TOK = 456, + DOUBLE_TOK = 457, + HALF = 458, + FIXED_TOK = 459, + UNSIGNED = 460, + INPUT_TOK = 461, + OUPTUT = 462, + HVEC2 = 463, + HVEC3 = 464, + HVEC4 = 465, + DVEC2 = 466, + DVEC3 = 467, + DVEC4 = 468, + FVEC2 = 469, + FVEC3 = 470, + FVEC4 = 471, + SAMPLER3DRECT = 472, + SIZEOF = 473, + CAST = 474, + NAMESPACE = 475, + USING = 476, + RESOURCE = 477, + PATCH = 478, + SAMPLE = 479, + SUBROUTINE = 480, + ERROR_TOK = 481, + COMMON = 482, + PARTITION = 483, + ACTIVE = 484, + FILTER = 485, + ROW_MAJOR = 486, + THEN = 487 }; #endif @@ -451,7 +463,7 @@ typedef union YYSTYPE /* Line 387 of yacc.c */ -#line 455 "src/glsl/glsl_parser.cpp" +#line 467 "src/glsl/glsl_parser.cpp" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -491,7 +503,7 @@ int _mesa_glsl_parse (); /* Copy the second part of user declarations. */ /* Line 390 of yacc.c */ -#line 495 "src/glsl/glsl_parser.cpp" +#line 507 "src/glsl/glsl_parser.cpp" #ifdef short # undef short @@ -722,40 +734,40 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 4108 +#define YYLAST 5407 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 245 +#define YYNTOKENS 257 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 108 /* YYNRULES -- Number of rules. */ -#define YYNRULES 342 +#define YYNRULES 380 /* YYNRULES -- Number of states. */ -#define YYNSTATES 494 +#define YYNSTATES 532 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 475 +#define YYMAXUTOK 487 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const yytype_uint8 yytranslate[] = +static const yytype_uint16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 229, 2, 2, 2, 233, 236, 2, - 221, 222, 231, 227, 226, 228, 225, 232, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 240, 242, - 234, 241, 235, 239, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 241, 2, 2, 2, 245, 248, 2, + 233, 234, 243, 239, 238, 240, 237, 244, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 252, 254, + 246, 253, 247, 251, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 223, 2, 224, 237, 2, 2, 2, 2, 2, + 2, 235, 2, 236, 249, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 243, 238, 244, 230, 2, 2, 2, + 2, 2, 2, 255, 250, 256, 242, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -790,7 +802,8 @@ static const yytype_uint8 yytranslate[] = 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220 + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232 }; #if YYDEBUG @@ -816,7 +829,7 @@ static const yytype_uint16 yyprhs[] = 438, 440, 442, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 473, 476, 479, 482, 485, 488, 490, 492, 494, 496, 498, 500, 502, 504, - 507, 511, 515, 520, 522, 525, 527, 529, 531, 533, + 506, 508, 510, 512, 514, 517, 521, 525, 530, 532, 535, 537, 539, 541, 543, 545, 547, 549, 551, 553, 555, 557, 559, 561, 563, 565, 567, 569, 571, 573, 575, 577, 579, 581, 583, 585, 587, 589, 591, 593, @@ -824,74 +837,79 @@ static const yytype_uint16 yyprhs[] = 615, 617, 619, 621, 623, 625, 627, 629, 631, 633, 635, 637, 639, 641, 643, 645, 647, 649, 651, 653, 655, 657, 659, 661, 663, 665, 667, 669, 671, 673, - 679, 684, 686, 689, 693, 695, 699, 701, 704, 706, - 710, 715, 717, 721, 723, 725, 727, 729, 731, 733, - 735, 737, 739, 742, 743, 748, 750, 752, 755, 759, - 761, 764, 766, 769, 775, 779, 781, 783, 788, 794, - 797, 801, 805, 808, 810, 813, 816, 819, 821, 824, - 830, 838, 845, 847, 849, 851, 852, 855, 859, 862, - 865, 868, 872, 875, 877, 879, 881, 883, 886, 888, - 891, 899, 901, 903, 905, 906, 908, 911, 913, 916, - 920, 924, 928 + 675, 677, 679, 681, 683, 685, 687, 689, 691, 693, + 695, 697, 699, 701, 703, 705, 707, 709, 711, 713, + 715, 717, 719, 721, 723, 725, 727, 729, 731, 733, + 735, 737, 739, 741, 743, 745, 747, 749, 755, 760, + 762, 765, 769, 771, 775, 777, 780, 782, 786, 791, + 793, 797, 799, 801, 803, 805, 807, 809, 811, 813, + 815, 818, 819, 824, 826, 828, 831, 835, 837, 840, + 842, 845, 851, 855, 857, 859, 864, 870, 873, 877, + 881, 884, 886, 889, 892, 895, 897, 900, 906, 914, + 921, 923, 925, 927, 928, 931, 935, 938, 941, 944, + 948, 951, 953, 955, 957, 959, 962, 964, 967, 975, + 977, 979, 981, 982, 984, 987, 989, 992, 996, 1000, + 1004 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 246, 0, -1, -1, 248, 250, 247, 253, -1, -1, - 130, 99, 134, -1, 130, 99, 251, 134, -1, 137, - 134, -1, 138, 134, -1, 139, 134, -1, 140, 134, - -1, 141, 134, -1, -1, 250, 252, -1, 95, -1, - 96, -1, 97, -1, 131, 251, 133, 251, 134, -1, - 344, -1, 253, 344, -1, 95, -1, 97, -1, 254, - -1, 99, -1, 100, -1, 98, -1, 101, -1, 221, - 285, 222, -1, 255, -1, 256, 223, 257, 224, -1, - 258, -1, 256, 225, 251, -1, 256, 105, -1, 256, - 106, -1, 285, -1, 259, -1, 260, -1, 256, 225, - 265, -1, 262, 222, -1, 261, 222, -1, 263, 93, - -1, 263, -1, 263, 283, -1, 262, 226, 283, -1, - 264, 221, -1, 310, -1, 254, -1, 102, -1, 267, - 222, -1, 266, 222, -1, 268, 93, -1, 268, -1, - 268, 283, -1, 267, 226, 283, -1, 254, 221, -1, - 256, -1, 105, 269, -1, 106, 269, -1, 270, 269, - -1, 227, -1, 228, -1, 229, -1, 230, -1, 269, - -1, 271, 231, 269, -1, 271, 232, 269, -1, 271, - 233, 269, -1, 271, -1, 272, 227, 271, -1, 272, - 228, 271, -1, 272, -1, 273, 103, 272, -1, 273, - 104, 272, -1, 273, -1, 274, 234, 273, -1, 274, - 235, 273, -1, 274, 107, 273, -1, 274, 108, 273, - -1, 274, -1, 275, 109, 274, -1, 275, 110, 274, - -1, 275, -1, 276, 236, 275, -1, 276, -1, 277, - 237, 276, -1, 277, -1, 278, 238, 277, -1, 278, - -1, 279, 111, 278, -1, 279, -1, 280, 113, 279, - -1, 280, -1, 281, 112, 280, -1, 281, -1, 281, - 239, 285, 240, 283, -1, 282, -1, 269, 284, 283, - -1, 241, -1, 114, -1, 115, -1, 117, -1, 116, - -1, 123, -1, 118, -1, 119, -1, 120, -1, 121, - -1, 122, -1, 283, -1, 285, 226, 283, -1, 282, - -1, 288, 242, -1, 297, 242, -1, 129, 313, 310, - 242, -1, 346, -1, 289, 222, -1, 291, -1, 290, - -1, 291, 293, -1, 290, 226, 293, -1, 299, 254, - 221, -1, 310, 251, -1, 310, 251, 309, -1, 294, - 292, -1, 294, 296, -1, -1, 4, 294, -1, 295, - 294, -1, 313, 294, -1, 33, -1, 34, -1, 35, - -1, 310, -1, 298, -1, 297, 226, 251, -1, 297, - 226, 251, 309, -1, 297, 226, 251, 309, 241, 319, - -1, 297, 226, 251, 241, 319, -1, 299, -1, 299, - 251, -1, 299, 251, 309, -1, 299, 251, 309, 241, - 319, -1, 299, 251, 241, 319, -1, 124, 254, -1, - 310, -1, 306, 310, -1, 142, 221, 301, 222, -1, - 303, -1, 301, 226, 303, -1, 99, -1, 100, -1, - 251, -1, 251, 241, 302, -1, 304, -1, 219, -1, - 150, -1, 40, -1, 39, -1, 38, -1, 124, -1, - 307, -1, 308, -1, 305, -1, 300, -1, 313, -1, - 124, 306, -1, 305, 306, -1, 300, 306, -1, 307, - 306, -1, 308, 306, -1, 313, 306, -1, 32, -1, - 187, -1, 4, -1, 3, -1, 37, -1, 33, -1, - 34, -1, 36, -1, 223, 224, -1, 223, 286, 224, - -1, 309, 223, 224, -1, 309, 223, 286, 224, -1, - 311, -1, 311, 309, -1, 312, -1, 314, -1, 96, - -1, 93, -1, 6, -1, 7, -1, 8, -1, 5, + 258, 0, -1, -1, 260, 262, 259, 265, -1, -1, + 172, 141, 176, -1, 172, 141, 263, 176, -1, 179, + 176, -1, 180, 176, -1, 181, 176, -1, 182, 176, + -1, 183, 176, -1, -1, 262, 264, -1, 137, -1, + 138, -1, 139, -1, 173, 263, 175, 263, 176, -1, + 356, -1, 265, 356, -1, 137, -1, 139, -1, 266, + -1, 141, -1, 142, -1, 140, -1, 143, -1, 233, + 297, 234, -1, 267, -1, 268, 235, 269, 236, -1, + 270, -1, 268, 237, 263, -1, 268, 147, -1, 268, + 148, -1, 297, -1, 271, -1, 272, -1, 268, 237, + 277, -1, 274, 234, -1, 273, 234, -1, 275, 135, + -1, 275, -1, 275, 295, -1, 274, 238, 295, -1, + 276, 233, -1, 322, -1, 266, -1, 144, -1, 279, + 234, -1, 278, 234, -1, 280, 135, -1, 280, -1, + 280, 295, -1, 279, 238, 295, -1, 266, 233, -1, + 268, -1, 147, 281, -1, 148, 281, -1, 282, 281, + -1, 239, -1, 240, -1, 241, -1, 242, -1, 281, + -1, 283, 243, 281, -1, 283, 244, 281, -1, 283, + 245, 281, -1, 283, -1, 284, 239, 283, -1, 284, + 240, 283, -1, 284, -1, 285, 145, 284, -1, 285, + 146, 284, -1, 285, -1, 286, 246, 285, -1, 286, + 247, 285, -1, 286, 149, 285, -1, 286, 150, 285, + -1, 286, -1, 287, 151, 286, -1, 287, 152, 286, + -1, 287, -1, 288, 248, 287, -1, 288, -1, 289, + 249, 288, -1, 289, -1, 290, 250, 289, -1, 290, + -1, 291, 153, 290, -1, 291, -1, 292, 155, 291, + -1, 292, -1, 293, 154, 292, -1, 293, -1, 293, + 251, 297, 252, 295, -1, 294, -1, 281, 296, 295, + -1, 253, -1, 156, -1, 157, -1, 159, -1, 158, + -1, 165, -1, 160, -1, 161, -1, 162, -1, 163, + -1, 164, -1, 295, -1, 297, 238, 295, -1, 294, + -1, 300, 254, -1, 309, 254, -1, 171, 325, 322, + 254, -1, 358, -1, 301, 234, -1, 303, -1, 302, + -1, 303, 305, -1, 302, 238, 305, -1, 311, 266, + 233, -1, 322, 263, -1, 322, 263, 321, -1, 306, + 304, -1, 306, 308, -1, -1, 4, 306, -1, 307, + 306, -1, 325, 306, -1, 33, -1, 34, -1, 35, + -1, 322, -1, 310, -1, 309, 238, 263, -1, 309, + 238, 263, 321, -1, 309, 238, 263, 321, 253, 331, + -1, 309, 238, 263, 253, 331, -1, 311, -1, 311, + 263, -1, 311, 263, 321, -1, 311, 263, 321, 253, + 331, -1, 311, 263, 253, 331, -1, 166, 266, -1, + 322, -1, 318, 322, -1, 184, 233, 313, 234, -1, + 315, -1, 313, 238, 315, -1, 141, -1, 142, -1, + 263, -1, 263, 253, 314, -1, 316, -1, 231, -1, + 192, -1, 40, -1, 39, -1, 38, -1, 166, -1, + 319, -1, 320, -1, 317, -1, 312, -1, 325, -1, + 166, 318, -1, 317, 318, -1, 312, 318, -1, 319, + 318, -1, 320, 318, -1, 325, 318, -1, 32, -1, + 224, -1, 4, -1, 3, -1, 37, -1, 33, -1, + 34, -1, 36, -1, 128, -1, 129, -1, 130, -1, + 131, -1, 132, -1, 235, 236, -1, 235, 298, 236, + -1, 321, 235, 236, -1, 321, 235, 298, 236, -1, + 323, -1, 323, 321, -1, 324, -1, 326, -1, 138, + -1, 135, -1, 6, -1, 7, -1, 8, -1, 5, -1, 29, -1, 30, -1, 31, -1, 20, -1, 21, -1, 22, -1, 23, -1, 24, -1, 25, -1, 26, -1, 27, -1, 28, -1, 41, -1, 42, -1, 43, @@ -904,74 +922,84 @@ static const yytype_int16 yyrhs[] = -1, 82, -1, 69, -1, 70, -1, 71, -1, 79, -1, 72, -1, 73, -1, 74, -1, 75, -1, 83, -1, 76, -1, 84, -1, 85, -1, 86, -1, 87, - -1, 88, -1, 89, -1, 91, -1, 127, -1, 126, - -1, 125, -1, 92, 251, 243, 315, 244, -1, 92, - 243, 315, 244, -1, 316, -1, 315, 316, -1, 299, - 317, 242, -1, 318, -1, 317, 226, 318, -1, 251, - -1, 251, 309, -1, 283, -1, 243, 320, 244, -1, - 243, 320, 226, 244, -1, 319, -1, 320, 226, 319, - -1, 287, -1, 324, -1, 323, -1, 321, -1, 329, - -1, 330, -1, 333, -1, 339, -1, 343, -1, 243, - 244, -1, -1, 243, 325, 328, 244, -1, 327, -1, - 323, -1, 243, 244, -1, 243, 328, 244, -1, 322, - -1, 328, 322, -1, 242, -1, 285, 242, -1, 14, - 221, 285, 222, 331, -1, 322, 12, 322, -1, 322, - -1, 285, -1, 299, 251, 241, 319, -1, 17, 221, - 285, 222, 334, -1, 243, 244, -1, 243, 338, 244, - -1, 18, 285, 240, -1, 19, 240, -1, 335, -1, - 336, 335, -1, 336, 322, -1, 337, 322, -1, 337, - -1, 338, 337, -1, 94, 221, 332, 222, 326, -1, - 11, 322, 94, 221, 285, 222, 242, -1, 13, 221, - 340, 342, 222, 326, -1, 329, -1, 321, -1, 332, - -1, -1, 341, 242, -1, 341, 242, 285, -1, 10, - 242, -1, 9, 242, -1, 16, 242, -1, 16, 285, - 242, -1, 15, 242, -1, 345, -1, 287, -1, 249, - -1, 352, -1, 288, 327, -1, 347, -1, 300, 347, - -1, 348, 97, 243, 350, 244, 349, 242, -1, 33, - -1, 34, -1, 36, -1, -1, 97, -1, 97, 309, - -1, 351, -1, 351, 350, -1, 299, 317, 242, -1, - 300, 36, 242, -1, 300, 33, 242, -1, 300, 34, - 242, -1 + -1, 88, -1, 89, -1, 91, -1, 92, -1, 93, + -1, 94, -1, 95, -1, 96, -1, 97, -1, 98, + -1, 99, -1, 100, -1, 101, -1, 102, -1, 103, + -1, 104, -1, 105, -1, 106, -1, 107, -1, 108, + -1, 109, -1, 110, -1, 111, -1, 112, -1, 113, + -1, 114, -1, 115, -1, 116, -1, 117, -1, 118, + -1, 119, -1, 120, -1, 121, -1, 122, -1, 123, + -1, 133, -1, 169, -1, 168, -1, 167, -1, 134, + 263, 255, 327, 256, -1, 134, 255, 327, 256, -1, + 328, -1, 327, 328, -1, 311, 329, 254, -1, 330, + -1, 329, 238, 330, -1, 263, -1, 263, 321, -1, + 295, -1, 255, 332, 256, -1, 255, 332, 238, 256, + -1, 331, -1, 332, 238, 331, -1, 299, -1, 336, + -1, 335, -1, 333, -1, 341, -1, 342, -1, 345, + -1, 351, -1, 355, -1, 255, 256, -1, -1, 255, + 337, 340, 256, -1, 339, -1, 335, -1, 255, 256, + -1, 255, 340, 256, -1, 334, -1, 340, 334, -1, + 254, -1, 297, 254, -1, 14, 233, 297, 234, 343, + -1, 334, 12, 334, -1, 334, -1, 297, -1, 311, + 263, 253, 331, -1, 17, 233, 297, 234, 346, -1, + 255, 256, -1, 255, 350, 256, -1, 18, 297, 252, + -1, 19, 252, -1, 347, -1, 348, 347, -1, 348, + 334, -1, 349, 334, -1, 349, -1, 350, 349, -1, + 136, 233, 344, 234, 338, -1, 11, 334, 136, 233, + 297, 234, 254, -1, 13, 233, 352, 354, 234, 338, + -1, 341, -1, 333, -1, 344, -1, -1, 353, 254, + -1, 353, 254, 297, -1, 10, 254, -1, 9, 254, + -1, 16, 254, -1, 16, 297, 254, -1, 15, 254, + -1, 357, -1, 299, -1, 261, -1, 364, -1, 300, + 339, -1, 359, -1, 312, 359, -1, 360, 139, 255, + 362, 256, 361, 254, -1, 33, -1, 34, -1, 36, + -1, -1, 139, -1, 139, 321, -1, 363, -1, 363, + 362, -1, 311, 329, 254, -1, 312, 36, 254, -1, + 312, 33, 254, -1, 312, 34, 254, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 298, 298, 297, 309, 311, 318, 328, 329, 330, - 331, 332, 345, 347, 351, 352, 353, 357, 366, 374, - 385, 386, 390, 397, 404, 411, 418, 425, 432, 433, - 439, 443, 450, 456, 465, 469, 473, 474, 483, 484, - 488, 489, 493, 499, 511, 515, 521, 528, 538, 539, - 543, 544, 548, 554, 566, 577, 578, 584, 590, 600, - 601, 602, 603, 607, 608, 614, 620, 629, 630, 636, - 645, 646, 652, 661, 662, 668, 674, 680, 689, 690, - 696, 705, 706, 715, 716, 725, 726, 735, 736, 745, - 746, 755, 756, 765, 766, 775, 776, 785, 786, 787, - 788, 789, 790, 791, 792, 793, 794, 795, 799, 803, - 819, 823, 828, 832, 837, 844, 848, 849, 853, 858, - 866, 880, 890, 904, 909, 922, 926, 934, 946, 959, - 965, 971, 981, 986, 987, 997, 1007, 1017, 1031, 1038, - 1047, 1056, 1065, 1074, 1088, 1095, 1106, 1113, 1114, 1124, - 1125, 1129, 1249, 1319, 1345, 1351, 1360, 1366, 1372, 1382, - 1388, 1389, 1390, 1391, 1392, 1411, 1424, 1452, 1475, 1490, - 1510, 1524, 1530, 1538, 1544, 1550, 1556, 1562, 1568, 1577, - 1582, 1587, 1601, 1616, 1617, 1625, 1631, 1637, 1646, 1647, - 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, - 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, - 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, - 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, - 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, - 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, - 1708, 1709, 1710, 1711, 1712, 1713, 1717, 1722, 1727, 1735, - 1743, 1752, 1757, 1765, 1784, 1789, 1797, 1803, 1812, 1813, - 1817, 1824, 1831, 1838, 1844, 1845, 1849, 1850, 1851, 1852, - 1853, 1854, 1858, 1865, 1864, 1878, 1879, 1883, 1889, 1898, - 1908, 1920, 1926, 1935, 1944, 1949, 1957, 1961, 1979, 1987, - 1992, 2000, 2005, 2013, 2021, 2029, 2037, 2045, 2053, 2061, - 2068, 2075, 2085, 2086, 2090, 2092, 2098, 2103, 2112, 2118, - 2124, 2130, 2136, 2145, 2146, 2147, 2148, 2152, 2166, 2170, - 2181, 2278, 2284, 2290, 2300, 2304, 2309, 2317, 2322, 2330, - 2354, 2362, 2392 + 0, 300, 300, 299, 311, 313, 320, 330, 331, 332, + 333, 334, 347, 349, 353, 354, 355, 359, 368, 376, + 387, 388, 392, 399, 406, 413, 420, 427, 434, 435, + 441, 445, 452, 458, 467, 471, 475, 476, 485, 486, + 490, 491, 495, 501, 513, 517, 523, 530, 540, 541, + 545, 546, 550, 556, 568, 579, 580, 586, 592, 602, + 603, 604, 605, 609, 610, 616, 622, 631, 632, 638, + 647, 648, 654, 663, 664, 670, 676, 682, 691, 692, + 698, 707, 708, 717, 718, 727, 728, 737, 738, 747, + 748, 757, 758, 767, 768, 777, 778, 787, 788, 789, + 790, 791, 792, 793, 794, 795, 796, 797, 801, 805, + 821, 825, 830, 834, 839, 846, 850, 851, 855, 860, + 868, 882, 892, 906, 911, 924, 928, 936, 948, 961, + 967, 973, 983, 988, 989, 999, 1009, 1019, 1033, 1040, + 1049, 1058, 1067, 1076, 1090, 1097, 1108, 1115, 1116, 1126, + 1127, 1131, 1317, 1415, 1441, 1447, 1456, 1462, 1468, 1478, + 1484, 1485, 1486, 1487, 1488, 1507, 1520, 1548, 1571, 1586, + 1606, 1620, 1626, 1634, 1640, 1646, 1652, 1658, 1664, 1670, + 1675, 1680, 1686, 1691, 1699, 1704, 1709, 1723, 1738, 1739, + 1747, 1753, 1759, 1768, 1769, 1770, 1771, 1772, 1773, 1774, + 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, + 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, + 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, + 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, + 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, + 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, + 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, + 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, + 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, + 1865, 1866, 1867, 1868, 1872, 1877, 1882, 1890, 1898, 1907, + 1912, 1920, 1939, 1944, 1952, 1958, 1967, 1968, 1972, 1979, + 1986, 1993, 1999, 2000, 2004, 2005, 2006, 2007, 2008, 2009, + 2013, 2020, 2019, 2033, 2034, 2038, 2044, 2053, 2063, 2075, + 2081, 2090, 2099, 2104, 2112, 2116, 2134, 2142, 2147, 2155, + 2160, 2168, 2176, 2184, 2192, 2200, 2208, 2216, 2223, 2230, + 2240, 2241, 2245, 2247, 2253, 2258, 2267, 2273, 2279, 2285, + 2291, 2300, 2301, 2302, 2303, 2307, 2321, 2325, 2336, 2433, + 2439, 2445, 2455, 2459, 2464, 2472, 2477, 2485, 2509, 2517, + 2578 }; #endif @@ -998,36 +1026,39 @@ static const char *const yytname[] = "ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLER2DRECTSHADOW", "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS", "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", - "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", "ATOMIC_UINT", "STRUCT", - "VOID_TOK", "WHILE", "IDENTIFIER", "TYPE_IDENTIFIER", "NEW_IDENTIFIER", - "FLOATCONSTANT", "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT", - "FIELD_SELECTION", "LEFT_OP", "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", - "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN", - "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", - "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "SUB_ASSIGN", "INVARIANT", - "LOWP", "MEDIUMP", "HIGHP", "SUPERP", "PRECISION", "VERSION_TOK", - "EXTENSION", "LINE", "COLON", "EOL", "INTERFACE", "OUTPUT", - "PRAGMA_DEBUG_ON", "PRAGMA_DEBUG_OFF", "PRAGMA_OPTIMIZE_ON", - "PRAGMA_OPTIMIZE_OFF", "PRAGMA_INVARIANT_ALL", "LAYOUT_TOK", "ASM", - "CLASS", "UNION", "ENUM", "TYPEDEF", "TEMPLATE", "THIS", "PACKED_TOK", - "GOTO", "INLINE_TOK", "NOINLINE", "VOLATILE", "PUBLIC_TOK", "STATIC", - "EXTERN", "EXTERNAL", "LONG_TOK", "SHORT_TOK", "DOUBLE_TOK", "HALF", - "FIXED_TOK", "UNSIGNED", "INPUT_TOK", "OUPTUT", "HVEC2", "HVEC3", + "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", "IMAGE1D", "IMAGE2D", + "IMAGE3D", "IMAGE2DRECT", "IMAGECUBE", "IMAGEBUFFER", "IMAGE1DARRAY", + "IMAGE2DARRAY", "IMAGECUBEARRAY", "IMAGE2DMS", "IMAGE2DMSARRAY", + "IIMAGE1D", "IIMAGE2D", "IIMAGE3D", "IIMAGE2DRECT", "IIMAGECUBE", + "IIMAGEBUFFER", "IIMAGE1DARRAY", "IIMAGE2DARRAY", "IIMAGECUBEARRAY", + "IIMAGE2DMS", "IIMAGE2DMSARRAY", "UIMAGE1D", "UIMAGE2D", "UIMAGE3D", + "UIMAGE2DRECT", "UIMAGECUBE", "UIMAGEBUFFER", "UIMAGE1DARRAY", + "UIMAGE2DARRAY", "UIMAGECUBEARRAY", "UIMAGE2DMS", "UIMAGE2DMSARRAY", + "IMAGE1DSHADOW", "IMAGE2DSHADOW", "IMAGE1DARRAYSHADOW", + "IMAGE2DARRAYSHADOW", "COHERENT", "VOLATILE", "RESTRICT", "READONLY", + "WRITEONLY", "ATOMIC_UINT", "STRUCT", "VOID_TOK", "WHILE", "IDENTIFIER", + "TYPE_IDENTIFIER", "NEW_IDENTIFIER", "FLOATCONSTANT", "INTCONSTANT", + "UINTCONSTANT", "BOOLCONSTANT", "FIELD_SELECTION", "LEFT_OP", "RIGHT_OP", + "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP", + "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN", + "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", + "OR_ASSIGN", "SUB_ASSIGN", "INVARIANT", "LOWP", "MEDIUMP", "HIGHP", + "SUPERP", "PRECISION", "VERSION_TOK", "EXTENSION", "LINE", "COLON", + "EOL", "INTERFACE", "OUTPUT", "PRAGMA_DEBUG_ON", "PRAGMA_DEBUG_OFF", + "PRAGMA_OPTIMIZE_ON", "PRAGMA_OPTIMIZE_OFF", "PRAGMA_INVARIANT_ALL", + "LAYOUT_TOK", "ASM", "CLASS", "UNION", "ENUM", "TYPEDEF", "TEMPLATE", + "THIS", "PACKED_TOK", "GOTO", "INLINE_TOK", "NOINLINE", "PUBLIC_TOK", + "STATIC", "EXTERN", "EXTERNAL", "LONG_TOK", "SHORT_TOK", "DOUBLE_TOK", + "HALF", "FIXED_TOK", "UNSIGNED", "INPUT_TOK", "OUPTUT", "HVEC2", "HVEC3", "HVEC4", "DVEC2", "DVEC3", "DVEC4", "FVEC2", "FVEC3", "FVEC4", - "SAMPLER3DRECT", "SIZEOF", "CAST", "NAMESPACE", "USING", "COHERENT", - "RESTRICT", "READONLY", "WRITEONLY", "RESOURCE", "PATCH", "SAMPLE", - "SUBROUTINE", "ERROR_TOK", "COMMON", "PARTITION", "ACTIVE", "FILTER", - "IMAGE1D", "IMAGE2D", "IMAGE3D", "IMAGECUBE", "IMAGE1DARRAY", - "IMAGE2DARRAY", "IIMAGE1D", "IIMAGE2D", "IIMAGE3D", "IIMAGECUBE", - "IIMAGE1DARRAY", "IIMAGE2DARRAY", "UIMAGE1D", "UIMAGE2D", "UIMAGE3D", - "UIMAGECUBE", "UIMAGE1DARRAY", "UIMAGE2DARRAY", "IMAGE1DSHADOW", - "IMAGE2DSHADOW", "IMAGEBUFFER", "IIMAGEBUFFER", "UIMAGEBUFFER", - "IMAGE1DARRAYSHADOW", "IMAGE2DARRAYSHADOW", "ROW_MAJOR", "THEN", "'('", - "')'", "'['", "']'", "'.'", "','", "'+'", "'-'", "'!'", "'~'", "'*'", - "'/'", "'%'", "'<'", "'>'", "'&'", "'^'", "'|'", "'?'", "':'", "'='", - "';'", "'{'", "'}'", "$accept", "translation_unit", "$@1", - "version_statement", "pragma_statement", "extension_statement_list", - "any_identifier", "extension_statement", "external_declaration_list", + "SAMPLER3DRECT", "SIZEOF", "CAST", "NAMESPACE", "USING", "RESOURCE", + "PATCH", "SAMPLE", "SUBROUTINE", "ERROR_TOK", "COMMON", "PARTITION", + "ACTIVE", "FILTER", "ROW_MAJOR", "THEN", "'('", "')'", "'['", "']'", + "'.'", "','", "'+'", "'-'", "'!'", "'~'", "'*'", "'/'", "'%'", "'<'", + "'>'", "'&'", "'^'", "'|'", "'?'", "':'", "'='", "';'", "'{'", "'}'", + "$accept", "translation_unit", "$@1", "version_statement", + "pragma_statement", "extension_statement_list", "any_identifier", + "extension_statement", "external_declaration_list", "variable_identifier", "primary_expression", "postfix_expression", "integer_expression", "function_call", "function_call_or_method", "function_call_generic", "function_call_header_no_parameters", @@ -1095,50 +1126,55 @@ static const yytype_uint16 yytoknum[] = 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 40, 41, 91, 93, 46, 44, 43, 45, 33, - 126, 42, 47, 37, 60, 62, 38, 94, 124, 63, - 58, 61, 59, 123, 125 + 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 40, 41, 91, 93, 46, 44, 43, + 45, 33, 126, 42, 47, 37, 60, 62, 38, 94, + 124, 63, 58, 61, 59, 123, 125 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 245, 247, 246, 248, 248, 248, 249, 249, 249, - 249, 249, 250, 250, 251, 251, 251, 252, 253, 253, - 254, 254, 255, 255, 255, 255, 255, 255, 256, 256, - 256, 256, 256, 256, 257, 258, 259, 259, 260, 260, - 261, 261, 262, 262, 263, 264, 264, 264, 265, 265, - 266, 266, 267, 267, 268, 269, 269, 269, 269, 270, - 270, 270, 270, 271, 271, 271, 271, 272, 272, 272, - 273, 273, 273, 274, 274, 274, 274, 274, 275, 275, - 275, 276, 276, 277, 277, 278, 278, 279, 279, 280, - 280, 281, 281, 282, 282, 283, 283, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, 285, 285, - 286, 287, 287, 287, 287, 288, 289, 289, 290, 290, - 291, 292, 292, 293, 293, 294, 294, 294, 294, 295, - 295, 295, 296, 297, 297, 297, 297, 297, 298, 298, - 298, 298, 298, 298, 299, 299, 300, 301, 301, 302, - 302, 303, 303, 303, 304, 304, 305, 305, 305, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 307, 307, 308, 308, 308, 308, 308, 308, 309, - 309, 309, 309, 310, 310, 311, 311, 311, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 313, 313, 313, 314, - 314, 315, 315, 316, 317, 317, 318, 318, 319, 319, - 319, 320, 320, 321, 322, 322, 323, 323, 323, 323, - 323, 323, 324, 325, 324, 326, 326, 327, 327, 328, - 328, 329, 329, 330, 331, 331, 332, 332, 333, 334, - 334, 335, 335, 336, 336, 337, 337, 338, 338, 339, - 339, 339, 340, 340, 341, 341, 342, 342, 343, 343, - 343, 343, 343, 344, 344, 344, 344, 345, 346, 346, - 347, 348, 348, 348, 349, 349, 349, 350, 350, 351, - 352, 352, 352 + 0, 257, 259, 258, 260, 260, 260, 261, 261, 261, + 261, 261, 262, 262, 263, 263, 263, 264, 265, 265, + 266, 266, 267, 267, 267, 267, 267, 267, 268, 268, + 268, 268, 268, 268, 269, 270, 271, 271, 272, 272, + 273, 273, 274, 274, 275, 276, 276, 276, 277, 277, + 278, 278, 279, 279, 280, 281, 281, 281, 281, 282, + 282, 282, 282, 283, 283, 283, 283, 284, 284, 284, + 285, 285, 285, 286, 286, 286, 286, 286, 287, 287, + 287, 288, 288, 289, 289, 290, 290, 291, 291, 292, + 292, 293, 293, 294, 294, 295, 295, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 297, 297, + 298, 299, 299, 299, 299, 300, 301, 301, 302, 302, + 303, 304, 304, 305, 305, 306, 306, 306, 306, 307, + 307, 307, 308, 309, 309, 309, 309, 309, 310, 310, + 310, 310, 310, 310, 311, 311, 312, 313, 313, 314, + 314, 315, 315, 315, 316, 316, 317, 317, 317, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 319, 319, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 321, 321, 321, 321, 322, 322, + 323, 323, 323, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 325, 325, 325, 326, 326, 327, + 327, 328, 329, 329, 330, 330, 331, 331, 331, 332, + 332, 333, 334, 334, 335, 335, 335, 335, 335, 335, + 336, 337, 336, 338, 338, 339, 339, 340, 340, 341, + 341, 342, 343, 343, 344, 344, 345, 346, 346, 347, + 347, 348, 348, 349, 349, 350, 350, 351, 351, 351, + 352, 352, 353, 353, 354, 354, 355, 355, 355, 355, + 355, 356, 356, 356, 356, 357, 358, 358, 359, 360, + 360, 360, 361, 361, 361, 362, 362, 363, 364, 364, + 364 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -1161,24 +1197,28 @@ static const yytype_uint8 yyr2[] = 3, 5, 4, 2, 1, 2, 4, 1, 3, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 3, 3, 4, 1, 2, 1, 1, 1, 1, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 3, 3, 4, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, - 4, 1, 2, 3, 1, 3, 1, 2, 1, 3, - 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 0, 4, 1, 1, 2, 3, 1, - 2, 1, 2, 5, 3, 1, 1, 4, 5, 2, - 3, 3, 2, 1, 2, 2, 2, 1, 2, 5, - 7, 6, 1, 1, 1, 0, 2, 3, 2, 2, - 2, 3, 2, 1, 1, 1, 1, 2, 1, 2, - 7, 1, 1, 1, 0, 1, 2, 1, 2, 3, - 3, 3, 3 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 5, 4, 1, + 2, 3, 1, 3, 1, 2, 1, 3, 4, 1, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 0, 4, 1, 1, 2, 3, 1, 2, 1, + 2, 5, 3, 1, 1, 4, 5, 2, 3, 3, + 2, 1, 2, 2, 2, 1, 2, 5, 7, 6, + 1, 1, 1, 0, 2, 3, 2, 2, 2, 3, + 2, 1, 1, 1, 1, 2, 1, 2, 7, 1, + 1, 1, 0, 1, 2, 1, 2, 3, 3, 3, + 3 }; /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. @@ -1187,516 +1227,214 @@ static const yytype_uint8 yyr2[] = static const yytype_uint16 yydefact[] = { 4, 0, 0, 12, 0, 1, 2, 14, 15, 16, - 5, 0, 0, 0, 13, 6, 0, 174, 173, 192, - 189, 190, 191, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 193, 194, 195, 171, 176, 177, 178, 175, - 158, 157, 156, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 217, 218, 220, 221, 223, 224, - 225, 226, 227, 229, 230, 231, 232, 234, 235, 236, - 237, 239, 240, 241, 243, 244, 245, 246, 248, 216, - 233, 242, 222, 228, 238, 247, 249, 250, 251, 252, - 253, 254, 219, 255, 0, 188, 187, 159, 258, 257, - 256, 0, 0, 0, 0, 0, 0, 0, 172, 325, - 3, 324, 0, 0, 117, 125, 0, 133, 138, 163, - 162, 0, 160, 161, 144, 183, 185, 164, 186, 18, - 323, 114, 328, 0, 326, 0, 0, 0, 176, 177, - 178, 20, 21, 159, 143, 163, 165, 0, 7, 8, - 9, 10, 11, 0, 19, 111, 0, 327, 115, 125, - 125, 129, 130, 131, 118, 0, 125, 125, 0, 112, - 14, 16, 139, 0, 176, 177, 178, 167, 329, 166, - 145, 168, 169, 0, 184, 170, 0, 0, 0, 0, - 261, 0, 0, 155, 154, 151, 0, 147, 153, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 23, - 24, 26, 47, 0, 0, 0, 59, 60, 61, 62, - 291, 283, 287, 22, 28, 55, 30, 35, 36, 0, - 0, 41, 0, 63, 0, 67, 70, 73, 78, 81, - 83, 85, 87, 89, 91, 93, 95, 108, 0, 273, - 0, 163, 144, 276, 289, 275, 274, 0, 277, 278, - 279, 280, 281, 119, 126, 123, 124, 132, 127, 128, - 134, 0, 140, 120, 341, 342, 340, 179, 63, 110, - 0, 45, 0, 0, 17, 266, 0, 264, 260, 262, - 0, 113, 0, 146, 0, 319, 318, 0, 0, 0, - 322, 320, 0, 0, 0, 56, 57, 0, 282, 0, - 32, 33, 0, 0, 39, 38, 0, 188, 42, 44, - 98, 99, 101, 100, 103, 104, 105, 106, 107, 102, - 97, 0, 58, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 13, 6, 0, 174, 173, 197, + 194, 195, 196, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 198, 199, 200, 171, 176, 177, 178, 175, + 158, 157, 156, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 222, 223, 225, 226, 228, 229, + 230, 231, 232, 234, 235, 236, 237, 239, 240, 241, + 242, 244, 245, 246, 248, 249, 250, 251, 253, 221, + 238, 247, 227, 233, 243, 252, 254, 255, 256, 257, + 258, 259, 224, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 179, 180, 181, 182, + 183, 293, 0, 193, 192, 159, 296, 295, 294, 0, + 0, 0, 0, 0, 0, 0, 172, 363, 3, 362, + 0, 0, 117, 125, 0, 133, 138, 163, 162, 0, + 160, 161, 144, 188, 190, 164, 191, 18, 361, 114, + 366, 0, 364, 0, 0, 0, 176, 177, 178, 20, + 21, 159, 143, 163, 165, 0, 7, 8, 9, 10, + 11, 0, 19, 111, 0, 365, 115, 125, 125, 129, + 130, 131, 118, 0, 125, 125, 0, 112, 14, 16, + 139, 0, 176, 177, 178, 167, 367, 166, 145, 168, + 169, 0, 189, 170, 0, 0, 0, 0, 299, 0, + 0, 155, 154, 151, 0, 147, 153, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 25, 23, 24, 26, + 47, 0, 0, 0, 59, 60, 61, 62, 329, 321, + 325, 22, 28, 55, 30, 35, 36, 0, 0, 41, + 0, 63, 0, 67, 70, 73, 78, 81, 83, 85, + 87, 89, 91, 93, 95, 108, 0, 311, 0, 163, + 144, 314, 327, 313, 312, 0, 315, 316, 317, 318, + 319, 119, 126, 123, 124, 132, 127, 128, 134, 0, + 140, 120, 379, 380, 378, 184, 63, 110, 0, 45, + 0, 0, 17, 304, 0, 302, 298, 300, 0, 113, + 0, 146, 0, 357, 356, 0, 0, 0, 360, 358, + 0, 0, 0, 56, 57, 0, 320, 0, 32, 33, + 0, 0, 39, 38, 0, 193, 42, 44, 98, 99, + 101, 100, 103, 104, 105, 106, 107, 102, 97, 0, + 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 292, 288, 290, 121, 0, 135, - 0, 268, 142, 0, 180, 181, 0, 0, 0, 337, - 267, 0, 263, 259, 149, 150, 152, 148, 0, 313, - 312, 315, 0, 321, 0, 296, 0, 0, 27, 0, - 0, 34, 31, 0, 37, 0, 0, 51, 43, 96, - 64, 65, 66, 68, 69, 71, 72, 76, 77, 74, - 75, 79, 80, 82, 84, 86, 88, 90, 92, 0, - 109, 122, 137, 0, 271, 0, 141, 182, 0, 334, - 338, 265, 0, 314, 0, 0, 0, 0, 0, 0, - 284, 29, 54, 49, 48, 0, 188, 52, 0, 136, - 0, 269, 339, 335, 0, 0, 316, 0, 295, 293, - 0, 298, 0, 286, 309, 285, 53, 94, 270, 272, - 336, 330, 0, 317, 311, 0, 0, 0, 299, 303, - 0, 307, 0, 297, 310, 294, 0, 302, 305, 304, - 306, 300, 308, 301 + 0, 0, 330, 326, 328, 121, 0, 135, 0, 306, + 142, 0, 185, 186, 0, 0, 0, 375, 305, 0, + 301, 297, 149, 150, 152, 148, 0, 351, 350, 353, + 0, 359, 0, 334, 0, 0, 27, 0, 0, 34, + 31, 0, 37, 0, 0, 51, 43, 96, 64, 65, + 66, 68, 69, 71, 72, 76, 77, 74, 75, 79, + 80, 82, 84, 86, 88, 90, 92, 0, 109, 122, + 137, 0, 309, 0, 141, 187, 0, 372, 376, 303, + 0, 352, 0, 0, 0, 0, 0, 0, 322, 29, + 54, 49, 48, 0, 193, 52, 0, 136, 0, 307, + 377, 373, 0, 0, 354, 0, 333, 331, 0, 336, + 0, 324, 347, 323, 53, 94, 308, 310, 374, 368, + 0, 355, 349, 0, 0, 0, 337, 341, 0, 345, + 0, 335, 348, 332, 0, 340, 343, 342, 344, 338, + 346, 339 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 2, 13, 3, 109, 6, 285, 14, 110, 223, - 224, 225, 390, 226, 227, 228, 229, 230, 231, 232, - 394, 395, 396, 397, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 331, - 248, 280, 249, 250, 113, 114, 115, 265, 164, 165, - 166, 266, 116, 117, 118, 145, 196, 376, 197, 198, - 120, 121, 122, 123, 184, 281, 125, 126, 127, 128, - 189, 190, 286, 287, 362, 425, 253, 254, 255, 256, - 309, 464, 465, 257, 258, 259, 459, 387, 260, 461, - 479, 480, 481, 482, 261, 381, 434, 435, 262, 129, - 130, 131, 132, 133, 454, 368, 369, 134 + -1, 2, 13, 3, 147, 6, 323, 14, 148, 261, + 262, 263, 428, 264, 265, 266, 267, 268, 269, 270, + 432, 433, 434, 435, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 369, + 286, 318, 287, 288, 151, 152, 153, 303, 202, 203, + 204, 304, 154, 155, 156, 183, 234, 414, 235, 236, + 158, 159, 160, 161, 222, 319, 163, 164, 165, 166, + 227, 228, 324, 325, 400, 463, 291, 292, 293, 294, + 347, 502, 503, 295, 296, 297, 497, 425, 298, 499, + 517, 518, 519, 520, 299, 419, 472, 473, 300, 167, + 168, 169, 170, 171, 492, 406, 407, 172 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -374 +#define YYPACT_NINF -393 static const yytype_int16 yypact[] = { - -71, -49, 63, -374, -44, -374, -18, -374, -374, -374, - -374, 7, 115, 3617, -374, -374, -22, -374, -374, -374, - -374, -374, -374, -374, -374, -374, -374, -374, -374, -374, - -374, -374, -374, -374, -374, -374, 19, 24, 39, -374, - -374, -374, -374, -374, -374, -374, -374, -374, -374, -374, - -374, -374, -374, -374, -374, -374, -374, -374, -374, -374, - -374, -374, -374, -374, -374, -374, -374, -374, -374, -374, - -374, -374, -374, -374, -374, -374, -374, -374, -374, -374, - -374, -374, -374, -374, -374, -374, -374, -374, -374, -374, - -374, -374, -374, -374, -74, -374, -374, 224, -374, -374, - -374, 122, 10, 14, 17, 23, 33, -51, -374, -374, - 3617, -374, -151, -50, -41, 2, -187, -374, 187, 1377, - 3746, 4012, 3746, 3746, -374, -48, -374, 3746, -374, -374, - -374, -374, -374, 94, -374, 115, 3769, -17, -374, -374, - -374, -374, -374, 3746, -374, 3746, -374, 4012, -374, -374, - -374, -374, -374, -70, -374, -374, 479, -374, -374, 54, - 54, -374, -374, -374, -374, 4012, 54, 54, 115, -374, - -7, -1, -193, 22, -92, -80, -77, -374, -374, -374, - -374, -374, -374, 2873, 27, -374, 8, 106, 115, 1191, - -374, 3769, 3, -374, -374, 12, -143, -374, -374, 13, - 26, 1850, 44, 45, 29, 2756, 48, 51, -374, -374, - -374, -374, -374, 3297, 3297, 3297, -374, -374, -374, -374, - -374, 30, -374, 55, -374, -59, -374, -374, -374, 64, - -89, 3406, 68, -46, 3297, 75, -124, 98, -76, 97, - 57, 53, 59, 184, 186, -101, -374, -374, -141, -374, - 60, 3865, 80, -374, -374, -374, -374, 721, -374, -374, - -374, -374, -374, -374, -374, -374, -374, 115, -374, -374, - -185, 2647, -180, -374, -374, -374, -374, -374, -374, -374, - 85, -374, 3195, 3769, -374, -48, -133, -374, -374, -374, - 1400, -374, 117, -374, -70, -374, -374, 210, 2319, 3297, - -374, -374, -130, 3297, 2984, -374, -374, -39, -374, 1850, - -374, -374, 3297, 187, -374, -374, 3297, 88, -374, -374, - -374, -374, -374, -374, -374, -374, -374, -374, -374, -374, - -374, 3297, -374, 3297, 3297, 3297, 3297, 3297, 3297, 3297, - 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, - 3297, 3297, 3297, 3297, -374, -374, -374, -48, 2647, -163, - 2647, -374, -374, 2647, -374, -374, 87, 115, 70, 3769, - 27, 115, -374, -374, -374, -374, -374, -374, 91, -374, - -374, 2984, -29, -374, -28, 89, 115, 96, -374, 963, - 92, 89, -374, 99, -374, 100, -26, 3508, -374, -374, - -374, -374, -374, 75, 75, -124, -124, 98, 98, 98, - 98, -76, -76, 97, 57, 53, 59, 184, 186, -186, - -374, 27, -374, 2647, -374, -144, -374, -374, -128, 226, - -374, -374, 3297, -374, 101, 123, 1850, 103, 111, 2091, - -374, -374, -374, -374, -374, 3297, 125, -374, 3297, -374, - 2545, -374, -374, -48, 102, -23, 3297, 2091, 341, -374, - -5, -374, 2647, -374, -374, -374, -374, -374, -374, -374, - 27, -374, 112, 89, -374, 1850, 3297, 118, -374, -374, - 1609, 1850, -3, -374, -374, -374, -116, -374, -374, -374, - -374, -374, 1850, -374 + -85, -88, 33, -393, -94, -393, -133, -393, -393, -393, + -393, -80, -75, 4754, -393, -393, -67, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, 12, 19, 36, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -115, -393, -393, 261, -393, -393, -393, 41, + -64, -48, 24, 29, 37, -51, -393, -393, 4754, -393, + -132, -41, -23, 1, -147, -393, 86, 35, 5064, 5269, + 5064, 5064, -393, -6, -393, 5064, -393, -393, -393, -393, + -393, 88, -393, -75, 4943, -24, -393, -393, -393, -393, + -393, 5064, -393, 5064, -393, 5269, -393, -393, -393, -393, + -393, -83, -393, -393, 517, -393, -393, 17, 17, -393, + -393, -393, -393, 5269, 17, 17, -75, -393, 10, 27, + -204, 38, -125, -121, -113, -393, -393, -393, -393, -393, + -393, 3639, 15, -393, 2, 69, -75, 1265, -393, 4943, + 22, -393, -393, 13, -148, -393, -393, 23, 25, 1999, + 45, 50, 31, 3176, 53, 54, -393, -393, -393, -393, + -393, 4085, 4085, 4085, -393, -393, -393, -393, -393, 34, + -393, 56, -393, -101, -393, -393, -393, 57, -145, 4308, + 63, 181, 4085, -3, -96, 42, -108, 66, 55, 60, + 52, 151, 152, -126, -393, -393, -140, -393, 59, 5083, + 77, -393, -393, -393, -393, 771, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -75, -393, -393, -187, 2953, + -175, -393, -393, -393, -393, -393, -393, -393, 75, -393, + 3862, 4943, -393, -6, -138, -393, -393, -393, 1502, -393, + 79, -393, -83, -393, -393, 176, 2492, 4085, -393, -393, + -127, 4085, 3416, -393, -393, -117, -393, 1999, -393, -393, + 4085, 86, -393, -393, 4085, 80, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, 4085, + -393, 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, + 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, + 4085, 4085, -393, -393, -393, -6, 2953, -159, 2953, -393, + -393, 2953, -393, -393, 81, -75, 62, 4943, 15, -75, + -393, -393, -393, -393, -393, -393, 83, -393, -393, 3416, + -89, -393, -58, 82, -75, 85, -393, 1025, 90, 82, + -393, 89, -393, 87, -40, 4531, -393, -393, -393, -393, + -393, -3, -3, -96, -96, 42, 42, 42, 42, -108, + -108, 66, 55, 60, 52, 151, 152, -173, -393, 15, + -393, 2953, -393, -161, -393, -393, -112, 185, -393, -393, + 4085, -393, 73, 94, 1999, 76, 95, 2252, -393, -393, + -393, -393, -393, 4085, 96, -393, 4085, -393, 2730, -393, + -393, -6, 93, -39, 4085, 2252, 321, -393, -10, -393, + 2953, -393, -393, -393, -393, -393, -393, -393, 15, -393, + 98, 82, -393, 1999, 4085, 97, -393, -393, 1746, 1999, + -8, -393, -393, -393, -139, -393, -393, -393, -393, -393, + 1999, -393 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -374, -374, -374, -374, -374, -374, 0, -374, -374, -94, - -374, -374, -374, -374, -374, -374, -374, -374, -374, -374, - -374, -374, -374, -374, -9, -374, -114, -105, -111, -107, - 9, 16, 11, 18, 20, 6, -374, -150, -145, -374, - -197, 78, 15, 21, -374, -374, -374, -374, 202, -6, - -374, -374, -374, -374, -127, -11, -374, -374, 71, -374, - -374, -78, -374, -374, -165, -13, -374, -374, -20, -374, - 171, -160, 4, -2, -241, -374, 66, -200, -373, -374, - -374, -85, 261, 65, 77, -374, -374, -4, -374, -374, - -100, -374, -103, -374, -374, -374, -374, -374, -374, 271, - -374, -374, -109, -374, -374, 25, -374, -374 + -393, -393, -393, -393, -393, -393, 0, -393, -393, -119, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -14, -393, -141, -124, -111, -110, + -49, -35, -33, -32, -34, -12, -393, -196, -239, -393, + -240, 61, 6, 7, -393, -393, -393, -393, 159, -27, + -393, -393, -393, -393, -168, -11, -393, -393, 44, -393, + -393, -77, -393, -393, -203, -13, -393, -393, 58, -393, + 149, -210, -26, -29, -369, -393, 46, -238, -392, -393, + -393, -109, 233, 40, 48, -393, -393, -31, -393, -393, + -123, -393, -135, -393, -393, -393, -393, -393, -393, 248, + -393, -393, -142, -393, -393, -5, -393, -393 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -334 +#define YYTABLE_NINF -372 static const yytype_int16 yytable[] = { - 124, 297, 119, 144, 11, -331, 160, 272, 302, 188, - 178, 351, 16, 476, 477, 476, 477, -332, 307, 146, - -333, 7, 8, 9, 173, 7, 8, 9, 111, 289, - 183, 340, 341, 279, 112, 161, 162, 163, 183, 168, - 353, 177, 179, 282, 181, 182, 310, 311, 271, 185, - 4, 7, 8, 9, 448, 169, 358, 356, 160, 1, - 282, 363, 188, 5, 188, 146, 463, 177, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 423, 293, - 193, 147, 450, 294, 463, 353, 318, 161, 162, 163, - 10, 155, 156, 371, 137, 167, 353, 124, 371, 119, - 451, 354, 382, 336, 337, 359, 384, 385, 180, 372, - 353, 135, 383, 12, 452, 391, -331, 422, 172, 424, - 370, -332, 426, 124, 493, 111, 361, 98, 99, 100, - 289, 112, 279, 315, 192, 187, -333, 316, 352, 167, - 167, 15, 178, 252, 148, 251, 167, 167, 149, 194, - 274, 150, 267, 195, 264, 419, 367, 151, 342, 343, - 268, 269, 275, 188, 312, 276, 313, 152, 270, 136, - 153, 398, 158, 177, 278, 183, 124, 386, 124, 98, - 99, 100, 449, 388, 385, 159, 399, 353, 252, 356, - 251, 186, 421, 436, 437, 330, 444, 353, 353, 472, - 445, 338, 339, 353, 305, 306, 344, 345, 420, 469, - 7, 8, 9, 361, -20, 361, 374, 375, 361, 393, - -21, 483, 403, 404, -116, 332, 191, 17, 18, 407, - 408, 409, 410, 405, 406, 455, 458, 411, 412, 478, - 284, 491, 367, 273, 252, 291, 251, 98, 99, 100, - 282, 283, 447, 292, 386, 295, 35, 138, 139, 473, - 140, 39, 40, 41, 42, 298, 299, 357, 296, 303, - 124, 300, 304, 278, 308, 485, -46, 124, 361, 486, - 488, 490, 170, 8, 171, 252, 314, 251, 470, 319, - 347, 252, 490, 346, 195, 349, 252, 348, 251, 350, - 466, -45, 155, 467, 378, 361, 333, 334, 335, 364, - -40, 427, 432, 392, 429, 353, 441, 361, 439, 141, - 442, 142, 443, 453, 400, 401, 402, 278, 278, 278, - 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - 278, 278, 278, 456, 471, 457, 460, -50, 143, 98, - 99, 100, 462, 475, 484, 413, 124, 418, 487, 415, - 366, 263, 290, 414, 379, 377, 107, 416, 252, 431, - 417, 428, 474, 157, 389, 380, 252, 433, 251, 492, - 489, 154, 0, 0, 0, 0, 438, 0, 0, 0, - 0, 0, 0, 0, 430, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 252, 0, 251, 252, 0, 251, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 252, 0, 251, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 252, 0, 251, 0, 0, 252, 252, 251, - 251, 0, 0, 0, 0, 0, 0, 0, 0, 252, - 0, 251, 17, 18, 19, 20, 21, 22, 199, 200, - 201, 0, 202, 203, 204, 205, 206, 0, 0, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 207, 141, 96, 142, 208, 209, 210, - 211, 212, 0, 0, 213, 214, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 97, 98, 99, 100, 0, 101, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 220, 221, 222, 17, 18, 19, 20, 21, 22, - 199, 200, 201, 0, 202, 203, 204, 205, 206, 0, - 0, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 0, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 207, 141, 96, 142, 208, - 209, 210, 211, 212, 0, 0, 213, 214, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, - 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 220, 221, 355, 17, 18, 19, 20, - 21, 22, 199, 200, 201, 0, 202, 203, 204, 205, - 206, 0, 0, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 0, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 207, 141, 96, - 142, 208, 209, 210, 211, 212, 0, 0, 213, 214, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 97, 98, 99, - 100, 0, 101, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 17, 18, 19, 20, 21, 22, - 0, 0, 0, 0, 0, 220, 221, 440, 0, 0, - 0, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 138, 139, 0, 140, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 0, 0, 96, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 143, 98, 99, 100, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, - 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17, 18, 19, 20, 21, 22, 35, - 174, 175, 0, 176, 39, 40, 41, 42, 0, 0, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 138, 139, 288, 140, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 0, 0, 96, 0, 0, 0, - 0, 143, 98, 99, 100, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, - 0, 0, 0, 0, 143, 98, 99, 100, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 17, 18, 19, 20, 21, 22, 199, 200, - 201, 0, 202, 203, 204, 205, 206, 476, 477, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 373, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 207, 141, 96, 142, 208, 209, 210, - 211, 212, 0, 0, 213, 214, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 97, 98, 99, 100, 0, 101, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 220, 221, 17, 18, 19, 20, 21, 22, 199, - 200, 201, 0, 202, 203, 204, 205, 206, 0, 0, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 0, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 207, 141, 96, 142, 208, 209, - 210, 211, 212, 0, 0, 213, 214, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 97, 98, 99, 100, 0, 101, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 215, 0, 0, 0, 0, 0, 216, 217, 218, - 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 220, 221, 17, 18, 19, 20, 21, 22, - 199, 200, 201, 0, 202, 203, 204, 205, 206, 0, - 0, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 0, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 207, 141, 96, 142, 208, - 209, 210, 211, 212, 0, 0, 213, 214, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, - 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 17, 18, 19, 20, 21, 22, 0, 0, - 0, 0, 0, 220, 156, 0, 0, 0, 0, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 0, 141, 96, 142, 208, 209, 210, - 211, 212, 0, 0, 213, 214, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 97, 98, 99, 100, 0, 101, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, - 0, 220, 0, 0, 0, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 0, - 141, 96, 142, 208, 209, 210, 211, 212, 0, 0, - 213, 214, 19, 20, 21, 22, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 0, 141, 96, 142, 208, 209, 210, 211, 212, - 0, 0, 213, 214, 0, 0, 0, 0, 0, 0, - 0, 19, 20, 21, 22, 0, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 360, 468, - 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 0, 141, 96, 142, 208, 209, 210, 211, 212, 0, - 0, 213, 214, 0, 0, 0, 0, 0, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 19, 20, - 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, - 360, 0, 0, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 0, 141, 96, - 142, 208, 209, 210, 211, 212, 0, 215, 213, 214, - 0, 0, 0, 216, 217, 218, 219, 17, 18, 19, - 20, 21, 22, 0, 0, 0, 0, 0, 301, 0, - 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 138, 139, 0, - 140, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 0, 141, - 96, 142, 208, 209, 210, 211, 212, 0, 0, 213, - 214, 0, 0, 0, 215, 0, 0, 277, 0, 0, - 216, 217, 218, 219, 0, 0, 0, 0, 143, 98, - 99, 100, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 20, 21, 22, 0, 215, 0, 0, 0, 0, - 0, 216, 217, 218, 219, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 0, - 141, 96, 142, 208, 209, 210, 211, 212, 0, 0, - 213, 214, 19, 20, 21, 22, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 0, 141, 96, 142, 208, 209, 210, 211, 212, - 0, 0, 213, 214, 0, 0, 0, 0, 0, 0, - 0, 19, 20, 21, 22, 0, 215, 0, 0, 365, - 0, 0, 216, 217, 218, 219, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 317, - 0, 141, 96, 142, 208, 209, 210, 211, 212, 0, - 0, 213, 214, 19, 20, 21, 22, 0, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 446, 0, 141, 96, 142, 208, 209, 210, 211, - 212, 0, 0, 213, 214, 0, 0, 0, 0, 0, - 17, 18, 19, 20, 21, 22, 0, 215, 0, 0, - 0, 0, 0, 216, 217, 218, 219, 23, 24, 25, + 162, 335, 157, 340, 11, 198, 226, 310, 514, 515, + 514, 515, 16, 345, -369, 216, 182, 327, -370, 149, + 150, 198, 7, 8, 9, 317, -371, 460, 389, 462, + 356, 221, 464, 5, 199, 200, 201, 211, 17, 18, + 12, 378, 379, 7, 8, 9, 348, 349, 221, 309, + 199, 200, 201, 4, 7, 8, 9, 394, 184, 226, + 320, 226, 7, 8, 9, 391, 396, 35, 212, 213, + 399, 214, 39, 40, 41, 42, 320, 488, 401, 486, + 215, 217, 10, 219, 220, 501, 331, 1, 223, 353, + 332, 206, 487, 354, 461, 489, 15, 420, 391, 391, + 409, 422, 423, 501, 184, 397, 215, 207, 173, 231, + 429, 391, 186, 531, 392, 436, 410, 426, 327, 507, + 408, 391, 193, 194, 317, 390, 409, 421, 187, 312, + 437, 521, 175, 313, 350, 162, 351, 157, 380, 381, + 174, 314, 490, 374, 375, 474, 218, 216, 232, 391, + 457, -369, 458, 405, 149, 150, 210, 399, -370, 399, + 226, 162, 399, 126, 127, 128, 129, 130, 136, 137, + 138, 302, 230, 225, 424, -371, 475, 306, 307, 423, + 391, 290, 191, 289, 136, 137, 138, 376, 377, 394, + 305, 233, 459, 196, 482, 510, 485, 185, 483, 391, + 188, 181, 136, 137, 138, 189, 308, 316, 136, 137, + 138, 205, 215, 190, 162, 197, 162, 382, 383, 145, + 412, 413, 399, 208, 8, 209, 290, 224, 289, 221, + 493, 229, 431, 441, 442, -116, 496, 343, 344, 405, + 371, 372, 373, -20, 504, 322, 516, 505, 529, 399, + 320, 424, 443, 444, 511, 205, 205, 321, 370, 146, + -21, 399, 205, 205, 17, 18, 330, 445, 446, 447, + 448, 311, 449, 450, 524, 523, 329, 333, 336, 334, + 526, 528, 290, 337, 289, 338, 341, 342, 508, -46, + 346, 352, 528, 35, 176, 177, 357, 178, 39, 40, + 41, 42, 386, 384, 387, 395, 316, 388, 162, 385, + -45, 402, 416, 193, -40, 162, 470, 465, 467, 477, + 391, 481, 480, 290, 491, 289, 479, 494, 495, 290, + -50, 498, 233, 513, 290, 451, 289, 358, 359, 360, + 361, 362, 363, 364, 365, 366, 367, 509, 500, 525, + 452, 430, 522, 453, 455, 454, 301, 438, 439, 440, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 415, 456, 328, 466, + 469, 404, 417, 195, 418, 530, 512, 427, 471, 126, + 127, 128, 129, 130, 162, 527, 192, 0, 179, 0, + 180, 0, 468, 0, 0, 0, 290, 0, 0, 0, + 0, 0, 0, 0, 290, 0, 289, 0, 0, 0, + 0, 0, 0, 0, 476, 0, 0, 181, 136, 137, + 138, 0, 0, 0, 368, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 290, 0, 289, 290, 0, 289, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 290, 0, 289, 146, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 290, 0, 289, 0, 0, 290, 290, 289, 289, 0, + 0, 0, 0, 0, 0, 0, 0, 290, 0, 289, + 17, 18, 19, 20, 21, 22, 237, 238, 239, 0, + 240, 241, 242, 243, 244, 0, 0, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, @@ -1704,105 +1442,697 @@ static const yytype_int16 yytable[] = 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 0, 0, 96, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 215, - 0, 0, 0, 0, 0, 216, 217, 218, 219, 0, - 0, 97, 98, 99, 100, 0, 101, 0, 0, 17, - 18, 0, 0, 0, 102, 103, 104, 105, 106, 107, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 0, 0, 0, 0, 126, 127, 128, 129, 130, + 131, 132, 133, 245, 179, 134, 180, 246, 247, 248, + 249, 250, 0, 0, 251, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 17, 18, 19, 20, 21, 22, 35, 138, - 139, 0, 140, 39, 40, 41, 42, 0, 0, 23, + 0, 0, 0, 135, 136, 137, 138, 0, 139, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, + 253, 0, 0, 0, 0, 0, 254, 255, 256, 257, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 258, 259, 260, 17, 18, 19, 20, 21, 22, + 237, 238, 239, 0, 240, 241, 242, 243, 244, 0, + 0, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 0, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 0, 0, 0, 0, 126, + 127, 128, 129, 130, 131, 132, 133, 245, 179, 134, + 180, 246, 247, 248, 249, 250, 0, 0, 251, 252, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 135, 136, 137, + 138, 0, 139, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, + 0, 0, 0, 0, 253, 0, 0, 0, 0, 0, + 254, 255, 256, 257, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 258, 259, 393, 17, 18, + 19, 20, 21, 22, 237, 238, 239, 0, 240, 241, + 242, 243, 244, 0, 0, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 0, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 245, 179, 134, 180, 246, 247, 248, 249, 250, + 0, 0, 251, 252, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 135, 136, 137, 138, 0, 139, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, + 0, 0, 0, 0, 0, 0, 0, 0, 253, 0, + 0, 0, 0, 0, 254, 255, 256, 257, 17, 18, + 19, 20, 21, 22, 0, 0, 0, 0, 0, 258, + 259, 478, 0, 0, 0, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 176, 177, + 0, 178, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 0, 0, 134, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 181, 136, 137, 138, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 18, 19, 20, 21, + 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 326, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 176, 177, 0, 178, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 0, 0, + 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 181, 136, + 137, 138, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, + 18, 19, 20, 21, 22, 237, 238, 239, 411, 240, + 241, 242, 243, 244, 514, 515, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 0, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, + 132, 133, 245, 179, 134, 180, 246, 247, 248, 249, + 250, 0, 0, 251, 252, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 135, 136, 137, 138, 0, 139, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 146, 0, 0, 0, 0, 0, 0, 0, 0, 253, + 0, 0, 0, 0, 0, 254, 255, 256, 257, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 258, 259, 17, 18, 19, 20, 21, 22, 237, 238, + 239, 0, 240, 241, 242, 243, 244, 0, 0, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 138, 139, 108, 140, 39, 40, 41, 42, + 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 0, 0, 96, 0, 0, 17, 18, - 143, 98, 99, 100, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, - 0, 0, 0, 143, 98, 99, 100, 35, 36, 37, - 0, 38, 39, 40, 41, 42, 0, 0, 0, 0, - 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 0, 0, 0, 0, 126, 127, 128, + 129, 130, 131, 132, 133, 245, 179, 134, 180, 246, + 247, 248, 249, 250, 0, 0, 251, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, + 0, 0, 0, 0, 0, 135, 136, 137, 138, 0, + 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, - 98, 99, 100, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 19, 20, 21, - 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, + 0, 0, 253, 0, 0, 0, 0, 0, 254, 255, + 256, 257, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 258, 259, 17, 18, 19, 20, 21, + 22, 237, 238, 239, 0, 240, 241, 242, 243, 244, 0, 0, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, - 0, 0, 108, 43, 44, 45, 46, 47, 48, 49, + 31, 32, 33, 34, 35, 36, 37, 0, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 0, 0, 96 + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 245, 179, + 134, 180, 246, 247, 248, 249, 250, 0, 0, 251, + 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 135, 136, + 137, 138, 0, 139, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, + 0, 0, 0, 0, 0, 253, 0, 0, 0, 0, + 0, 254, 255, 256, 257, 17, 18, 19, 20, 21, + 22, 0, 0, 0, 0, 0, 258, 194, 0, 0, + 0, 0, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 0, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 0, 179, + 134, 180, 246, 247, 248, 249, 250, 0, 0, 251, + 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 135, 136, + 137, 138, 0, 139, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, + 0, 0, 0, 0, 0, 253, 0, 0, 0, 0, + 0, 254, 255, 256, 257, 19, 20, 21, 22, 0, + 0, 0, 0, 0, 0, 0, 258, 0, 0, 0, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 131, 132, 133, 0, 179, 134, 180, + 246, 247, 248, 249, 250, 0, 0, 251, 252, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, + 21, 22, 0, 253, 0, 0, 0, 0, 0, 254, + 255, 256, 257, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 398, 506, 0, 0, 0, + 0, 0, 0, 0, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 132, 133, 0, + 179, 134, 180, 246, 247, 248, 249, 250, 0, 0, + 251, 252, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 19, 20, 21, 22, 0, 253, 0, 0, 0, + 0, 0, 254, 255, 256, 257, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 398, 0, + 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, + 132, 133, 0, 179, 134, 180, 246, 247, 248, 249, + 250, 0, 0, 251, 252, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, + 0, 0, 0, 0, 0, 254, 255, 256, 257, 17, + 18, 19, 20, 21, 22, 0, 0, 0, 0, 0, + 339, 0, 0, 0, 0, 0, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 176, + 177, 0, 178, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, + 132, 133, 0, 179, 134, 180, 246, 247, 248, 249, + 250, 0, 0, 251, 252, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 181, 136, 137, 138, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 146, 0, 0, 0, 19, 20, 21, 22, 0, 253, + 0, 0, 0, 0, 0, 254, 255, 256, 257, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 131, 132, 133, 0, 179, 134, 180, 246, + 247, 248, 249, 250, 0, 0, 251, 252, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 19, 20, 21, + 22, 0, 253, 0, 0, 315, 0, 0, 254, 255, + 256, 257, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 132, 133, 0, 179, + 134, 180, 246, 247, 248, 249, 250, 0, 0, 251, + 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 19, 20, 21, 22, 0, 253, 0, 0, 403, 0, + 0, 254, 255, 256, 257, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, + 133, 0, 179, 134, 180, 246, 247, 248, 249, 250, + 0, 0, 251, 252, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 19, 20, 21, 22, 0, 253, 0, + 0, 0, 0, 0, 254, 255, 256, 257, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 131, 132, 355, 0, 179, 134, 180, 246, 247, + 248, 249, 250, 0, 0, 251, 252, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 19, 20, 21, 22, + 0, 253, 0, 0, 0, 0, 0, 254, 255, 256, + 257, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 131, 132, 484, 0, 179, 134, + 180, 246, 247, 248, 249, 250, 0, 0, 251, 252, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, 18, 19, + 20, 21, 22, 0, 253, 0, 0, 0, 0, 0, + 254, 255, 256, 257, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 0, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, + 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, + 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 135, 136, 137, 138, 0, 139, 0, 0, 0, 0, + 0, 0, 0, 140, 141, 142, 143, 144, 145, 0, + 0, 0, 0, 0, 0, 0, 17, 18, 19, 20, + 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 176, 177, 146, 178, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 17, 18, 0, + 0, 126, 127, 128, 129, 130, 131, 132, 133, 0, + 0, 134, 0, 0, 0, 0, 17, 18, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 176, 177, 0, + 178, 39, 40, 41, 42, 0, 0, 0, 0, 181, + 136, 137, 138, 0, 0, 35, 36, 37, 0, 38, + 39, 40, 41, 42, 0, 0, 0, 145, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 126, 127, 128, 129, 130, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 126, 127, 128, 129, 130, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 181, 136, 137, 138, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 145, 181, + 136, 137, 138, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, + 0, 0, 0, 0, 19, 20, 21, 22, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 146, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 0, 0, 0, 0, 0, 0, 146, 0, 0, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 131, 132, 133, 0, 0, 134 }; #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-374))) + (!!((Yystate) == (-393))) #define yytable_value_is_error(Yytable_value) \ YYID (0) static const yytype_int16 yycheck[] = { - 13, 201, 13, 97, 4, 97, 4, 172, 205, 136, - 119, 112, 12, 18, 19, 18, 19, 97, 215, 97, - 97, 95, 96, 97, 118, 95, 96, 97, 13, 189, - 223, 107, 108, 183, 13, 33, 34, 35, 223, 226, - 226, 119, 120, 223, 122, 123, 105, 106, 241, 127, - 99, 95, 96, 97, 240, 242, 241, 257, 4, 130, - 223, 241, 189, 0, 191, 143, 439, 145, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 241, 222, - 150, 101, 226, 226, 457, 226, 231, 33, 34, 35, - 134, 242, 243, 226, 94, 115, 226, 110, 226, 110, - 244, 242, 299, 227, 228, 270, 303, 304, 121, 242, - 226, 133, 242, 131, 242, 312, 97, 358, 118, 360, - 285, 97, 363, 136, 240, 110, 271, 125, 126, 127, - 290, 110, 282, 222, 147, 135, 97, 226, 239, 159, - 160, 134, 251, 156, 134, 156, 166, 167, 134, 219, - 242, 134, 165, 153, 160, 352, 283, 134, 234, 235, - 166, 167, 242, 290, 223, 242, 225, 134, 168, 243, - 221, 316, 222, 251, 183, 223, 189, 304, 191, 125, - 126, 127, 423, 222, 381, 226, 331, 226, 201, 389, - 201, 97, 357, 222, 222, 241, 222, 226, 226, 222, - 226, 103, 104, 226, 213, 214, 109, 110, 353, 450, - 95, 96, 97, 358, 221, 360, 99, 100, 363, 313, - 221, 462, 336, 337, 222, 234, 243, 3, 4, 340, - 341, 342, 343, 338, 339, 432, 436, 344, 345, 244, - 134, 244, 369, 221, 257, 242, 257, 125, 126, 127, - 223, 243, 397, 241, 381, 242, 32, 33, 34, 456, - 36, 37, 38, 39, 40, 221, 221, 267, 242, 221, - 283, 242, 221, 282, 244, 475, 221, 290, 423, 476, - 480, 481, 95, 96, 97, 298, 222, 298, 453, 221, - 237, 304, 492, 236, 294, 111, 309, 238, 309, 113, - 445, 221, 242, 448, 94, 450, 231, 232, 233, 224, - 222, 224, 221, 313, 244, 226, 224, 462, 222, 95, - 221, 97, 222, 97, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 242, 242, 222, 243, 222, 124, 125, - 126, 127, 241, 12, 242, 346, 369, 351, 240, 348, - 282, 159, 191, 347, 298, 294, 142, 349, 381, 371, - 350, 367, 457, 112, 309, 298, 389, 381, 389, 482, - 480, 110, -1, -1, -1, -1, 386, -1, -1, -1, - -1, -1, -1, -1, 369, -1, -1, -1, -1, -1, + 13, 239, 13, 243, 4, 4, 174, 210, 18, 19, + 18, 19, 12, 253, 139, 157, 135, 227, 139, 13, + 13, 4, 137, 138, 139, 221, 139, 396, 154, 398, + 269, 235, 401, 0, 33, 34, 35, 156, 3, 4, + 173, 149, 150, 137, 138, 139, 147, 148, 235, 253, + 33, 34, 35, 141, 137, 138, 139, 295, 135, 227, + 235, 229, 137, 138, 139, 238, 253, 32, 33, 34, + 309, 36, 37, 38, 39, 40, 235, 238, 253, 252, + 157, 158, 176, 160, 161, 477, 234, 172, 165, 234, + 238, 238, 461, 238, 253, 256, 176, 337, 238, 238, + 238, 341, 342, 495, 181, 308, 183, 254, 175, 192, + 350, 238, 176, 252, 254, 354, 254, 234, 328, 488, + 323, 238, 254, 255, 320, 251, 238, 254, 176, 254, + 369, 500, 132, 254, 235, 148, 237, 148, 246, 247, + 255, 254, 254, 239, 240, 234, 159, 289, 231, 238, + 390, 139, 391, 321, 148, 148, 156, 396, 139, 398, + 328, 174, 401, 128, 129, 130, 131, 132, 167, 168, + 169, 198, 185, 173, 342, 139, 234, 204, 205, 419, + 238, 194, 233, 194, 167, 168, 169, 145, 146, 427, + 203, 191, 395, 234, 234, 234, 435, 139, 238, 238, + 176, 166, 167, 168, 169, 176, 206, 221, 167, 168, + 169, 153, 289, 176, 227, 238, 229, 151, 152, 184, + 141, 142, 461, 137, 138, 139, 239, 139, 239, 235, + 470, 255, 351, 374, 375, 234, 474, 251, 252, 407, + 243, 244, 245, 233, 483, 176, 256, 486, 256, 488, + 235, 419, 376, 377, 494, 197, 198, 255, 272, 224, + 233, 500, 204, 205, 3, 4, 253, 378, 379, 380, + 381, 233, 382, 383, 514, 513, 254, 254, 233, 254, + 518, 519, 295, 233, 295, 254, 233, 233, 491, 233, + 256, 234, 530, 32, 33, 34, 233, 36, 37, 38, + 39, 40, 250, 248, 153, 305, 320, 155, 321, 249, + 233, 236, 136, 254, 234, 328, 233, 236, 256, 234, + 238, 234, 233, 336, 139, 336, 236, 254, 234, 342, + 234, 255, 332, 12, 347, 384, 347, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 254, 253, 252, + 385, 351, 254, 386, 388, 387, 197, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 332, 389, 229, 405, + 409, 320, 336, 150, 336, 520, 495, 347, 419, 128, + 129, 130, 131, 132, 407, 518, 148, -1, 137, -1, + 139, -1, 407, -1, -1, -1, 419, -1, -1, -1, + -1, -1, -1, -1, 427, -1, 427, -1, -1, -1, + -1, -1, -1, -1, 424, -1, -1, 166, 167, 168, + 169, -1, -1, -1, 253, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 184, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 187, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 436, -1, 436, 439, -1, 439, -1, + -1, 474, -1, 474, 477, -1, 477, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 457, -1, 457, -1, -1, -1, + -1, -1, 495, -1, 495, 224, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 475, -1, 475, -1, -1, 480, 481, 480, - 481, -1, -1, -1, -1, -1, -1, -1, -1, 492, - -1, 492, 3, 4, 5, 6, 7, 8, 9, 10, + 513, -1, 513, -1, -1, 518, 519, 518, 519, -1, + -1, -1, -1, -1, -1, -1, -1, 530, -1, 530, + 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, + 13, 14, 15, 16, 17, -1, -1, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, -1, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, -1, -1, -1, -1, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, -1, -1, 147, 148, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 166, 167, 168, 169, -1, 171, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 184, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 224, -1, -1, -1, -1, -1, -1, -1, -1, + 233, -1, -1, -1, -1, -1, 239, 240, 241, 242, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 254, 255, 256, 3, 4, 5, 6, 7, 8, + 9, 10, 11, -1, 13, 14, 15, 16, 17, -1, + -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, -1, -1, 147, 148, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 166, 167, 168, + 169, -1, 171, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 184, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 224, -1, -1, -1, -1, + -1, -1, -1, -1, 233, -1, -1, -1, -1, -1, + 239, 240, 241, 242, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 254, 255, 256, 3, 4, + 5, 6, 7, 8, 9, 10, 11, -1, 13, 14, + 15, 16, 17, -1, -1, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + -1, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, + -1, -1, -1, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + -1, -1, 147, 148, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 166, 167, 168, 169, -1, 171, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 184, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 224, + -1, -1, -1, -1, -1, -1, -1, -1, 233, -1, + -1, -1, -1, -1, 239, 240, 241, 242, 3, 4, + 5, 6, 7, 8, -1, -1, -1, -1, -1, 254, + 255, 256, -1, -1, -1, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + -1, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, + -1, -1, -1, 128, 129, 130, 131, 132, 133, 134, + 135, -1, -1, 138, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 166, 167, 168, 169, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 184, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 224, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, + 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 256, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + 128, 129, 130, 131, 132, 133, 134, 135, -1, -1, + 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 166, 167, + 168, 169, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 184, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 224, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 256, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, -1, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, -1, -1, 147, 148, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 166, 167, 168, 169, -1, 171, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 184, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 224, -1, -1, -1, -1, -1, -1, -1, -1, 233, + -1, -1, -1, -1, -1, 239, 240, 241, 242, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 254, 255, 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, 13, 14, 15, 16, 17, -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, 40, @@ -1812,301 +2142,229 @@ static const yytype_int16 yycheck[] = 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, -1, -1, 105, 106, -1, -1, -1, -1, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, -1, -1, -1, -1, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, -1, -1, 147, 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 124, 125, 126, 127, -1, 129, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 166, 167, 168, 169, -1, + 171, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 184, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 187, -1, -1, -1, + -1, -1, -1, 224, -1, -1, -1, -1, -1, -1, + -1, -1, 233, -1, -1, -1, -1, -1, 239, 240, + 241, 242, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 254, 255, 3, 4, 5, 6, 7, + 8, 9, 10, 11, -1, 13, 14, 15, 16, 17, + -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, -1, -1, 147, + 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 166, 167, + 168, 169, -1, 171, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 184, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 221, -1, -1, -1, -1, -1, 227, 228, 229, 230, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 242, 243, 244, 3, 4, 5, 6, 7, 8, - 9, 10, 11, -1, 13, 14, 15, 16, 17, -1, - -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, -1, -1, 105, 106, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 124, 125, 126, 127, -1, - 129, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 224, -1, -1, -1, + -1, -1, -1, -1, -1, 233, -1, -1, -1, -1, + -1, 239, 240, 241, 242, 3, 4, 5, 6, 7, + 8, -1, -1, -1, -1, -1, 254, 255, -1, -1, + -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + 128, 129, 130, 131, 132, 133, 134, 135, -1, 137, + 138, 139, 140, 141, 142, 143, 144, -1, -1, 147, + 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 166, 167, + 168, 169, -1, 171, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 184, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 187, -1, + -1, -1, -1, -1, -1, -1, 224, -1, -1, -1, + -1, -1, -1, -1, -1, 233, -1, -1, -1, -1, + -1, 239, 240, 241, 242, 5, 6, 7, 8, -1, + -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 133, 134, 135, -1, 137, 138, 139, + 140, 141, 142, 143, 144, -1, -1, 147, 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 221, -1, -1, -1, -1, -1, 227, 228, - 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 242, 243, 244, 3, 4, 5, 6, - 7, 8, 9, 10, 11, -1, 13, 14, 15, 16, - 17, -1, -1, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 5, 6, + 7, 8, -1, 233, -1, -1, -1, -1, -1, 239, + 240, 241, 242, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 255, 256, -1, -1, -1, + -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, -1, -1, 105, 106, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 124, 125, 126, - 127, -1, 129, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 142, -1, -1, -1, -1, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 133, 134, 135, -1, + 137, 138, 139, 140, 141, 142, 143, 144, -1, -1, + 147, 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 187, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, - 227, 228, 229, 230, 3, 4, 5, 6, 7, 8, - -1, -1, -1, -1, -1, 242, 243, 244, -1, -1, - -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, -1, -1, 96, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 124, 125, 126, 127, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 187, -1, - 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3, 4, 5, 6, 7, 8, 32, - 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 244, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, -1, -1, 96, -1, -1, -1, - -1, 124, 125, 126, 127, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 142, - -1, -1, -1, -1, 124, 125, 126, 127, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 187, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 187, -1, -1, + -1, 5, 6, 7, 8, -1, 233, -1, -1, -1, + -1, -1, 239, 240, 241, 242, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 255, -1, + -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, + 134, 135, -1, 137, 138, 139, 140, 141, 142, 143, + 144, -1, -1, 147, 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, - 11, -1, 13, 14, 15, 16, 17, 18, 19, 20, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 233, + -1, -1, -1, -1, -1, 239, 240, 241, 242, 3, + 4, 5, 6, 7, 8, -1, -1, -1, -1, -1, + 254, -1, -1, -1, -1, -1, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, -1, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, 128, 129, 130, 131, 132, 133, + 134, 135, -1, 137, 138, 139, 140, 141, 142, 143, + 144, -1, -1, 147, 148, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 166, 167, 168, 169, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 184, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 224, -1, -1, -1, 5, 6, 7, 8, -1, 233, + -1, -1, -1, -1, -1, 239, 240, 241, 242, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 244, 36, 37, 38, 39, 40, + 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, -1, -1, 105, 106, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 124, 125, 126, 127, -1, 129, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 133, 134, 135, -1, 137, 138, 139, 140, + 141, 142, 143, 144, -1, -1, 147, 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 187, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 221, -1, -1, -1, -1, -1, 227, 228, 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 242, 243, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, 13, 14, 15, 16, 17, -1, -1, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, -1, -1, 105, 106, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 124, 125, 126, 127, -1, 129, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 5, 6, 7, + 8, -1, 233, -1, -1, 236, -1, -1, 239, 240, + 241, 242, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 133, 134, 135, -1, 137, + 138, 139, 140, 141, 142, 143, 144, -1, -1, 147, + 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 187, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 221, -1, -1, -1, -1, -1, 227, 228, 229, - 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 242, 243, 3, 4, 5, 6, 7, 8, - 9, 10, 11, -1, 13, 14, 15, 16, 17, -1, - -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 124, 125, 126, 127, -1, - 129, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 187, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 221, -1, -1, -1, -1, -1, 227, 228, - 229, 230, 3, 4, 5, 6, 7, 8, -1, -1, - -1, -1, -1, 242, 243, -1, -1, -1, -1, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, -1, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, - 101, 102, -1, -1, 105, 106, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 124, 125, 126, 127, -1, 129, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 187, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 221, -1, -1, -1, -1, -1, 227, 228, 229, 230, - 5, 6, 7, 8, -1, -1, -1, -1, -1, -1, - -1, 242, -1, -1, -1, 20, 21, 22, 23, 24, + 5, 6, 7, 8, -1, 233, -1, -1, 236, -1, + -1, 239, 240, 241, 242, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, - 95, 96, 97, 98, 99, 100, 101, 102, -1, -1, - 105, 106, 5, 6, 7, 8, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, -1, 95, 96, 97, 98, 99, 100, 101, 102, - -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, - -1, 5, 6, 7, 8, -1, 221, -1, -1, -1, - -1, -1, 227, 228, 229, 230, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 243, 244, - -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - -1, 95, 96, 97, 98, 99, 100, 101, 102, -1, - -1, 105, 106, -1, -1, -1, -1, -1, 221, -1, - -1, -1, -1, -1, 227, 228, 229, 230, 5, 6, - 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, - 243, -1, -1, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, - 97, 98, 99, 100, 101, 102, -1, 221, 105, 106, - -1, -1, -1, 227, 228, 229, 230, 3, 4, 5, - 6, 7, 8, -1, -1, -1, -1, -1, 242, -1, - -1, -1, -1, -1, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, - 96, 97, 98, 99, 100, 101, 102, -1, -1, 105, - 106, -1, -1, -1, 221, -1, -1, 224, -1, -1, - 227, 228, 229, 230, -1, -1, -1, -1, 124, 125, - 126, 127, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 142, -1, -1, -1, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 133, 134, + 135, -1, 137, 138, 139, 140, 141, 142, 143, 144, + -1, -1, 147, 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 187, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 5, 6, 7, 8, -1, 221, -1, -1, -1, -1, - -1, 227, 228, 229, 230, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, - 95, 96, 97, 98, 99, 100, 101, 102, -1, -1, - 105, 106, 5, 6, 7, 8, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, -1, 95, 96, 97, 98, 99, 100, 101, 102, - -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, - -1, 5, 6, 7, 8, -1, 221, -1, -1, 224, - -1, -1, 227, 228, 229, 230, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - -1, 95, 96, 97, 98, 99, 100, 101, 102, -1, - -1, 105, 106, 5, 6, 7, 8, -1, 221, -1, - -1, -1, -1, -1, 227, 228, 229, 230, 20, 21, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 5, 6, 7, 8, -1, 233, -1, + -1, -1, -1, -1, 239, 240, 241, 242, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, @@ -2114,65 +2372,115 @@ static const yytype_int16 yycheck[] = 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, -1, 95, 96, 97, 98, 99, 100, 101, - 102, -1, -1, 105, 106, -1, -1, -1, -1, -1, - 3, 4, 5, 6, 7, 8, -1, 221, -1, -1, - -1, -1, -1, 227, 228, 229, 230, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, -1, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, -1, -1, 96, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, - -1, -1, -1, -1, -1, 227, 228, 229, 230, -1, - -1, 124, 125, 126, 127, -1, 129, -1, -1, 3, - 4, -1, -1, -1, 137, 138, 139, 140, 141, 142, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 133, 134, 135, -1, 137, 138, 139, 140, 141, + 142, 143, 144, -1, -1, 147, 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3, 4, 5, 6, 7, 8, 32, 33, - 34, -1, 36, 37, 38, 39, 40, -1, -1, 20, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 5, 6, 7, 8, + -1, 233, -1, -1, -1, -1, -1, 239, 240, 241, + 242, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 133, 134, 135, -1, 137, 138, + 139, 140, 141, 142, 143, 144, -1, -1, 147, 148, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, + 6, 7, 8, -1, 233, -1, -1, -1, -1, -1, + 239, 240, 241, 242, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, -1, -1, + -1, -1, 128, 129, 130, 131, 132, 133, 134, 135, + -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 166, 167, 168, 169, -1, 171, -1, -1, -1, -1, + -1, -1, -1, 179, 180, 181, 182, 183, 184, -1, + -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, + 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 224, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 3, 4, -1, + -1, 128, 129, 130, 131, 132, 133, 134, 135, -1, + -1, 138, -1, -1, -1, -1, 3, 4, -1, -1, + -1, -1, -1, -1, -1, -1, 32, 33, 34, -1, + 36, 37, 38, 39, 40, -1, -1, -1, -1, 166, + 167, 168, 169, -1, -1, 32, 33, 34, -1, 36, + 37, 38, 39, 40, -1, -1, -1, 184, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 224, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 128, 129, 130, 131, 132, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 128, 129, 130, 131, 132, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 166, 167, 168, 169, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 184, 166, + 167, 168, 169, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 184, -1, -1, + -1, -1, -1, -1, 5, 6, 7, 8, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 224, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 187, 36, 37, 38, 39, 40, + 31, -1, -1, -1, -1, -1, -1, 224, -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, -1, -1, 96, -1, -1, 3, 4, - 124, 125, 126, 127, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 142, -1, - -1, -1, -1, 124, 125, 126, 127, 32, 33, 34, - -1, 36, 37, 38, 39, 40, -1, -1, -1, -1, - -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 187, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 187, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, - 125, 126, 127, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 142, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 5, 6, 7, - 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, -1, -1, -1, -1, -1, -1, - -1, -1, 187, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, -1, -1, 96 + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 133, 134, 135, -1, -1, 138 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 130, 246, 248, 99, 0, 250, 95, 96, 97, - 134, 251, 131, 247, 252, 134, 251, 3, 4, 5, + 0, 172, 258, 260, 141, 0, 262, 137, 138, 139, + 176, 263, 173, 259, 264, 176, 263, 3, 4, 5, 6, 7, 8, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, @@ -2180,47 +2488,51 @@ static const yytype_uint16 yystos[] = 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 96, 124, 125, 126, - 127, 129, 137, 138, 139, 140, 141, 142, 187, 249, - 253, 287, 288, 289, 290, 291, 297, 298, 299, 300, - 305, 306, 307, 308, 310, 311, 312, 313, 314, 344, - 345, 346, 347, 348, 352, 133, 243, 251, 33, 34, - 36, 95, 97, 124, 254, 300, 306, 313, 134, 134, - 134, 134, 134, 221, 344, 242, 243, 327, 222, 226, - 4, 33, 34, 35, 293, 294, 295, 313, 226, 242, - 95, 97, 251, 254, 33, 34, 36, 306, 347, 306, - 310, 306, 306, 223, 309, 306, 97, 251, 299, 315, - 316, 243, 310, 150, 219, 251, 301, 303, 304, 9, - 10, 11, 13, 14, 15, 16, 17, 94, 98, 99, - 100, 101, 102, 105, 106, 221, 227, 228, 229, 230, - 242, 243, 244, 254, 255, 256, 258, 259, 260, 261, - 262, 263, 264, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 285, 287, - 288, 300, 310, 321, 322, 323, 324, 328, 329, 330, - 333, 339, 343, 293, 294, 292, 296, 310, 294, 294, - 251, 241, 309, 221, 242, 242, 242, 224, 269, 282, - 286, 310, 223, 243, 134, 251, 317, 318, 244, 316, - 315, 242, 241, 222, 226, 242, 242, 322, 221, 221, - 242, 242, 285, 221, 221, 269, 269, 285, 244, 325, - 105, 106, 223, 225, 222, 222, 226, 93, 283, 221, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 241, 284, 269, 231, 232, 233, 227, 228, 103, 104, - 107, 108, 234, 235, 109, 110, 236, 237, 238, 111, - 113, 112, 239, 226, 242, 244, 322, 251, 241, 309, - 243, 283, 319, 241, 224, 224, 286, 299, 350, 351, - 309, 226, 242, 244, 99, 100, 302, 303, 94, 321, - 329, 340, 285, 242, 285, 285, 299, 332, 222, 328, - 257, 285, 251, 254, 265, 266, 267, 268, 283, 283, - 269, 269, 269, 271, 271, 272, 272, 273, 273, 273, - 273, 274, 274, 275, 276, 277, 278, 279, 280, 285, - 283, 309, 319, 241, 319, 320, 319, 224, 317, 244, - 350, 318, 221, 332, 341, 342, 222, 222, 251, 222, - 244, 224, 221, 222, 222, 226, 93, 283, 240, 319, - 226, 244, 242, 97, 349, 285, 242, 222, 322, 331, - 243, 334, 241, 323, 326, 327, 283, 283, 244, 319, - 309, 242, 222, 285, 326, 12, 18, 19, 244, 335, - 336, 337, 338, 319, 242, 322, 285, 240, 322, 335, - 322, 244, 337, 240 + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 128, 129, 130, 131, + 132, 133, 134, 135, 138, 166, 167, 168, 169, 171, + 179, 180, 181, 182, 183, 184, 224, 261, 265, 299, + 300, 301, 302, 303, 309, 310, 311, 312, 317, 318, + 319, 320, 322, 323, 324, 325, 326, 356, 357, 358, + 359, 360, 364, 175, 255, 263, 33, 34, 36, 137, + 139, 166, 266, 312, 318, 325, 176, 176, 176, 176, + 176, 233, 356, 254, 255, 339, 234, 238, 4, 33, + 34, 35, 305, 306, 307, 325, 238, 254, 137, 139, + 263, 266, 33, 34, 36, 318, 359, 318, 322, 318, + 318, 235, 321, 318, 139, 263, 311, 327, 328, 255, + 322, 192, 231, 263, 313, 315, 316, 9, 10, 11, + 13, 14, 15, 16, 17, 136, 140, 141, 142, 143, + 144, 147, 148, 233, 239, 240, 241, 242, 254, 255, + 256, 266, 267, 268, 270, 271, 272, 273, 274, 275, + 276, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 297, 299, 300, 312, + 322, 333, 334, 335, 336, 340, 341, 342, 345, 351, + 355, 305, 306, 304, 308, 322, 306, 306, 263, 253, + 321, 233, 254, 254, 254, 236, 281, 294, 298, 322, + 235, 255, 176, 263, 329, 330, 256, 328, 327, 254, + 253, 234, 238, 254, 254, 334, 233, 233, 254, 254, + 297, 233, 233, 281, 281, 297, 256, 337, 147, 148, + 235, 237, 234, 234, 238, 135, 295, 233, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 253, 296, + 281, 243, 244, 245, 239, 240, 145, 146, 149, 150, + 246, 247, 151, 152, 248, 249, 250, 153, 155, 154, + 251, 238, 254, 256, 334, 263, 253, 321, 255, 295, + 331, 253, 236, 236, 298, 311, 362, 363, 321, 238, + 254, 256, 141, 142, 314, 315, 136, 333, 341, 352, + 297, 254, 297, 297, 311, 344, 234, 340, 269, 297, + 263, 266, 277, 278, 279, 280, 295, 295, 281, 281, + 281, 283, 283, 284, 284, 285, 285, 285, 285, 286, + 286, 287, 288, 289, 290, 291, 292, 297, 295, 321, + 331, 253, 331, 332, 331, 236, 329, 256, 362, 330, + 233, 344, 353, 354, 234, 234, 263, 234, 256, 236, + 233, 234, 234, 238, 135, 295, 252, 331, 238, 256, + 254, 139, 361, 297, 254, 234, 334, 343, 255, 346, + 253, 335, 338, 339, 295, 295, 256, 331, 321, 254, + 234, 297, 338, 12, 18, 19, 256, 347, 348, 349, + 350, 331, 254, 334, 297, 252, 334, 347, 334, 256, + 349, 252 }; #define yyerrok (yyerrstatus = 0) @@ -2965,7 +3277,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.source = 0; } /* Line 1570 of yacc.c */ -#line 2969 "src/glsl/glsl_parser.cpp" +#line 3281 "src/glsl/glsl_parser.cpp" yylsp[0] = yylloc; goto yysetstate; @@ -3153,7 +3465,7 @@ yyreduce: { case 2: /* Line 1787 of yacc.c */ -#line 298 "src/glsl/glsl_parser.yy" +#line 300 "src/glsl/glsl_parser.yy" { _mesa_glsl_initialize_types(state); } @@ -3161,7 +3473,7 @@ yyreduce: case 3: /* Line 1787 of yacc.c */ -#line 302 "src/glsl/glsl_parser.yy" +#line 304 "src/glsl/glsl_parser.yy" { delete state->symbols; state->symbols = new(ralloc_parent(state)) glsl_symbol_table; @@ -3171,7 +3483,7 @@ yyreduce: case 5: /* Line 1787 of yacc.c */ -#line 312 "src/glsl/glsl_parser.yy" +#line 314 "src/glsl/glsl_parser.yy" { state->process_version_directive(&(yylsp[(2) - (3)]), (yyvsp[(2) - (3)].n), NULL); if (state->error) { @@ -3182,7 +3494,7 @@ yyreduce: case 6: /* Line 1787 of yacc.c */ -#line 319 "src/glsl/glsl_parser.yy" +#line 321 "src/glsl/glsl_parser.yy" { state->process_version_directive(&(yylsp[(2) - (4)]), (yyvsp[(2) - (4)].n), (yyvsp[(3) - (4)].identifier)); if (state->error) { @@ -3193,7 +3505,7 @@ yyreduce: case 11: /* Line 1787 of yacc.c */ -#line 333 "src/glsl/glsl_parser.yy" +#line 335 "src/glsl/glsl_parser.yy" { if (!state->is_version(120, 100)) { _mesa_glsl_warning(& (yylsp[(1) - (2)]), state, @@ -3208,7 +3520,7 @@ yyreduce: case 17: /* Line 1787 of yacc.c */ -#line 358 "src/glsl/glsl_parser.yy" +#line 360 "src/glsl/glsl_parser.yy" { if (!_mesa_glsl_process_extension((yyvsp[(2) - (5)].identifier), & (yylsp[(2) - (5)]), (yyvsp[(4) - (5)].identifier), & (yylsp[(4) - (5)]), state)) { YYERROR; @@ -3218,7 +3530,7 @@ yyreduce: case 18: /* Line 1787 of yacc.c */ -#line 367 "src/glsl/glsl_parser.yy" +#line 369 "src/glsl/glsl_parser.yy" { /* FINISHME: The NULL test is required because pragmas are set to * FINISHME: NULL. (See production rule for external_declaration.) @@ -3230,7 +3542,7 @@ yyreduce: case 19: /* Line 1787 of yacc.c */ -#line 375 "src/glsl/glsl_parser.yy" +#line 377 "src/glsl/glsl_parser.yy" { /* FINISHME: The NULL test is required because pragmas are set to * FINISHME: NULL. (See production rule for external_declaration.) @@ -3242,7 +3554,7 @@ yyreduce: case 22: /* Line 1787 of yacc.c */ -#line 391 "src/glsl/glsl_parser.yy" +#line 393 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_identifier, NULL, NULL, NULL); @@ -3253,7 +3565,7 @@ yyreduce: case 23: /* Line 1787 of yacc.c */ -#line 398 "src/glsl/glsl_parser.yy" +#line 400 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_int_constant, NULL, NULL, NULL); @@ -3264,7 +3576,7 @@ yyreduce: case 24: /* Line 1787 of yacc.c */ -#line 405 "src/glsl/glsl_parser.yy" +#line 407 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_uint_constant, NULL, NULL, NULL); @@ -3275,7 +3587,7 @@ yyreduce: case 25: /* Line 1787 of yacc.c */ -#line 412 "src/glsl/glsl_parser.yy" +#line 414 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_float_constant, NULL, NULL, NULL); @@ -3286,7 +3598,7 @@ yyreduce: case 26: /* Line 1787 of yacc.c */ -#line 419 "src/glsl/glsl_parser.yy" +#line 421 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_bool_constant, NULL, NULL, NULL); @@ -3297,7 +3609,7 @@ yyreduce: case 27: /* Line 1787 of yacc.c */ -#line 426 "src/glsl/glsl_parser.yy" +#line 428 "src/glsl/glsl_parser.yy" { (yyval.expression) = (yyvsp[(2) - (3)].expression); } @@ -3305,7 +3617,7 @@ yyreduce: case 29: /* Line 1787 of yacc.c */ -#line 434 "src/glsl/glsl_parser.yy" +#line 436 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_array_index, (yyvsp[(1) - (4)].expression), (yyvsp[(3) - (4)].expression), NULL); @@ -3315,7 +3627,7 @@ yyreduce: case 30: /* Line 1787 of yacc.c */ -#line 440 "src/glsl/glsl_parser.yy" +#line 442 "src/glsl/glsl_parser.yy" { (yyval.expression) = (yyvsp[(1) - (1)].expression); } @@ -3323,7 +3635,7 @@ yyreduce: case 31: /* Line 1787 of yacc.c */ -#line 444 "src/glsl/glsl_parser.yy" +#line 446 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_field_selection, (yyvsp[(1) - (3)].expression), NULL, NULL); @@ -3334,7 +3646,7 @@ yyreduce: case 32: /* Line 1787 of yacc.c */ -#line 451 "src/glsl/glsl_parser.yy" +#line 453 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_post_inc, (yyvsp[(1) - (2)].expression), NULL, NULL); @@ -3344,7 +3656,7 @@ yyreduce: case 33: /* Line 1787 of yacc.c */ -#line 457 "src/glsl/glsl_parser.yy" +#line 459 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_post_dec, (yyvsp[(1) - (2)].expression), NULL, NULL); @@ -3354,7 +3666,7 @@ yyreduce: case 37: /* Line 1787 of yacc.c */ -#line 475 "src/glsl/glsl_parser.yy" +#line 477 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_field_selection, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression), NULL); @@ -3364,7 +3676,7 @@ yyreduce: case 42: /* Line 1787 of yacc.c */ -#line 494 "src/glsl/glsl_parser.yy" +#line 496 "src/glsl/glsl_parser.yy" { (yyval.expression) = (yyvsp[(1) - (2)].expression); (yyval.expression)->set_location(yylloc); @@ -3374,7 +3686,7 @@ yyreduce: case 43: /* Line 1787 of yacc.c */ -#line 500 "src/glsl/glsl_parser.yy" +#line 502 "src/glsl/glsl_parser.yy" { (yyval.expression) = (yyvsp[(1) - (3)].expression); (yyval.expression)->set_location(yylloc); @@ -3384,7 +3696,7 @@ yyreduce: case 45: /* Line 1787 of yacc.c */ -#line 516 "src/glsl/glsl_parser.yy" +#line 518 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_function_expression((yyvsp[(1) - (1)].type_specifier)); @@ -3394,7 +3706,7 @@ yyreduce: case 46: /* Line 1787 of yacc.c */ -#line 522 "src/glsl/glsl_parser.yy" +#line 524 "src/glsl/glsl_parser.yy" { void *ctx = state; ast_expression *callee = new(ctx) ast_expression((yyvsp[(1) - (1)].identifier)); @@ -3405,7 +3717,7 @@ yyreduce: case 47: /* Line 1787 of yacc.c */ -#line 529 "src/glsl/glsl_parser.yy" +#line 531 "src/glsl/glsl_parser.yy" { void *ctx = state; ast_expression *callee = new(ctx) ast_expression((yyvsp[(1) - (1)].identifier)); @@ -3416,7 +3728,7 @@ yyreduce: case 52: /* Line 1787 of yacc.c */ -#line 549 "src/glsl/glsl_parser.yy" +#line 551 "src/glsl/glsl_parser.yy" { (yyval.expression) = (yyvsp[(1) - (2)].expression); (yyval.expression)->set_location(yylloc); @@ -3426,7 +3738,7 @@ yyreduce: case 53: /* Line 1787 of yacc.c */ -#line 555 "src/glsl/glsl_parser.yy" +#line 557 "src/glsl/glsl_parser.yy" { (yyval.expression) = (yyvsp[(1) - (3)].expression); (yyval.expression)->set_location(yylloc); @@ -3436,7 +3748,7 @@ yyreduce: case 54: /* Line 1787 of yacc.c */ -#line 567 "src/glsl/glsl_parser.yy" +#line 569 "src/glsl/glsl_parser.yy" { void *ctx = state; ast_expression *callee = new(ctx) ast_expression((yyvsp[(1) - (2)].identifier)); @@ -3447,7 +3759,7 @@ yyreduce: case 56: /* Line 1787 of yacc.c */ -#line 579 "src/glsl/glsl_parser.yy" +#line 581 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_pre_inc, (yyvsp[(2) - (2)].expression), NULL, NULL); @@ -3457,7 +3769,7 @@ yyreduce: case 57: /* Line 1787 of yacc.c */ -#line 585 "src/glsl/glsl_parser.yy" +#line 587 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_pre_dec, (yyvsp[(2) - (2)].expression), NULL, NULL); @@ -3467,7 +3779,7 @@ yyreduce: case 58: /* Line 1787 of yacc.c */ -#line 591 "src/glsl/glsl_parser.yy" +#line 593 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression((yyvsp[(1) - (2)].n), (yyvsp[(2) - (2)].expression), NULL, NULL); @@ -3477,31 +3789,31 @@ yyreduce: case 59: /* Line 1787 of yacc.c */ -#line 600 "src/glsl/glsl_parser.yy" +#line 602 "src/glsl/glsl_parser.yy" { (yyval.n) = ast_plus; } break; case 60: /* Line 1787 of yacc.c */ -#line 601 "src/glsl/glsl_parser.yy" +#line 603 "src/glsl/glsl_parser.yy" { (yyval.n) = ast_neg; } break; case 61: /* Line 1787 of yacc.c */ -#line 602 "src/glsl/glsl_parser.yy" +#line 604 "src/glsl/glsl_parser.yy" { (yyval.n) = ast_logic_not; } break; case 62: /* Line 1787 of yacc.c */ -#line 603 "src/glsl/glsl_parser.yy" +#line 605 "src/glsl/glsl_parser.yy" { (yyval.n) = ast_bit_not; } break; case 64: /* Line 1787 of yacc.c */ -#line 609 "src/glsl/glsl_parser.yy" +#line 611 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_mul, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3511,7 +3823,7 @@ yyreduce: case 65: /* Line 1787 of yacc.c */ -#line 615 "src/glsl/glsl_parser.yy" +#line 617 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_div, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3521,7 +3833,7 @@ yyreduce: case 66: /* Line 1787 of yacc.c */ -#line 621 "src/glsl/glsl_parser.yy" +#line 623 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_mod, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3531,7 +3843,7 @@ yyreduce: case 68: /* Line 1787 of yacc.c */ -#line 631 "src/glsl/glsl_parser.yy" +#line 633 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_add, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3541,7 +3853,7 @@ yyreduce: case 69: /* Line 1787 of yacc.c */ -#line 637 "src/glsl/glsl_parser.yy" +#line 639 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_sub, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3551,7 +3863,7 @@ yyreduce: case 71: /* Line 1787 of yacc.c */ -#line 647 "src/glsl/glsl_parser.yy" +#line 649 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_lshift, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3561,7 +3873,7 @@ yyreduce: case 72: /* Line 1787 of yacc.c */ -#line 653 "src/glsl/glsl_parser.yy" +#line 655 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_rshift, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3571,7 +3883,7 @@ yyreduce: case 74: /* Line 1787 of yacc.c */ -#line 663 "src/glsl/glsl_parser.yy" +#line 665 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_less, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3581,7 +3893,7 @@ yyreduce: case 75: /* Line 1787 of yacc.c */ -#line 669 "src/glsl/glsl_parser.yy" +#line 671 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_greater, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3591,7 +3903,7 @@ yyreduce: case 76: /* Line 1787 of yacc.c */ -#line 675 "src/glsl/glsl_parser.yy" +#line 677 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_lequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3601,7 +3913,7 @@ yyreduce: case 77: /* Line 1787 of yacc.c */ -#line 681 "src/glsl/glsl_parser.yy" +#line 683 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_gequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3611,7 +3923,7 @@ yyreduce: case 79: /* Line 1787 of yacc.c */ -#line 691 "src/glsl/glsl_parser.yy" +#line 693 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_equal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3621,7 +3933,7 @@ yyreduce: case 80: /* Line 1787 of yacc.c */ -#line 697 "src/glsl/glsl_parser.yy" +#line 699 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_nequal, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3631,7 +3943,7 @@ yyreduce: case 82: /* Line 1787 of yacc.c */ -#line 707 "src/glsl/glsl_parser.yy" +#line 709 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_and, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3641,7 +3953,7 @@ yyreduce: case 84: /* Line 1787 of yacc.c */ -#line 717 "src/glsl/glsl_parser.yy" +#line 719 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_xor, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3651,7 +3963,7 @@ yyreduce: case 86: /* Line 1787 of yacc.c */ -#line 727 "src/glsl/glsl_parser.yy" +#line 729 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_or, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3661,7 +3973,7 @@ yyreduce: case 88: /* Line 1787 of yacc.c */ -#line 737 "src/glsl/glsl_parser.yy" +#line 739 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_and, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3671,7 +3983,7 @@ yyreduce: case 90: /* Line 1787 of yacc.c */ -#line 747 "src/glsl/glsl_parser.yy" +#line 749 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_xor, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3681,7 +3993,7 @@ yyreduce: case 92: /* Line 1787 of yacc.c */ -#line 757 "src/glsl/glsl_parser.yy" +#line 759 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_or, (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression)); @@ -3691,7 +4003,7 @@ yyreduce: case 94: /* Line 1787 of yacc.c */ -#line 767 "src/glsl/glsl_parser.yy" +#line 769 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression(ast_conditional, (yyvsp[(1) - (5)].expression), (yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].expression)); @@ -3701,7 +4013,7 @@ yyreduce: case 96: /* Line 1787 of yacc.c */ -#line 777 "src/glsl/glsl_parser.yy" +#line 779 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_expression((yyvsp[(2) - (3)].n), (yyvsp[(1) - (3)].expression), (yyvsp[(3) - (3)].expression), NULL); @@ -3711,73 +4023,73 @@ yyreduce: case 97: /* Line 1787 of yacc.c */ -#line 785 "src/glsl/glsl_parser.yy" +#line 787 "src/glsl/glsl_parser.yy" { (yyval.n) = ast_assign; } break; case 98: /* Line 1787 of yacc.c */ -#line 786 "src/glsl/glsl_parser.yy" +#line 788 "src/glsl/glsl_parser.yy" { (yyval.n) = ast_mul_assign; } break; case 99: /* Line 1787 of yacc.c */ -#line 787 "src/glsl/glsl_parser.yy" +#line 789 "src/glsl/glsl_parser.yy" { (yyval.n) = ast_div_assign; } break; case 100: /* Line 1787 of yacc.c */ -#line 788 "src/glsl/glsl_parser.yy" +#line 790 "src/glsl/glsl_parser.yy" { (yyval.n) = ast_mod_assign; } break; case 101: /* Line 1787 of yacc.c */ -#line 789 "src/glsl/glsl_parser.yy" +#line 791 "src/glsl/glsl_parser.yy" { (yyval.n) = ast_add_assign; } break; case 102: /* Line 1787 of yacc.c */ -#line 790 "src/glsl/glsl_parser.yy" +#line 792 "src/glsl/glsl_parser.yy" { (yyval.n) = ast_sub_assign; } break; case 103: /* Line 1787 of yacc.c */ -#line 791 "src/glsl/glsl_parser.yy" +#line 793 "src/glsl/glsl_parser.yy" { (yyval.n) = ast_ls_assign; } break; case 104: /* Line 1787 of yacc.c */ -#line 792 "src/glsl/glsl_parser.yy" +#line 794 "src/glsl/glsl_parser.yy" { (yyval.n) = ast_rs_assign; } break; case 105: /* Line 1787 of yacc.c */ -#line 793 "src/glsl/glsl_parser.yy" +#line 795 "src/glsl/glsl_parser.yy" { (yyval.n) = ast_and_assign; } break; case 106: /* Line 1787 of yacc.c */ -#line 794 "src/glsl/glsl_parser.yy" +#line 796 "src/glsl/glsl_parser.yy" { (yyval.n) = ast_xor_assign; } break; case 107: /* Line 1787 of yacc.c */ -#line 795 "src/glsl/glsl_parser.yy" +#line 797 "src/glsl/glsl_parser.yy" { (yyval.n) = ast_or_assign; } break; case 108: /* Line 1787 of yacc.c */ -#line 800 "src/glsl/glsl_parser.yy" +#line 802 "src/glsl/glsl_parser.yy" { (yyval.expression) = (yyvsp[(1) - (1)].expression); } @@ -3785,7 +4097,7 @@ yyreduce: case 109: /* Line 1787 of yacc.c */ -#line 804 "src/glsl/glsl_parser.yy" +#line 806 "src/glsl/glsl_parser.yy" { void *ctx = state; if ((yyvsp[(1) - (3)].expression)->oper != ast_sequence) { @@ -3802,7 +4114,7 @@ yyreduce: case 111: /* Line 1787 of yacc.c */ -#line 824 "src/glsl/glsl_parser.yy" +#line 826 "src/glsl/glsl_parser.yy" { state->symbols->pop_scope(); (yyval.node) = (yyvsp[(1) - (2)].function); @@ -3811,7 +4123,7 @@ yyreduce: case 112: /* Line 1787 of yacc.c */ -#line 829 "src/glsl/glsl_parser.yy" +#line 831 "src/glsl/glsl_parser.yy" { (yyval.node) = (yyvsp[(1) - (2)].declarator_list); } @@ -3819,7 +4131,7 @@ yyreduce: case 113: /* Line 1787 of yacc.c */ -#line 833 "src/glsl/glsl_parser.yy" +#line 835 "src/glsl/glsl_parser.yy" { (yyvsp[(3) - (4)].type_specifier)->default_precision = (yyvsp[(2) - (4)].n); (yyval.node) = (yyvsp[(3) - (4)].type_specifier); @@ -3828,7 +4140,7 @@ yyreduce: case 114: /* Line 1787 of yacc.c */ -#line 838 "src/glsl/glsl_parser.yy" +#line 840 "src/glsl/glsl_parser.yy" { (yyval.node) = (yyvsp[(1) - (1)].node); } @@ -3836,7 +4148,7 @@ yyreduce: case 118: /* Line 1787 of yacc.c */ -#line 854 "src/glsl/glsl_parser.yy" +#line 856 "src/glsl/glsl_parser.yy" { (yyval.function) = (yyvsp[(1) - (2)].function); (yyval.function)->parameters.push_tail(& (yyvsp[(2) - (2)].parameter_declarator)->link); @@ -3845,7 +4157,7 @@ yyreduce: case 119: /* Line 1787 of yacc.c */ -#line 859 "src/glsl/glsl_parser.yy" +#line 861 "src/glsl/glsl_parser.yy" { (yyval.function) = (yyvsp[(1) - (3)].function); (yyval.function)->parameters.push_tail(& (yyvsp[(3) - (3)].parameter_declarator)->link); @@ -3854,7 +4166,7 @@ yyreduce: case 120: /* Line 1787 of yacc.c */ -#line 867 "src/glsl/glsl_parser.yy" +#line 869 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.function) = new(ctx) ast_function(); @@ -3869,7 +4181,7 @@ yyreduce: case 121: /* Line 1787 of yacc.c */ -#line 881 "src/glsl/glsl_parser.yy" +#line 883 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator(); @@ -3883,7 +4195,7 @@ yyreduce: case 122: /* Line 1787 of yacc.c */ -#line 891 "src/glsl/glsl_parser.yy" +#line 893 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator(); @@ -3898,7 +4210,7 @@ yyreduce: case 123: /* Line 1787 of yacc.c */ -#line 905 "src/glsl/glsl_parser.yy" +#line 907 "src/glsl/glsl_parser.yy" { (yyval.parameter_declarator) = (yyvsp[(2) - (2)].parameter_declarator); (yyval.parameter_declarator)->type->qualifier = (yyvsp[(1) - (2)].type_qualifier); @@ -3907,7 +4219,7 @@ yyreduce: case 124: /* Line 1787 of yacc.c */ -#line 910 "src/glsl/glsl_parser.yy" +#line 912 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator(); @@ -3920,7 +4232,7 @@ yyreduce: case 125: /* Line 1787 of yacc.c */ -#line 922 "src/glsl/glsl_parser.yy" +#line 924 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -3929,7 +4241,7 @@ yyreduce: case 126: /* Line 1787 of yacc.c */ -#line 927 "src/glsl/glsl_parser.yy" +#line 929 "src/glsl/glsl_parser.yy" { if ((yyvsp[(2) - (2)].type_qualifier).flags.q.constant) _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "duplicate const qualifier"); @@ -3941,7 +4253,7 @@ yyreduce: case 127: /* Line 1787 of yacc.c */ -#line 935 "src/glsl/glsl_parser.yy" +#line 937 "src/glsl/glsl_parser.yy" { if (((yyvsp[(1) - (2)].type_qualifier).flags.q.in || (yyvsp[(1) - (2)].type_qualifier).flags.q.out) && ((yyvsp[(2) - (2)].type_qualifier).flags.q.in || (yyvsp[(2) - (2)].type_qualifier).flags.q.out)) _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "duplicate in/out/inout qualifier"); @@ -3957,7 +4269,7 @@ yyreduce: case 128: /* Line 1787 of yacc.c */ -#line 947 "src/glsl/glsl_parser.yy" +#line 949 "src/glsl/glsl_parser.yy" { if ((yyvsp[(2) - (2)].type_qualifier).precision != ast_precision_none) _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "duplicate precision qualifier"); @@ -3972,7 +4284,7 @@ yyreduce: case 129: /* Line 1787 of yacc.c */ -#line 960 "src/glsl/glsl_parser.yy" +#line 962 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -3982,7 +4294,7 @@ yyreduce: case 130: /* Line 1787 of yacc.c */ -#line 966 "src/glsl/glsl_parser.yy" +#line 968 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -3992,7 +4304,7 @@ yyreduce: case 131: /* Line 1787 of yacc.c */ -#line 972 "src/glsl/glsl_parser.yy" +#line 974 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -4003,7 +4315,7 @@ yyreduce: case 134: /* Line 1787 of yacc.c */ -#line 988 "src/glsl/glsl_parser.yy" +#line 990 "src/glsl/glsl_parser.yy" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (3)].identifier), NULL, NULL); @@ -4017,7 +4329,7 @@ yyreduce: case 135: /* Line 1787 of yacc.c */ -#line 998 "src/glsl/glsl_parser.yy" +#line 1000 "src/glsl/glsl_parser.yy" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (4)].identifier), (yyvsp[(4) - (4)].array_specifier), NULL); @@ -4031,7 +4343,7 @@ yyreduce: case 136: /* Line 1787 of yacc.c */ -#line 1008 "src/glsl/glsl_parser.yy" +#line 1010 "src/glsl/glsl_parser.yy" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (6)].identifier), (yyvsp[(4) - (6)].array_specifier), (yyvsp[(6) - (6)].expression)); @@ -4045,7 +4357,7 @@ yyreduce: case 137: /* Line 1787 of yacc.c */ -#line 1018 "src/glsl/glsl_parser.yy" +#line 1020 "src/glsl/glsl_parser.yy" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(3) - (5)].identifier), NULL, (yyvsp[(5) - (5)].expression)); @@ -4059,7 +4371,7 @@ yyreduce: case 138: /* Line 1787 of yacc.c */ -#line 1032 "src/glsl/glsl_parser.yy" +#line 1034 "src/glsl/glsl_parser.yy" { void *ctx = state; /* Empty declaration list is valid. */ @@ -4070,7 +4382,7 @@ yyreduce: case 139: /* Line 1787 of yacc.c */ -#line 1039 "src/glsl/glsl_parser.yy" +#line 1041 "src/glsl/glsl_parser.yy" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (2)].identifier), NULL, NULL); @@ -4083,7 +4395,7 @@ yyreduce: case 140: /* Line 1787 of yacc.c */ -#line 1048 "src/glsl/glsl_parser.yy" +#line 1050 "src/glsl/glsl_parser.yy" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (3)].identifier), (yyvsp[(3) - (3)].array_specifier), NULL); @@ -4096,7 +4408,7 @@ yyreduce: case 141: /* Line 1787 of yacc.c */ -#line 1057 "src/glsl/glsl_parser.yy" +#line 1059 "src/glsl/glsl_parser.yy" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (5)].identifier), (yyvsp[(3) - (5)].array_specifier), (yyvsp[(5) - (5)].expression)); @@ -4109,7 +4421,7 @@ yyreduce: case 142: /* Line 1787 of yacc.c */ -#line 1066 "src/glsl/glsl_parser.yy" +#line 1068 "src/glsl/glsl_parser.yy" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), NULL, (yyvsp[(4) - (4)].expression)); @@ -4122,7 +4434,7 @@ yyreduce: case 143: /* Line 1787 of yacc.c */ -#line 1075 "src/glsl/glsl_parser.yy" +#line 1077 "src/glsl/glsl_parser.yy" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (2)].identifier), NULL, NULL); @@ -4137,7 +4449,7 @@ yyreduce: case 144: /* Line 1787 of yacc.c */ -#line 1089 "src/glsl/glsl_parser.yy" +#line 1091 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.fully_specified_type) = new(ctx) ast_fully_specified_type(); @@ -4148,7 +4460,7 @@ yyreduce: case 145: /* Line 1787 of yacc.c */ -#line 1096 "src/glsl/glsl_parser.yy" +#line 1098 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.fully_specified_type) = new(ctx) ast_fully_specified_type(); @@ -4160,7 +4472,7 @@ yyreduce: case 146: /* Line 1787 of yacc.c */ -#line 1107 "src/glsl/glsl_parser.yy" +#line 1109 "src/glsl/glsl_parser.yy" { (yyval.type_qualifier) = (yyvsp[(3) - (4)].type_qualifier); } @@ -4168,7 +4480,7 @@ yyreduce: case 148: /* Line 1787 of yacc.c */ -#line 1115 "src/glsl/glsl_parser.yy" +#line 1117 "src/glsl/glsl_parser.yy" { (yyval.type_qualifier) = (yyvsp[(1) - (3)].type_qualifier); if (!(yyval.type_qualifier).merge_qualifier(& (yylsp[(3) - (3)]), state, (yyvsp[(3) - (3)].type_qualifier))) { @@ -4179,19 +4491,19 @@ yyreduce: case 149: /* Line 1787 of yacc.c */ -#line 1124 "src/glsl/glsl_parser.yy" +#line 1126 "src/glsl/glsl_parser.yy" { (yyval.n) = (yyvsp[(1) - (1)].n); } break; case 150: /* Line 1787 of yacc.c */ -#line 1125 "src/glsl/glsl_parser.yy" +#line 1127 "src/glsl/glsl_parser.yy" { (yyval.n) = (yyvsp[(1) - (1)].n); } break; case 151: /* Line 1787 of yacc.c */ -#line 1130 "src/glsl/glsl_parser.yy" +#line 1132 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -4305,6 +4617,72 @@ yyreduce: } } + /* Layout qualifiers for ARB_shader_image_load_store. */ + if (state->ARB_shader_image_load_store_enable || + state->is_version(420, 0)) { + if (!(yyval.type_qualifier).flags.i) { + static const struct { + const char *name; + GLenum format; + glsl_base_type base_type; + } map[] = { + { "rgba32f", GL_RGBA32F, GLSL_TYPE_FLOAT }, + { "rgba16f", GL_RGBA16F, GLSL_TYPE_FLOAT }, + { "rg32f", GL_RG32F, GLSL_TYPE_FLOAT }, + { "rg16f", GL_RG16F, GLSL_TYPE_FLOAT }, + { "r11f_g11f_b10f", GL_R11F_G11F_B10F, GLSL_TYPE_FLOAT }, + { "r32f", GL_R32F, GLSL_TYPE_FLOAT }, + { "r16f", GL_R16F, GLSL_TYPE_FLOAT }, + { "rgba32ui", GL_RGBA32UI, GLSL_TYPE_UINT }, + { "rgba16ui", GL_RGBA16UI, GLSL_TYPE_UINT }, + { "rgb10_a2ui", GL_RGB10_A2UI, GLSL_TYPE_UINT }, + { "rgba8ui", GL_RGBA8UI, GLSL_TYPE_UINT }, + { "rg32ui", GL_RG32UI, GLSL_TYPE_UINT }, + { "rg16ui", GL_RG16UI, GLSL_TYPE_UINT }, + { "rg8ui", GL_RG8UI, GLSL_TYPE_UINT }, + { "r32ui", GL_R32UI, GLSL_TYPE_UINT }, + { "r16ui", GL_R16UI, GLSL_TYPE_UINT }, + { "r8ui", GL_R8UI, GLSL_TYPE_UINT }, + { "rgba32i", GL_RGBA32I, GLSL_TYPE_INT }, + { "rgba16i", GL_RGBA16I, GLSL_TYPE_INT }, + { "rgba8i", GL_RGBA8I, GLSL_TYPE_INT }, + { "rg32i", GL_RG32I, GLSL_TYPE_INT }, + { "rg16i", GL_RG16I, GLSL_TYPE_INT }, + { "rg8i", GL_RG8I, GLSL_TYPE_INT }, + { "r32i", GL_R32I, GLSL_TYPE_INT }, + { "r16i", GL_R16I, GLSL_TYPE_INT }, + { "r8i", GL_R8I, GLSL_TYPE_INT }, + { "rgba16", GL_RGBA16, GLSL_TYPE_FLOAT }, + { "rgb10_a2", GL_RGB10_A2, GLSL_TYPE_FLOAT }, + { "rgba8", GL_RGBA8, GLSL_TYPE_FLOAT }, + { "rg16", GL_RG16, GLSL_TYPE_FLOAT }, + { "rg8", GL_RG8, GLSL_TYPE_FLOAT }, + { "r16", GL_R16, GLSL_TYPE_FLOAT }, + { "r8", GL_R8, GLSL_TYPE_FLOAT }, + { "rgba16_snorm", GL_RGBA16_SNORM, GLSL_TYPE_FLOAT }, + { "rgba8_snorm", GL_RGBA8_SNORM, GLSL_TYPE_FLOAT }, + { "rg16_snorm", GL_RG16_SNORM, GLSL_TYPE_FLOAT }, + { "rg8_snorm", GL_RG8_SNORM, GLSL_TYPE_FLOAT }, + { "r16_snorm", GL_R16_SNORM, GLSL_TYPE_FLOAT }, + { "r8_snorm", GL_R8_SNORM, GLSL_TYPE_FLOAT } + }; + + for (unsigned i = 0; i < Elements(map); i++) { + if (match_layout_qualifier((yyvsp[(1) - (1)].identifier), map[i].name, state) == 0) { + (yyval.type_qualifier).flags.q.explicit_image_format = 1; + (yyval.type_qualifier).image_format = map[i].format; + (yyval.type_qualifier).image_base_type = map[i].base_type; + break; + } + } + } + + if (!(yyval.type_qualifier).flags.i && + match_layout_qualifier((yyvsp[(1) - (1)].identifier), "early_fragment_tests", state) == 0) { + (yyval.type_qualifier).flags.q.early_fragment_tests = 1; + } + } + if (!(yyval.type_qualifier).flags.i) { _mesa_glsl_error(& (yylsp[(1) - (1)]), state, "unrecognized layout identifier " "`%s'", (yyvsp[(1) - (1)].identifier)); @@ -4315,7 +4693,7 @@ yyreduce: case 152: /* Line 1787 of yacc.c */ -#line 1250 "src/glsl/glsl_parser.yy" +#line 1318 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -4372,6 +4750,34 @@ yyreduce: } } + static const char *local_size_qualifiers[3] = { + "local_size_x", + "local_size_y", + "local_size_z", + }; + for (int i = 0; i < 3; i++) { + if (match_layout_qualifier(local_size_qualifiers[i], (yyvsp[(1) - (3)].identifier), + state) == 0) { + if ((yyvsp[(3) - (3)].n) <= 0) { + _mesa_glsl_error(& (yylsp[(3) - (3)]), state, + "invalid %s of %d specified", + local_size_qualifiers[i], (yyvsp[(3) - (3)].n)); + YYERROR; + } else if (!state->is_version(430, 0) && + !state->ARB_compute_shader_enable) { + _mesa_glsl_error(& (yylsp[(3) - (3)]), state, + "%s qualifier requires GLSL 4.30 or " + "ARB_compute_shader", + local_size_qualifiers[i]); + YYERROR; + } else { + (yyval.type_qualifier).flags.q.local_size |= (1 << i); + (yyval.type_qualifier).local_size[i] = (yyvsp[(3) - (3)].n); + } + break; + } + } + /* If the identifier didn't match any known layout identifiers, * emit an error. */ @@ -4389,7 +4795,7 @@ yyreduce: case 153: /* Line 1787 of yacc.c */ -#line 1320 "src/glsl/glsl_parser.yy" +#line 1416 "src/glsl/glsl_parser.yy" { (yyval.type_qualifier) = (yyvsp[(1) - (1)].type_qualifier); /* Layout qualifiers for ARB_uniform_buffer_object. */ @@ -4407,7 +4813,7 @@ yyreduce: case 154: /* Line 1787 of yacc.c */ -#line 1346 "src/glsl/glsl_parser.yy" +#line 1442 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -4417,7 +4823,7 @@ yyreduce: case 155: /* Line 1787 of yacc.c */ -#line 1352 "src/glsl/glsl_parser.yy" +#line 1448 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -4427,7 +4833,7 @@ yyreduce: case 156: /* Line 1787 of yacc.c */ -#line 1361 "src/glsl/glsl_parser.yy" +#line 1457 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -4437,7 +4843,7 @@ yyreduce: case 157: /* Line 1787 of yacc.c */ -#line 1367 "src/glsl/glsl_parser.yy" +#line 1463 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -4447,7 +4853,7 @@ yyreduce: case 158: /* Line 1787 of yacc.c */ -#line 1373 "src/glsl/glsl_parser.yy" +#line 1469 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -4457,7 +4863,7 @@ yyreduce: case 159: /* Line 1787 of yacc.c */ -#line 1383 "src/glsl/glsl_parser.yy" +#line 1479 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -4467,7 +4873,7 @@ yyreduce: case 164: /* Line 1787 of yacc.c */ -#line 1393 "src/glsl/glsl_parser.yy" +#line 1489 "src/glsl/glsl_parser.yy" { memset(&(yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -4477,7 +4883,7 @@ yyreduce: case 165: /* Line 1787 of yacc.c */ -#line 1412 "src/glsl/glsl_parser.yy" +#line 1508 "src/glsl/glsl_parser.yy" { if ((yyvsp[(2) - (2)].type_qualifier).flags.q.invariant) _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "duplicate \"invariant\" qualifier"); @@ -4494,7 +4900,7 @@ yyreduce: case 166: /* Line 1787 of yacc.c */ -#line 1425 "src/glsl/glsl_parser.yy" +#line 1521 "src/glsl/glsl_parser.yy" { /* Section 4.3 of the GLSL 1.40 specification states: * "...qualified with one of these interpolation qualifiers" @@ -4526,7 +4932,7 @@ yyreduce: case 167: /* Line 1787 of yacc.c */ -#line 1453 "src/glsl/glsl_parser.yy" +#line 1549 "src/glsl/glsl_parser.yy" { /* The GLSL 1.50 grammar indicates that a layout(...) declaration can be * used standalone or immediately before a storage qualifier. It cannot @@ -4553,7 +4959,7 @@ yyreduce: case 168: /* Line 1787 of yacc.c */ -#line 1476 "src/glsl/glsl_parser.yy" +#line 1572 "src/glsl/glsl_parser.yy" { if ((yyvsp[(2) - (2)].type_qualifier).has_auxiliary_storage()) { _mesa_glsl_error(&(yylsp[(1) - (2)]), state, @@ -4566,13 +4972,13 @@ yyreduce: "just before storage qualifiers"); } (yyval.type_qualifier) = (yyvsp[(1) - (2)].type_qualifier); - (yyval.type_qualifier).flags.i |= (yyvsp[(2) - (2)].type_qualifier).flags.i; + (yyval.type_qualifier).merge_qualifier(&(yylsp[(1) - (2)]), state, (yyvsp[(2) - (2)].type_qualifier)); } break; case 169: /* Line 1787 of yacc.c */ -#line 1491 "src/glsl/glsl_parser.yy" +#line 1587 "src/glsl/glsl_parser.yy" { /* Section 4.3 of the GLSL 1.20 specification states: * "Variable declarations may have a storage qualifier specified..." @@ -4596,7 +5002,7 @@ yyreduce: case 170: /* Line 1787 of yacc.c */ -#line 1511 "src/glsl/glsl_parser.yy" +#line 1607 "src/glsl/glsl_parser.yy" { if ((yyvsp[(2) - (2)].type_qualifier).precision != ast_precision_none) _mesa_glsl_error(&(yylsp[(1) - (2)]), state, "duplicate precision qualifier"); @@ -4611,7 +5017,7 @@ yyreduce: case 171: /* Line 1787 of yacc.c */ -#line 1525 "src/glsl/glsl_parser.yy" +#line 1621 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -4621,7 +5027,7 @@ yyreduce: case 172: /* Line 1787 of yacc.c */ -#line 1531 "src/glsl/glsl_parser.yy" +#line 1627 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).flags.q.sample = 1; @@ -4630,7 +5036,7 @@ yyreduce: case 173: /* Line 1787 of yacc.c */ -#line 1539 "src/glsl/glsl_parser.yy" +#line 1635 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -4640,7 +5046,7 @@ yyreduce: case 174: /* Line 1787 of yacc.c */ -#line 1545 "src/glsl/glsl_parser.yy" +#line 1641 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -4650,7 +5056,7 @@ yyreduce: case 175: /* Line 1787 of yacc.c */ -#line 1551 "src/glsl/glsl_parser.yy" +#line 1647 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -4660,7 +5066,7 @@ yyreduce: case 176: /* Line 1787 of yacc.c */ -#line 1557 "src/glsl/glsl_parser.yy" +#line 1653 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -4670,7 +5076,7 @@ yyreduce: case 177: /* Line 1787 of yacc.c */ -#line 1563 "src/glsl/glsl_parser.yy" +#line 1659 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -4680,7 +5086,7 @@ yyreduce: case 178: /* Line 1787 of yacc.c */ -#line 1569 "src/glsl/glsl_parser.yy" +#line 1665 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -4690,25 +5096,71 @@ yyreduce: case 179: /* Line 1787 of yacc.c */ -#line 1578 "src/glsl/glsl_parser.yy" +#line 1671 "src/glsl/glsl_parser.yy" + { + memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); + (yyval.type_qualifier).flags.q.coherent = 1; + } + break; + + case 180: +/* Line 1787 of yacc.c */ +#line 1676 "src/glsl/glsl_parser.yy" + { + memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); + (yyval.type_qualifier).flags.q._volatile = 1; + } + break; + + case 181: +/* Line 1787 of yacc.c */ +#line 1681 "src/glsl/glsl_parser.yy" + { + STATIC_ASSERT(sizeof((yyval.type_qualifier).flags.q) <= sizeof((yyval.type_qualifier).flags.i)); + memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); + (yyval.type_qualifier).flags.q.restrict_flag = 1; + } + break; + + case 182: +/* Line 1787 of yacc.c */ +#line 1687 "src/glsl/glsl_parser.yy" + { + memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); + (yyval.type_qualifier).flags.q.read_only = 1; + } + break; + + case 183: +/* Line 1787 of yacc.c */ +#line 1692 "src/glsl/glsl_parser.yy" + { + memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); + (yyval.type_qualifier).flags.q.write_only = 1; + } + break; + + case 184: +/* Line 1787 of yacc.c */ +#line 1700 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.array_specifier) = new(ctx) ast_array_specifier(yylloc); } break; - case 180: + case 185: /* Line 1787 of yacc.c */ -#line 1583 "src/glsl/glsl_parser.yy" +#line 1705 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.array_specifier) = new(ctx) ast_array_specifier(yylloc, (yyvsp[(2) - (3)].expression)); } break; - case 181: + case 186: /* Line 1787 of yacc.c */ -#line 1588 "src/glsl/glsl_parser.yy" +#line 1710 "src/glsl/glsl_parser.yy" { (yyval.array_specifier) = (yyvsp[(1) - (3)].array_specifier); @@ -4724,9 +5176,9 @@ yyreduce: } break; - case 182: + case 187: /* Line 1787 of yacc.c */ -#line 1602 "src/glsl/glsl_parser.yy" +#line 1724 "src/glsl/glsl_parser.yy" { (yyval.array_specifier) = (yyvsp[(1) - (4)].array_specifier); @@ -4740,18 +5192,18 @@ yyreduce: } break; - case 184: + case 189: /* Line 1787 of yacc.c */ -#line 1618 "src/glsl/glsl_parser.yy" +#line 1740 "src/glsl/glsl_parser.yy" { (yyval.type_specifier) = (yyvsp[(1) - (2)].type_specifier); (yyval.type_specifier)->array_specifier = (yyvsp[(2) - (2)].array_specifier); } break; - case 185: + case 190: /* Line 1787 of yacc.c */ -#line 1626 "src/glsl/glsl_parser.yy" +#line 1748 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].identifier)); @@ -4759,9 +5211,9 @@ yyreduce: } break; - case 186: + case 191: /* Line 1787 of yacc.c */ -#line 1632 "src/glsl/glsl_parser.yy" +#line 1754 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].struct_specifier)); @@ -4769,9 +5221,9 @@ yyreduce: } break; - case 187: + case 192: /* Line 1787 of yacc.c */ -#line 1638 "src/glsl/glsl_parser.yy" +#line 1760 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].identifier)); @@ -4779,444 +5231,642 @@ yyreduce: } break; - case 188: -/* Line 1787 of yacc.c */ -#line 1646 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "void"; } - break; - - case 189: -/* Line 1787 of yacc.c */ -#line 1647 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "float"; } - break; - - case 190: -/* Line 1787 of yacc.c */ -#line 1648 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "int"; } - break; - - case 191: -/* Line 1787 of yacc.c */ -#line 1649 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "uint"; } - break; - - case 192: -/* Line 1787 of yacc.c */ -#line 1650 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "bool"; } - break; - case 193: /* Line 1787 of yacc.c */ -#line 1651 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "vec2"; } +#line 1768 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "void"; } break; case 194: /* Line 1787 of yacc.c */ -#line 1652 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "vec3"; } +#line 1769 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "float"; } break; case 195: /* Line 1787 of yacc.c */ -#line 1653 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "vec4"; } +#line 1770 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "int"; } break; case 196: /* Line 1787 of yacc.c */ -#line 1654 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "bvec2"; } +#line 1771 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "uint"; } break; case 197: /* Line 1787 of yacc.c */ -#line 1655 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "bvec3"; } +#line 1772 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "bool"; } break; case 198: /* Line 1787 of yacc.c */ -#line 1656 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "bvec4"; } +#line 1773 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "vec2"; } break; case 199: /* Line 1787 of yacc.c */ -#line 1657 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "ivec2"; } +#line 1774 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "vec3"; } break; case 200: /* Line 1787 of yacc.c */ -#line 1658 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "ivec3"; } +#line 1775 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "vec4"; } break; case 201: /* Line 1787 of yacc.c */ -#line 1659 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "ivec4"; } +#line 1776 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "bvec2"; } break; case 202: /* Line 1787 of yacc.c */ -#line 1660 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "uvec2"; } +#line 1777 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "bvec3"; } break; case 203: /* Line 1787 of yacc.c */ -#line 1661 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "uvec3"; } +#line 1778 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "bvec4"; } break; case 204: /* Line 1787 of yacc.c */ -#line 1662 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "uvec4"; } +#line 1779 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "ivec2"; } break; case 205: /* Line 1787 of yacc.c */ -#line 1663 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "mat2"; } +#line 1780 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "ivec3"; } break; case 206: /* Line 1787 of yacc.c */ -#line 1664 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "mat2x3"; } +#line 1781 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "ivec4"; } break; case 207: /* Line 1787 of yacc.c */ -#line 1665 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "mat2x4"; } +#line 1782 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "uvec2"; } break; case 208: /* Line 1787 of yacc.c */ -#line 1666 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "mat3x2"; } +#line 1783 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "uvec3"; } break; case 209: /* Line 1787 of yacc.c */ -#line 1667 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "mat3"; } +#line 1784 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "uvec4"; } break; case 210: /* Line 1787 of yacc.c */ -#line 1668 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "mat3x4"; } +#line 1785 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "mat2"; } break; case 211: /* Line 1787 of yacc.c */ -#line 1669 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "mat4x2"; } +#line 1786 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "mat2x3"; } break; case 212: /* Line 1787 of yacc.c */ -#line 1670 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "mat4x3"; } +#line 1787 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "mat2x4"; } break; case 213: /* Line 1787 of yacc.c */ -#line 1671 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "mat4"; } +#line 1788 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "mat3x2"; } break; case 214: /* Line 1787 of yacc.c */ -#line 1672 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "sampler1D"; } +#line 1789 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "mat3"; } break; case 215: /* Line 1787 of yacc.c */ -#line 1673 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "sampler2D"; } +#line 1790 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "mat3x4"; } break; case 216: /* Line 1787 of yacc.c */ -#line 1674 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "sampler2DRect"; } +#line 1791 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "mat4x2"; } break; case 217: /* Line 1787 of yacc.c */ -#line 1675 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "sampler3D"; } +#line 1792 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "mat4x3"; } break; case 218: /* Line 1787 of yacc.c */ -#line 1676 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "samplerCube"; } +#line 1793 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "mat4"; } break; case 219: /* Line 1787 of yacc.c */ -#line 1677 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "samplerExternalOES"; } +#line 1794 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "sampler1D"; } break; case 220: /* Line 1787 of yacc.c */ -#line 1678 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "sampler1DShadow"; } +#line 1795 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "sampler2D"; } break; case 221: /* Line 1787 of yacc.c */ -#line 1679 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "sampler2DShadow"; } +#line 1796 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "sampler2DRect"; } break; case 222: /* Line 1787 of yacc.c */ -#line 1680 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "sampler2DRectShadow"; } +#line 1797 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "sampler3D"; } break; case 223: /* Line 1787 of yacc.c */ -#line 1681 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "samplerCubeShadow"; } +#line 1798 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "samplerCube"; } break; case 224: /* Line 1787 of yacc.c */ -#line 1682 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "sampler1DArray"; } +#line 1799 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "samplerExternalOES"; } break; case 225: /* Line 1787 of yacc.c */ -#line 1683 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "sampler2DArray"; } +#line 1800 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "sampler1DShadow"; } break; case 226: /* Line 1787 of yacc.c */ -#line 1684 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "sampler1DArrayShadow"; } +#line 1801 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "sampler2DShadow"; } break; case 227: /* Line 1787 of yacc.c */ -#line 1685 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "sampler2DArrayShadow"; } +#line 1802 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "sampler2DRectShadow"; } break; case 228: /* Line 1787 of yacc.c */ -#line 1686 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "samplerBuffer"; } +#line 1803 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "samplerCubeShadow"; } break; case 229: /* Line 1787 of yacc.c */ -#line 1687 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "samplerCubeArray"; } +#line 1804 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "sampler1DArray"; } break; case 230: /* Line 1787 of yacc.c */ -#line 1688 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "samplerCubeArrayShadow"; } +#line 1805 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "sampler2DArray"; } break; case 231: /* Line 1787 of yacc.c */ -#line 1689 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "isampler1D"; } +#line 1806 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "sampler1DArrayShadow"; } break; case 232: /* Line 1787 of yacc.c */ -#line 1690 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "isampler2D"; } +#line 1807 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "sampler2DArrayShadow"; } break; case 233: /* Line 1787 of yacc.c */ -#line 1691 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "isampler2DRect"; } +#line 1808 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "samplerBuffer"; } break; case 234: /* Line 1787 of yacc.c */ -#line 1692 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "isampler3D"; } +#line 1809 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "samplerCubeArray"; } break; case 235: /* Line 1787 of yacc.c */ -#line 1693 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "isamplerCube"; } +#line 1810 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "samplerCubeArrayShadow"; } break; case 236: /* Line 1787 of yacc.c */ -#line 1694 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "isampler1DArray"; } +#line 1811 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "isampler1D"; } break; case 237: /* Line 1787 of yacc.c */ -#line 1695 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "isampler2DArray"; } +#line 1812 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "isampler2D"; } break; case 238: /* Line 1787 of yacc.c */ -#line 1696 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "isamplerBuffer"; } +#line 1813 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "isampler2DRect"; } break; case 239: /* Line 1787 of yacc.c */ -#line 1697 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "isamplerCubeArray"; } +#line 1814 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "isampler3D"; } break; case 240: /* Line 1787 of yacc.c */ -#line 1698 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "usampler1D"; } +#line 1815 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "isamplerCube"; } break; case 241: /* Line 1787 of yacc.c */ -#line 1699 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "usampler2D"; } +#line 1816 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "isampler1DArray"; } break; case 242: /* Line 1787 of yacc.c */ -#line 1700 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "usampler2DRect"; } +#line 1817 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "isampler2DArray"; } break; case 243: /* Line 1787 of yacc.c */ -#line 1701 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "usampler3D"; } +#line 1818 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "isamplerBuffer"; } break; case 244: /* Line 1787 of yacc.c */ -#line 1702 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "usamplerCube"; } +#line 1819 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "isamplerCubeArray"; } break; case 245: /* Line 1787 of yacc.c */ -#line 1703 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "usampler1DArray"; } +#line 1820 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "usampler1D"; } break; case 246: /* Line 1787 of yacc.c */ -#line 1704 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "usampler2DArray"; } +#line 1821 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "usampler2D"; } break; case 247: /* Line 1787 of yacc.c */ -#line 1705 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "usamplerBuffer"; } +#line 1822 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "usampler2DRect"; } break; case 248: /* Line 1787 of yacc.c */ -#line 1706 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "usamplerCubeArray"; } +#line 1823 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "usampler3D"; } break; case 249: /* Line 1787 of yacc.c */ -#line 1707 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "sampler2DMS"; } +#line 1824 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "usamplerCube"; } break; case 250: /* Line 1787 of yacc.c */ -#line 1708 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "isampler2DMS"; } +#line 1825 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "usampler1DArray"; } break; case 251: /* Line 1787 of yacc.c */ -#line 1709 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "usampler2DMS"; } +#line 1826 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "usampler2DArray"; } break; case 252: /* Line 1787 of yacc.c */ -#line 1710 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "sampler2DMSArray"; } +#line 1827 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "usamplerBuffer"; } break; case 253: /* Line 1787 of yacc.c */ -#line 1711 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "isampler2DMSArray"; } +#line 1828 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "usamplerCubeArray"; } break; case 254: /* Line 1787 of yacc.c */ -#line 1712 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "usampler2DMSArray"; } +#line 1829 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "sampler2DMS"; } break; case 255: /* Line 1787 of yacc.c */ -#line 1713 "src/glsl/glsl_parser.yy" - { (yyval.identifier) = "atomic_uint"; } +#line 1830 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "isampler2DMS"; } break; case 256: /* Line 1787 of yacc.c */ -#line 1718 "src/glsl/glsl_parser.yy" +#line 1831 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "usampler2DMS"; } + break; + + case 257: +/* Line 1787 of yacc.c */ +#line 1832 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "sampler2DMSArray"; } + break; + + case 258: +/* Line 1787 of yacc.c */ +#line 1833 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "isampler2DMSArray"; } + break; + + case 259: +/* Line 1787 of yacc.c */ +#line 1834 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "usampler2DMSArray"; } + break; + + case 260: +/* Line 1787 of yacc.c */ +#line 1835 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "image1D"; } + break; + + case 261: +/* Line 1787 of yacc.c */ +#line 1836 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "image2D"; } + break; + + case 262: +/* Line 1787 of yacc.c */ +#line 1837 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "image3D"; } + break; + + case 263: +/* Line 1787 of yacc.c */ +#line 1838 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "image2DRect"; } + break; + + case 264: +/* Line 1787 of yacc.c */ +#line 1839 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "imageCube"; } + break; + + case 265: +/* Line 1787 of yacc.c */ +#line 1840 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "imageBuffer"; } + break; + + case 266: +/* Line 1787 of yacc.c */ +#line 1841 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "image1DArray"; } + break; + + case 267: +/* Line 1787 of yacc.c */ +#line 1842 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "image2DArray"; } + break; + + case 268: +/* Line 1787 of yacc.c */ +#line 1843 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "imageCubeArray"; } + break; + + case 269: +/* Line 1787 of yacc.c */ +#line 1844 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "image2DMS"; } + break; + + case 270: +/* Line 1787 of yacc.c */ +#line 1845 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "image2DMSArray"; } + break; + + case 271: +/* Line 1787 of yacc.c */ +#line 1846 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "iimage1D"; } + break; + + case 272: +/* Line 1787 of yacc.c */ +#line 1847 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "iimage2D"; } + break; + + case 273: +/* Line 1787 of yacc.c */ +#line 1848 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "iimage3D"; } + break; + + case 274: +/* Line 1787 of yacc.c */ +#line 1849 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "iimage2DRect"; } + break; + + case 275: +/* Line 1787 of yacc.c */ +#line 1850 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "iimageCube"; } + break; + + case 276: +/* Line 1787 of yacc.c */ +#line 1851 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "iimageBuffer"; } + break; + + case 277: +/* Line 1787 of yacc.c */ +#line 1852 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "iimage1DArray"; } + break; + + case 278: +/* Line 1787 of yacc.c */ +#line 1853 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "iimage2DArray"; } + break; + + case 279: +/* Line 1787 of yacc.c */ +#line 1854 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "iimageCubeArray"; } + break; + + case 280: +/* Line 1787 of yacc.c */ +#line 1855 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "iimage2DMS"; } + break; + + case 281: +/* Line 1787 of yacc.c */ +#line 1856 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "iimage2DMSArray"; } + break; + + case 282: +/* Line 1787 of yacc.c */ +#line 1857 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "uimage1D"; } + break; + + case 283: +/* Line 1787 of yacc.c */ +#line 1858 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "uimage2D"; } + break; + + case 284: +/* Line 1787 of yacc.c */ +#line 1859 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "uimage3D"; } + break; + + case 285: +/* Line 1787 of yacc.c */ +#line 1860 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "uimage2DRect"; } + break; + + case 286: +/* Line 1787 of yacc.c */ +#line 1861 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "uimageCube"; } + break; + + case 287: +/* Line 1787 of yacc.c */ +#line 1862 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "uimageBuffer"; } + break; + + case 288: +/* Line 1787 of yacc.c */ +#line 1863 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "uimage1DArray"; } + break; + + case 289: +/* Line 1787 of yacc.c */ +#line 1864 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "uimage2DArray"; } + break; + + case 290: +/* Line 1787 of yacc.c */ +#line 1865 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "uimageCubeArray"; } + break; + + case 291: +/* Line 1787 of yacc.c */ +#line 1866 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "uimage2DMS"; } + break; + + case 292: +/* Line 1787 of yacc.c */ +#line 1867 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "uimage2DMSArray"; } + break; + + case 293: +/* Line 1787 of yacc.c */ +#line 1868 "src/glsl/glsl_parser.yy" + { (yyval.identifier) = "atomic_uint"; } + break; + + case 294: +/* Line 1787 of yacc.c */ +#line 1873 "src/glsl/glsl_parser.yy" { state->check_precision_qualifiers_allowed(&(yylsp[(1) - (1)])); (yyval.n) = ast_precision_high; } break; - case 257: + case 295: /* Line 1787 of yacc.c */ -#line 1723 "src/glsl/glsl_parser.yy" +#line 1878 "src/glsl/glsl_parser.yy" { state->check_precision_qualifiers_allowed(&(yylsp[(1) - (1)])); (yyval.n) = ast_precision_medium; } break; - case 258: + case 296: /* Line 1787 of yacc.c */ -#line 1728 "src/glsl/glsl_parser.yy" +#line 1883 "src/glsl/glsl_parser.yy" { state->check_precision_qualifiers_allowed(&(yylsp[(1) - (1)])); (yyval.n) = ast_precision_low; } break; - case 259: + case 297: /* Line 1787 of yacc.c */ -#line 1736 "src/glsl/glsl_parser.yy" +#line 1891 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.struct_specifier) = new(ctx) ast_struct_specifier((yyvsp[(2) - (5)].identifier), (yyvsp[(4) - (5)].declarator_list)); @@ -5226,9 +5876,9 @@ yyreduce: } break; - case 260: + case 298: /* Line 1787 of yacc.c */ -#line 1744 "src/glsl/glsl_parser.yy" +#line 1899 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.struct_specifier) = new(ctx) ast_struct_specifier(NULL, (yyvsp[(3) - (4)].declarator_list)); @@ -5236,27 +5886,27 @@ yyreduce: } break; - case 261: + case 299: /* Line 1787 of yacc.c */ -#line 1753 "src/glsl/glsl_parser.yy" +#line 1908 "src/glsl/glsl_parser.yy" { (yyval.declarator_list) = (yyvsp[(1) - (1)].declarator_list); (yyvsp[(1) - (1)].declarator_list)->link.self_link(); } break; - case 262: + case 300: /* Line 1787 of yacc.c */ -#line 1758 "src/glsl/glsl_parser.yy" +#line 1913 "src/glsl/glsl_parser.yy" { (yyval.declarator_list) = (yyvsp[(1) - (2)].declarator_list); (yyval.declarator_list)->link.insert_before(& (yyvsp[(2) - (2)].declarator_list)->link); } break; - case 263: + case 301: /* Line 1787 of yacc.c */ -#line 1766 "src/glsl/glsl_parser.yy" +#line 1921 "src/glsl/glsl_parser.yy" { void *ctx = state; ast_fully_specified_type *const type = (yyvsp[(1) - (3)].fully_specified_type); @@ -5274,27 +5924,27 @@ yyreduce: } break; - case 264: + case 302: /* Line 1787 of yacc.c */ -#line 1785 "src/glsl/glsl_parser.yy" +#line 1940 "src/glsl/glsl_parser.yy" { (yyval.declaration) = (yyvsp[(1) - (1)].declaration); (yyvsp[(1) - (1)].declaration)->link.self_link(); } break; - case 265: + case 303: /* Line 1787 of yacc.c */ -#line 1790 "src/glsl/glsl_parser.yy" +#line 1945 "src/glsl/glsl_parser.yy" { (yyval.declaration) = (yyvsp[(1) - (3)].declaration); (yyval.declaration)->link.insert_before(& (yyvsp[(3) - (3)].declaration)->link); } break; - case 266: + case 304: /* Line 1787 of yacc.c */ -#line 1798 "src/glsl/glsl_parser.yy" +#line 1953 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.declaration) = new(ctx) ast_declaration((yyvsp[(1) - (1)].identifier), NULL, NULL); @@ -5302,9 +5952,9 @@ yyreduce: } break; - case 267: + case 305: /* Line 1787 of yacc.c */ -#line 1804 "src/glsl/glsl_parser.yy" +#line 1959 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.declaration) = new(ctx) ast_declaration((yyvsp[(1) - (2)].identifier), (yyvsp[(2) - (2)].array_specifier), NULL); @@ -5312,25 +5962,25 @@ yyreduce: } break; - case 269: + case 307: /* Line 1787 of yacc.c */ -#line 1814 "src/glsl/glsl_parser.yy" +#line 1969 "src/glsl/glsl_parser.yy" { (yyval.expression) = (yyvsp[(2) - (3)].expression); } break; - case 270: + case 308: /* Line 1787 of yacc.c */ -#line 1818 "src/glsl/glsl_parser.yy" +#line 1973 "src/glsl/glsl_parser.yy" { (yyval.expression) = (yyvsp[(2) - (4)].expression); } break; - case 271: + case 309: /* Line 1787 of yacc.c */ -#line 1825 "src/glsl/glsl_parser.yy" +#line 1980 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.expression) = new(ctx) ast_aggregate_initializer(); @@ -5339,23 +5989,23 @@ yyreduce: } break; - case 272: + case 310: /* Line 1787 of yacc.c */ -#line 1832 "src/glsl/glsl_parser.yy" +#line 1987 "src/glsl/glsl_parser.yy" { (yyvsp[(1) - (3)].expression)->expressions.push_tail(& (yyvsp[(3) - (3)].expression)->link); } break; - case 274: + case 312: /* Line 1787 of yacc.c */ -#line 1844 "src/glsl/glsl_parser.yy" +#line 1999 "src/glsl/glsl_parser.yy" { (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].compound_statement); } break; - case 282: + case 320: /* Line 1787 of yacc.c */ -#line 1859 "src/glsl/glsl_parser.yy" +#line 2014 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.compound_statement) = new(ctx) ast_compound_statement(true, NULL); @@ -5363,17 +6013,17 @@ yyreduce: } break; - case 283: + case 321: /* Line 1787 of yacc.c */ -#line 1865 "src/glsl/glsl_parser.yy" +#line 2020 "src/glsl/glsl_parser.yy" { state->symbols->push_scope(); } break; - case 284: + case 322: /* Line 1787 of yacc.c */ -#line 1869 "src/glsl/glsl_parser.yy" +#line 2024 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.compound_statement) = new(ctx) ast_compound_statement(true, (yyvsp[(3) - (4)].node)); @@ -5382,15 +6032,15 @@ yyreduce: } break; - case 285: + case 323: /* Line 1787 of yacc.c */ -#line 1878 "src/glsl/glsl_parser.yy" +#line 2033 "src/glsl/glsl_parser.yy" { (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].compound_statement); } break; - case 287: + case 325: /* Line 1787 of yacc.c */ -#line 1884 "src/glsl/glsl_parser.yy" +#line 2039 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.compound_statement) = new(ctx) ast_compound_statement(false, NULL); @@ -5398,9 +6048,9 @@ yyreduce: } break; - case 288: + case 326: /* Line 1787 of yacc.c */ -#line 1890 "src/glsl/glsl_parser.yy" +#line 2045 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.compound_statement) = new(ctx) ast_compound_statement(false, (yyvsp[(2) - (3)].node)); @@ -5408,9 +6058,9 @@ yyreduce: } break; - case 289: + case 327: /* Line 1787 of yacc.c */ -#line 1899 "src/glsl/glsl_parser.yy" +#line 2054 "src/glsl/glsl_parser.yy" { if ((yyvsp[(1) - (1)].node) == NULL) { _mesa_glsl_error(& (yylsp[(1) - (1)]), state, " statement"); @@ -5422,9 +6072,9 @@ yyreduce: } break; - case 290: + case 328: /* Line 1787 of yacc.c */ -#line 1909 "src/glsl/glsl_parser.yy" +#line 2064 "src/glsl/glsl_parser.yy" { if ((yyvsp[(2) - (2)].node) == NULL) { _mesa_glsl_error(& (yylsp[(2) - (2)]), state, " statement"); @@ -5435,9 +6085,9 @@ yyreduce: } break; - case 291: + case 329: /* Line 1787 of yacc.c */ -#line 1921 "src/glsl/glsl_parser.yy" +#line 2076 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.node) = new(ctx) ast_expression_statement(NULL); @@ -5445,9 +6095,9 @@ yyreduce: } break; - case 292: + case 330: /* Line 1787 of yacc.c */ -#line 1927 "src/glsl/glsl_parser.yy" +#line 2082 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.node) = new(ctx) ast_expression_statement((yyvsp[(1) - (2)].expression)); @@ -5455,9 +6105,9 @@ yyreduce: } break; - case 293: + case 331: /* Line 1787 of yacc.c */ -#line 1936 "src/glsl/glsl_parser.yy" +#line 2091 "src/glsl/glsl_parser.yy" { (yyval.node) = new(state) ast_selection_statement((yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].selection_rest_statement).then_statement, (yyvsp[(5) - (5)].selection_rest_statement).else_statement); @@ -5465,35 +6115,35 @@ yyreduce: } break; - case 294: + case 332: /* Line 1787 of yacc.c */ -#line 1945 "src/glsl/glsl_parser.yy" +#line 2100 "src/glsl/glsl_parser.yy" { (yyval.selection_rest_statement).then_statement = (yyvsp[(1) - (3)].node); (yyval.selection_rest_statement).else_statement = (yyvsp[(3) - (3)].node); } break; - case 295: + case 333: /* Line 1787 of yacc.c */ -#line 1950 "src/glsl/glsl_parser.yy" +#line 2105 "src/glsl/glsl_parser.yy" { (yyval.selection_rest_statement).then_statement = (yyvsp[(1) - (1)].node); (yyval.selection_rest_statement).else_statement = NULL; } break; - case 296: + case 334: /* Line 1787 of yacc.c */ -#line 1958 "src/glsl/glsl_parser.yy" +#line 2113 "src/glsl/glsl_parser.yy" { (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].expression); } break; - case 297: + case 335: /* Line 1787 of yacc.c */ -#line 1962 "src/glsl/glsl_parser.yy" +#line 2117 "src/glsl/glsl_parser.yy" { void *ctx = state; ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), NULL, (yyvsp[(4) - (4)].expression)); @@ -5506,54 +6156,54 @@ yyreduce: } break; - case 298: + case 336: /* Line 1787 of yacc.c */ -#line 1980 "src/glsl/glsl_parser.yy" +#line 2135 "src/glsl/glsl_parser.yy" { (yyval.node) = new(state) ast_switch_statement((yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].switch_body)); (yyval.node)->set_location(yylloc); } break; - case 299: + case 337: /* Line 1787 of yacc.c */ -#line 1988 "src/glsl/glsl_parser.yy" +#line 2143 "src/glsl/glsl_parser.yy" { (yyval.switch_body) = new(state) ast_switch_body(NULL); (yyval.switch_body)->set_location(yylloc); } break; - case 300: + case 338: /* Line 1787 of yacc.c */ -#line 1993 "src/glsl/glsl_parser.yy" +#line 2148 "src/glsl/glsl_parser.yy" { (yyval.switch_body) = new(state) ast_switch_body((yyvsp[(2) - (3)].case_statement_list)); (yyval.switch_body)->set_location(yylloc); } break; - case 301: + case 339: /* Line 1787 of yacc.c */ -#line 2001 "src/glsl/glsl_parser.yy" +#line 2156 "src/glsl/glsl_parser.yy" { (yyval.case_label) = new(state) ast_case_label((yyvsp[(2) - (3)].expression)); (yyval.case_label)->set_location(yylloc); } break; - case 302: + case 340: /* Line 1787 of yacc.c */ -#line 2006 "src/glsl/glsl_parser.yy" +#line 2161 "src/glsl/glsl_parser.yy" { (yyval.case_label) = new(state) ast_case_label(NULL); (yyval.case_label)->set_location(yylloc); } break; - case 303: + case 341: /* Line 1787 of yacc.c */ -#line 2014 "src/glsl/glsl_parser.yy" +#line 2169 "src/glsl/glsl_parser.yy" { ast_case_label_list *labels = new(state) ast_case_label_list(); @@ -5563,18 +6213,18 @@ yyreduce: } break; - case 304: + case 342: /* Line 1787 of yacc.c */ -#line 2022 "src/glsl/glsl_parser.yy" +#line 2177 "src/glsl/glsl_parser.yy" { (yyval.case_label_list) = (yyvsp[(1) - (2)].case_label_list); (yyval.case_label_list)->labels.push_tail(& (yyvsp[(2) - (2)].case_label)->link); } break; - case 305: + case 343: /* Line 1787 of yacc.c */ -#line 2030 "src/glsl/glsl_parser.yy" +#line 2185 "src/glsl/glsl_parser.yy" { ast_case_statement *stmts = new(state) ast_case_statement((yyvsp[(1) - (2)].case_label_list)); stmts->set_location(yylloc); @@ -5584,18 +6234,18 @@ yyreduce: } break; - case 306: + case 344: /* Line 1787 of yacc.c */ -#line 2038 "src/glsl/glsl_parser.yy" +#line 2193 "src/glsl/glsl_parser.yy" { (yyval.case_statement) = (yyvsp[(1) - (2)].case_statement); (yyval.case_statement)->stmts.push_tail(& (yyvsp[(2) - (2)].node)->link); } break; - case 307: + case 345: /* Line 1787 of yacc.c */ -#line 2046 "src/glsl/glsl_parser.yy" +#line 2201 "src/glsl/glsl_parser.yy" { ast_case_statement_list *cases= new(state) ast_case_statement_list(); cases->set_location(yylloc); @@ -5605,18 +6255,18 @@ yyreduce: } break; - case 308: + case 346: /* Line 1787 of yacc.c */ -#line 2054 "src/glsl/glsl_parser.yy" +#line 2209 "src/glsl/glsl_parser.yy" { (yyval.case_statement_list) = (yyvsp[(1) - (2)].case_statement_list); (yyval.case_statement_list)->cases.push_tail(& (yyvsp[(2) - (2)].case_statement)->link); } break; - case 309: + case 347: /* Line 1787 of yacc.c */ -#line 2062 "src/glsl/glsl_parser.yy" +#line 2217 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_while, @@ -5625,9 +6275,9 @@ yyreduce: } break; - case 310: + case 348: /* Line 1787 of yacc.c */ -#line 2069 "src/glsl/glsl_parser.yy" +#line 2224 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_do_while, @@ -5636,9 +6286,9 @@ yyreduce: } break; - case 311: + case 349: /* Line 1787 of yacc.c */ -#line 2076 "src/glsl/glsl_parser.yy" +#line 2231 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_for, @@ -5647,35 +6297,35 @@ yyreduce: } break; - case 315: + case 353: /* Line 1787 of yacc.c */ -#line 2092 "src/glsl/glsl_parser.yy" +#line 2247 "src/glsl/glsl_parser.yy" { (yyval.node) = NULL; } break; - case 316: + case 354: /* Line 1787 of yacc.c */ -#line 2099 "src/glsl/glsl_parser.yy" +#line 2254 "src/glsl/glsl_parser.yy" { (yyval.for_rest_statement).cond = (yyvsp[(1) - (2)].node); (yyval.for_rest_statement).rest = NULL; } break; - case 317: + case 355: /* Line 1787 of yacc.c */ -#line 2104 "src/glsl/glsl_parser.yy" +#line 2259 "src/glsl/glsl_parser.yy" { (yyval.for_rest_statement).cond = (yyvsp[(1) - (3)].node); (yyval.for_rest_statement).rest = (yyvsp[(3) - (3)].expression); } break; - case 318: + case 356: /* Line 1787 of yacc.c */ -#line 2113 "src/glsl/glsl_parser.yy" +#line 2268 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_continue, NULL); @@ -5683,9 +6333,9 @@ yyreduce: } break; - case 319: + case 357: /* Line 1787 of yacc.c */ -#line 2119 "src/glsl/glsl_parser.yy" +#line 2274 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_break, NULL); @@ -5693,9 +6343,9 @@ yyreduce: } break; - case 320: + case 358: /* Line 1787 of yacc.c */ -#line 2125 "src/glsl/glsl_parser.yy" +#line 2280 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, NULL); @@ -5703,9 +6353,9 @@ yyreduce: } break; - case 321: + case 359: /* Line 1787 of yacc.c */ -#line 2131 "src/glsl/glsl_parser.yy" +#line 2286 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, (yyvsp[(2) - (3)].expression)); @@ -5713,9 +6363,9 @@ yyreduce: } break; - case 322: + case 360: /* Line 1787 of yacc.c */ -#line 2137 "src/glsl/glsl_parser.yy" +#line 2292 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_discard, NULL); @@ -5723,33 +6373,33 @@ yyreduce: } break; - case 323: + case 361: /* Line 1787 of yacc.c */ -#line 2145 "src/glsl/glsl_parser.yy" +#line 2300 "src/glsl/glsl_parser.yy" { (yyval.node) = (yyvsp[(1) - (1)].function_definition); } break; - case 324: + case 362: /* Line 1787 of yacc.c */ -#line 2146 "src/glsl/glsl_parser.yy" +#line 2301 "src/glsl/glsl_parser.yy" { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 325: + case 363: /* Line 1787 of yacc.c */ -#line 2147 "src/glsl/glsl_parser.yy" +#line 2302 "src/glsl/glsl_parser.yy" { (yyval.node) = NULL; } break; - case 326: + case 364: /* Line 1787 of yacc.c */ -#line 2148 "src/glsl/glsl_parser.yy" +#line 2303 "src/glsl/glsl_parser.yy" { (yyval.node) = (yyvsp[(1) - (1)].node); } break; - case 327: + case 365: /* Line 1787 of yacc.c */ -#line 2153 "src/glsl/glsl_parser.yy" +#line 2308 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.function_definition) = new(ctx) ast_function_definition(); @@ -5761,17 +6411,17 @@ yyreduce: } break; - case 328: + case 366: /* Line 1787 of yacc.c */ -#line 2167 "src/glsl/glsl_parser.yy" +#line 2322 "src/glsl/glsl_parser.yy" { (yyval.node) = (yyvsp[(1) - (1)].interface_block); } break; - case 329: + case 367: /* Line 1787 of yacc.c */ -#line 2171 "src/glsl/glsl_parser.yy" +#line 2326 "src/glsl/glsl_parser.yy" { ast_interface_block *block = (yyvsp[(2) - (2)].interface_block); if (!block->layout.merge_qualifier(& (yylsp[(1) - (2)]), state, (yyvsp[(1) - (2)].type_qualifier))) { @@ -5781,9 +6431,9 @@ yyreduce: } break; - case 330: + case 368: /* Line 1787 of yacc.c */ -#line 2182 "src/glsl/glsl_parser.yy" +#line 2337 "src/glsl/glsl_parser.yy" { ast_interface_block *const block = (yyvsp[(6) - (7)].interface_block); @@ -5831,7 +6481,7 @@ yyreduce: "an instance name are not allowed"); } - unsigned interface_type_mask; + uint64_t interface_type_mask; struct ast_type_qualifier temp_type_qualifier; /* Get a bitmask containing only the in/out/uniform flags, allowing us @@ -5847,7 +6497,7 @@ yyreduce: * production rule guarantees that only one bit will be set (and * it will be in/out/uniform). */ - unsigned block_interface_qualifier = (yyvsp[(1) - (7)].type_qualifier).flags.i; + uint64_t block_interface_qualifier = (yyvsp[(1) - (7)].type_qualifier).flags.i; block->layout.flags.i |= block_interface_qualifier; @@ -5879,9 +6529,9 @@ yyreduce: } break; - case 331: + case 369: /* Line 1787 of yacc.c */ -#line 2279 "src/glsl/glsl_parser.yy" +#line 2434 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -5889,9 +6539,9 @@ yyreduce: } break; - case 332: + case 370: /* Line 1787 of yacc.c */ -#line 2285 "src/glsl/glsl_parser.yy" +#line 2440 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -5899,9 +6549,9 @@ yyreduce: } break; - case 333: + case 371: /* Line 1787 of yacc.c */ -#line 2291 "src/glsl/glsl_parser.yy" +#line 2446 "src/glsl/glsl_parser.yy" { memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier))); (yyval.type_qualifier).precision = ast_precision_none; @@ -5909,54 +6559,54 @@ yyreduce: } break; - case 334: + case 372: /* Line 1787 of yacc.c */ -#line 2300 "src/glsl/glsl_parser.yy" +#line 2455 "src/glsl/glsl_parser.yy" { (yyval.interface_block) = new(state) ast_interface_block(*state->default_uniform_qualifier, NULL, NULL); } break; - case 335: + case 373: /* Line 1787 of yacc.c */ -#line 2305 "src/glsl/glsl_parser.yy" +#line 2460 "src/glsl/glsl_parser.yy" { (yyval.interface_block) = new(state) ast_interface_block(*state->default_uniform_qualifier, (yyvsp[(1) - (1)].identifier), NULL); } break; - case 336: + case 374: /* Line 1787 of yacc.c */ -#line 2310 "src/glsl/glsl_parser.yy" +#line 2465 "src/glsl/glsl_parser.yy" { (yyval.interface_block) = new(state) ast_interface_block(*state->default_uniform_qualifier, (yyvsp[(1) - (2)].identifier), (yyvsp[(2) - (2)].array_specifier)); } break; - case 337: + case 375: /* Line 1787 of yacc.c */ -#line 2318 "src/glsl/glsl_parser.yy" +#line 2473 "src/glsl/glsl_parser.yy" { (yyval.declarator_list) = (yyvsp[(1) - (1)].declarator_list); (yyvsp[(1) - (1)].declarator_list)->link.self_link(); } break; - case 338: + case 376: /* Line 1787 of yacc.c */ -#line 2323 "src/glsl/glsl_parser.yy" +#line 2478 "src/glsl/glsl_parser.yy" { (yyval.declarator_list) = (yyvsp[(1) - (2)].declarator_list); (yyvsp[(2) - (2)].declarator_list)->link.insert_before(& (yyval.declarator_list)->link); } break; - case 339: + case 377: /* Line 1787 of yacc.c */ -#line 2331 "src/glsl/glsl_parser.yy" +#line 2486 "src/glsl/glsl_parser.yy" { void *ctx = state; ast_fully_specified_type *type = (yyvsp[(1) - (3)].fully_specified_type); @@ -5979,9 +6629,9 @@ yyreduce: } break; - case 340: + case 378: /* Line 1787 of yacc.c */ -#line 2355 "src/glsl/glsl_parser.yy" +#line 2510 "src/glsl/glsl_parser.yy" { if (!state->default_uniform_qualifier->merge_qualifier(& (yylsp[(1) - (3)]), state, (yyvsp[(1) - (3)].type_qualifier))) { YYERROR; @@ -5990,42 +6640,73 @@ yyreduce: } break; - case 341: + case 379: /* Line 1787 of yacc.c */ -#line 2363 "src/glsl/glsl_parser.yy" +#line 2518 "src/glsl/glsl_parser.yy" { void *ctx = state; (yyval.node) = NULL; - if (state->stage != MESA_SHADER_GEOMETRY) { + switch (state->stage) { + case MESA_SHADER_GEOMETRY: { + if (!(yyvsp[(1) - (3)].type_qualifier).flags.q.prim_type) { + _mesa_glsl_error(& (yylsp[(1) - (3)]), state, + "input layout qualifiers must specify a primitive" + " type"); + } else { + /* Make sure this is a valid input primitive type. */ + switch ((yyvsp[(1) - (3)].type_qualifier).prim_type) { + case GL_POINTS: + case GL_LINES: + case GL_LINES_ADJACENCY: + case GL_TRIANGLES: + case GL_TRIANGLES_ADJACENCY: + (yyval.node) = new(ctx) ast_gs_input_layout((yylsp[(1) - (3)]), (yyvsp[(1) - (3)].type_qualifier).prim_type); + break; + default: + _mesa_glsl_error(&(yylsp[(1) - (3)]), state, + "invalid geometry shader input primitive type"); + break; + } + } + } + break; + case MESA_SHADER_FRAGMENT: + if ((yyvsp[(1) - (3)].type_qualifier).flags.q.early_fragment_tests) { + state->early_fragment_tests = true; + } else { + _mesa_glsl_error(& (yylsp[(1) - (3)]), state, "invalid input layout qualifier"); + } + break; + case MESA_SHADER_COMPUTE: { + if ((yyvsp[(1) - (3)].type_qualifier).flags.q.local_size == 0) { + _mesa_glsl_error(& (yylsp[(1) - (3)]), state, + "input layout qualifiers must specify a local " + "size"); + } else { + /* Infer a local_size of 1 for every unspecified dimension */ + unsigned local_size[3]; + for (int i = 0; i < 3; i++) { + if ((yyvsp[(1) - (3)].type_qualifier).flags.q.local_size & (1 << i)) + local_size[i] = (yyvsp[(1) - (3)].type_qualifier).local_size[i]; + else + local_size[i] = 1; + } + (yyval.node) = new(ctx) ast_cs_input_layout((yylsp[(1) - (3)]), local_size); + } + } + break; + default: _mesa_glsl_error(& (yylsp[(1) - (3)]), state, "input layout qualifiers only valid in " - "geometry shaders"); - } else if (!(yyvsp[(1) - (3)].type_qualifier).flags.q.prim_type) { - _mesa_glsl_error(& (yylsp[(1) - (3)]), state, - "input layout qualifiers must specify a primitive" - " type"); - } else { - /* Make sure this is a valid input primitive type. */ - switch ((yyvsp[(1) - (3)].type_qualifier).prim_type) { - case GL_POINTS: - case GL_LINES: - case GL_LINES_ADJACENCY: - case GL_TRIANGLES: - case GL_TRIANGLES_ADJACENCY: - (yyval.node) = new(ctx) ast_gs_input_layout((yylsp[(1) - (3)]), (yyvsp[(1) - (3)].type_qualifier).prim_type); - break; - default: - _mesa_glsl_error(&(yylsp[(1) - (3)]), state, - "invalid geometry shader input primitive type"); - break; - } + "geometry, fragment and compute shaders"); + break; } } break; - case 342: + case 380: /* Line 1787 of yacc.c */ -#line 2393 "src/glsl/glsl_parser.yy" +#line 2579 "src/glsl/glsl_parser.yy" { if (state->stage != MESA_SHADER_GEOMETRY) { _mesa_glsl_error(& (yylsp[(1) - (3)]), state, @@ -6054,7 +6735,7 @@ yyreduce: /* Line 1787 of yacc.c */ -#line 6058 "src/glsl/glsl_parser.cpp" +#line 6739 "src/glsl/glsl_parser.cpp" default: break; } /* User semantic actions sometimes alter yychar, and that requires diff --git a/3rdparty/glsl-optimizer/src/glsl/glsl_parser.h b/3rdparty/glsl-optimizer/src/glsl/glsl_parser.h index 1bf34f5d4..bb5aef314 100644 --- a/3rdparty/glsl-optimizer/src/glsl/glsl_parser.h +++ b/3rdparty/glsl-optimizer/src/glsl/glsl_parser.h @@ -134,136 +134,148 @@ extern int _mesa_glsl_debug; ISAMPLER2DMSARRAY = 343, USAMPLER2DMSARRAY = 344, SAMPLEREXTERNALOES = 345, - ATOMIC_UINT = 346, - STRUCT = 347, - VOID_TOK = 348, - WHILE = 349, - IDENTIFIER = 350, - TYPE_IDENTIFIER = 351, - NEW_IDENTIFIER = 352, - FLOATCONSTANT = 353, - INTCONSTANT = 354, - UINTCONSTANT = 355, - BOOLCONSTANT = 356, - FIELD_SELECTION = 357, - LEFT_OP = 358, - RIGHT_OP = 359, - INC_OP = 360, - DEC_OP = 361, - LE_OP = 362, - GE_OP = 363, - EQ_OP = 364, - NE_OP = 365, - AND_OP = 366, - OR_OP = 367, - XOR_OP = 368, - MUL_ASSIGN = 369, - DIV_ASSIGN = 370, - ADD_ASSIGN = 371, - MOD_ASSIGN = 372, - LEFT_ASSIGN = 373, - RIGHT_ASSIGN = 374, - AND_ASSIGN = 375, - XOR_ASSIGN = 376, - OR_ASSIGN = 377, - SUB_ASSIGN = 378, - INVARIANT = 379, - LOWP = 380, - MEDIUMP = 381, - HIGHP = 382, - SUPERP = 383, - PRECISION = 384, - VERSION_TOK = 385, - EXTENSION = 386, - LINE = 387, - COLON = 388, - EOL = 389, - INTERFACE = 390, - OUTPUT = 391, - PRAGMA_DEBUG_ON = 392, - PRAGMA_DEBUG_OFF = 393, - PRAGMA_OPTIMIZE_ON = 394, - PRAGMA_OPTIMIZE_OFF = 395, - PRAGMA_INVARIANT_ALL = 396, - LAYOUT_TOK = 397, - ASM = 398, - CLASS = 399, - UNION = 400, - ENUM = 401, - TYPEDEF = 402, - TEMPLATE = 403, - THIS = 404, - PACKED_TOK = 405, - GOTO = 406, - INLINE_TOK = 407, - NOINLINE = 408, - VOLATILE = 409, - PUBLIC_TOK = 410, - STATIC = 411, - EXTERN = 412, - EXTERNAL = 413, - LONG_TOK = 414, - SHORT_TOK = 415, - DOUBLE_TOK = 416, - HALF = 417, - FIXED_TOK = 418, - UNSIGNED = 419, - INPUT_TOK = 420, - OUPTUT = 421, - HVEC2 = 422, - HVEC3 = 423, - HVEC4 = 424, - DVEC2 = 425, - DVEC3 = 426, - DVEC4 = 427, - FVEC2 = 428, - FVEC3 = 429, - FVEC4 = 430, - SAMPLER3DRECT = 431, - SIZEOF = 432, - CAST = 433, - NAMESPACE = 434, - USING = 435, - COHERENT = 436, - RESTRICT = 437, - READONLY = 438, - WRITEONLY = 439, - RESOURCE = 440, - PATCH = 441, - SAMPLE = 442, - SUBROUTINE = 443, - ERROR_TOK = 444, - COMMON = 445, - PARTITION = 446, - ACTIVE = 447, - FILTER = 448, - IMAGE1D = 449, - IMAGE2D = 450, - IMAGE3D = 451, - IMAGECUBE = 452, - IMAGE1DARRAY = 453, - IMAGE2DARRAY = 454, - IIMAGE1D = 455, - IIMAGE2D = 456, - IIMAGE3D = 457, - IIMAGECUBE = 458, - IIMAGE1DARRAY = 459, - IIMAGE2DARRAY = 460, - UIMAGE1D = 461, - UIMAGE2D = 462, - UIMAGE3D = 463, - UIMAGECUBE = 464, - UIMAGE1DARRAY = 465, - UIMAGE2DARRAY = 466, - IMAGE1DSHADOW = 467, - IMAGE2DSHADOW = 468, - IMAGEBUFFER = 469, - IIMAGEBUFFER = 470, - UIMAGEBUFFER = 471, - IMAGE1DARRAYSHADOW = 472, - IMAGE2DARRAYSHADOW = 473, - ROW_MAJOR = 474, - THEN = 475 + IMAGE1D = 346, + IMAGE2D = 347, + IMAGE3D = 348, + IMAGE2DRECT = 349, + IMAGECUBE = 350, + IMAGEBUFFER = 351, + IMAGE1DARRAY = 352, + IMAGE2DARRAY = 353, + IMAGECUBEARRAY = 354, + IMAGE2DMS = 355, + IMAGE2DMSARRAY = 356, + IIMAGE1D = 357, + IIMAGE2D = 358, + IIMAGE3D = 359, + IIMAGE2DRECT = 360, + IIMAGECUBE = 361, + IIMAGEBUFFER = 362, + IIMAGE1DARRAY = 363, + IIMAGE2DARRAY = 364, + IIMAGECUBEARRAY = 365, + IIMAGE2DMS = 366, + IIMAGE2DMSARRAY = 367, + UIMAGE1D = 368, + UIMAGE2D = 369, + UIMAGE3D = 370, + UIMAGE2DRECT = 371, + UIMAGECUBE = 372, + UIMAGEBUFFER = 373, + UIMAGE1DARRAY = 374, + UIMAGE2DARRAY = 375, + UIMAGECUBEARRAY = 376, + UIMAGE2DMS = 377, + UIMAGE2DMSARRAY = 378, + IMAGE1DSHADOW = 379, + IMAGE2DSHADOW = 380, + IMAGE1DARRAYSHADOW = 381, + IMAGE2DARRAYSHADOW = 382, + COHERENT = 383, + VOLATILE = 384, + RESTRICT = 385, + READONLY = 386, + WRITEONLY = 387, + ATOMIC_UINT = 388, + STRUCT = 389, + VOID_TOK = 390, + WHILE = 391, + IDENTIFIER = 392, + TYPE_IDENTIFIER = 393, + NEW_IDENTIFIER = 394, + FLOATCONSTANT = 395, + INTCONSTANT = 396, + UINTCONSTANT = 397, + BOOLCONSTANT = 398, + FIELD_SELECTION = 399, + LEFT_OP = 400, + RIGHT_OP = 401, + INC_OP = 402, + DEC_OP = 403, + LE_OP = 404, + GE_OP = 405, + EQ_OP = 406, + NE_OP = 407, + AND_OP = 408, + OR_OP = 409, + XOR_OP = 410, + MUL_ASSIGN = 411, + DIV_ASSIGN = 412, + ADD_ASSIGN = 413, + MOD_ASSIGN = 414, + LEFT_ASSIGN = 415, + RIGHT_ASSIGN = 416, + AND_ASSIGN = 417, + XOR_ASSIGN = 418, + OR_ASSIGN = 419, + SUB_ASSIGN = 420, + INVARIANT = 421, + LOWP = 422, + MEDIUMP = 423, + HIGHP = 424, + SUPERP = 425, + PRECISION = 426, + VERSION_TOK = 427, + EXTENSION = 428, + LINE = 429, + COLON = 430, + EOL = 431, + INTERFACE = 432, + OUTPUT = 433, + PRAGMA_DEBUG_ON = 434, + PRAGMA_DEBUG_OFF = 435, + PRAGMA_OPTIMIZE_ON = 436, + PRAGMA_OPTIMIZE_OFF = 437, + PRAGMA_INVARIANT_ALL = 438, + LAYOUT_TOK = 439, + ASM = 440, + CLASS = 441, + UNION = 442, + ENUM = 443, + TYPEDEF = 444, + TEMPLATE = 445, + THIS = 446, + PACKED_TOK = 447, + GOTO = 448, + INLINE_TOK = 449, + NOINLINE = 450, + PUBLIC_TOK = 451, + STATIC = 452, + EXTERN = 453, + EXTERNAL = 454, + LONG_TOK = 455, + SHORT_TOK = 456, + DOUBLE_TOK = 457, + HALF = 458, + FIXED_TOK = 459, + UNSIGNED = 460, + INPUT_TOK = 461, + OUPTUT = 462, + HVEC2 = 463, + HVEC3 = 464, + HVEC4 = 465, + DVEC2 = 466, + DVEC3 = 467, + DVEC4 = 468, + FVEC2 = 469, + FVEC3 = 470, + FVEC4 = 471, + SAMPLER3DRECT = 472, + SIZEOF = 473, + CAST = 474, + NAMESPACE = 475, + USING = 476, + RESOURCE = 477, + PATCH = 478, + SAMPLE = 479, + SUBROUTINE = 480, + ERROR_TOK = 481, + COMMON = 482, + PARTITION = 483, + ACTIVE = 484, + FILTER = 485, + ROW_MAJOR = 486, + THEN = 487 }; #endif @@ -311,7 +323,7 @@ typedef union YYSTYPE /* Line 2053 of yacc.c */ -#line 315 "src/glsl/glsl_parser.h" +#line 327 "src/glsl/glsl_parser.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ diff --git a/3rdparty/glsl-optimizer/src/glsl/glsl_parser.yy b/3rdparty/glsl-optimizer/src/glsl/glsl_parser.yy index f4055212a..8617fb55e 100644 --- a/3rdparty/glsl-optimizer/src/glsl/glsl_parser.yy +++ b/3rdparty/glsl-optimizer/src/glsl/glsl_parser.yy @@ -150,6 +150,14 @@ static bool match_layout_qualifier(const char *s1, const char *s2, %token SAMPLER2DMS ISAMPLER2DMS USAMPLER2DMS %token SAMPLER2DMSARRAY ISAMPLER2DMSARRAY USAMPLER2DMSARRAY %token SAMPLEREXTERNALOES +%token IMAGE1D IMAGE2D IMAGE3D IMAGE2DRECT IMAGECUBE IMAGEBUFFER +%token IMAGE1DARRAY IMAGE2DARRAY IMAGECUBEARRAY IMAGE2DMS IMAGE2DMSARRAY +%token IIMAGE1D IIMAGE2D IIMAGE3D IIMAGE2DRECT IIMAGECUBE IIMAGEBUFFER +%token IIMAGE1DARRAY IIMAGE2DARRAY IIMAGECUBEARRAY IIMAGE2DMS IIMAGE2DMSARRAY +%token UIMAGE1D UIMAGE2D UIMAGE3D UIMAGE2DRECT UIMAGECUBE UIMAGEBUFFER +%token UIMAGE1DARRAY UIMAGE2DARRAY UIMAGECUBEARRAY UIMAGE2DMS UIMAGE2DMSARRAY +%token IMAGE1DSHADOW IMAGE2DSHADOW IMAGE1DARRAYSHADOW IMAGE2DARRAYSHADOW +%token COHERENT VOLATILE RESTRICT READONLY WRITEONLY %token ATOMIC_UINT %token STRUCT VOID_TOK WHILE %token IDENTIFIER TYPE_IDENTIFIER NEW_IDENTIFIER @@ -175,23 +183,17 @@ static bool match_layout_qualifier(const char *s1, const char *s2, /* Reserved words that are not actually used in the grammar. */ %token ASM CLASS UNION ENUM TYPEDEF TEMPLATE THIS PACKED_TOK GOTO -%token INLINE_TOK NOINLINE VOLATILE PUBLIC_TOK STATIC EXTERN EXTERNAL +%token INLINE_TOK NOINLINE PUBLIC_TOK STATIC EXTERN EXTERNAL %token LONG_TOK SHORT_TOK DOUBLE_TOK HALF FIXED_TOK UNSIGNED INPUT_TOK OUPTUT %token HVEC2 HVEC3 HVEC4 DVEC2 DVEC3 DVEC4 FVEC2 FVEC3 FVEC4 %token SAMPLER3DRECT %token SIZEOF CAST NAMESPACE USING -%token COHERENT RESTRICT READONLY WRITEONLY RESOURCE PATCH SAMPLE +%token RESOURCE PATCH SAMPLE %token SUBROUTINE %token ERROR_TOK -%token COMMON PARTITION ACTIVE FILTER -%token IMAGE1D IMAGE2D IMAGE3D IMAGECUBE IMAGE1DARRAY IMAGE2DARRAY -%token IIMAGE1D IIMAGE2D IIMAGE3D IIMAGECUBE IIMAGE1DARRAY IIMAGE2DARRAY -%token UIMAGE1D UIMAGE2D UIMAGE3D UIMAGECUBE UIMAGE1DARRAY UIMAGE2DARRAY -%token IMAGE1DSHADOW IMAGE2DSHADOW IMAGEBUFFER IIMAGEBUFFER UIMAGEBUFFER -%token IMAGE1DARRAYSHADOW IMAGE2DARRAYSHADOW -%token ROW_MAJOR +%token COMMON PARTITION ACTIVE FILTER ROW_MAJOR %type variable_identifier %type statement @@ -1240,6 +1242,72 @@ layout_qualifier_id: } } + /* Layout qualifiers for ARB_shader_image_load_store. */ + if (state->ARB_shader_image_load_store_enable || + state->is_version(420, 0)) { + if (!$$.flags.i) { + static const struct { + const char *name; + GLenum format; + glsl_base_type base_type; + } map[] = { + { "rgba32f", GL_RGBA32F, GLSL_TYPE_FLOAT }, + { "rgba16f", GL_RGBA16F, GLSL_TYPE_FLOAT }, + { "rg32f", GL_RG32F, GLSL_TYPE_FLOAT }, + { "rg16f", GL_RG16F, GLSL_TYPE_FLOAT }, + { "r11f_g11f_b10f", GL_R11F_G11F_B10F, GLSL_TYPE_FLOAT }, + { "r32f", GL_R32F, GLSL_TYPE_FLOAT }, + { "r16f", GL_R16F, GLSL_TYPE_FLOAT }, + { "rgba32ui", GL_RGBA32UI, GLSL_TYPE_UINT }, + { "rgba16ui", GL_RGBA16UI, GLSL_TYPE_UINT }, + { "rgb10_a2ui", GL_RGB10_A2UI, GLSL_TYPE_UINT }, + { "rgba8ui", GL_RGBA8UI, GLSL_TYPE_UINT }, + { "rg32ui", GL_RG32UI, GLSL_TYPE_UINT }, + { "rg16ui", GL_RG16UI, GLSL_TYPE_UINT }, + { "rg8ui", GL_RG8UI, GLSL_TYPE_UINT }, + { "r32ui", GL_R32UI, GLSL_TYPE_UINT }, + { "r16ui", GL_R16UI, GLSL_TYPE_UINT }, + { "r8ui", GL_R8UI, GLSL_TYPE_UINT }, + { "rgba32i", GL_RGBA32I, GLSL_TYPE_INT }, + { "rgba16i", GL_RGBA16I, GLSL_TYPE_INT }, + { "rgba8i", GL_RGBA8I, GLSL_TYPE_INT }, + { "rg32i", GL_RG32I, GLSL_TYPE_INT }, + { "rg16i", GL_RG16I, GLSL_TYPE_INT }, + { "rg8i", GL_RG8I, GLSL_TYPE_INT }, + { "r32i", GL_R32I, GLSL_TYPE_INT }, + { "r16i", GL_R16I, GLSL_TYPE_INT }, + { "r8i", GL_R8I, GLSL_TYPE_INT }, + { "rgba16", GL_RGBA16, GLSL_TYPE_FLOAT }, + { "rgb10_a2", GL_RGB10_A2, GLSL_TYPE_FLOAT }, + { "rgba8", GL_RGBA8, GLSL_TYPE_FLOAT }, + { "rg16", GL_RG16, GLSL_TYPE_FLOAT }, + { "rg8", GL_RG8, GLSL_TYPE_FLOAT }, + { "r16", GL_R16, GLSL_TYPE_FLOAT }, + { "r8", GL_R8, GLSL_TYPE_FLOAT }, + { "rgba16_snorm", GL_RGBA16_SNORM, GLSL_TYPE_FLOAT }, + { "rgba8_snorm", GL_RGBA8_SNORM, GLSL_TYPE_FLOAT }, + { "rg16_snorm", GL_RG16_SNORM, GLSL_TYPE_FLOAT }, + { "rg8_snorm", GL_RG8_SNORM, GLSL_TYPE_FLOAT }, + { "r16_snorm", GL_R16_SNORM, GLSL_TYPE_FLOAT }, + { "r8_snorm", GL_R8_SNORM, GLSL_TYPE_FLOAT } + }; + + for (unsigned i = 0; i < Elements(map); i++) { + if (match_layout_qualifier($1, map[i].name, state) == 0) { + $$.flags.q.explicit_image_format = 1; + $$.image_format = map[i].format; + $$.image_base_type = map[i].base_type; + break; + } + } + } + + if (!$$.flags.i && + match_layout_qualifier($1, "early_fragment_tests", state) == 0) { + $$.flags.q.early_fragment_tests = 1; + } + } + if (!$$.flags.i) { _mesa_glsl_error(& @1, state, "unrecognized layout identifier " "`%s'", $1); @@ -1303,6 +1371,34 @@ layout_qualifier_id: } } + static const char *local_size_qualifiers[3] = { + "local_size_x", + "local_size_y", + "local_size_z", + }; + for (int i = 0; i < 3; i++) { + if (match_layout_qualifier(local_size_qualifiers[i], $1, + state) == 0) { + if ($3 <= 0) { + _mesa_glsl_error(& @3, state, + "invalid %s of %d specified", + local_size_qualifiers[i], $3); + YYERROR; + } else if (!state->is_version(430, 0) && + !state->ARB_compute_shader_enable) { + _mesa_glsl_error(& @3, state, + "%s qualifier requires GLSL 4.30 or " + "ARB_compute_shader", + local_size_qualifiers[i]); + YYERROR; + } else { + $$.flags.q.local_size |= (1 << i); + $$.local_size[i] = $3; + } + break; + } + } + /* If the identifier didn't match any known layout identifiers, * emit an error. */ @@ -1485,7 +1581,7 @@ type_qualifier: "just before storage qualifiers"); } $$ = $1; - $$.flags.i |= $2.flags.i; + $$.merge_qualifier(&@1, state, $2); } | storage_qualifier type_qualifier { @@ -1571,6 +1667,32 @@ storage_qualifier: $$.precision = ast_precision_none; $$.flags.q.uniform = 1; } + | COHERENT + { + memset(& $$, 0, sizeof($$)); + $$.flags.q.coherent = 1; + } + | VOLATILE + { + memset(& $$, 0, sizeof($$)); + $$.flags.q._volatile = 1; + } + | RESTRICT + { + STATIC_ASSERT(sizeof($$.flags.q) <= sizeof($$.flags.i)); + memset(& $$, 0, sizeof($$)); + $$.flags.q.restrict_flag = 1; + } + | READONLY + { + memset(& $$, 0, sizeof($$)); + $$.flags.q.read_only = 1; + } + | WRITEONLY + { + memset(& $$, 0, sizeof($$)); + $$.flags.q.write_only = 1; + } ; array_specifier: @@ -1710,6 +1832,39 @@ basic_type_specifier_nonarray: | SAMPLER2DMSARRAY { $$ = "sampler2DMSArray"; } | ISAMPLER2DMSARRAY { $$ = "isampler2DMSArray"; } | USAMPLER2DMSARRAY { $$ = "usampler2DMSArray"; } + | IMAGE1D { $$ = "image1D"; } + | IMAGE2D { $$ = "image2D"; } + | IMAGE3D { $$ = "image3D"; } + | IMAGE2DRECT { $$ = "image2DRect"; } + | IMAGECUBE { $$ = "imageCube"; } + | IMAGEBUFFER { $$ = "imageBuffer"; } + | IMAGE1DARRAY { $$ = "image1DArray"; } + | IMAGE2DARRAY { $$ = "image2DArray"; } + | IMAGECUBEARRAY { $$ = "imageCubeArray"; } + | IMAGE2DMS { $$ = "image2DMS"; } + | IMAGE2DMSARRAY { $$ = "image2DMSArray"; } + | IIMAGE1D { $$ = "iimage1D"; } + | IIMAGE2D { $$ = "iimage2D"; } + | IIMAGE3D { $$ = "iimage3D"; } + | IIMAGE2DRECT { $$ = "iimage2DRect"; } + | IIMAGECUBE { $$ = "iimageCube"; } + | IIMAGEBUFFER { $$ = "iimageBuffer"; } + | IIMAGE1DARRAY { $$ = "iimage1DArray"; } + | IIMAGE2DARRAY { $$ = "iimage2DArray"; } + | IIMAGECUBEARRAY { $$ = "iimageCubeArray"; } + | IIMAGE2DMS { $$ = "iimage2DMS"; } + | IIMAGE2DMSARRAY { $$ = "iimage2DMSArray"; } + | UIMAGE1D { $$ = "uimage1D"; } + | UIMAGE2D { $$ = "uimage2D"; } + | UIMAGE3D { $$ = "uimage3D"; } + | UIMAGE2DRECT { $$ = "uimage2DRect"; } + | UIMAGECUBE { $$ = "uimageCube"; } + | UIMAGEBUFFER { $$ = "uimageBuffer"; } + | UIMAGE1DARRAY { $$ = "uimage1DArray"; } + | UIMAGE2DARRAY { $$ = "uimage2DArray"; } + | UIMAGECUBEARRAY { $$ = "uimageCubeArray"; } + | UIMAGE2DMS { $$ = "uimage2DMS"; } + | UIMAGE2DMSARRAY { $$ = "uimage2DMSArray"; } | ATOMIC_UINT { $$ = "atomic_uint"; } ; @@ -2226,7 +2381,7 @@ basic_interface_block: "an instance name are not allowed"); } - unsigned interface_type_mask; + uint64_t interface_type_mask; struct ast_type_qualifier temp_type_qualifier; /* Get a bitmask containing only the in/out/uniform flags, allowing us @@ -2242,7 +2397,7 @@ basic_interface_block: * production rule guarantees that only one bit will be set (and * it will be in/out/uniform). */ - unsigned block_interface_qualifier = $1.flags.i; + uint64_t block_interface_qualifier = $1.flags.i; block->layout.flags.i |= block_interface_qualifier; @@ -2363,29 +2518,60 @@ layout_defaults: { void *ctx = state; $$ = NULL; - if (state->stage != MESA_SHADER_GEOMETRY) { + switch (state->stage) { + case MESA_SHADER_GEOMETRY: { + if (!$1.flags.q.prim_type) { + _mesa_glsl_error(& @1, state, + "input layout qualifiers must specify a primitive" + " type"); + } else { + /* Make sure this is a valid input primitive type. */ + switch ($1.prim_type) { + case GL_POINTS: + case GL_LINES: + case GL_LINES_ADJACENCY: + case GL_TRIANGLES: + case GL_TRIANGLES_ADJACENCY: + $$ = new(ctx) ast_gs_input_layout(@1, $1.prim_type); + break; + default: + _mesa_glsl_error(&@1, state, + "invalid geometry shader input primitive type"); + break; + } + } + } + break; + case MESA_SHADER_FRAGMENT: + if ($1.flags.q.early_fragment_tests) { + state->early_fragment_tests = true; + } else { + _mesa_glsl_error(& @1, state, "invalid input layout qualifier"); + } + break; + case MESA_SHADER_COMPUTE: { + if ($1.flags.q.local_size == 0) { + _mesa_glsl_error(& @1, state, + "input layout qualifiers must specify a local " + "size"); + } else { + /* Infer a local_size of 1 for every unspecified dimension */ + unsigned local_size[3]; + for (int i = 0; i < 3; i++) { + if ($1.flags.q.local_size & (1 << i)) + local_size[i] = $1.local_size[i]; + else + local_size[i] = 1; + } + $$ = new(ctx) ast_cs_input_layout(@1, local_size); + } + } + break; + default: _mesa_glsl_error(& @1, state, "input layout qualifiers only valid in " - "geometry shaders"); - } else if (!$1.flags.q.prim_type) { - _mesa_glsl_error(& @1, state, - "input layout qualifiers must specify a primitive" - " type"); - } else { - /* Make sure this is a valid input primitive type. */ - switch ($1.prim_type) { - case GL_POINTS: - case GL_LINES: - case GL_LINES_ADJACENCY: - case GL_TRIANGLES: - case GL_TRIANGLES_ADJACENCY: - $$ = new(ctx) ast_gs_input_layout(@1, $1.prim_type); - break; - default: - _mesa_glsl_error(&@1, state, - "invalid geometry shader input primitive type"); - break; - } + "geometry, fragment and compute shaders"); + break; } } diff --git a/3rdparty/glsl-optimizer/src/glsl/glsl_parser_extras.cpp b/3rdparty/glsl-optimizer/src/glsl/glsl_parser_extras.cpp index 156a0f9fa..2b5c4474a 100644 --- a/3rdparty/glsl-optimizer/src/glsl/glsl_parser_extras.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/glsl_parser_extras.cpp @@ -56,7 +56,8 @@ static unsigned known_desktop_glsl_versions[] = _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *_ctx, gl_shader_stage stage, void *mem_ctx) - : ctx(_ctx), switch_state() + : ctx(_ctx), cs_input_local_size_specified(false), cs_input_local_size(), + switch_state() { assert(stage < MESA_SHADER_STAGES); this->stage = stage; @@ -82,6 +83,7 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *_ctx, ctx->Const.ForceGLSLVersion : 110; this->es_shader = false; this->had_version_string = false; + this->had_float_precision = false; this->ARB_texture_rectangle_enable = true; /* OpenGL ES 2.0 has different defaults from desktop GL. */ @@ -124,6 +126,20 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *_ctx, this->Const.MaxCombinedAtomicCounters = ctx->Const.MaxCombinedAtomicCounters; this->Const.MaxAtomicBufferBindings = ctx->Const.MaxAtomicBufferBindings; + /* Compute shader constants */ + for (unsigned i = 0; i < Elements(this->Const.MaxComputeWorkGroupCount); i++) + this->Const.MaxComputeWorkGroupCount[i] = ctx->Const.MaxComputeWorkGroupCount[i]; + for (unsigned i = 0; i < Elements(this->Const.MaxComputeWorkGroupSize); i++) + this->Const.MaxComputeWorkGroupSize[i] = ctx->Const.MaxComputeWorkGroupSize[i]; + + this->Const.MaxImageUnits = ctx->Const.MaxImageUnits; + this->Const.MaxCombinedImageUnitsAndFragmentOutputs = ctx->Const.MaxCombinedImageUnitsAndFragmentOutputs; + this->Const.MaxImageSamples = ctx->Const.MaxImageSamples; + this->Const.MaxVertexImageUniforms = ctx->Const.Program[MESA_SHADER_VERTEX].MaxImageUniforms; + this->Const.MaxGeometryImageUniforms = ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxImageUniforms; + this->Const.MaxFragmentImageUniforms = ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxImageUniforms; + this->Const.MaxCombinedImageUniforms = ctx->Const.MaxCombinedImageUniforms; + this->current_function = NULL; this->toplevel_ir = NULL; this->found_return = false; @@ -191,6 +207,7 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *_ctx, this->gs_input_prim_type = GL_POINTS; this->gs_input_size = 0; this->out_qualifier = new(this) ast_type_qualifier(); + this->early_fragment_tests = false; memset(this->atomic_counter_offsets, 0, sizeof(this->atomic_counter_offsets)); } @@ -524,6 +541,8 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = { EXT(ARB_sample_shading, true, false, ARB_sample_shading), EXT(AMD_shader_trinary_minmax, true, false, dummy_true), EXT(ARB_viewport_array, true, false, ARB_viewport_array), + EXT(ARB_compute_shader, true, false, ARB_compute_shader), + EXT(ARB_shader_image_load_store, true, false, ARB_shader_image_load_store), }; #undef EXT @@ -1337,23 +1356,45 @@ set_shader_inout_layout(struct gl_shader *shader, /* Should have been prevented by the parser. */ assert(!state->gs_input_prim_type_specified); assert(!state->out_qualifier->flags.i); - return; } - shader->Geom.VerticesOut = 0; - if (state->out_qualifier->flags.q.max_vertices) - shader->Geom.VerticesOut = state->out_qualifier->max_vertices; - - if (state->gs_input_prim_type_specified) { - shader->Geom.InputType = state->gs_input_prim_type; - } else { - shader->Geom.InputType = PRIM_UNKNOWN; + if (shader->Stage != MESA_SHADER_COMPUTE) { + /* Should have been prevented by the parser. */ + assert(!state->cs_input_local_size_specified); } - if (state->out_qualifier->flags.q.prim_type) { - shader->Geom.OutputType = state->out_qualifier->prim_type; - } else { - shader->Geom.OutputType = PRIM_UNKNOWN; + switch (shader->Stage) { + case MESA_SHADER_GEOMETRY: + shader->Geom.VerticesOut = 0; + if (state->out_qualifier->flags.q.max_vertices) + shader->Geom.VerticesOut = state->out_qualifier->max_vertices; + + if (state->gs_input_prim_type_specified) { + shader->Geom.InputType = state->gs_input_prim_type; + } else { + shader->Geom.InputType = PRIM_UNKNOWN; + } + + if (state->out_qualifier->flags.q.prim_type) { + shader->Geom.OutputType = state->out_qualifier->prim_type; + } else { + shader->Geom.OutputType = PRIM_UNKNOWN; + } + break; + + case MESA_SHADER_COMPUTE: + if (state->cs_input_local_size_specified) { + for (int i = 0; i < 3; i++) + shader->Comp.LocalSize[i] = state->cs_input_local_size[i]; + } else { + for (int i = 0; i < 3; i++) + shader->Comp.LocalSize[i] = 0; + } + break; + + default: + /* Nothing to do. */ + break; } } diff --git a/3rdparty/glsl-optimizer/src/glsl/glsl_parser_extras.h b/3rdparty/glsl-optimizer/src/glsl/glsl_parser_extras.h index 20a145530..2c40a5111 100644 --- a/3rdparty/glsl-optimizer/src/glsl/glsl_parser_extras.h +++ b/3rdparty/glsl-optimizer/src/glsl/glsl_parser_extras.h @@ -166,6 +166,7 @@ struct _mesa_glsl_parse_state { bool es_shader; unsigned language_version; bool had_version_string; + bool had_float_precision; gl_shader_stage stage; /** @@ -197,6 +198,21 @@ struct _mesa_glsl_parse_state { */ GLenum gs_input_prim_type; + /** + * True if a compute shader input local size was specified using a layout + * directive. + * + * Note: this value is computed at ast_to_hir time rather than at parse + * time. + */ + bool cs_input_local_size_specified; + + /** + * If cs_input_local_size_specified is true, the local size that was + * specified. Otherwise ignored. + */ + unsigned cs_input_local_size[3]; + /** Output layout qualifiers from GLSL 1.50. (geometry shader controls)*/ struct ast_type_qualifier *out_qualifier; @@ -251,6 +267,19 @@ struct _mesa_glsl_parse_state { unsigned MaxFragmentAtomicCounters; unsigned MaxCombinedAtomicCounters; unsigned MaxAtomicBufferBindings; + + /* ARB_compute_shader */ + unsigned MaxComputeWorkGroupCount[3]; + unsigned MaxComputeWorkGroupSize[3]; + + /* ARB_shader_image_load_store */ + unsigned MaxImageUnits; + unsigned MaxCombinedImageUnitsAndFragmentOutputs; + unsigned MaxImageSamples; + unsigned MaxVertexImageUniforms; + unsigned MaxGeometryImageUniforms; + unsigned MaxFragmentImageUniforms; + unsigned MaxCombinedImageUniforms; } Const; /** @@ -363,6 +392,10 @@ struct _mesa_glsl_parse_state { bool AMD_shader_trinary_minmax_warn; bool ARB_viewport_array_enable; bool ARB_viewport_array_warn; + bool ARB_compute_shader_enable; + bool ARB_compute_shader_warn; + bool ARB_shader_image_load_store_enable; + bool ARB_shader_image_load_store_warn; /*@}*/ /** Extensions supported by the OpenGL implementation. */ @@ -379,6 +412,8 @@ struct _mesa_glsl_parse_state { */ unsigned gs_input_size; + bool early_fragment_tests; + /** Atomic counter offsets by binding */ unsigned atomic_counter_offsets[MAX_COMBINED_ATOMIC_BUFFERS]; }; diff --git a/3rdparty/glsl-optimizer/src/glsl/glsl_types.cpp b/3rdparty/glsl-optimizer/src/glsl/glsl_types.cpp index 325b6e1b2..333a160c5 100644 --- a/3rdparty/glsl-optimizer/src/glsl/glsl_types.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/glsl_types.cpp @@ -65,20 +65,26 @@ glsl_type::glsl_type(GLenum gl_type, memset(& fields, 0, sizeof(fields)); } -glsl_type::glsl_type(GLenum gl_type, +glsl_type::glsl_type(GLenum gl_type, glsl_base_type base_type, enum glsl_sampler_dim dim, bool shadow, bool array, unsigned type, const char *name) : gl_type(gl_type), - base_type(GLSL_TYPE_SAMPLER), + base_type(base_type), sampler_dimensionality(dim), sampler_shadow(shadow), sampler_array(array), sampler_type(type), interface_packing(0), - vector_elements(0), matrix_columns(0), length(0) { init_ralloc_type_ctx(); assert(name != NULL); this->name = ralloc_strdup(this->mem_ctx, name); memset(& fields, 0, sizeof(fields)); + + if (base_type == GLSL_TYPE_SAMPLER) { + /* Samplers take no storage whatsoever. */ + matrix_columns = vector_elements = 0; + } else { + matrix_columns = vector_elements = 1; + } } glsl_type::glsl_type(const glsl_struct_field *fields, unsigned num_fields, @@ -177,6 +183,7 @@ bool glsl_type::contains_opaque() const { switch (base_type) { case GLSL_TYPE_SAMPLER: + case GLSL_TYPE_IMAGE: case GLSL_TYPE_ATOMIC_UINT: return true; case GLSL_TYPE_ARRAY: @@ -222,6 +229,21 @@ glsl_type::sampler_index() const } } +bool +glsl_type::contains_image() const +{ + if (this->is_array()) { + return this->fields.array->contains_image(); + } else if (this->is_record()) { + for (unsigned int i = 0; i < this->length; i++) { + if (this->fields.structure[i].type->contains_image()) + return true; + } + return false; + } else { + return this->is_image(); + } +} const glsl_type *glsl_type::get_base_type() const { @@ -662,6 +684,9 @@ glsl_type::component_slots() const case GLSL_TYPE_ARRAY: return this->length * this->fields.array->component_slots(); + case GLSL_TYPE_IMAGE: + return 1; + case GLSL_TYPE_SAMPLER: case GLSL_TYPE_ATOMIC_UINT: case GLSL_TYPE_VOID: @@ -952,6 +977,7 @@ glsl_type::count_attribute_slots() const return this->length * this->fields.array->count_attribute_slots(); case GLSL_TYPE_SAMPLER: + case GLSL_TYPE_IMAGE: case GLSL_TYPE_ATOMIC_UINT: case GLSL_TYPE_VOID: case GLSL_TYPE_ERROR: @@ -964,10 +990,8 @@ glsl_type::count_attribute_slots() const } int -glsl_type::sampler_coordinate_components() const +glsl_type::coordinate_components() const { - assert(is_sampler()); - int size; switch (sampler_dimensionality) { diff --git a/3rdparty/glsl-optimizer/src/glsl/glsl_types.h b/3rdparty/glsl-optimizer/src/glsl/glsl_types.h index 6c259882e..ad40bae8a 100644 --- a/3rdparty/glsl-optimizer/src/glsl/glsl_types.h +++ b/3rdparty/glsl-optimizer/src/glsl/glsl_types.h @@ -53,6 +53,7 @@ enum glsl_base_type { GLSL_TYPE_FLOAT, GLSL_TYPE_BOOL, GLSL_TYPE_SAMPLER, + GLSL_TYPE_IMAGE, GLSL_TYPE_ATOMIC_UINT, GLSL_TYPE_STRUCT, GLSL_TYPE_INTERFACE, @@ -96,8 +97,9 @@ struct glsl_type { unsigned sampler_dimensionality:3; /**< \see glsl_sampler_dim */ unsigned sampler_shadow:1; unsigned sampler_array:1; - unsigned sampler_type:2; /**< Type of data returned using this sampler. - * only \c GLSL_TYPE_FLOAT, \c GLSL_TYPE_INT, + unsigned sampler_type:2; /**< Type of data returned using this + * sampler or image. Only \c + * GLSL_TYPE_FLOAT, \c GLSL_TYPE_INT, * and \c GLSL_TYPE_UINT are valid. */ unsigned interface_packing:2; @@ -408,6 +410,20 @@ struct glsl_type { */ gl_texture_index sampler_index() const; + /** + * Query whether or not type is an image, or for struct and array + * types, contains an image. + */ + bool contains_image() const; + + /** + * Query whether or not a type is an image + */ + bool is_image() const + { + return base_type == GLSL_TYPE_IMAGE; + } + /** * Query whether or not a type is an array */ @@ -541,7 +557,8 @@ struct glsl_type { } /** - * Return the number of coordinate components needed for this sampler type. + * Return the number of coordinate components needed for this + * sampler or image type. * * This is based purely on the sampler's dimensionality. For example, this * returns 1 for sampler1D, and 3 for sampler2DArray. @@ -550,7 +567,7 @@ struct glsl_type { * a texturing built-in function, since those pack additional values (such * as the shadow comparitor or projector) into the coordinate type. */ - int sampler_coordinate_components() const; + int coordinate_components() const; /** * Compare a record type against another record type. @@ -574,8 +591,8 @@ private: glsl_base_type base_type, unsigned vector_elements, unsigned matrix_columns, const char *name); - /** Constructor for sampler types */ - glsl_type(GLenum gl_type, + /** Constructor for sampler or image types */ + glsl_type(GLenum gl_type, glsl_base_type base_type, enum glsl_sampler_dim dim, bool shadow, bool array, unsigned type, const char *name); diff --git a/3rdparty/glsl-optimizer/src/glsl/ir.cpp b/3rdparty/glsl-optimizer/src/glsl/ir.cpp index 39b49bd0f..4401d85a5 100644 --- a/3rdparty/glsl-optimizer/src/glsl/ir.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/ir.cpp @@ -1351,13 +1351,13 @@ ir_dereference::is_lvalue() const if ((var == NULL) || var->data.read_only) return false; - /* From page 17 (page 23 of the PDF) of the GLSL 1.20 spec: + /* From section 4.1.7 of the GLSL 4.40 spec: * - * "Samplers cannot be treated as l-values; hence cannot be used - * as out or inout function parameters, nor can they be - * assigned into." + * "Opaque variables cannot be treated as l-values; hence cannot + * be used as out or inout function parameters, nor can they be + * assigned into." */ - if (this->type->contains_sampler()) + if (this->type->contains_opaque()) return false; return true; @@ -1595,6 +1595,11 @@ ir_variable::ir_variable(const struct glsl_type *type, const char *name, this->data.max_array_access = 0; this->data.atomic.buffer_index = 0; this->data.atomic.offset = 0; + this->data.image.read_only = false; + this->data.image.write_only = false; + this->data.image.coherent = false; + this->data.image._volatile = false; + this->data.image.restrict_flag = false; if (type != NULL) { if (type->base_type == GLSL_TYPE_SAMPLER) @@ -1700,7 +1705,12 @@ ir_function_signature::qualifiers_match(exec_list *params) !modes_match(a->data.mode, b->data.mode) || a->data.interpolation != b->data.interpolation || a->data.centroid != b->data.centroid || - a->data.sample != b->data.sample) { + a->data.sample != b->data.sample || + a->data.image.read_only != b->data.image.read_only || + a->data.image.write_only != b->data.image.write_only || + a->data.image.coherent != b->data.image.coherent || + a->data.image._volatile != b->data.image._volatile || + a->data.image.restrict_flag != b->data.image.restrict_flag) { /* parameter a's qualifiers don't match */ return a->name; diff --git a/3rdparty/glsl-optimizer/src/glsl/ir.h b/3rdparty/glsl-optimizer/src/glsl/ir.h index a4c0236e3..d1a25d7a7 100644 --- a/3rdparty/glsl-optimizer/src/glsl/ir.h +++ b/3rdparty/glsl-optimizer/src/glsl/ir.h @@ -479,7 +479,7 @@ public: void reinit_interface_type(const struct glsl_type *type) { if (this->max_ifc_array_access != NULL) { -#ifndef _NDEBUG +#ifndef NDEBUG /* Redeclaring gl_PerVertex is only allowed if none of the built-ins * it defines have been accessed yet; so it's safe to throw away the * old max_ifc_array_access pointer, since all of its values are @@ -700,6 +700,20 @@ public: unsigned offset; } atomic; + /** + * ARB_shader_image_load_store qualifiers. + */ + struct { + bool read_only; /**< "readonly" qualifier. */ + bool write_only; /**< "writeonly" qualifier. */ + bool coherent; + bool _volatile; + bool restrict_flag; + + /** Image internal format if specified explicitly, otherwise GL_NONE. */ + GLenum format; + } image; + /** * Highest element accessed with a constant expression array index * diff --git a/3rdparty/glsl-optimizer/src/glsl/ir_clone.cpp b/3rdparty/glsl-optimizer/src/glsl/ir_clone.cpp index 551196e75..10f750222 100644 --- a/3rdparty/glsl-optimizer/src/glsl/ir_clone.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/ir_clone.cpp @@ -375,6 +375,7 @@ ir_constant::clone(void *mem_ctx, struct hash_table *ht) const } case GLSL_TYPE_SAMPLER: + case GLSL_TYPE_IMAGE: case GLSL_TYPE_ATOMIC_UINT: case GLSL_TYPE_VOID: case GLSL_TYPE_ERROR: diff --git a/3rdparty/glsl-optimizer/src/glsl/ir_print_glsl_visitor.cpp b/3rdparty/glsl-optimizer/src/glsl/ir_print_glsl_visitor.cpp index 2d5accb44..5656fcf09 100644 --- a/3rdparty/glsl-optimizer/src/glsl/ir_print_glsl_visitor.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/ir_print_glsl_visitor.cpp @@ -336,6 +336,17 @@ void ir_print_glsl_visitor::print_precision (ir_instruction* ir, const glsl_type } glsl_precision prec = precision_from_ir(ir); + // In fragment shader, default float precision is undefined. + // We must thus always print it, when there was no default precision + // and for whatever reason our type ended up having undefined precision. + if (prec == glsl_precision_undefined && + type && type->is_float() && +// this->state->stage == MESA_SHADER_FRAGMENT && + !this->state->had_float_precision) + { + prec = glsl_precision_medium; + } + // skip precision for samplers that end up being lowp (default anyway) or undefined; // except always emit it for shadowmap samplers (some drivers don't implement // default EXT_shadow_samplers precision) diff --git a/3rdparty/glsl-optimizer/src/glsl/ir_uniform.h b/3rdparty/glsl-optimizer/src/glsl/ir_uniform.h index f678c2c5c..7508f795d 100644 --- a/3rdparty/glsl-optimizer/src/glsl/ir_uniform.h +++ b/3rdparty/glsl-optimizer/src/glsl/ir_uniform.h @@ -78,6 +78,26 @@ struct gl_uniform_driver_storage { void *data; }; +struct gl_opaque_uniform_index { + /** + * Base opaque uniform index + * + * If \c gl_uniform_storage::base_type is an opaque type, this + * represents its uniform index. If \c + * gl_uniform_storage::array_elements is not zero, the array will + * use opaque uniform indices \c index through \c index + \c + * gl_uniform_storage::array_elements - 1, inclusive. + * + * Note that the index may be different in each shader stage. + */ + uint8_t index; + + /** + * Whether this opaque uniform is used in this shader stage. + */ + bool active; +}; + struct gl_uniform_storage { char *name; /** Type of this uniform data stored. @@ -99,24 +119,9 @@ struct gl_uniform_storage { */ bool initialized; - struct { - /** - * Base sampler index - * - * If \c ::base_type is \c GLSL_TYPE_SAMPLER, this represents the index - * of this sampler. If \c ::array_elements is not zero, the array will - * use sampler indices \c ::sampler through \c ::sampler + - * \c ::array_elements - 1, inclusive. - * - * Note that the index may be different in each shader stage. - */ - uint8_t index; + struct gl_opaque_uniform_index sampler[MESA_SHADER_STAGES]; - /** - * Whether this sampler is used in this shader stage. - */ - bool active; - } sampler[MESA_SHADER_STAGES]; + struct gl_opaque_uniform_index image[MESA_SHADER_STAGES]; /** * Storage used by the driver for the uniform diff --git a/3rdparty/glsl-optimizer/src/glsl/link_uniform_initializers.cpp b/3rdparty/glsl-optimizer/src/glsl/link_uniform_initializers.cpp index 7d5c1472d..9d6977d57 100644 --- a/3rdparty/glsl-optimizer/src/glsl/link_uniform_initializers.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/link_uniform_initializers.cpp @@ -69,6 +69,7 @@ copy_constant_to_storage(union gl_constant_value *storage, break; case GLSL_TYPE_ARRAY: case GLSL_TYPE_STRUCT: + case GLSL_TYPE_IMAGE: case GLSL_TYPE_ATOMIC_UINT: case GLSL_TYPE_INTERFACE: case GLSL_TYPE_VOID: diff --git a/3rdparty/glsl-optimizer/src/glsl/link_uniforms.cpp b/3rdparty/glsl-optimizer/src/glsl/link_uniforms.cpp index af621ac43..61370cde7 100644 --- a/3rdparty/glsl-optimizer/src/glsl/link_uniforms.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/link_uniforms.cpp @@ -240,7 +240,8 @@ class count_uniform_size : public program_resource_visitor { public: count_uniform_size(struct string_to_uint_map *map) : num_active_uniforms(0), num_values(0), num_shader_samplers(0), - num_shader_uniform_components(0), is_ubo_var(false), map(map) + num_shader_images(0), num_shader_uniform_components(0), + is_ubo_var(false), map(map) { /* empty */ } @@ -248,6 +249,7 @@ public: void start_shader() { this->num_shader_samplers = 0; + this->num_shader_images = 0; this->num_shader_uniform_components = 0; } @@ -276,6 +278,11 @@ public: */ unsigned num_shader_samplers; + /** + * Number of images used + */ + unsigned num_shader_images; + /** * Number of uniforms used in the current shader */ @@ -303,6 +310,15 @@ private: if (type->contains_sampler()) { this->num_shader_samplers += type->is_array() ? type->array_size() : 1; + } else if (type->contains_image()) { + this->num_shader_images += values; + + /* As drivers are likely to represent image uniforms as + * scalar indices, count them against the limit of uniform + * components in the default block. The spec allows image + * uniforms to use up no more than one scalar slot. + */ + this->num_shader_uniform_components += values; } else { /* Accumulate the total number of uniform slots used by this shader. * Note that samplers do not count against this limit because they @@ -364,6 +380,7 @@ public: this->shader_samplers_used = 0; this->shader_shadow_samplers = 0; this->next_sampler = 0; + this->next_image = 0; memset(this->targets, 0, sizeof(this->targets)); } @@ -460,6 +477,24 @@ private: } } + void handle_images(const glsl_type *base_type, + struct gl_uniform_storage *uniform) + { + if (base_type->is_image()) { + uniform->image[shader_type].index = this->next_image; + uniform->image[shader_type].active = true; + + /* Increment the image index by 1 for non-arrays and by the + * number of array elements for arrays. + */ + this->next_image += MAX2(1, uniform->array_elements); + + } else { + uniform->image[shader_type].index = ~0; + uniform->image[shader_type].active = false; + } + } + virtual void visit_field(const glsl_type *type, const char *name, bool row_major) { @@ -495,8 +530,9 @@ private: base_type = type; } - /* This assigns sampler uniforms to sampler units. */ + /* This assigns uniform indices to sampler and image uniforms. */ handle_samplers(base_type, &this->uniforms[id]); + handle_images(base_type, &this->uniforms[id]); /* If there is already storage associated with this uniform, it means * that it was set while processing an earlier shader stage. For @@ -554,6 +590,7 @@ private: struct gl_uniform_storage *uniforms; unsigned next_sampler; + unsigned next_image; public: union gl_constant_value *values; @@ -720,6 +757,40 @@ link_assign_uniform_block_offsets(struct gl_shader *shader) } } +/** + * Scan the program for image uniforms and store image unit access + * information into the gl_shader data structure. + */ +static void +link_set_image_access_qualifiers(struct gl_shader_program *prog) +{ + for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) { + gl_shader *sh = prog->_LinkedShaders[i]; + + if (sh == NULL) + continue; + + foreach_list(node, sh->ir) { + ir_variable *var = ((ir_instruction *) node)->as_variable(); + + if (var && var->data.mode == ir_var_uniform && + var->type->contains_image()) { + unsigned id; + bool found = prog->UniformHash->get(id, var->name); + assert(found); + const gl_uniform_storage *storage = &prog->UniformStorage[id]; + const unsigned index = storage->image[i].index; + const GLenum access = (var->data.image.read_only ? GL_READ_ONLY : + var->data.image.write_only ? GL_WRITE_ONLY : + GL_READ_WRITE); + + for (unsigned j = 0; j < MAX2(1, storage->array_elements); ++j) + sh->ImageAccess[index + j] = access; + } + } + } +} + void link_assign_uniform_locations(struct gl_shader_program *prog) { @@ -757,6 +828,7 @@ link_assign_uniform_locations(struct gl_shader_program *prog) * types cannot have initializers." */ memset(sh->SamplerUnits, 0, sizeof(sh->SamplerUnits)); + memset(sh->ImageUnits, 0, sizeof(sh->ImageUnits)); link_update_uniform_buffer_variables(sh); @@ -782,6 +854,7 @@ link_assign_uniform_locations(struct gl_shader_program *prog) } sh->num_samplers = uniform_size.num_shader_samplers; + sh->NumImages = uniform_size.num_shader_images; sh->num_uniform_components = uniform_size.num_shader_uniform_components; sh->num_combined_uniform_components = sh->num_uniform_components; @@ -862,6 +935,7 @@ link_assign_uniform_locations(struct gl_shader_program *prog) prog->NumUserUniformStorage = num_user_uniforms; prog->UniformStorage = uniforms; + link_set_image_access_qualifiers(prog); link_set_uniform_initializers(prog); return; diff --git a/3rdparty/glsl-optimizer/src/glsl/linker.cpp b/3rdparty/glsl-optimizer/src/glsl/linker.cpp index a60c0d3ea..a82e5c1d7 100644 --- a/3rdparty/glsl-optimizer/src/glsl/linker.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/linker.cpp @@ -1291,6 +1291,69 @@ link_gs_inout_layout_qualifiers(struct gl_shader_program *prog, prog->Geom.VerticesOut = linked_shader->Geom.VerticesOut; } + +/** + * Perform cross-validation of compute shader local_size_{x,y,z} layout + * qualifiers for the attached compute shaders, and propagate them to the + * linked CS and linked shader program. + */ +static void +link_cs_input_layout_qualifiers(struct gl_shader_program *prog, + struct gl_shader *linked_shader, + struct gl_shader **shader_list, + unsigned num_shaders) +{ + for (int i = 0; i < 3; i++) + linked_shader->Comp.LocalSize[i] = 0; + + /* This function is called for all shader stages, but it only has an effect + * for compute shaders. + */ + if (linked_shader->Stage != MESA_SHADER_COMPUTE) + return; + + /* From the ARB_compute_shader spec, in the section describing local size + * declarations: + * + * If multiple compute shaders attached to a single program object + * declare local work-group size, the declarations must be identical; + * otherwise a link-time error results. Furthermore, if a program + * object contains any compute shaders, at least one must contain an + * input layout qualifier specifying the local work sizes of the + * program, or a link-time error will occur. + */ + for (unsigned sh = 0; sh < num_shaders; sh++) { + struct gl_shader *shader = shader_list[sh]; + + if (shader->Comp.LocalSize[0] != 0) { + if (linked_shader->Comp.LocalSize[0] != 0) { + for (int i = 0; i < 3; i++) { + if (linked_shader->Comp.LocalSize[i] != + shader->Comp.LocalSize[i]) { + linker_error(prog, "compute shader defined with conflicting " + "local sizes\n"); + return; + } + } + } + for (int i = 0; i < 3; i++) + linked_shader->Comp.LocalSize[i] = shader->Comp.LocalSize[i]; + } + } + + /* Just do the intrastage -> interstage propagation right now, + * since we already know we're in the right type of shader program + * for doing it. + */ + if (linked_shader->Comp.LocalSize[0] == 0) { + linker_error(prog, "compute shader didn't declare local size\n"); + return; + } + for (int i = 0; i < 3; i++) + prog->Comp.LocalSize[i] = linked_shader->Comp.LocalSize[i]; +} + + /** * Combine a group of shaders for a single stage to generate a linked shader * @@ -1395,6 +1458,7 @@ link_intrastage_shaders(void *mem_ctx, ralloc_steal(linked, linked->UniformBlocks); link_gs_inout_layout_qualifiers(prog, linked, shader_list, num_shaders); + link_cs_input_layout_qualifiers(prog, linked, shader_list, num_shaders); populate_symbol_table(linked); @@ -1971,6 +2035,46 @@ check_resources(struct gl_context *ctx, struct gl_shader_program *prog) } } +/** + * Validate shader image resources. + */ +static void +check_image_resources(struct gl_context *ctx, struct gl_shader_program *prog) +{ + unsigned total_image_units = 0; + unsigned fragment_outputs = 0; + + if (!ctx->Extensions.ARB_shader_image_load_store) + return; + + for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) { + struct gl_shader *sh = prog->_LinkedShaders[i]; + + if (sh) { + if (sh->NumImages > ctx->Const.Program[i].MaxImageUniforms) + linker_error(prog, "Too many %s shader image uniforms", + _mesa_shader_stage_to_string(i)); + + total_image_units += sh->NumImages; + + if (i == MESA_SHADER_FRAGMENT) { + foreach_list(node, sh->ir) { + ir_variable *var = ((ir_instruction *)node)->as_variable(); + if (var && var->data.mode == ir_var_shader_out) + fragment_outputs += var->type->count_attribute_slots(); + } + } + } + } + + if (total_image_units > ctx->Const.MaxCombinedImageUniforms) + linker_error(prog, "Too many combined image uniforms"); + + if (total_image_units + fragment_outputs > + ctx->Const.MaxCombinedImageUnitsAndFragmentOutputs) + linker_error(prog, "Too many combined image uniforms and fragment outputs"); +} + void link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) { @@ -2049,6 +2153,13 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) goto done; } + /* Compute shaders have additional restrictions. */ + if (num_shaders[MESA_SHADER_COMPUTE] > 0 && + num_shaders[MESA_SHADER_COMPUTE] != prog->NumShaders) { + linker_error(prog, "Compute shaders may not be linked with any other " + "type of shader\n"); + } + for (unsigned int i = 0; i < MESA_SHADER_STAGES; i++) { if (prog->_LinkedShaders[i] != NULL) ctx->Driver.DeleteShader(ctx, prog->_LinkedShaders[i]); @@ -2102,7 +2213,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) unsigned prev; - for (prev = 0; prev < MESA_SHADER_STAGES; prev++) { + for (prev = 0; prev <= MESA_SHADER_FRAGMENT; prev++) { if (prog->_LinkedShaders[prev] != NULL) break; } @@ -2110,7 +2221,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) /* Validate the inputs of each stage with the output of the preceding * stage. */ - for (unsigned i = prev + 1; i < MESA_SHADER_STAGES; i++) { + for (unsigned i = prev + 1; i <= MESA_SHADER_FRAGMENT; i++) { if (prog->_LinkedShaders[i] == NULL) continue; @@ -2205,7 +2316,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) } unsigned first; - for (first = 0; first < MESA_SHADER_STAGES; first++) { + for (first = 0; first <= MESA_SHADER_FRAGMENT; first++) { if (prog->_LinkedShaders[first] != NULL) break; } @@ -2237,7 +2348,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) * eliminated if they are (transitively) not used in a later stage. */ int last, next; - for (last = MESA_SHADER_STAGES-1; last >= 0; last--) { + for (last = MESA_SHADER_FRAGMENT; last >= 0; last--) { if (prog->_LinkedShaders[last] != NULL) break; } @@ -2327,6 +2438,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) store_fragdepth_layout(prog); check_resources(ctx, prog); + check_image_resources(ctx, prog); link_check_atomic_counter_resources(ctx, prog); if (!prog->LinkStatus) diff --git a/3rdparty/glsl-optimizer/src/glsl/loop_analysis.cpp b/3rdparty/glsl-optimizer/src/glsl/loop_analysis.cpp index 22ba10ac8..7ab3eeca5 100644 --- a/3rdparty/glsl-optimizer/src/glsl/loop_analysis.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/loop_analysis.cpp @@ -80,6 +80,8 @@ loop_state::loop_state() hash_table_pointer_compare); this->ht_inductors = hash_table_ctor(0, hash_table_pointer_hash, hash_table_pointer_compare); + this->ht_non_inductors = hash_table_ctor(0, hash_table_pointer_hash, + hash_table_pointer_compare); this->mem_ctx = ralloc_context(NULL); this->loop_found = false; } @@ -89,6 +91,7 @@ loop_state::~loop_state() { hash_table_dtor(this->ht); hash_table_dtor(this->ht_inductors); + hash_table_dtor(this->ht_non_inductors); ralloc_free(this->mem_ctx); } @@ -120,6 +123,10 @@ loop_state::get_for_inductor(const ir_variable *ir) void loop_state::insert_inductor(ir_variable* var, loop_variable_state* state, ir_loop* loop) { + // Check if this variable is already marked as "sure can't be a private inductor variable" + if (hash_table_find(this->ht_non_inductors, var)) + return; + // Check if this variable is used after the loop anywhere. If it is, it can't be a // variable that's private to the loop. ir_variable_refcount_visitor refs; @@ -130,7 +137,12 @@ loop_state::insert_inductor(ir_variable* var, loop_variable_state* state, ir_loo ir_instruction *ir = (ir_instruction *) node; ir->accept (&refs); if (refs.find_variable_entry(var)) + { + // add to list of "non inductors", so that next loop does not try + // to add it as inductor again + hash_table_insert(this->ht_non_inductors, state, var); return; + } } state->private_induction_variable_count++; diff --git a/3rdparty/glsl-optimizer/src/glsl/loop_analysis.h b/3rdparty/glsl-optimizer/src/glsl/loop_analysis.h index 39561df88..ebd4b220b 100644 --- a/3rdparty/glsl-optimizer/src/glsl/loop_analysis.h +++ b/3rdparty/glsl-optimizer/src/glsl/loop_analysis.h @@ -281,6 +281,8 @@ private: * Hash table from ir_variables to loop state, for induction variables. */ hash_table *ht_inductors; + hash_table *ht_non_inductors; + void *mem_ctx; diff --git a/3rdparty/glsl-optimizer/src/glsl/loop_unroll.cpp b/3rdparty/glsl-optimizer/src/glsl/loop_unroll.cpp index 658f12196..196066248 100644 --- a/3rdparty/glsl-optimizer/src/glsl/loop_unroll.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/loop_unroll.cpp @@ -253,7 +253,7 @@ loop_unroll_visitor::visit_leave(ir_loop *ir) */ loop_unroll_count count(&ir->body_instructions); - if (count.fail || count.nodes * iterations > (int)max_iterations * 15) + if (count.fail || count.nodes * iterations > (int)max_iterations * 25) return visit_continue; /* Note: the limiting terminator contributes 1 to ls->num_loop_jumps. diff --git a/3rdparty/glsl-optimizer/src/glsl/main.cpp b/3rdparty/glsl-optimizer/src/glsl/main.cpp index 03b7c786b..3a0f812f2 100644 --- a/3rdparty/glsl-optimizer/src/glsl/main.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/main.cpp @@ -50,6 +50,17 @@ initialize_context(struct gl_context *ctx, gl_api api) */ ctx->Const.GLSLVersion = glsl_version; ctx->Extensions.ARB_ES3_compatibility = true; + ctx->Const.MaxComputeWorkGroupCount[0] = 65535; + ctx->Const.MaxComputeWorkGroupCount[1] = 65535; + ctx->Const.MaxComputeWorkGroupCount[2] = 65535; + ctx->Const.MaxComputeWorkGroupSize[0] = 1024; + ctx->Const.MaxComputeWorkGroupSize[1] = 1024; + ctx->Const.MaxComputeWorkGroupSize[2] = 64; + ctx->Const.MaxComputeWorkGroupInvocations = 1024; + ctx->Const.Program[MESA_SHADER_COMPUTE].MaxTextureImageUnits = 16; + ctx->Const.Program[MESA_SHADER_COMPUTE].MaxUniformComponents = 1024; + ctx->Const.Program[MESA_SHADER_COMPUTE].MaxInputComponents = 0; /* not used */ + ctx->Const.Program[MESA_SHADER_COMPUTE].MaxOutputComponents = 0; /* not used */ switch (ctx->Const.GLSLVersion) { case 100: @@ -221,7 +232,7 @@ load_text_file(void *ctx, const char *file_name) if (bytes < size - total_read) { free(text); text = NULL; - break; + goto error; } if (bytes == 0) { @@ -232,6 +243,7 @@ load_text_file(void *ctx, const char *file_name) } while (total_read < size); text[total_read] = '\0'; +error:; } fclose(fp); @@ -360,6 +372,8 @@ main(int argc, char **argv) shader->Type = GL_GEOMETRY_SHADER; else if (strncmp(".frag", ext, 5) == 0) shader->Type = GL_FRAGMENT_SHADER; + else if (strncmp(".comp", ext, 5) == 0) + shader->Type = GL_COMPUTE_SHADER; else usage_fail(argv[0]); shader->Stage = _mesa_shader_enum_to_shader_stage(shader->Type); diff --git a/3rdparty/glsl-optimizer/src/glsl/opt_algebraic.cpp b/3rdparty/glsl-optimizer/src/glsl/opt_algebraic.cpp index 69a1ec031..f5ffd597d 100644 --- a/3rdparty/glsl-optimizer/src/glsl/opt_algebraic.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/opt_algebraic.cpp @@ -224,6 +224,11 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir) this->mem_ctx = ralloc_parent(ir); switch (ir->operation) { + case ir_unop_bit_not: + if (op_expr[0] && op_expr[0]->operation == ir_unop_bit_not) + return op_expr[0]->operands[0]; + break; + case ir_unop_abs: if (op_expr[0] == NULL) break; @@ -254,6 +259,42 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir) } break; + case ir_unop_exp: + if (op_expr[0] == NULL) + break; + + if (op_expr[0]->operation == ir_unop_log) { + return op_expr[0]->operands[0]; + } + break; + + case ir_unop_log: + if (op_expr[0] == NULL) + break; + + if (op_expr[0]->operation == ir_unop_exp) { + return op_expr[0]->operands[0]; + } + break; + + case ir_unop_exp2: + if (op_expr[0] == NULL) + break; + + if (op_expr[0]->operation == ir_unop_log2) { + return op_expr[0]->operands[0]; + } + break; + + case ir_unop_log2: + if (op_expr[0] == NULL) + break; + + if (op_expr[0]->operation == ir_unop_exp2) { + return op_expr[0]->operands[0]; + } + break; + case ir_unop_logic_not: { enum ir_expression_operation new_op = ir_unop_logic_not; @@ -499,6 +540,10 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir) if (is_vec_one(op_const[0])) return op_const[0]; + /* x^1 == x */ + if (is_vec_one(op_const[1])) + return ir->operands[0]; + /* pow(2,x) == exp2(x) */ if (is_vec_two(op_const[0])) return expr(ir_unop_exp2, ir->operands[1]); @@ -522,15 +567,37 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir) break; + case ir_triop_fma: + /* Operands are op0 * op1 + op2. */ + if (is_vec_zero(op_const[0]) || is_vec_zero(op_const[1])) { + return ir->operands[2]; + } else if (is_vec_zero(op_const[2])) { + return mul(ir->operands[0], ir->operands[1]); + } else if (is_vec_one(op_const[0])) { + return add(ir->operands[1], ir->operands[2]); + } else if (is_vec_one(op_const[1])) { + return add(ir->operands[0], ir->operands[2]); + } + break; + case ir_triop_lrp: /* Operands are (x, y, a). */ if (is_vec_zero(op_const[2])) { return ir->operands[0]; } else if (is_vec_one(op_const[2])) { return ir->operands[1]; + } else if (ir->operands[0]->equals(ir->operands[1])) { + return ir->operands[0]; } break; + case ir_triop_csel: + if (is_vec_one(op_const[0])) + return ir->operands[1]; + if (is_vec_zero(op_const[0])) + return ir->operands[2]; + break; + default: break; } diff --git a/3rdparty/glsl-optimizer/src/glsl/opt_vectorize.cpp b/3rdparty/glsl-optimizer/src/glsl/opt_vectorize.cpp index c8a7e607a..4647d72f4 100644 --- a/3rdparty/glsl-optimizer/src/glsl/opt_vectorize.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/opt_vectorize.cpp @@ -82,11 +82,14 @@ public: virtual ir_visitor_status visit_enter(ir_assignment *); virtual ir_visitor_status visit_enter(ir_swizzle *); + virtual ir_visitor_status visit_enter(ir_dereference_array *); + virtual ir_visitor_status visit_enter(ir_expression *); virtual ir_visitor_status visit_enter(ir_if *); virtual ir_visitor_status visit_enter(ir_loop *); virtual ir_visitor_status visit_leave(ir_assignment *); + void try_vectorize(); ir_assignment *assignment[4]; @@ -106,9 +109,10 @@ public: * the nodes of the tree (expression float log2 (swiz z (var_ref v0))), * rewriting it into (expression vec3 log2 (swiz xyz (var_ref v0))). * - * The function modifies only ir_expressions and ir_swizzles. For expressions - * it sets a new type and swizzles any scalar dereferences into appropriately - * sized vector arguments. For example, if combining + * The function operates on ir_expressions (and its operands) and ir_swizzles. + * For expressions it sets a new type and swizzles any non-expression and non- + * swizzle scalar operands into appropriately sized vector arguments. For + * example, if combining * * (assign (x) (var_ref r1) (expression float + (swiz x (var_ref v0) (var_ref v1)))) * (assign (y) (var_ref r1) (expression float + (swiz y (var_ref v0) (var_ref v1)))) @@ -146,16 +150,12 @@ rewrite_swizzle(ir_instruction *ir, void *data) mask->num_components, 1); for (unsigned i = 0; i < 4; i++) { if (expr->operands[i]) { - ir_dereference *deref = expr->operands[i]->as_dereference(); - if (deref && deref->type->is_scalar()) { - expr->operands[i] = new(ir) ir_swizzle(deref, 0, 0, 0, 0, + ir_rvalue *rval = expr->operands[i]->as_rvalue(); + if (rval && rval->type->is_scalar() && + !rval->as_expression() && !rval->as_swizzle()) { + expr->operands[i] = new(ir) ir_swizzle(rval, 0, 0, 0, 0, mask->num_components); } - ir_constant *cns = expr->operands[i]->as_constant(); - if (cns && cns->type->is_scalar()) { - expr->operands[i] = new(ir) ir_swizzle(cns, 0, 0, 0, 0, - mask->num_components); - } } } break; @@ -292,6 +292,33 @@ ir_vectorize_visitor::visit_enter(ir_swizzle *ir) return visit_continue; } +/* Upon entering an ir_binop_dot, remove the current assignment from + * further consideration. Dot product is "horizontal" instruction + * that we can't vectorize. + */ +ir_visitor_status +ir_vectorize_visitor::visit_enter(ir_expression *ir) +{ + if (ir->operation == ir_binop_dot) { + this->current_assignment = NULL; + return visit_continue_with_parent; + } + return visit_continue; +} + +/* Upon entering an ir_array_dereference, remove the current assignment from + * further consideration. Since the index of an array dereference must scalar, + * we are not able to vectorize it. + * + * FINISHME: If all of scalar indices are identical we could vectorize. + */ +ir_visitor_status +ir_vectorize_visitor::visit_enter(ir_dereference_array *ir) +{ + this->current_assignment = NULL; + return visit_continue_with_parent; +} + /* Since there is no statement to visit between the "then" and "else" * instructions try to vectorize before, in between, and after them to avoid * combining statements from different basic blocks. diff --git a/3rdparty/glsl-optimizer/src/glsl/standalone_scaffolding.cpp b/3rdparty/glsl-optimizer/src/glsl/standalone_scaffolding.cpp index 91794719b..6c25010b7 100644 --- a/3rdparty/glsl-optimizer/src/glsl/standalone_scaffolding.cpp +++ b/3rdparty/glsl-optimizer/src/glsl/standalone_scaffolding.cpp @@ -91,6 +91,7 @@ void initialize_context_to_defaults(struct gl_context *ctx, gl_api api) ctx->Extensions.dummy_false = false; ctx->Extensions.dummy_true = true; + ctx->Extensions.ARB_compute_shader = true; ctx->Extensions.ARB_conservative_depth = true; ctx->Extensions.ARB_draw_instanced = true; ctx->Extensions.ARB_ES2_compatibility = true; @@ -140,6 +141,17 @@ void initialize_context_to_defaults(struct gl_context *ctx, gl_api api) ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxInputComponents = 32; ctx->Const.MaxDrawBuffers = 1; + ctx->Const.MaxComputeWorkGroupCount[0] = 65535; + ctx->Const.MaxComputeWorkGroupCount[1] = 65535; + ctx->Const.MaxComputeWorkGroupCount[2] = 65535; + ctx->Const.MaxComputeWorkGroupSize[0] = 1024; + ctx->Const.MaxComputeWorkGroupSize[1] = 1024; + ctx->Const.MaxComputeWorkGroupSize[2] = 64; + ctx->Const.MaxComputeWorkGroupInvocations = 1024; + ctx->Const.Program[MESA_SHADER_COMPUTE].MaxTextureImageUnits = 16; + ctx->Const.Program[MESA_SHADER_COMPUTE].MaxUniformComponents = 1024; + ctx->Const.Program[MESA_SHADER_COMPUTE].MaxInputComponents = 0; /* not used */ + ctx->Const.Program[MESA_SHADER_COMPUTE].MaxOutputComponents = 0; /* not used */ /* Set up default shader compiler options. */ struct gl_shader_compiler_options options; diff --git a/3rdparty/glsl-optimizer/src/glsl/standalone_scaffolding.h b/3rdparty/glsl-optimizer/src/glsl/standalone_scaffolding.h index 327fef2df..df783afdb 100644 --- a/3rdparty/glsl-optimizer/src/glsl/standalone_scaffolding.h +++ b/3rdparty/glsl-optimizer/src/glsl/standalone_scaffolding.h @@ -58,6 +58,8 @@ _mesa_shader_enum_to_shader_stage(GLenum v) return MESA_SHADER_FRAGMENT; case GL_GEOMETRY_SHADER: return MESA_SHADER_GEOMETRY; + case GL_COMPUTE_SHADER: + return MESA_SHADER_COMPUTE; default: assert(!"bad value in _mesa_shader_enum_to_shader_stage()"); return MESA_SHADER_VERTEX; diff --git a/3rdparty/glsl-optimizer/src/mesa/main/config.h b/3rdparty/glsl-optimizer/src/mesa/main/config.h index 0c1782ad7..30da5d422 100644 --- a/3rdparty/glsl-optimizer/src/mesa/main/config.h +++ b/3rdparty/glsl-optimizer/src/mesa/main/config.h @@ -272,6 +272,15 @@ #define MAX_DEBUG_GROUP_STACK_DEPTH 64 /*@}*/ +/** For GL_ARB_gpu_shader5 */ +/*@{*/ +#define MAX_GEOMETRY_SHADER_INVOCATIONS 32 +#define MIN_FRAGMENT_INTERPOLATION_OFFSET -0.5 +#define MAX_FRAGMENT_INTERPOLATION_OFFSET 0.5 +#define FRAGMENT_INTERPOLATION_OFFSET_BITS 4 +#define MAX_VERTEX_STREAMS 4 +/*@}*/ + /* * Color channel component order * diff --git a/3rdparty/glsl-optimizer/src/mesa/main/dd.h b/3rdparty/glsl-optimizer/src/mesa/main/dd.h index a6ee9405e..ea80e6b1d 100644 --- a/3rdparty/glsl-optimizer/src/mesa/main/dd.h +++ b/3rdparty/glsl-optimizer/src/mesa/main/dd.h @@ -41,15 +41,15 @@ struct gl_shader; struct dd_function_table { + /** * \name GLSL-related functions (ARB extensions and OpenGL 2.x) */ /*@{*/ - struct gl_shader *(*NewShader)(struct gl_context *ctx, GLuint name, GLenum type); + struct gl_shader *(*NewShader)(struct gl_context *ctx, + GLuint name, GLenum type); void (*DeleteShader)(struct gl_context *ctx, struct gl_shader *shader); - /*@}*/ - }; #endif /* DD_INCLUDED */ diff --git a/3rdparty/glsl-optimizer/src/mesa/main/glheader.h b/3rdparty/glsl-optimizer/src/mesa/main/glheader.h index 7f3b59f18..158a72b2f 100644 --- a/3rdparty/glsl-optimizer/src/mesa/main/glheader.h +++ b/3rdparty/glsl-optimizer/src/mesa/main/glheader.h @@ -42,6 +42,7 @@ #define GL_VERTEX_SHADER 0x8B31 #define GL_GEOMETRY_SHADER 0x8DD9 #define GL_GEOMETRY_SHADER_ARB 0x8DD9 +#define GL_COMPUTE_SHADER 0x91B9 #define GL_DEBUG_TYPE_ERROR_ARB 0x824C #define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D @@ -115,6 +116,43 @@ #define GL_INTERLEAVED_ATTRIBS 0x8C8C #define GL_SEPARATE_ATTRIBS 0x8C8D +#define GL_IMAGE_1D 0x904C +#define GL_IMAGE_2D 0x904D +#define GL_IMAGE_3D 0x904E +#define GL_IMAGE_2D_RECT 0x904F +#define GL_IMAGE_CUBE 0x9050 +#define GL_IMAGE_BUFFER 0x9051 +#define GL_IMAGE_1D_ARRAY 0x9052 +#define GL_IMAGE_2D_ARRAY 0x9053 +#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054 +#define GL_IMAGE_2D_MULTISAMPLE 0x9055 +#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056 +#define GL_INT_IMAGE_1D 0x9057 +#define GL_INT_IMAGE_2D 0x9058 +#define GL_INT_IMAGE_3D 0x9059 +#define GL_INT_IMAGE_2D_RECT 0x905A +#define GL_INT_IMAGE_CUBE 0x905B +#define GL_INT_IMAGE_BUFFER 0x905C +#define GL_INT_IMAGE_1D_ARRAY 0x905D +#define GL_INT_IMAGE_2D_ARRAY 0x905E +#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F +#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060 +#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061 +#define GL_UNSIGNED_INT_IMAGE_1D 0x9062 +#define GL_UNSIGNED_INT_IMAGE_2D 0x9063 +#define GL_UNSIGNED_INT_IMAGE_3D 0x9064 +#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065 +#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066 +#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067 +#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068 +#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069 +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C +#define GL_READ_ONLY 0x88B8 +#define GL_WRITE_ONLY 0x88B9 +#define GL_READ_WRITE 0x88BA + #ifdef __cplusplus extern "C" { diff --git a/3rdparty/glsl-optimizer/src/mesa/main/glminimal.h b/3rdparty/glsl-optimizer/src/mesa/main/glminimal.h index beba21ade..a989b228d 100644 --- a/3rdparty/glsl-optimizer/src/mesa/main/glminimal.h +++ b/3rdparty/glsl-optimizer/src/mesa/main/glminimal.h @@ -30,6 +30,8 @@ #ifndef __gl_minimal_h_ #define __gl_minimal_h_ +#include "stdint.h" + /********************************************************************** * Begin system-specific stuff. Do not do any of this when building @@ -100,6 +102,9 @@ typedef double GLdouble; /* double precision float */ typedef double GLclampd; /* double precision float in [0,1] */ typedef char GLchar; typedef char GLcharARB; +typedef int64_t GLint64; +typedef uint64_t GLuint64; + @@ -416,6 +421,57 @@ typedef char GLcharARB; #define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D +/* Texture formats */ +#define GL_RGBA32F 0x8814 +#define GL_RGB32F 0x8815 +#define GL_RGBA16F 0x881A +#define GL_RGB16F 0x881B +#define GL_R8 0x8229 +#define GL_R16 0x822A +#define GL_RG8 0x822B +#define GL_RG16 0x822C +#define GL_R16F 0x822D +#define GL_R32F 0x822E +#define GL_RG16F 0x822F +#define GL_RG32F 0x8230 +#define GL_R8I 0x8231 +#define GL_R8UI 0x8232 +#define GL_R16I 0x8233 +#define GL_R16UI 0x8234 +#define GL_R32I 0x8235 +#define GL_R32UI 0x8236 +#define GL_RG8I 0x8237 +#define GL_RG8UI 0x8238 +#define GL_RG16I 0x8239 +#define GL_RG16UI 0x823A +#define GL_RG32I 0x823B +#define GL_RG32UI 0x823C +#define GL_RGBA32UI 0x8D70 +#define GL_RGB32UI 0x8D71 +#define GL_RGBA16UI 0x8D76 +#define GL_RGB16UI 0x8D77 +#define GL_RGBA8UI 0x8D7C +#define GL_RGB8UI 0x8D7D +#define GL_RGBA32I 0x8D82 +#define GL_RGB32I 0x8D83 +#define GL_RGBA16I 0x8D88 +#define GL_RGB16I 0x8D89 +#define GL_RGBA8I 0x8D8E +#define GL_RGB8I 0x8D8F +#define GL_RGBA8 0x8058 +#define GL_RGB10_A2 0x8059 +#define GL_R11F_G11F_B10F 0x8C3A +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGB8_SNORM 0x8F96 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM 0x8F98 +#define GL_RG16_SNORM 0x8F99 +#define GL_RGB16_SNORM 0x8F9A +#define GL_RGBA16_SNORM 0x8F9B +#define GL_RGB10_A2UI 0x906F +#define GL_RGBA16 0x805B + #endif /* __gl_h_ */ diff --git a/3rdparty/glsl-optimizer/src/mesa/main/mtypes.h b/3rdparty/glsl-optimizer/src/mesa/main/mtypes.h index 3ce336a80..c9f9df880 100644 --- a/3rdparty/glsl-optimizer/src/mesa/main/mtypes.h +++ b/3rdparty/glsl-optimizer/src/mesa/main/mtypes.h @@ -213,9 +213,10 @@ typedef enum MESA_SHADER_VERTEX = 0, MESA_SHADER_GEOMETRY = 1, MESA_SHADER_FRAGMENT = 2, + MESA_SHADER_COMPUTE = 3, } gl_shader_stage; -#define MESA_SHADER_STAGES (MESA_SHADER_FRAGMENT + 1) +#define MESA_SHADER_STAGES (MESA_SHADER_COMPUTE + 1) @@ -601,6 +602,17 @@ struct gl_shader * ImageAccess arrays above. */ GLuint NumImages; + + /** + * Compute shader state from ARB_compute_shader layout qualifiers. + */ + struct { + /** + * Size specified using local_size_{x,y,z}, or all 0's to indicate that + * it's not set in this shader. + */ + unsigned LocalSize[3]; + } Comp; }; @@ -785,6 +797,18 @@ struct gl_shader_program GLuint ClipDistanceArraySize; /**< Size of the gl_ClipDistance array, or 0 if not present. */ } Vert; + + /** + * Compute shader state - copied into gl_compute_program by + * _mesa_copy_linked_program_data(). + */ + struct { + /** + * If this shader contains a compute stage, size specified using + * local_size_{x,y,z}. Otherwise undefined. + */ + unsigned LocalSize[3]; + } Comp; /* post-link info: */ unsigned NumUserUniformStorage; @@ -1178,6 +1202,15 @@ struct gl_constants GLuint MaxCombinedImageUnitsAndFragmentOutputs; GLuint MaxImageSamples; GLuint MaxCombinedImageUniforms; + + /** GL_ARB_compute_shader */ + GLuint MaxComputeWorkGroupCount[3]; /* Array of x, y, z dimensions */ + GLuint MaxComputeWorkGroupSize[3]; /* Array of x, y, z dimensions */ + GLuint MaxComputeWorkGroupInvocations; + + /** GL_ARB_gpu_shader5 */ + GLfloat MinFragmentInterpolationOffset; + GLfloat MaxFragmentInterpolationOffset; }; @@ -1197,6 +1230,7 @@ struct gl_extensions GLboolean ARB_base_instance; GLboolean ARB_blend_func_extended; GLboolean ARB_color_buffer_float; + GLboolean ARB_compute_shader; GLboolean ARB_conservative_depth; GLboolean ARB_depth_buffer_float; GLboolean ARB_depth_clamp; diff --git a/3rdparty/glsl-optimizer/tests/fragment/array-const-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/array-const-irES.txt index 33c63750a..2d99b5314 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/array-const-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/array-const-irES.txt @@ -3,34 +3,34 @@ mediump vec4 xlat_main () int i_1; mediump vec4 c_2; highp vec2 poisson_3[8]; - vec2 tmpvar_4; + mediump vec2 tmpvar_4; tmpvar_4 = vec2(0.0, 0.0); poisson_3[0] = tmpvar_4; - vec2 tmpvar_5; + mediump vec2 tmpvar_5; tmpvar_5 = vec2(0.527837, -0.085868); poisson_3[1] = tmpvar_5; - vec2 tmpvar_6; + mediump vec2 tmpvar_6; tmpvar_6 = vec2(-0.040088, 0.536087); poisson_3[2] = tmpvar_6; - vec2 tmpvar_7; + mediump vec2 tmpvar_7; tmpvar_7 = vec2(-0.670445, -0.179949); poisson_3[3] = tmpvar_7; - vec2 tmpvar_8; + mediump vec2 tmpvar_8; tmpvar_8 = vec2(-0.419418, -0.616039); poisson_3[4] = tmpvar_8; - vec2 tmpvar_9; + mediump vec2 tmpvar_9; tmpvar_9 = vec2(0.440453, -0.639399); poisson_3[5] = tmpvar_9; - vec2 tmpvar_10; + mediump vec2 tmpvar_10; tmpvar_10 = vec2(-0.757088, 0.349334); poisson_3[6] = tmpvar_10; - vec2 tmpvar_11; + mediump vec2 tmpvar_11; tmpvar_11 = vec2(0.574619, 0.685879); poisson_3[7] = tmpvar_11; int tmpvar_12; tmpvar_12 = 0; i_1 = tmpvar_12; - vec4 tmpvar_13; + mediump vec4 tmpvar_13; tmpvar_13 = vec4(0.0, 0.0, 0.0, 0.0); c_2 = tmpvar_13; while (true) { diff --git a/3rdparty/glsl-optimizer/tests/fragment/array-constconst-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/array-constconst-irES.txt index 33c63750a..2d99b5314 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/array-constconst-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/array-constconst-irES.txt @@ -3,34 +3,34 @@ mediump vec4 xlat_main () int i_1; mediump vec4 c_2; highp vec2 poisson_3[8]; - vec2 tmpvar_4; + mediump vec2 tmpvar_4; tmpvar_4 = vec2(0.0, 0.0); poisson_3[0] = tmpvar_4; - vec2 tmpvar_5; + mediump vec2 tmpvar_5; tmpvar_5 = vec2(0.527837, -0.085868); poisson_3[1] = tmpvar_5; - vec2 tmpvar_6; + mediump vec2 tmpvar_6; tmpvar_6 = vec2(-0.040088, 0.536087); poisson_3[2] = tmpvar_6; - vec2 tmpvar_7; + mediump vec2 tmpvar_7; tmpvar_7 = vec2(-0.670445, -0.179949); poisson_3[3] = tmpvar_7; - vec2 tmpvar_8; + mediump vec2 tmpvar_8; tmpvar_8 = vec2(-0.419418, -0.616039); poisson_3[4] = tmpvar_8; - vec2 tmpvar_9; + mediump vec2 tmpvar_9; tmpvar_9 = vec2(0.440453, -0.639399); poisson_3[5] = tmpvar_9; - vec2 tmpvar_10; + mediump vec2 tmpvar_10; tmpvar_10 = vec2(-0.757088, 0.349334); poisson_3[6] = tmpvar_10; - vec2 tmpvar_11; + mediump vec2 tmpvar_11; tmpvar_11 = vec2(0.574619, 0.685879); poisson_3[7] = tmpvar_11; int tmpvar_12; tmpvar_12 = 0; i_1 = tmpvar_12; - vec4 tmpvar_13; + mediump vec4 tmpvar_13; tmpvar_13 = vec4(0.0, 0.0, 0.0, 0.0); c_2 = tmpvar_13; while (true) { diff --git a/3rdparty/glsl-optimizer/tests/fragment/bug-loop-share-index-in.txt b/3rdparty/glsl-optimizer/tests/fragment/bug-loop-share-index-in.txt new file mode 100644 index 000000000..867ee306f --- /dev/null +++ b/3rdparty/glsl-optimizer/tests/fragment/bug-loop-share-index-in.txt @@ -0,0 +1,21 @@ +// https://github.com/aras-p/glsl-optimizer/issues/49 + +uniform int loopNum; + +void main() { + int myIdx; + vec4 r = vec4(0.0); + myIdx = 1; + for ( ; myIdx < loopNum; ++myIdx) { + r.x += 1.0; + r.y += 2.0; + r.z += 3.0; + } + myIdx = 2; + for ( ; myIdx < loopNum; ++myIdx) { + r.x += 1.0; + r.y += 2.0; + r.z += 3.0; + } + gl_FragColor = r; +} diff --git a/3rdparty/glsl-optimizer/tests/fragment/bug-loop-share-index-ir.txt b/3rdparty/glsl-optimizer/tests/fragment/bug-loop-share-index-ir.txt new file mode 100644 index 000000000..2a421ccb2 --- /dev/null +++ b/3rdparty/glsl-optimizer/tests/fragment/bug-loop-share-index-ir.txt @@ -0,0 +1,53 @@ +uniform int loopNum; +void main () +{ + vec4 r_1; + int myIdx_2; + vec4 tmpvar_3; + tmpvar_3 = vec4(0.0, 0.0, 0.0, 0.0); + r_1 = tmpvar_3; + int tmpvar_4; + tmpvar_4 = 1; + myIdx_2 = tmpvar_4; + while (true) { + if (!((myIdx_2 < loopNum))) { + break; + }; + float tmpvar_5; + tmpvar_5 = (r_1.x + 1.0); + r_1.x = tmpvar_5; + float tmpvar_6; + tmpvar_6 = (r_1.y + 2.0); + r_1.y = vec2(tmpvar_6).y; + float tmpvar_7; + tmpvar_7 = (r_1.z + 3.0); + r_1.z = vec3(tmpvar_7).z; + int tmpvar_8; + tmpvar_8 = (myIdx_2 + 1); + myIdx_2 = tmpvar_8; + }; + int tmpvar_9; + tmpvar_9 = 2; + myIdx_2 = tmpvar_9; + while (true) { + if (!((myIdx_2 < loopNum))) { + break; + }; + float tmpvar_10; + tmpvar_10 = (r_1.x + 1.0); + r_1.x = tmpvar_10; + float tmpvar_11; + tmpvar_11 = (r_1.y + 2.0); + r_1.y = vec2(tmpvar_11).y; + float tmpvar_12; + tmpvar_12 = (r_1.z + 3.0); + r_1.z = vec3(tmpvar_12).z; + int tmpvar_13; + tmpvar_13 = (myIdx_2 + 1); + myIdx_2 = tmpvar_13; + }; + vec4 tmpvar_14; + tmpvar_14 = r_1; + gl_FragColor = tmpvar_14; +} + diff --git a/3rdparty/glsl-optimizer/tests/fragment/bug-loop-share-index-out.txt b/3rdparty/glsl-optimizer/tests/fragment/bug-loop-share-index-out.txt new file mode 100644 index 000000000..275d379f0 --- /dev/null +++ b/3rdparty/glsl-optimizer/tests/fragment/bug-loop-share-index-out.txt @@ -0,0 +1,23 @@ +uniform int loopNum; +void main () +{ + vec4 r_1; + int myIdx_2; + r_1 = vec4(0.0, 0.0, 0.0, 0.0); + myIdx_2 = 1; + for (; myIdx_2 < loopNum; myIdx_2++) { + r_1.x = (r_1.x + 1.0); + r_1.y = (r_1.y + 2.0); + r_1.z = (r_1.z + 3.0); + }; + myIdx_2 = 2; + for (; myIdx_2 < loopNum; myIdx_2++) { + r_1.x = (r_1.x + 1.0); + r_1.y = (r_1.y + 2.0); + r_1.z = (r_1.z + 3.0); + }; + gl_FragColor = r_1; +} + + +// inputs: 0, stats: 13 alu 0 tex 4 flow diff --git a/3rdparty/glsl-optimizer/tests/fragment/derivatives-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/derivatives-irES.txt index f97e7369a..5d0918038 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/derivatives-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/derivatives-irES.txt @@ -1,210 +1,210 @@ #extension GL_OES_standard_derivatives : enable varying highp vec4 xlv_TEXCOORD0; -float xll_dFdx ( - in float f_1 +mediump float xll_dFdx ( + in mediump float f_1 ) { - float tmpvar_2; + mediump float tmpvar_2; tmpvar_2 = dFdx (f_1); return tmpvar_2; } -vec2 xll_dFdx ( - in vec2 v_3 +mediump vec2 xll_dFdx ( + in mediump vec2 v_3 ) { - vec2 tmpvar_4; + mediump vec2 tmpvar_4; tmpvar_4 = dFdx (v_3); return tmpvar_4; } -vec3 xll_dFdx ( - in vec3 v_5 +mediump vec3 xll_dFdx ( + in mediump vec3 v_5 ) { - vec3 tmpvar_6; + mediump vec3 tmpvar_6; tmpvar_6 = dFdx (v_5); return tmpvar_6; } -vec4 xll_dFdx ( - in vec4 v_7 +mediump vec4 xll_dFdx ( + in mediump vec4 v_7 ) { - vec4 tmpvar_8; + mediump vec4 tmpvar_8; tmpvar_8 = dFdx (v_7); return tmpvar_8; } -mat2 xll_dFdx ( - in mat2 m_9 +mediump mat2 xll_dFdx ( + in mediump mat2 m_9 ) { - vec2 tmpvar_10; + mediump vec2 tmpvar_10; tmpvar_10 = dFdx (m_9[0]); - vec2 tmpvar_11; + mediump vec2 tmpvar_11; tmpvar_11 = dFdx (m_9[1]); - mat2 tmpvar_12; - vec2 tmpvar_13; + mediump mat2 tmpvar_12; + mediump vec2 tmpvar_13; tmpvar_13 = tmpvar_10; tmpvar_12[0] = tmpvar_13; - vec2 tmpvar_14; + mediump vec2 tmpvar_14; tmpvar_14 = tmpvar_11; tmpvar_12[1] = tmpvar_14; return tmpvar_12; } -mat3 xll_dFdx ( - in mat3 m_15 +mediump mat3 xll_dFdx ( + in mediump mat3 m_15 ) { - vec3 tmpvar_16; + mediump vec3 tmpvar_16; tmpvar_16 = dFdx (m_15[0]); - vec3 tmpvar_17; + mediump vec3 tmpvar_17; tmpvar_17 = dFdx (m_15[1]); - vec3 tmpvar_18; + mediump vec3 tmpvar_18; tmpvar_18 = dFdx (m_15[2]); - mat3 tmpvar_19; - vec3 tmpvar_20; + mediump mat3 tmpvar_19; + mediump vec3 tmpvar_20; tmpvar_20 = tmpvar_16; tmpvar_19[0] = tmpvar_20; - vec3 tmpvar_21; + mediump vec3 tmpvar_21; tmpvar_21 = tmpvar_17; tmpvar_19[1] = tmpvar_21; - vec3 tmpvar_22; + mediump vec3 tmpvar_22; tmpvar_22 = tmpvar_18; tmpvar_19[2] = tmpvar_22; return tmpvar_19; } -mat4 xll_dFdx ( - in mat4 m_23 +mediump mat4 xll_dFdx ( + in mediump mat4 m_23 ) { - vec4 tmpvar_24; + mediump vec4 tmpvar_24; tmpvar_24 = dFdx (m_23[0]); - vec4 tmpvar_25; + mediump vec4 tmpvar_25; tmpvar_25 = dFdx (m_23[1]); - vec4 tmpvar_26; + mediump vec4 tmpvar_26; tmpvar_26 = dFdx (m_23[2]); - vec4 tmpvar_27; + mediump vec4 tmpvar_27; tmpvar_27 = dFdx (m_23[3]); - mat4 tmpvar_28; - vec4 tmpvar_29; + mediump mat4 tmpvar_28; + mediump vec4 tmpvar_29; tmpvar_29 = tmpvar_24; tmpvar_28[0] = tmpvar_29; - vec4 tmpvar_30; + mediump vec4 tmpvar_30; tmpvar_30 = tmpvar_25; tmpvar_28[1] = tmpvar_30; - vec4 tmpvar_31; + mediump vec4 tmpvar_31; tmpvar_31 = tmpvar_26; tmpvar_28[2] = tmpvar_31; - vec4 tmpvar_32; + mediump vec4 tmpvar_32; tmpvar_32 = tmpvar_27; tmpvar_28[3] = tmpvar_32; return tmpvar_28; } -float xll_fwidth ( - in float f_33 +mediump float xll_fwidth ( + in mediump float f_33 ) { - float tmpvar_34; + mediump float tmpvar_34; tmpvar_34 = fwidth (f_33); return tmpvar_34; } -vec2 xll_fwidth ( - in vec2 v_35 +mediump vec2 xll_fwidth ( + in mediump vec2 v_35 ) { - vec2 tmpvar_36; + mediump vec2 tmpvar_36; tmpvar_36 = fwidth (v_35); return tmpvar_36; } -vec3 xll_fwidth ( - in vec3 v_37 +mediump vec3 xll_fwidth ( + in mediump vec3 v_37 ) { - vec3 tmpvar_38; + mediump vec3 tmpvar_38; tmpvar_38 = fwidth (v_37); return tmpvar_38; } -vec4 xll_fwidth ( - in vec4 v_39 +mediump vec4 xll_fwidth ( + in mediump vec4 v_39 ) { - vec4 tmpvar_40; + mediump vec4 tmpvar_40; tmpvar_40 = fwidth (v_39); return tmpvar_40; } -mat2 xll_fwidth ( - in mat2 m_41 +mediump mat2 xll_fwidth ( + in mediump mat2 m_41 ) { - vec2 tmpvar_42; + mediump vec2 tmpvar_42; tmpvar_42 = fwidth (m_41[0]); - vec2 tmpvar_43; + mediump vec2 tmpvar_43; tmpvar_43 = fwidth (m_41[1]); - mat2 tmpvar_44; - vec2 tmpvar_45; + mediump mat2 tmpvar_44; + mediump vec2 tmpvar_45; tmpvar_45 = tmpvar_42; tmpvar_44[0] = tmpvar_45; - vec2 tmpvar_46; + mediump vec2 tmpvar_46; tmpvar_46 = tmpvar_43; tmpvar_44[1] = tmpvar_46; return tmpvar_44; } -mat3 xll_fwidth ( - in mat3 m_47 +mediump mat3 xll_fwidth ( + in mediump mat3 m_47 ) { - vec3 tmpvar_48; + mediump vec3 tmpvar_48; tmpvar_48 = fwidth (m_47[0]); - vec3 tmpvar_49; + mediump vec3 tmpvar_49; tmpvar_49 = fwidth (m_47[1]); - vec3 tmpvar_50; + mediump vec3 tmpvar_50; tmpvar_50 = fwidth (m_47[2]); - mat3 tmpvar_51; - vec3 tmpvar_52; + mediump mat3 tmpvar_51; + mediump vec3 tmpvar_52; tmpvar_52 = tmpvar_48; tmpvar_51[0] = tmpvar_52; - vec3 tmpvar_53; + mediump vec3 tmpvar_53; tmpvar_53 = tmpvar_49; tmpvar_51[1] = tmpvar_53; - vec3 tmpvar_54; + mediump vec3 tmpvar_54; tmpvar_54 = tmpvar_50; tmpvar_51[2] = tmpvar_54; return tmpvar_51; } -mat4 xll_fwidth ( - in mat4 m_55 +mediump mat4 xll_fwidth ( + in mediump mat4 m_55 ) { - vec4 tmpvar_56; + mediump vec4 tmpvar_56; tmpvar_56 = fwidth (m_55[0]); - vec4 tmpvar_57; + mediump vec4 tmpvar_57; tmpvar_57 = fwidth (m_55[1]); - vec4 tmpvar_58; + mediump vec4 tmpvar_58; tmpvar_58 = fwidth (m_55[2]); - vec4 tmpvar_59; + mediump vec4 tmpvar_59; tmpvar_59 = fwidth (m_55[3]); - mat4 tmpvar_60; - vec4 tmpvar_61; + mediump mat4 tmpvar_60; + mediump vec4 tmpvar_61; tmpvar_61 = tmpvar_56; tmpvar_60[0] = tmpvar_61; - vec4 tmpvar_62; + mediump vec4 tmpvar_62; tmpvar_62 = tmpvar_57; tmpvar_60[1] = tmpvar_62; - vec4 tmpvar_63; + mediump vec4 tmpvar_63; tmpvar_63 = tmpvar_58; tmpvar_60[2] = tmpvar_63; - vec4 tmpvar_64; + mediump vec4 tmpvar_64; tmpvar_64 = tmpvar_59; tmpvar_60[3] = tmpvar_64; return tmpvar_60; @@ -215,22 +215,22 @@ mediump vec4 xlat_main ( ) { lowp vec4 res_66; - float tmpvar_67; + mediump float tmpvar_67; tmpvar_67 = xll_dFdx (uv_65.x); - float tmpvar_68; + mediump float tmpvar_68; tmpvar_68 = tmpvar_67; res_66.x = tmpvar_68; - float tmpvar_69; + mediump float tmpvar_69; tmpvar_69 = xll_dFdx (uv_65.y); - float tmpvar_70; + mediump float tmpvar_70; tmpvar_70 = tmpvar_69; res_66.y = vec2(tmpvar_70).y; - float tmpvar_71; + mediump float tmpvar_71; tmpvar_71 = xll_fwidth (uv_65.z); - float tmpvar_72; + mediump float tmpvar_72; tmpvar_72 = tmpvar_71; res_66.z = vec3(tmpvar_72).z; - float tmpvar_73; + mediump float tmpvar_73; tmpvar_73 = 1.0; res_66.w = vec4(tmpvar_73).w; return res_66; diff --git a/3rdparty/glsl-optimizer/tests/fragment/fragdepth-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/fragdepth-irES.txt index ede2574e2..8f0b8c220 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/fragdepth-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/fragdepth-irES.txt @@ -4,10 +4,10 @@ void xlat_main ( out mediump float oz_2 ) { - vec4 tmpvar_3; + mediump vec4 tmpvar_3; tmpvar_3 = vec4(0.5, 0.5, 0.5, 0.5); ocol_1 = tmpvar_3; - float tmpvar_4; + mediump float tmpvar_4; tmpvar_4 = 0.9; oz_2 = tmpvar_4; } diff --git a/3rdparty/glsl-optimizer/tests/fragment/in-struct-ret-vals-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/in-struct-ret-vals-irES.txt index b7df0cea9..a76d10854 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/in-struct-ret-vals-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/in-struct-ret-vals-irES.txt @@ -23,7 +23,7 @@ void main () { v2f xlt_i_5; mediump vec4 xl_retval_6; - vec4 tmpvar_7; + mediump vec4 tmpvar_7; tmpvar_7 = vec4(0.0, 0.0, 0.0, 0.0); xlt_i_5.pos = tmpvar_7; highp vec2 tmpvar_8; diff --git a/3rdparty/glsl-optimizer/tests/fragment/intrinsics-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/intrinsics-irES.txt index e2d0a597d..e741b9b5a 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/intrinsics-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/intrinsics-irES.txt @@ -1,22 +1,22 @@ varying highp vec4 xlv_TEXCOORD0; -float xll_mod ( - in float x_1, - in float y_2 +mediump float xll_mod ( + in mediump float x_1, + in mediump float y_2 ) { - float f_3; - float d_4; - float tmpvar_5; + mediump float f_3; + mediump float d_4; + mediump float tmpvar_5; tmpvar_5 = (x_1 / y_2); d_4 = tmpvar_5; - float tmpvar_6; + mediump float tmpvar_6; tmpvar_6 = abs (d_4); - float tmpvar_7; + mediump float tmpvar_7; tmpvar_7 = fract (tmpvar_6); - float tmpvar_8; + mediump float tmpvar_8; tmpvar_8 = (tmpvar_7 * y_2); f_3 = tmpvar_8; - float tmpvar_9; + mediump float tmpvar_9; if ((d_4 >= 0.0)) { tmpvar_9 = f_3; } else { @@ -25,125 +25,125 @@ float xll_mod ( return tmpvar_9; } -vec2 xll_mod ( - in vec2 x_10, - in vec2 y_11 +mediump vec2 xll_mod ( + in mediump vec2 x_10, + in mediump vec2 y_11 ) { - vec2 f_12; - vec2 d_13; - vec2 tmpvar_14; + mediump vec2 f_12; + mediump vec2 d_13; + mediump vec2 tmpvar_14; tmpvar_14 = (x_10 / y_11); d_13 = tmpvar_14; - vec2 tmpvar_15; + mediump vec2 tmpvar_15; tmpvar_15 = abs (d_13); - vec2 tmpvar_16; + mediump vec2 tmpvar_16; tmpvar_16 = fract (tmpvar_15); - vec2 tmpvar_17; + mediump vec2 tmpvar_17; tmpvar_17 = (tmpvar_16 * y_11); f_12 = tmpvar_17; - float tmpvar_18; + mediump float tmpvar_18; if ((d_13.x >= 0.0)) { tmpvar_18 = f_12.x; } else { tmpvar_18 = -(f_12.x); }; - float tmpvar_19; + mediump float tmpvar_19; if ((d_13.y >= 0.0)) { tmpvar_19 = f_12.y; } else { tmpvar_19 = -(f_12.y); }; - vec2 tmpvar_20; + mediump vec2 tmpvar_20; tmpvar_20.x = tmpvar_18; tmpvar_20.y = tmpvar_19; return tmpvar_20; } -vec3 xll_mod ( - in vec3 x_21, - in vec3 y_22 +mediump vec3 xll_mod ( + in mediump vec3 x_21, + in mediump vec3 y_22 ) { - vec3 f_23; - vec3 d_24; - vec3 tmpvar_25; + mediump vec3 f_23; + mediump vec3 d_24; + mediump vec3 tmpvar_25; tmpvar_25 = (x_21 / y_22); d_24 = tmpvar_25; - vec3 tmpvar_26; + mediump vec3 tmpvar_26; tmpvar_26 = abs (d_24); - vec3 tmpvar_27; + mediump vec3 tmpvar_27; tmpvar_27 = fract (tmpvar_26); - vec3 tmpvar_28; + mediump vec3 tmpvar_28; tmpvar_28 = (tmpvar_27 * y_22); f_23 = tmpvar_28; - float tmpvar_29; + mediump float tmpvar_29; if ((d_24.x >= 0.0)) { tmpvar_29 = f_23.x; } else { tmpvar_29 = -(f_23.x); }; - float tmpvar_30; + mediump float tmpvar_30; if ((d_24.y >= 0.0)) { tmpvar_30 = f_23.y; } else { tmpvar_30 = -(f_23.y); }; - float tmpvar_31; + mediump float tmpvar_31; if ((d_24.z >= 0.0)) { tmpvar_31 = f_23.z; } else { tmpvar_31 = -(f_23.z); }; - vec3 tmpvar_32; + mediump vec3 tmpvar_32; tmpvar_32.x = tmpvar_29; tmpvar_32.y = tmpvar_30; tmpvar_32.z = tmpvar_31; return tmpvar_32; } -vec4 xll_mod ( - in vec4 x_33, - in vec4 y_34 +mediump vec4 xll_mod ( + in mediump vec4 x_33, + in mediump vec4 y_34 ) { - vec4 f_35; - vec4 d_36; - vec4 tmpvar_37; + mediump vec4 f_35; + mediump vec4 d_36; + mediump vec4 tmpvar_37; tmpvar_37 = (x_33 / y_34); d_36 = tmpvar_37; - vec4 tmpvar_38; + mediump vec4 tmpvar_38; tmpvar_38 = abs (d_36); - vec4 tmpvar_39; + mediump vec4 tmpvar_39; tmpvar_39 = fract (tmpvar_38); - vec4 tmpvar_40; + mediump vec4 tmpvar_40; tmpvar_40 = (tmpvar_39 * y_34); f_35 = tmpvar_40; - float tmpvar_41; + mediump float tmpvar_41; if ((d_36.x >= 0.0)) { tmpvar_41 = f_35.x; } else { tmpvar_41 = -(f_35.x); }; - float tmpvar_42; + mediump float tmpvar_42; if ((d_36.y >= 0.0)) { tmpvar_42 = f_35.y; } else { tmpvar_42 = -(f_35.y); }; - float tmpvar_43; + mediump float tmpvar_43; if ((d_36.z >= 0.0)) { tmpvar_43 = f_35.z; } else { tmpvar_43 = -(f_35.z); }; - float tmpvar_44; + mediump float tmpvar_44; if ((d_36.w >= 0.0)) { tmpvar_44 = f_35.w; } else { tmpvar_44 = -(f_35.w); }; - vec4 tmpvar_45; + mediump vec4 tmpvar_45; tmpvar_45.x = tmpvar_41; tmpvar_45.y = tmpvar_42; tmpvar_45.z = tmpvar_43; @@ -151,8 +151,8 @@ vec4 xll_mod ( return tmpvar_45; } -float xll_modf ( - in float x_46, +mediump float xll_modf ( + in mediump float x_46, out int ip_47 ) { @@ -162,23 +162,23 @@ float xll_modf ( return (x_46 - float(ip_47)); } -float xll_modf ( - in float x_49, - out float ip_50 +mediump float xll_modf ( + in mediump float x_49, + out mediump float ip_50 ) { int i_51; int tmpvar_52; tmpvar_52 = int(x_49); i_51 = tmpvar_52; - float tmpvar_53; + mediump float tmpvar_53; tmpvar_53 = float(i_51); ip_50 = tmpvar_53; return (x_49 - ip_50); } -vec2 xll_modf ( - in vec2 x_54, +mediump vec2 xll_modf ( + in mediump vec2 x_54, out ivec2 ip_55 ) { @@ -187,14 +187,14 @@ vec2 xll_modf ( ivec2 tmpvar_57; tmpvar_57 = tmpvar_56; ip_55 = tmpvar_57; - vec2 tmpvar_58; + mediump vec2 tmpvar_58; tmpvar_58 = vec2(ip_55).xy; return (x_54 - tmpvar_58); } -vec2 xll_modf ( - in vec2 x_59, - out vec2 ip_60 +mediump vec2 xll_modf ( + in mediump vec2 x_59, + out mediump vec2 ip_60 ) { ivec2 i_61; @@ -203,16 +203,16 @@ vec2 xll_modf ( ivec2 tmpvar_63; tmpvar_63 = tmpvar_62; i_61 = tmpvar_63; - vec2 tmpvar_64; + mediump vec2 tmpvar_64; tmpvar_64 = vec2(i_61).xy; - vec2 tmpvar_65; + mediump vec2 tmpvar_65; tmpvar_65 = tmpvar_64; ip_60 = tmpvar_65; return (x_59 - ip_60); } -vec3 xll_modf ( - in vec3 x_66, +mediump vec3 xll_modf ( + in mediump vec3 x_66, out ivec3 ip_67 ) { @@ -221,14 +221,14 @@ vec3 xll_modf ( ivec3 tmpvar_69; tmpvar_69 = tmpvar_68; ip_67 = tmpvar_69; - vec3 tmpvar_70; + mediump vec3 tmpvar_70; tmpvar_70 = vec3(ip_67).xyz; return (x_66 - tmpvar_70); } -vec3 xll_modf ( - in vec3 x_71, - out vec3 ip_72 +mediump vec3 xll_modf ( + in mediump vec3 x_71, + out mediump vec3 ip_72 ) { ivec3 i_73; @@ -237,16 +237,16 @@ vec3 xll_modf ( ivec3 tmpvar_75; tmpvar_75 = tmpvar_74; i_73 = tmpvar_75; - vec3 tmpvar_76; + mediump vec3 tmpvar_76; tmpvar_76 = vec3(i_73).xyz; - vec3 tmpvar_77; + mediump vec3 tmpvar_77; tmpvar_77 = tmpvar_76; ip_72 = tmpvar_77; return (x_71 - ip_72); } -vec4 xll_modf ( - in vec4 x_78, +mediump vec4 xll_modf ( + in mediump vec4 x_78, out ivec4 ip_79 ) { @@ -255,14 +255,14 @@ vec4 xll_modf ( ivec4 tmpvar_81; tmpvar_81 = tmpvar_80; ip_79 = tmpvar_81; - vec4 tmpvar_82; + mediump vec4 tmpvar_82; tmpvar_82 = vec4(ip_79).xyzw; return (x_78 - tmpvar_82); } -vec4 xll_modf ( - in vec4 x_83, - out vec4 ip_84 +mediump vec4 xll_modf ( + in mediump vec4 x_83, + out mediump vec4 ip_84 ) { ivec4 i_85; @@ -271,9 +271,9 @@ vec4 xll_modf ( ivec4 tmpvar_87; tmpvar_87 = tmpvar_86; i_85 = tmpvar_87; - vec4 tmpvar_88; + mediump vec4 tmpvar_88; tmpvar_88 = vec4(i_85).xyzw; - vec4 tmpvar_89; + mediump vec4 tmpvar_89; tmpvar_89 = tmpvar_88; ip_84 = tmpvar_89; return (x_83 - ip_84); @@ -285,45 +285,45 @@ mediump vec4 xlat_main ( { mediump vec4 d_91; mediump vec4 c_92; - vec4 tmpvar_93; + mediump vec4 tmpvar_93; tmpvar_93 = vec4(0.0, 0.0, 0.0, 0.0); c_92 = tmpvar_93; - float tmpvar_94; + mediump float tmpvar_94; tmpvar_94 = xll_mod (uv_90.x, 2.0); mediump float tmpvar_95; tmpvar_95 = (c_92.x + tmpvar_94); c_92.x = tmpvar_95; - vec2 tmpvar_96; + mediump vec2 tmpvar_96; tmpvar_96 = xll_mod (uv_90.xy, vec2(2.0, 2.0)); mediump vec2 tmpvar_97; tmpvar_97 = (c_92.xy + tmpvar_96); c_92.xy = tmpvar_97.xy.xy; - vec3 tmpvar_98; + mediump vec3 tmpvar_98; tmpvar_98 = xll_mod (uv_90.xyz, vec3(2.0, 2.0, 2.0)); mediump vec3 tmpvar_99; tmpvar_99 = (c_92.xyz + tmpvar_98); c_92.xyz = tmpvar_99.xyz.xyz; - vec4 tmpvar_100; + mediump vec4 tmpvar_100; tmpvar_100 = xll_mod (uv_90.xyzw, vec4(2.0, 2.0, 2.0, 2.0)); mediump vec4 tmpvar_101; tmpvar_101 = (c_92.xyzw + tmpvar_100); c_92 = tmpvar_101.xyzw.xyzw; - float tmpvar_102; + mediump float tmpvar_102; tmpvar_102 = xll_modf (uv_90.x, d_91.x); mediump float tmpvar_103; tmpvar_103 = (c_92.x + tmpvar_102); c_92.x = tmpvar_103; - vec2 tmpvar_104; + mediump vec2 tmpvar_104; tmpvar_104 = xll_modf (uv_90.xy, d_91.xy); mediump vec2 tmpvar_105; tmpvar_105 = (c_92.xy + tmpvar_104); c_92.xy = tmpvar_105.xy.xy; - vec3 tmpvar_106; + mediump vec3 tmpvar_106; tmpvar_106 = xll_modf (uv_90.xyz, d_91.xyz); mediump vec3 tmpvar_107; tmpvar_107 = (c_92.xyz + tmpvar_106); c_92.xyz = tmpvar_107.xyz.xyz; - vec4 tmpvar_108; + mediump vec4 tmpvar_108; tmpvar_108 = xll_modf (uv_90.xyzw, d_91.xyzw); mediump vec4 tmpvar_109; tmpvar_109 = (c_92.xyzw + tmpvar_108); diff --git a/3rdparty/glsl-optimizer/tests/fragment/loop-for-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/loop-for-irES.txt index 603833e99..c4e8ab929 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/loop-for-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/loop-for-irES.txt @@ -21,7 +21,7 @@ lowp vec4 xlat_main ( lowp vec4 tmpvar_7; tmpvar_7 = tmpvar_6; col_3 = tmpvar_7; - vec3 tmpvar_8; + mediump vec3 tmpvar_8; tmpvar_8 = vec3(0.0, 0.0, 0.0); light_2 = tmpvar_8; while (true) { diff --git a/3rdparty/glsl-optimizer/tests/fragment/loop-forafterdiscard-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/loop-forafterdiscard-irES.txt index d88e837d7..5cb834066 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/loop-forafterdiscard-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/loop-forafterdiscard-irES.txt @@ -21,7 +21,7 @@ lowp vec4 xlat_main ( if ((col_4.w < 0.5)) { discard; }; - vec3 tmpvar_7; + mediump vec3 tmpvar_7; tmpvar_7 = vec3(0.0, 0.0, 0.0); light_3 = tmpvar_7; int tmpvar_8; diff --git a/3rdparty/glsl-optimizer/tests/fragment/loop-forarounddiscard-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/loop-forarounddiscard-irES.txt index d0476c77c..9fea2ccf5 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/loop-forarounddiscard-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/loop-forarounddiscard-irES.txt @@ -24,7 +24,7 @@ lowp vec4 xlat_main ( if ((col_3.w < 0.5)) { discard; }; - vec3 tmpvar_8; + mediump vec3 tmpvar_8; tmpvar_8 = vec3(0.0, 0.0, 0.0); light_2 = tmpvar_8; while (true) { diff --git a/3rdparty/glsl-optimizer/tests/fragment/loop-fornounroll-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/loop-fornounroll-irES.txt index df4f957c0..47bc40085 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/loop-fornounroll-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/loop-fornounroll-irES.txt @@ -5,7 +5,7 @@ void main () int tmpvar_3; tmpvar_3 = 0; i_2 = tmpvar_3; - float tmpvar_4; + mediump float tmpvar_4; tmpvar_4 = 0.0; f_1 = tmpvar_4; while (true) { diff --git a/3rdparty/glsl-optimizer/tests/fragment/loop-forunbounded-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/loop-forunbounded-irES.txt index 8b124f39d..0eeda47eb 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/loop-forunbounded-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/loop-forunbounded-irES.txt @@ -19,7 +19,7 @@ lowp vec4 xlat_main ( lowp vec4 tmpvar_7; tmpvar_7 = tmpvar_6; col_5 = tmpvar_7; - vec3 tmpvar_8; + mediump vec3 tmpvar_8; tmpvar_8 = vec3(0.0, 0.0, 0.0); light_4 = tmpvar_8; int tmpvar_9; diff --git a/3rdparty/glsl-optimizer/tests/fragment/mrt-in.txt b/3rdparty/glsl-optimizer/tests/fragment/mrt-in.txt new file mode 100644 index 000000000..dcbc52507 --- /dev/null +++ b/3rdparty/glsl-optimizer/tests/fragment/mrt-in.txt @@ -0,0 +1,7 @@ +void main() +{ + gl_FragData[0] = vec4(0.0); + gl_FragData[1] = vec4(0.1); + gl_FragData[2] = vec4(0.2); + gl_FragData[3] = vec4(0.3); +} diff --git a/3rdparty/glsl-optimizer/tests/fragment/mrt-inES3.txt b/3rdparty/glsl-optimizer/tests/fragment/mrt-inES3.txt new file mode 100644 index 000000000..a85650684 --- /dev/null +++ b/3rdparty/glsl-optimizer/tests/fragment/mrt-inES3.txt @@ -0,0 +1,9 @@ +#version 300 es +out lowp vec4 _fragData[4]; +void main() +{ + _fragData[0] = vec4(0.0); + _fragData[1] = vec4(0.1); + _fragData[2] = vec4(0.2); + _fragData[3] = vec4(0.3); +} diff --git a/3rdparty/glsl-optimizer/tests/fragment/mrt-ir.txt b/3rdparty/glsl-optimizer/tests/fragment/mrt-ir.txt new file mode 100644 index 000000000..d05607896 --- /dev/null +++ b/3rdparty/glsl-optimizer/tests/fragment/mrt-ir.txt @@ -0,0 +1,16 @@ +void main () +{ + vec4 tmpvar_1; + tmpvar_1 = vec4(0.0, 0.0, 0.0, 0.0); + gl_FragData[0] = tmpvar_1; + vec4 tmpvar_2; + tmpvar_2 = vec4(0.1, 0.1, 0.1, 0.1); + gl_FragData[1] = tmpvar_2; + vec4 tmpvar_3; + tmpvar_3 = vec4(0.2, 0.2, 0.2, 0.2); + gl_FragData[2] = tmpvar_3; + vec4 tmpvar_4; + tmpvar_4 = vec4(0.3, 0.3, 0.3, 0.3); + gl_FragData[3] = tmpvar_4; +} + diff --git a/3rdparty/glsl-optimizer/tests/fragment/mrt-irES3.txt b/3rdparty/glsl-optimizer/tests/fragment/mrt-irES3.txt new file mode 100644 index 000000000..5ae19b969 --- /dev/null +++ b/3rdparty/glsl-optimizer/tests/fragment/mrt-irES3.txt @@ -0,0 +1,18 @@ +#version 300 es +out lowp vec4 _fragData[4]; +void main () +{ + mediump vec4 tmpvar_1; + tmpvar_1 = vec4(0.0, 0.0, 0.0, 0.0); + _fragData[0] = tmpvar_1; + mediump vec4 tmpvar_2; + tmpvar_2 = vec4(0.1, 0.1, 0.1, 0.1); + _fragData[1] = tmpvar_2; + mediump vec4 tmpvar_3; + tmpvar_3 = vec4(0.2, 0.2, 0.2, 0.2); + _fragData[2] = tmpvar_3; + mediump vec4 tmpvar_4; + tmpvar_4 = vec4(0.3, 0.3, 0.3, 0.3); + _fragData[3] = tmpvar_4; +} + diff --git a/3rdparty/glsl-optimizer/tests/fragment/mrt-out.txt b/3rdparty/glsl-optimizer/tests/fragment/mrt-out.txt new file mode 100644 index 000000000..c04f9794a --- /dev/null +++ b/3rdparty/glsl-optimizer/tests/fragment/mrt-out.txt @@ -0,0 +1,10 @@ +void main () +{ + gl_FragData[0] = vec4(0.0, 0.0, 0.0, 0.0); + gl_FragData[1] = vec4(0.1, 0.1, 0.1, 0.1); + gl_FragData[2] = vec4(0.2, 0.2, 0.2, 0.2); + gl_FragData[3] = vec4(0.3, 0.3, 0.3, 0.3); +} + + +// inputs: 0, stats: 4 alu 0 tex 0 flow diff --git a/3rdparty/glsl-optimizer/tests/fragment/mrt-outES3.txt b/3rdparty/glsl-optimizer/tests/fragment/mrt-outES3.txt new file mode 100644 index 000000000..dad40396f --- /dev/null +++ b/3rdparty/glsl-optimizer/tests/fragment/mrt-outES3.txt @@ -0,0 +1,12 @@ +#version 300 es +out lowp vec4 _fragData[4]; +void main () +{ + _fragData[0] = vec4(0.0, 0.0, 0.0, 0.0); + _fragData[1] = vec4(0.1, 0.1, 0.1, 0.1); + _fragData[2] = vec4(0.2, 0.2, 0.2, 0.2); + _fragData[3] = vec4(0.3, 0.3, 0.3, 0.3); +} + + +// inputs: 0, stats: 4 alu 0 tex 0 flow diff --git a/3rdparty/glsl-optimizer/tests/fragment/opt-movevars-sideeffect-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/opt-movevars-sideeffect-irES.txt index f929f75f6..79f387933 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/opt-movevars-sideeffect-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/opt-movevars-sideeffect-irES.txt @@ -1,9 +1,9 @@ varying lowp float xx; int func ( - inout float x_1 + inout mediump float x_1 ) { - float tmpvar_2; + mediump float tmpvar_2; tmpvar_2 = (x_1 * 2.0); x_1 = tmpvar_2; return 0; @@ -25,7 +25,7 @@ void main () if ((x_5 < 0.0)) { discard; }; - float tmpvar_9; + mediump float tmpvar_9; tmpvar_9 = 0.0; c_3 = tmpvar_9; while (true) { diff --git a/3rdparty/glsl-optimizer/tests/fragment/opt-movevars-sideeffect2-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/opt-movevars-sideeffect2-irES.txt index 6a8bef375..5c4545c06 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/opt-movevars-sideeffect2-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/opt-movevars-sideeffect2-irES.txt @@ -19,7 +19,7 @@ void main () if ((x_3 < 2)) { discard; }; - float tmpvar_7; + mediump float tmpvar_7; tmpvar_7 = 0.0; c_1 = tmpvar_7; while (true) { diff --git a/3rdparty/glsl-optimizer/tests/fragment/opt-movevars-simple-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/opt-movevars-simple-irES.txt index dc4365e65..9781bb213 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/opt-movevars-simple-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/opt-movevars-simple-irES.txt @@ -9,7 +9,7 @@ void main () if ((xx < 0.0)) { discard; }; - float tmpvar_4; + mediump float tmpvar_4; tmpvar_4 = 0.0; c_1 = tmpvar_4; while (true) { diff --git a/3rdparty/glsl-optimizer/tests/fragment/opt-vectorize-retval-in.txt b/3rdparty/glsl-optimizer/tests/fragment/opt-vectorize-retval-in.txt new file mode 100644 index 000000000..78f15502a --- /dev/null +++ b/3rdparty/glsl-optimizer/tests/fragment/opt-vectorize-retval-in.txt @@ -0,0 +1,22 @@ +uniform float _Fresnel; +uniform float _SpecIntensity; +float saturate (float f) { return max(0.0, min(1.0,f)); } +float splineFresnel (in vec3 N, in vec3 E, in float specIntensity, in float fresnel) +{ + float factor = (1.0 - saturate(dot(N,E))); + float factor3 = ((factor * factor) * factor); + vec3 p = vec3(1.0, factor, factor3); + vec2 t = vec2(1.0 - fresnel, fresnel); + p.x = dot(p.xy, t); + p.y = dot(p.yz, t); + factor = (0.05 + (0.95 * dot(p.xy, t))); + factor *= specIntensity; + return factor; +} +varying vec3 inN; +varying vec3 inE; +void main() +{ + float f = splineFresnel (inN, inE, _SpecIntensity, _Fresnel); + gl_FragColor = vec4(f); +} diff --git a/3rdparty/glsl-optimizer/tests/fragment/opt-vectorize-retval-ir.txt b/3rdparty/glsl-optimizer/tests/fragment/opt-vectorize-retval-ir.txt new file mode 100644 index 000000000..901852015 --- /dev/null +++ b/3rdparty/glsl-optimizer/tests/fragment/opt-vectorize-retval-ir.txt @@ -0,0 +1,85 @@ +uniform float _Fresnel; +uniform float _SpecIntensity; +varying vec3 inN; +varying vec3 inE; +float saturate ( + in float f_1 +) +{ + float tmpvar_2; + tmpvar_2 = min (1.0, f_1); + float tmpvar_3; + tmpvar_3 = max (0.0, tmpvar_2); + return tmpvar_3; +} + +float splineFresnel ( + in vec3 N_4, + in vec3 E_5, + in float specIntensity_6, + in float fresnel_7 +) +{ + vec2 t_8; + vec3 p_9; + float factor3_10; + float factor_11; + float tmpvar_12; + tmpvar_12 = dot (N_4, E_5); + float tmpvar_13; + tmpvar_13 = saturate (tmpvar_12); + float tmpvar_14; + tmpvar_14 = (1.0 - tmpvar_13); + factor_11 = tmpvar_14; + float tmpvar_15; + tmpvar_15 = ((factor_11 * factor_11) * factor_11); + factor3_10 = tmpvar_15; + vec3 tmpvar_16; + tmpvar_16.x = 1.0; + tmpvar_16.y = factor_11; + tmpvar_16.z = factor3_10; + vec3 tmpvar_17; + tmpvar_17 = tmpvar_16; + p_9 = tmpvar_17; + vec2 tmpvar_18; + tmpvar_18.x = (1.0 - fresnel_7); + tmpvar_18.y = fresnel_7; + vec2 tmpvar_19; + tmpvar_19 = tmpvar_18; + t_8 = tmpvar_19; + float tmpvar_20; + tmpvar_20 = dot (p_9.xy, t_8); + float tmpvar_21; + tmpvar_21 = tmpvar_20; + p_9.x = tmpvar_21; + float tmpvar_22; + tmpvar_22 = dot (p_9.yz, t_8); + float tmpvar_23; + tmpvar_23 = tmpvar_22; + p_9.y = vec2(tmpvar_23).y; + float tmpvar_24; + tmpvar_24 = dot (p_9.xy, t_8); + float tmpvar_25; + tmpvar_25 = (0.05 + (0.95 * tmpvar_24)); + factor_11 = tmpvar_25; + float tmpvar_26; + tmpvar_26 = (factor_11 * specIntensity_6); + factor_11 = tmpvar_26; + return factor_11; +} + +void main () +{ + float f_27; + float tmpvar_28; + tmpvar_28 = splineFresnel (inN, inE, _SpecIntensity, _Fresnel); + float tmpvar_29; + tmpvar_29 = tmpvar_28; + f_27 = tmpvar_29; + vec4 tmpvar_30; + tmpvar_30 = vec4(f_27); + vec4 tmpvar_31; + tmpvar_31 = tmpvar_30; + gl_FragColor = tmpvar_31; +} + diff --git a/3rdparty/glsl-optimizer/tests/fragment/opt-vectorize-retval-out.txt b/3rdparty/glsl-optimizer/tests/fragment/opt-vectorize-retval-out.txt new file mode 100644 index 000000000..9ec1e886e --- /dev/null +++ b/3rdparty/glsl-optimizer/tests/fragment/opt-vectorize-retval-out.txt @@ -0,0 +1,28 @@ +uniform float _Fresnel; +uniform float _SpecIntensity; +varying vec3 inN; +varying vec3 inE; +void main () +{ + vec3 p_1; + float tmpvar_2; + tmpvar_2 = (1.0 - max (0.0, min (1.0, + dot (inN, inE) + ))); + vec3 tmpvar_3; + tmpvar_3.x = 1.0; + tmpvar_3.y = tmpvar_2; + tmpvar_3.z = ((tmpvar_2 * tmpvar_2) * tmpvar_2); + p_1.z = tmpvar_3.z; + vec2 tmpvar_4; + tmpvar_4.x = (1.0 - _Fresnel); + tmpvar_4.y = _Fresnel; + p_1.x = dot (tmpvar_3.xy, tmpvar_4); + p_1.y = dot (tmpvar_3.yz, tmpvar_4); + gl_FragColor = vec4(((0.05 + (0.95 * + dot (p_1.xy, tmpvar_4) + )) * _SpecIntensity)); +} + + +// inputs: 2, stats: 14 alu 0 tex 0 flow diff --git a/3rdparty/glsl-optimizer/tests/fragment/prec-default-inES.txt b/3rdparty/glsl-optimizer/tests/fragment/prec-default-inES.txt index fc873606c..20bf6dbe0 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/prec-default-inES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/prec-default-inES.txt @@ -19,5 +19,7 @@ uniform mediump int im; void main() { lowp float f = fh1 + fh2 + fm + s1.f; highp int i = il1 + il2 + im + s1.i; - gl_FragColor = vec4(f, i, 0.0, 0.0); + float z = 0.0; + z += gl_FragCoord.x > 0.5 ? 0.9 : 0.1; + gl_FragColor = vec4(f, i, z, 0.0); } diff --git a/3rdparty/glsl-optimizer/tests/fragment/prec-default-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/prec-default-irES.txt index e93b8927f..fa8d582d6 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/prec-default-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/prec-default-irES.txt @@ -13,20 +13,34 @@ uniform int il2; uniform int im; void main () { - int i_1; - lowp float f_2; - highp float tmpvar_3; - tmpvar_3 = (((fh1 + fh2) + fm) + s1.f); - f_2 = tmpvar_3; - int tmpvar_4; - tmpvar_4 = (((il1 + il2) + im) + s1.i); - i_1 = tmpvar_4; - highp vec4 tmpvar_5; - tmpvar_5.zw = vec2(0.0, 0.0); - tmpvar_5.x = f_2; - tmpvar_5.y = float(i_1); - highp vec4 tmpvar_6; - tmpvar_6 = tmpvar_5; - gl_FragColor = tmpvar_6; + float z_1; + int i_2; + lowp float f_3; + highp float tmpvar_4; + tmpvar_4 = (((fh1 + fh2) + fm) + s1.f); + f_3 = tmpvar_4; + int tmpvar_5; + tmpvar_5 = (((il1 + il2) + im) + s1.i); + i_2 = tmpvar_5; + float tmpvar_6; + tmpvar_6 = 0.0; + z_1 = tmpvar_6; + float tmpvar_7; + if ((gl_FragCoord.x > 0.5)) { + tmpvar_7 = 0.9; + } else { + tmpvar_7 = 0.1; + }; + float tmpvar_8; + tmpvar_8 = (z_1 + tmpvar_7); + z_1 = tmpvar_8; + highp vec4 tmpvar_9; + tmpvar_9.w = 0.0; + tmpvar_9.x = f_3; + tmpvar_9.y = float(i_2); + tmpvar_9.z = z_1; + highp vec4 tmpvar_10; + tmpvar_10 = tmpvar_9; + gl_FragColor = tmpvar_10; } diff --git a/3rdparty/glsl-optimizer/tests/fragment/prec-default-outES.txt b/3rdparty/glsl-optimizer/tests/fragment/prec-default-outES.txt index d4527c299..e33e779a1 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/prec-default-outES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/prec-default-outES.txt @@ -21,12 +21,19 @@ void main () int tmpvar_4; tmpvar_4 = (((il1 + il2) + im) + s1.i); i_1 = tmpvar_4; - highp vec4 tmpvar_5; - tmpvar_5.zw = vec2(0.0, 0.0); - tmpvar_5.x = f_2; - tmpvar_5.y = float(i_1); - gl_FragColor = tmpvar_5; + float tmpvar_5; + if ((gl_FragCoord.x > 0.5)) { + tmpvar_5 = 0.9; + } else { + tmpvar_5 = 0.1; + }; + highp vec4 tmpvar_6; + tmpvar_6.w = 0.0; + tmpvar_6.x = f_2; + tmpvar_6.y = float(i_1); + tmpvar_6.z = tmpvar_5; + gl_FragColor = tmpvar_6; } -// inputs: 0, stats: 8 alu 0 tex 0 flow +// inputs: 1, stats: 11 alu 0 tex 1 flow diff --git a/3rdparty/glsl-optimizer/tests/fragment/prec-inlineexpr1-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/prec-inlineexpr1-irES.txt index c2dd417bb..ed4f9f0be 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/prec-inlineexpr1-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/prec-inlineexpr1-irES.txt @@ -3,20 +3,20 @@ uniform sampler2D _BurntTex; uniform mediump float _EmberFadeEnd; uniform mediump float _EmberFadeStart; varying mediump vec2 xlv_TEXCOORD0; -float xll_saturate ( - in float x_1 +mediump float xll_saturate ( + in mediump float x_1 ) { - float tmpvar_2; + mediump float tmpvar_2; tmpvar_2 = clamp (x_1, 0.0, 1.0); return tmpvar_2; } -vec3 xll_saturate ( - in vec3 x_3 +mediump vec3 xll_saturate ( + in mediump vec3 x_3 ) { - vec3 tmpvar_4; + mediump vec3 tmpvar_4; tmpvar_4 = clamp (x_3, 0.0, 1.0); return tmpvar_4; } @@ -38,9 +38,9 @@ lowp vec4 frag ( lowp vec3 tmpvar_12; tmpvar_12 = tmpvar_11.xyz; burn_7 = tmpvar_12; - float tmpvar_13; + mediump float tmpvar_13; tmpvar_13 = xll_saturate (((_EmberFadeStart - 0.05) / (_EmberFadeStart - _EmberFadeEnd))); - float tmpvar_14; + mediump float tmpvar_14; tmpvar_14 = tmpvar_13; t_6 = tmpvar_14; lowp vec3 tmpvar_15; diff --git a/3rdparty/glsl-optimizer/tests/fragment/prec-inlineexpr2-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/prec-inlineexpr2-irES.txt index 3c57b69de..77e19d9f6 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/prec-inlineexpr2-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/prec-inlineexpr2-irES.txt @@ -3,20 +3,20 @@ uniform sampler2D _BurntTex; uniform mediump float _EmberFadeEnd; uniform mediump float _EmberFadeStart; varying mediump vec2 xlv_TEXCOORD0; -float xll_saturate ( - in float x_1 +mediump float xll_saturate ( + in mediump float x_1 ) { - float tmpvar_2; + mediump float tmpvar_2; tmpvar_2 = clamp (x_1, 0.0, 1.0); return tmpvar_2; } -vec3 xll_saturate ( - in vec3 x_3 +mediump vec3 xll_saturate ( + in mediump vec3 x_3 ) { - vec3 tmpvar_4; + mediump vec3 tmpvar_4; tmpvar_4 = clamp (x_3, 0.0, 1.0); return tmpvar_4; } @@ -38,11 +38,11 @@ lowp vec4 frag ( lowp vec3 tmpvar_12; tmpvar_12 = tmpvar_11.xyz; burn_7 = tmpvar_12; - float tmpvar_13; + mediump float tmpvar_13; tmpvar_13 = xll_saturate (((_EmberFadeStart - 0.05) / (_EmberFadeStart - _EmberFadeEnd))); - vec3 tmpvar_14; + mediump vec3 tmpvar_14; tmpvar_14 = vec3(tmpvar_13); - vec3 tmpvar_15; + mediump vec3 tmpvar_15; tmpvar_15 = tmpvar_14; t_6 = tmpvar_15; lowp vec3 tmpvar_16; diff --git a/3rdparty/glsl-optimizer/tests/fragment/prec-temps-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/prec-temps-irES.txt index 732b20ed7..285a00db3 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/prec-temps-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/prec-temps-irES.txt @@ -59,7 +59,7 @@ lowp vec4 frag_surf ( (_LightColor0.xyz * diff_5) + IN_1.vlight)) + (_LightColor0.xyz * spec_3)); c_2.xyz = tmpvar_21.xyz.xyz; - float tmpvar_22; + mediump float tmpvar_22; tmpvar_22 = 0.0; c_2.w = vec4(tmpvar_22).w; return c_2; @@ -69,7 +69,7 @@ void main () { v2f_surf xlt_IN_23; lowp vec4 xl_retval_24; - vec4 tmpvar_25; + mediump vec4 tmpvar_25; tmpvar_25 = vec4(0.0, 0.0, 0.0, 0.0); xlt_IN_23.pos = tmpvar_25; lowp vec2 tmpvar_26; diff --git a/3rdparty/glsl-optimizer/tests/fragment/syntax-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/syntax-irES.txt index 1ebadd943..08279e7bc 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/syntax-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/syntax-irES.txt @@ -1,7 +1,7 @@ mediump vec4 xlat_main () { highp float foo_1; - float tmpvar_2; + mediump float tmpvar_2; tmpvar_2 = 1.0; foo_1 = tmpvar_2; highp float tmpvar_3; diff --git a/3rdparty/glsl-optimizer/tests/fragment/ternary-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/ternary-irES.txt index 040f62c3c..c7fb3fb25 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/ternary-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/ternary-irES.txt @@ -4,10 +4,10 @@ mediump vec4 xlat_main ( ) { mediump vec4 c_2; - vec4 tmpvar_3; + mediump vec4 tmpvar_3; tmpvar_3 = vec4(0.0, 0.0, 0.0, 0.0); c_2 = tmpvar_3; - float tmpvar_4; + mediump float tmpvar_4; if ((uv_1.x > 0.5)) { tmpvar_4 = 0.9; } else { @@ -16,7 +16,7 @@ mediump vec4 xlat_main ( mediump vec4 tmpvar_5; tmpvar_5 = (c_2 + tmpvar_4); c_2 = tmpvar_5; - vec4 tmpvar_6; + mediump vec4 tmpvar_6; if ((uv_1.x > 0.5)) { tmpvar_6 = vec4(0.9, 0.9, 0.9, 0.9); } else { @@ -25,7 +25,7 @@ mediump vec4 xlat_main ( mediump vec4 tmpvar_7; tmpvar_7 = (c_2 + tmpvar_6); c_2 = tmpvar_7; - vec3 tmpvar_8; + mediump vec3 tmpvar_8; if ((uv_1.x > 0.5)) { tmpvar_8 = vec3(0.9, 0.9, 0.9); } else { @@ -34,7 +34,7 @@ mediump vec4 xlat_main ( mediump vec3 tmpvar_9; tmpvar_9 = (c_2.xyz + tmpvar_8); c_2.xyz = tmpvar_9.xyz.xyz; - vec2 tmpvar_10; + mediump vec2 tmpvar_10; if ((uv_1.x > 0.5)) { tmpvar_10 = vec2(0.9, 0.9); } else { @@ -45,7 +45,7 @@ mediump vec4 xlat_main ( c_2.xy = tmpvar_11.xy.xy; highp float tmpvar_12; tmpvar_12 = fract (uv_1.x); - float tmpvar_13; + mediump float tmpvar_13; if (bool(tmpvar_12)) { tmpvar_13 = 0.9; } else { diff --git a/3rdparty/glsl-optimizer/tests/fragment/ternary-outES.txt b/3rdparty/glsl-optimizer/tests/fragment/ternary-outES.txt index e3e29601f..6f94a4300 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/ternary-outES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/ternary-outES.txt @@ -3,14 +3,14 @@ void main () { mediump vec4 c_1; c_1 = vec4(0.0, 0.0, 0.0, 0.0); - float tmpvar_2; + mediump float tmpvar_2; if ((xlv_TEXCOORD0.x > 0.5)) { tmpvar_2 = 0.9; } else { tmpvar_2 = 0.1; }; c_1 = vec4(tmpvar_2); - vec4 tmpvar_3; + mediump vec4 tmpvar_3; if ((xlv_TEXCOORD0.x > 0.5)) { tmpvar_3 = vec4(0.9, 0.9, 0.9, 0.9); } else { @@ -19,14 +19,14 @@ void main () mediump vec4 tmpvar_4; tmpvar_4 = (vec4(tmpvar_2) + tmpvar_3); c_1 = tmpvar_4; - vec3 tmpvar_5; + mediump vec3 tmpvar_5; if ((xlv_TEXCOORD0.x > 0.5)) { tmpvar_5 = vec3(0.9, 0.9, 0.9); } else { tmpvar_5 = vec3(0.1, 0.1, 0.1); }; c_1.xyz = (tmpvar_4.xyz + tmpvar_5); - vec2 tmpvar_6; + mediump vec2 tmpvar_6; if ((xlv_TEXCOORD0.x > 0.5)) { tmpvar_6 = vec2(0.9, 0.9); } else { @@ -35,7 +35,7 @@ void main () c_1.xy = (c_1.xy + tmpvar_6); highp float tmpvar_7; tmpvar_7 = fract(xlv_TEXCOORD0.x); - float tmpvar_8; + mediump float tmpvar_8; if (bool(tmpvar_7)) { tmpvar_8 = 0.9; } else { diff --git a/3rdparty/glsl-optimizer/tests/fragment/ternary-vec4-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/ternary-vec4-irES.txt index 103dfc51a..db41c3b73 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/ternary-vec4-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/ternary-vec4-irES.txt @@ -1,90 +1,90 @@ varying highp vec4 xlv_TEXCOORD0; -vec2 xll_vecTSel ( +mediump vec2 xll_vecTSel ( in bvec2 a_1, - in vec2 b_2, - in vec2 c_3 + in mediump vec2 b_2, + in mediump vec2 c_3 ) { - float tmpvar_4; + mediump float tmpvar_4; if (a_1.x) { tmpvar_4 = b_2.x; } else { tmpvar_4 = c_3.x; }; - float tmpvar_5; + mediump float tmpvar_5; if (a_1.y) { tmpvar_5 = b_2.y; } else { tmpvar_5 = c_3.y; }; - vec2 tmpvar_6; + mediump vec2 tmpvar_6; tmpvar_6.x = tmpvar_4; tmpvar_6.y = tmpvar_5; return tmpvar_6; } -vec3 xll_vecTSel ( +mediump vec3 xll_vecTSel ( in bvec3 a_7, - in vec3 b_8, - in vec3 c_9 + in mediump vec3 b_8, + in mediump vec3 c_9 ) { - float tmpvar_10; + mediump float tmpvar_10; if (a_7.x) { tmpvar_10 = b_8.x; } else { tmpvar_10 = c_9.x; }; - float tmpvar_11; + mediump float tmpvar_11; if (a_7.y) { tmpvar_11 = b_8.y; } else { tmpvar_11 = c_9.y; }; - float tmpvar_12; + mediump float tmpvar_12; if (a_7.z) { tmpvar_12 = b_8.z; } else { tmpvar_12 = c_9.z; }; - vec3 tmpvar_13; + mediump vec3 tmpvar_13; tmpvar_13.x = tmpvar_10; tmpvar_13.y = tmpvar_11; tmpvar_13.z = tmpvar_12; return tmpvar_13; } -vec4 xll_vecTSel ( +mediump vec4 xll_vecTSel ( in bvec4 a_14, - in vec4 b_15, - in vec4 c_16 + in mediump vec4 b_15, + in mediump vec4 c_16 ) { - float tmpvar_17; + mediump float tmpvar_17; if (a_14.x) { tmpvar_17 = b_15.x; } else { tmpvar_17 = c_16.x; }; - float tmpvar_18; + mediump float tmpvar_18; if (a_14.y) { tmpvar_18 = b_15.y; } else { tmpvar_18 = c_16.y; }; - float tmpvar_19; + mediump float tmpvar_19; if (a_14.z) { tmpvar_19 = b_15.z; } else { tmpvar_19 = c_16.z; }; - float tmpvar_20; + mediump float tmpvar_20; if (a_14.w) { tmpvar_20 = b_15.w; } else { tmpvar_20 = c_16.w; }; - vec4 tmpvar_21; + mediump vec4 tmpvar_21; tmpvar_21.x = tmpvar_17; tmpvar_21.y = tmpvar_18; tmpvar_21.z = tmpvar_19; @@ -97,33 +97,33 @@ mediump vec4 xlat_main ( ) { highp vec4 a_23; - vec4 tmpvar_24; + mediump vec4 tmpvar_24; tmpvar_24 = vec4(0.0, 0.0, 0.0, 0.0); a_23 = tmpvar_24; bvec4 tmpvar_25; tmpvar_25 = greaterThan (uv_22, vec4(0.5, 0.5, 0.5, 0.5)); - vec4 tmpvar_26; + mediump vec4 tmpvar_26; tmpvar_26 = xll_vecTSel (tmpvar_25, vec4(1.0, 2.0, 3.0, 4.0), vec4(5.0, 6.0, 7.0, 8.0)); highp vec4 tmpvar_27; tmpvar_27 = (a_23 + tmpvar_26); a_23 = tmpvar_27; bvec4 tmpvar_28; tmpvar_28 = greaterThan (uv_22, vec4(0.5, 0.5, 0.5, 0.5)); - vec4 tmpvar_29; + mediump vec4 tmpvar_29; tmpvar_29 = xll_vecTSel (tmpvar_28, vec4(1.0, 2.0, 3.0, 4.0), vec4(5.0, 6.0, 7.0, 8.0)); highp vec4 tmpvar_30; tmpvar_30 = (a_23 + tmpvar_29); a_23 = tmpvar_30; bvec4 tmpvar_31; tmpvar_31 = greaterThan (uv_22, vec4(0.5, 0.5, 0.5, 0.5)); - vec4 tmpvar_32; + mediump vec4 tmpvar_32; tmpvar_32 = xll_vecTSel (tmpvar_31, vec4(1.0, 1.0, 1.0, 1.0), vec4(2.0, 2.0, 2.0, 2.0)); highp vec4 tmpvar_33; tmpvar_33 = (a_23 + tmpvar_32); a_23 = tmpvar_33; bvec4 tmpvar_34; tmpvar_34 = greaterThan (uv_22, vec4(0.5, 0.5, 0.5, 0.5)); - vec4 tmpvar_35; + mediump vec4 tmpvar_35; tmpvar_35 = xll_vecTSel (tmpvar_34, vec4(1.0, 1.0, 1.0, 1.0), vec4(2.0, 2.0, 2.0, 2.0)); highp vec4 tmpvar_36; tmpvar_36 = (a_23 + tmpvar_35); @@ -132,7 +132,7 @@ mediump vec4 xlat_main ( tmpvar_37 = fract (uv_22); bvec4 tmpvar_38; tmpvar_38 = bvec4(tmpvar_37).xyzw; - vec4 tmpvar_39; + mediump vec4 tmpvar_39; tmpvar_39 = xll_vecTSel (tmpvar_38, vec4(1.0, 1.0, 1.0, 1.0), vec4(2.0, 2.0, 2.0, 2.0)); highp vec4 tmpvar_40; tmpvar_40 = (a_23 + tmpvar_39); diff --git a/3rdparty/glsl-optimizer/tests/fragment/ternary-vec4-outES.txt b/3rdparty/glsl-optimizer/tests/fragment/ternary-vec4-outES.txt index 186a62810..7d3490141 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/ternary-vec4-outES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/ternary-vec4-outES.txt @@ -4,62 +4,62 @@ void main () mediump vec4 tmpvar_1; bvec4 tmpvar_2; tmpvar_2 = greaterThan (xlv_TEXCOORD0, vec4(0.5, 0.5, 0.5, 0.5)); - float tmpvar_3; + mediump float tmpvar_3; if (tmpvar_2.x) { tmpvar_3 = 1.0; } else { tmpvar_3 = 5.0; }; - float tmpvar_4; + mediump float tmpvar_4; if (tmpvar_2.y) { tmpvar_4 = 2.0; } else { tmpvar_4 = 6.0; }; - float tmpvar_5; + mediump float tmpvar_5; if (tmpvar_2.z) { tmpvar_5 = 3.0; } else { tmpvar_5 = 7.0; }; - float tmpvar_6; + mediump float tmpvar_6; if (tmpvar_2.w) { tmpvar_6 = 4.0; } else { tmpvar_6 = 8.0; }; - vec4 tmpvar_7; + mediump vec4 tmpvar_7; tmpvar_7.x = tmpvar_3; tmpvar_7.y = tmpvar_4; tmpvar_7.z = tmpvar_5; tmpvar_7.w = tmpvar_6; bvec4 tmpvar_8; tmpvar_8 = greaterThan (xlv_TEXCOORD0, vec4(0.5, 0.5, 0.5, 0.5)); - float tmpvar_9; + mediump float tmpvar_9; if (tmpvar_8.x) { tmpvar_9 = 1.0; } else { tmpvar_9 = 5.0; }; - float tmpvar_10; + mediump float tmpvar_10; if (tmpvar_8.y) { tmpvar_10 = 2.0; } else { tmpvar_10 = 6.0; }; - float tmpvar_11; + mediump float tmpvar_11; if (tmpvar_8.z) { tmpvar_11 = 3.0; } else { tmpvar_11 = 7.0; }; - float tmpvar_12; + mediump float tmpvar_12; if (tmpvar_8.w) { tmpvar_12 = 4.0; } else { tmpvar_12 = 8.0; }; - vec4 tmpvar_13; + mediump vec4 tmpvar_13; tmpvar_13.x = tmpvar_9; tmpvar_13.y = tmpvar_10; tmpvar_13.z = tmpvar_11; @@ -68,31 +68,31 @@ void main () tmpvar_14 = (tmpvar_7 + tmpvar_13); bvec4 tmpvar_15; tmpvar_15 = greaterThan (xlv_TEXCOORD0, vec4(0.5, 0.5, 0.5, 0.5)); - float tmpvar_16; + mediump float tmpvar_16; if (tmpvar_15.x) { tmpvar_16 = 1.0; } else { tmpvar_16 = 2.0; }; - float tmpvar_17; + mediump float tmpvar_17; if (tmpvar_15.y) { tmpvar_17 = 1.0; } else { tmpvar_17 = 2.0; }; - float tmpvar_18; + mediump float tmpvar_18; if (tmpvar_15.z) { tmpvar_18 = 1.0; } else { tmpvar_18 = 2.0; }; - float tmpvar_19; + mediump float tmpvar_19; if (tmpvar_15.w) { tmpvar_19 = 1.0; } else { tmpvar_19 = 2.0; }; - vec4 tmpvar_20; + mediump vec4 tmpvar_20; tmpvar_20.x = tmpvar_16; tmpvar_20.y = tmpvar_17; tmpvar_20.z = tmpvar_18; @@ -101,31 +101,31 @@ void main () tmpvar_21 = (tmpvar_14 + tmpvar_20); bvec4 tmpvar_22; tmpvar_22 = greaterThan (xlv_TEXCOORD0, vec4(0.5, 0.5, 0.5, 0.5)); - float tmpvar_23; + mediump float tmpvar_23; if (tmpvar_22.x) { tmpvar_23 = 1.0; } else { tmpvar_23 = 2.0; }; - float tmpvar_24; + mediump float tmpvar_24; if (tmpvar_22.y) { tmpvar_24 = 1.0; } else { tmpvar_24 = 2.0; }; - float tmpvar_25; + mediump float tmpvar_25; if (tmpvar_22.z) { tmpvar_25 = 1.0; } else { tmpvar_25 = 2.0; }; - float tmpvar_26; + mediump float tmpvar_26; if (tmpvar_22.w) { tmpvar_26 = 1.0; } else { tmpvar_26 = 2.0; }; - vec4 tmpvar_27; + mediump vec4 tmpvar_27; tmpvar_27.x = tmpvar_23; tmpvar_27.y = tmpvar_24; tmpvar_27.z = tmpvar_25; @@ -134,31 +134,31 @@ void main () tmpvar_28 = (tmpvar_21 + tmpvar_27); bvec4 tmpvar_29; tmpvar_29 = bvec4(fract(xlv_TEXCOORD0)); - float tmpvar_30; + mediump float tmpvar_30; if (tmpvar_29.x) { tmpvar_30 = 1.0; } else { tmpvar_30 = 2.0; }; - float tmpvar_31; + mediump float tmpvar_31; if (tmpvar_29.y) { tmpvar_31 = 1.0; } else { tmpvar_31 = 2.0; }; - float tmpvar_32; + mediump float tmpvar_32; if (tmpvar_29.z) { tmpvar_32 = 1.0; } else { tmpvar_32 = 2.0; }; - float tmpvar_33; + mediump float tmpvar_33; if (tmpvar_29.w) { tmpvar_33 = 1.0; } else { tmpvar_33 = 2.0; }; - vec4 tmpvar_34; + mediump vec4 tmpvar_34; tmpvar_34.x = tmpvar_30; tmpvar_34.y = tmpvar_31; tmpvar_34.z = tmpvar_32; diff --git a/3rdparty/glsl-optimizer/tests/fragment/tex2dgrad-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/tex2dgrad-irES.txt index 3e95db988..e01199415 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/tex2dgrad-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/tex2dgrad-irES.txt @@ -2,18 +2,18 @@ #extension GL_OES_standard_derivatives : enable uniform sampler2D tex; uniform samplerCube cub; -varying vec3 uv; +varying mediump vec3 uv; void main () { - vec2 tmpvar_1; + mediump vec2 tmpvar_1; tmpvar_1 = dFdx (uv.xy); - vec2 tmpvar_2; + mediump vec2 tmpvar_2; tmpvar_2 = dFdy (uv.xy); lowp vec4 tmpvar_3; tmpvar_3 = texture2DGradEXT (tex, uv.xy, tmpvar_1, tmpvar_2); - vec3 tmpvar_4; + mediump vec3 tmpvar_4; tmpvar_4 = dFdx (uv); - vec3 tmpvar_5; + mediump vec3 tmpvar_5; tmpvar_5 = dFdy (uv); lowp vec4 tmpvar_6; tmpvar_6 = textureCubeGradEXT (cub, uv, tmpvar_4, tmpvar_5); diff --git a/3rdparty/glsl-optimizer/tests/fragment/tex2dgrad-outES.txt b/3rdparty/glsl-optimizer/tests/fragment/tex2dgrad-outES.txt index 9cc294318..70b9179a9 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/tex2dgrad-outES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/tex2dgrad-outES.txt @@ -2,7 +2,7 @@ #extension GL_OES_standard_derivatives : enable uniform sampler2D tex; uniform samplerCube cub; -varying vec3 uv; +varying mediump vec3 uv; void main () { lowp vec4 tmpvar_1; diff --git a/3rdparty/glsl-optimizer/tests/fragment/tex2dlod-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/tex2dlod-irES.txt index f69b0ce26..7de3bab61 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/tex2dlod-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/tex2dlod-irES.txt @@ -1,9 +1,9 @@ #extension GL_EXT_shader_texture_lod : enable uniform sampler2D tex; varying highp vec4 xlv_TEXCOORD0; -vec4 xll_tex2Dlod ( +mediump vec4 xll_tex2Dlod ( in sampler2D s_1, - in vec4 coord_2 + in mediump vec4 coord_2 ) { lowp vec4 tmpvar_3; @@ -18,7 +18,7 @@ mediump vec4 xlat_main ( highp vec4 tmpvar_5; tmpvar_5.zw = vec2(0.0, 0.0); tmpvar_5.xy = uv_4.xy.xy; - vec4 tmpvar_6; + mediump vec4 tmpvar_6; tmpvar_6 = xll_tex2Dlod (tex, tmpvar_5); return tmpvar_6; } diff --git a/3rdparty/glsl-optimizer/tests/fragment/tex2dshadow-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/tex2dshadow-irES.txt index 71f49f438..ef5740978 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/tex2dshadow-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/tex2dshadow-irES.txt @@ -1,9 +1,9 @@ #extension GL_EXT_shadow_samplers : enable uniform lowp sampler2DShadow shadowmap; varying highp vec4 xlv_TEXCOORD0; -float xll_shadow2D ( +mediump float xll_shadow2D ( in lowp sampler2DShadow s_1, - in vec3 coord_2 + in mediump vec3 coord_2 ) { lowp float tmpvar_3; @@ -11,9 +11,9 @@ float xll_shadow2D ( return tmpvar_3; } -float xll_shadow2Dproj ( +mediump float xll_shadow2Dproj ( in lowp sampler2DShadow s_4, - in vec4 coord_5 + in mediump vec4 coord_5 ) { lowp float tmpvar_6; @@ -27,14 +27,14 @@ lowp vec4 xlat_main ( { lowp float s2_8; lowp float s1_9; - float tmpvar_10; + mediump float tmpvar_10; tmpvar_10 = xll_shadow2D (shadowmap, uv_7.xyz); - float tmpvar_11; + mediump float tmpvar_11; tmpvar_11 = tmpvar_10; s1_9 = tmpvar_11; - float tmpvar_12; + mediump float tmpvar_12; tmpvar_12 = xll_shadow2Dproj (shadowmap, uv_7); - float tmpvar_13; + mediump float tmpvar_13; tmpvar_13 = tmpvar_12; s2_8 = tmpvar_13; lowp vec4 tmpvar_14; diff --git a/3rdparty/glsl-optimizer/tests/fragment/varyings-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/varyings-irES.txt index 79742b82f..d7beafb22 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/varyings-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/varyings-irES.txt @@ -6,7 +6,7 @@ mediump vec4 xlat_main ( ) { mediump vec4 c_3; - vec4 tmpvar_4; + mediump vec4 tmpvar_4; tmpvar_4 = vec4(0.0, 0.0, 0.0, 0.0); c_3 = tmpvar_4; return c_3; diff --git a/3rdparty/glsl-optimizer/tests/fragment/z-collectshadows-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/z-collectshadows-irES.txt index 997281abe..aca530e39 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/z-collectshadows-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/z-collectshadows-irES.txt @@ -103,10 +103,10 @@ vec2 EncodeFloatRG ( highp vec2 enc_33; highp float kEncodeBit_34; highp vec2 kEncodeMul_35; - vec2 tmpvar_36; + mediump vec2 tmpvar_36; tmpvar_36 = vec2(1.0, 255.0); kEncodeMul_35 = tmpvar_36; - float tmpvar_37; + mediump float tmpvar_37; tmpvar_37 = 0.00392157; kEncodeBit_34 = tmpvar_37; highp vec2 tmpvar_38; @@ -155,7 +155,7 @@ mediump vec4 xlat_main ( mediump float tmpvar_55; tmpvar_55 = shadow_44; res_43.x = tmpvar_55; - float tmpvar_56; + mediump float tmpvar_56; tmpvar_56 = 1.0; res_43.y = vec2(tmpvar_56).y; highp vec2 tmpvar_57; @@ -170,7 +170,7 @@ void main () { v2f xlt_i_59; mediump vec4 xl_retval_60; - vec4 tmpvar_61; + mediump vec4 tmpvar_61; tmpvar_61 = vec4(0.0, 0.0, 0.0, 0.0); xlt_i_59.pos = tmpvar_61; highp vec2 tmpvar_62; diff --git a/3rdparty/glsl-optimizer/tests/fragment/z-fxaa3-11-consolepc-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/z-fxaa3-11-consolepc-irES.txt index 8a45c379e..1b5fe8e4f 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/z-fxaa3-11-consolepc-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/z-fxaa3-11-consolepc-irES.txt @@ -8,9 +8,9 @@ uniform sampler2D _MainTex; uniform highp vec4 _MainTex_TexelSize; varying highp vec2 xlv_TEXCOORD0; varying highp vec4 xlv_TEXCOORD1; -vec4 xll_tex2Dlod ( +mediump vec4 xll_tex2Dlod ( in sampler2D s_1, - in vec4 coord_2 + in mediump vec4 coord_2 ) { lowp vec4 tmpvar_3; @@ -77,7 +77,7 @@ lowp vec4 FxaaPixelShader ( highp vec4 tmpvar_51; tmpvar_51.zw = vec2(0.0, 0.0); tmpvar_51.xy = fxaaConsolePosPos_6.xy.xy; - vec4 tmpvar_52; + mediump vec4 tmpvar_52; tmpvar_52 = xll_tex2Dlod (tex_7, tmpvar_51); highp float tmpvar_53; tmpvar_53 = FxaaLuma (tmpvar_52); @@ -87,7 +87,7 @@ lowp vec4 FxaaPixelShader ( highp vec4 tmpvar_55; tmpvar_55.zw = vec2(0.0, 0.0); tmpvar_55.xy = fxaaConsolePosPos_6.xw.xy; - vec4 tmpvar_56; + mediump vec4 tmpvar_56; tmpvar_56 = xll_tex2Dlod (tex_7, tmpvar_55); highp float tmpvar_57; tmpvar_57 = FxaaLuma (tmpvar_56); @@ -97,7 +97,7 @@ lowp vec4 FxaaPixelShader ( highp vec4 tmpvar_59; tmpvar_59.zw = vec2(0.0, 0.0); tmpvar_59.xy = fxaaConsolePosPos_6.zy.xy; - vec4 tmpvar_60; + mediump vec4 tmpvar_60; tmpvar_60 = xll_tex2Dlod (tex_7, tmpvar_59); highp float tmpvar_61; tmpvar_61 = FxaaLuma (tmpvar_60); @@ -107,7 +107,7 @@ lowp vec4 FxaaPixelShader ( highp vec4 tmpvar_63; tmpvar_63.zw = vec2(0.0, 0.0); tmpvar_63.xy = fxaaConsolePosPos_6.zw.xy; - vec4 tmpvar_64; + mediump vec4 tmpvar_64; tmpvar_64 = xll_tex2Dlod (tex_7, tmpvar_63); highp float tmpvar_65; tmpvar_65 = FxaaLuma (tmpvar_64); @@ -117,9 +117,9 @@ lowp vec4 FxaaPixelShader ( highp vec4 tmpvar_67; tmpvar_67.zw = vec2(0.0, 0.0); tmpvar_67.xy = pos_5.xy.xy; - vec4 tmpvar_68; + mediump vec4 tmpvar_68; tmpvar_68 = xll_tex2Dlod (tex_7, tmpvar_67); - vec4 tmpvar_69; + mediump vec4 tmpvar_69; tmpvar_69 = tmpvar_68; rgbyM_46 = tmpvar_69; lowp float tmpvar_70; @@ -202,17 +202,17 @@ lowp vec4 FxaaPixelShader ( highp vec4 tmpvar_98; tmpvar_98.zw = vec2(0.0, 0.0); tmpvar_98.xy = (pos_5.xy - (dir1_30 * fxaaConsoleRcpFrameOpt_11.zw)).xy; - vec4 tmpvar_99; + mediump vec4 tmpvar_99; tmpvar_99 = xll_tex2Dlod (tex_7, tmpvar_98); - vec4 tmpvar_100; + mediump vec4 tmpvar_100; tmpvar_100 = tmpvar_99; rgbyN1_29 = tmpvar_100; highp vec4 tmpvar_101; tmpvar_101.zw = vec2(0.0, 0.0); tmpvar_101.xy = (pos_5.xy + (dir1_30 * fxaaConsoleRcpFrameOpt_11.zw)).xy; - vec4 tmpvar_102; + mediump vec4 tmpvar_102; tmpvar_102 = xll_tex2Dlod (tex_7, tmpvar_101); - vec4 tmpvar_103; + mediump vec4 tmpvar_103; tmpvar_103 = tmpvar_102; rgbyP1_28 = tmpvar_103; highp float tmpvar_104; @@ -232,17 +232,17 @@ lowp vec4 FxaaPixelShader ( highp vec4 tmpvar_110; tmpvar_110.zw = vec2(0.0, 0.0); tmpvar_110.xy = (pos_5.xy - (dir2_26 * fxaaConsoleRcpFrameOpt2_12.zw)).xy; - vec4 tmpvar_111; + mediump vec4 tmpvar_111; tmpvar_111 = xll_tex2Dlod (tex_7, tmpvar_110); - vec4 tmpvar_112; + mediump vec4 tmpvar_112; tmpvar_112 = tmpvar_111; rgbyN2_25 = tmpvar_112; highp vec4 tmpvar_113; tmpvar_113.zw = vec2(0.0, 0.0); tmpvar_113.xy = (pos_5.xy + (dir2_26 * fxaaConsoleRcpFrameOpt2_12.zw)).xy; - vec4 tmpvar_114; + mediump vec4 tmpvar_114; tmpvar_114 = xll_tex2Dlod (tex_7, tmpvar_113); - vec4 tmpvar_115; + mediump vec4 tmpvar_115; tmpvar_115 = tmpvar_114; rgbyP2_24 = tmpvar_115; lowp vec4 tmpvar_116; @@ -267,7 +267,7 @@ lowp vec4 xlat_main ( ) { highp float fxaaN_121; - float tmpvar_122; + mediump float tmpvar_122; tmpvar_122 = 0.5; fxaaN_121 = tmpvar_122; highp vec4 tmpvar_123; @@ -284,7 +284,7 @@ void main () { v2f xlt_i_125; lowp vec4 xl_retval_126; - vec4 tmpvar_127; + mediump vec4 tmpvar_127; tmpvar_127 = vec4(0.0, 0.0, 0.0, 0.0); xlt_i_125.pos = tmpvar_127; highp vec2 tmpvar_128; diff --git a/3rdparty/glsl-optimizer/tests/fragment/z-fxaa3-11-pc39-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/z-fxaa3-11-pc39-irES.txt index 6376cb38e..748ce9c29 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/z-fxaa3-11-pc39-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/z-fxaa3-11-pc39-irES.txt @@ -9,9 +9,9 @@ uniform highp vec4 _MainTex_TexelSize; varying highp vec4 xlv_SV_POSITION; varying highp vec2 xlv_TEXCOORD0; varying highp vec4 xlv_TEXCOORD1; -vec4 xll_tex2Dlod ( +mediump vec4 xll_tex2Dlod ( in sampler2D s_1, - in vec4 coord_2 + in mediump vec4 coord_2 ) { lowp vec4 tmpvar_3; @@ -19,106 +19,106 @@ vec4 xll_tex2Dlod ( return tmpvar_3; } -float xll_saturate ( - in float x_4 +mediump float xll_saturate ( + in mediump float x_4 ) { - float tmpvar_5; + mediump float tmpvar_5; tmpvar_5 = clamp (x_4, 0.0, 1.0); return tmpvar_5; } -vec2 xll_saturate ( - in vec2 x_6 +mediump vec2 xll_saturate ( + in mediump vec2 x_6 ) { - vec2 tmpvar_7; + mediump vec2 tmpvar_7; tmpvar_7 = clamp (x_6, 0.0, 1.0); return tmpvar_7; } -vec3 xll_saturate ( - in vec3 x_8 +mediump vec3 xll_saturate ( + in mediump vec3 x_8 ) { - vec3 tmpvar_9; + mediump vec3 tmpvar_9; tmpvar_9 = clamp (x_8, 0.0, 1.0); return tmpvar_9; } -vec4 xll_saturate ( - in vec4 x_10 +mediump vec4 xll_saturate ( + in mediump vec4 x_10 ) { - vec4 tmpvar_11; + mediump vec4 tmpvar_11; tmpvar_11 = clamp (x_10, 0.0, 1.0); return tmpvar_11; } -mat2 xll_saturate ( - in mat2 m_12 +mediump mat2 xll_saturate ( + in mediump mat2 m_12 ) { - vec2 tmpvar_13; + mediump vec2 tmpvar_13; tmpvar_13 = clamp (m_12[0], 0.0, 1.0); - vec2 tmpvar_14; + mediump vec2 tmpvar_14; tmpvar_14 = clamp (m_12[1], 0.0, 1.0); - mat2 tmpvar_15; - vec2 tmpvar_16; + mediump mat2 tmpvar_15; + mediump vec2 tmpvar_16; tmpvar_16 = tmpvar_13; tmpvar_15[0] = tmpvar_16; - vec2 tmpvar_17; + mediump vec2 tmpvar_17; tmpvar_17 = tmpvar_14; tmpvar_15[1] = tmpvar_17; return tmpvar_15; } -mat3 xll_saturate ( - in mat3 m_18 +mediump mat3 xll_saturate ( + in mediump mat3 m_18 ) { - vec3 tmpvar_19; + mediump vec3 tmpvar_19; tmpvar_19 = clamp (m_18[0], 0.0, 1.0); - vec3 tmpvar_20; + mediump vec3 tmpvar_20; tmpvar_20 = clamp (m_18[1], 0.0, 1.0); - vec3 tmpvar_21; + mediump vec3 tmpvar_21; tmpvar_21 = clamp (m_18[2], 0.0, 1.0); - mat3 tmpvar_22; - vec3 tmpvar_23; + mediump mat3 tmpvar_22; + mediump vec3 tmpvar_23; tmpvar_23 = tmpvar_19; tmpvar_22[0] = tmpvar_23; - vec3 tmpvar_24; + mediump vec3 tmpvar_24; tmpvar_24 = tmpvar_20; tmpvar_22[1] = tmpvar_24; - vec3 tmpvar_25; + mediump vec3 tmpvar_25; tmpvar_25 = tmpvar_21; tmpvar_22[2] = tmpvar_25; return tmpvar_22; } -mat4 xll_saturate ( - in mat4 m_26 +mediump mat4 xll_saturate ( + in mediump mat4 m_26 ) { - vec4 tmpvar_27; + mediump vec4 tmpvar_27; tmpvar_27 = clamp (m_26[0], 0.0, 1.0); - vec4 tmpvar_28; + mediump vec4 tmpvar_28; tmpvar_28 = clamp (m_26[1], 0.0, 1.0); - vec4 tmpvar_29; + mediump vec4 tmpvar_29; tmpvar_29 = clamp (m_26[2], 0.0, 1.0); - vec4 tmpvar_30; + mediump vec4 tmpvar_30; tmpvar_30 = clamp (m_26[3], 0.0, 1.0); - mat4 tmpvar_31; - vec4 tmpvar_32; + mediump mat4 tmpvar_31; + mediump vec4 tmpvar_32; tmpvar_32 = tmpvar_27; tmpvar_31[0] = tmpvar_32; - vec4 tmpvar_33; + mediump vec4 tmpvar_33; tmpvar_33 = tmpvar_28; tmpvar_31[1] = tmpvar_33; - vec4 tmpvar_34; + mediump vec4 tmpvar_34; tmpvar_34 = tmpvar_29; tmpvar_31[2] = tmpvar_34; - vec4 tmpvar_35; + mediump vec4 tmpvar_35; tmpvar_35 = tmpvar_30; tmpvar_31[3] = tmpvar_35; return tmpvar_31; @@ -240,15 +240,15 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_136; tmpvar_136.zw = vec2(0.0, 0.0); tmpvar_136.xy = posM_133.xy; - vec4 tmpvar_137; + mediump vec4 tmpvar_137; tmpvar_137 = xll_tex2Dlod (tex_39, tmpvar_136); - vec4 tmpvar_138; + mediump vec4 tmpvar_138; tmpvar_138 = tmpvar_137; rgbyM_132 = tmpvar_138; highp vec4 tmpvar_139; tmpvar_139.zw = vec2(0.0, 0.0); tmpvar_139.xy = (posM_133 + (vec2(0.0, 1.0) * fxaaQualityRcpFrame_42.xy)).xy; - vec4 tmpvar_140; + mediump vec4 tmpvar_140; tmpvar_140 = xll_tex2Dlod (tex_39, tmpvar_139); highp float tmpvar_141; tmpvar_141 = FxaaLuma (tmpvar_140); @@ -258,7 +258,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_143; tmpvar_143.zw = vec2(0.0, 0.0); tmpvar_143.xy = (posM_133 + (vec2(1.0, 0.0) * fxaaQualityRcpFrame_42.xy)).xy; - vec4 tmpvar_144; + mediump vec4 tmpvar_144; tmpvar_144 = xll_tex2Dlod (tex_39, tmpvar_143); highp float tmpvar_145; tmpvar_145 = FxaaLuma (tmpvar_144); @@ -268,7 +268,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_147; tmpvar_147.zw = vec2(0.0, 0.0); tmpvar_147.xy = (posM_133 + (vec2(0.0, -1.0) * fxaaQualityRcpFrame_42.xy)).xy; - vec4 tmpvar_148; + mediump vec4 tmpvar_148; tmpvar_148 = xll_tex2Dlod (tex_39, tmpvar_147); highp float tmpvar_149; tmpvar_149 = FxaaLuma (tmpvar_148); @@ -278,7 +278,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_151; tmpvar_151.zw = vec2(0.0, 0.0); tmpvar_151.xy = (posM_133 + (vec2(-1.0, 0.0) * fxaaQualityRcpFrame_42.xy)).xy; - vec4 tmpvar_152; + mediump vec4 tmpvar_152; tmpvar_152 = xll_tex2Dlod (tex_39, tmpvar_151); highp float tmpvar_153; tmpvar_153 = FxaaLuma (tmpvar_152); @@ -345,7 +345,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_176; tmpvar_176.zw = vec2(0.0, 0.0); tmpvar_176.xy = (posM_133 + (vec2(-1.0, -1.0) * fxaaQualityRcpFrame_42.xy)).xy; - vec4 tmpvar_177; + mediump vec4 tmpvar_177; tmpvar_177 = xll_tex2Dlod (tex_39, tmpvar_176); highp float tmpvar_178; tmpvar_178 = FxaaLuma (tmpvar_177); @@ -355,7 +355,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_180; tmpvar_180.zw = vec2(0.0, 0.0); tmpvar_180.xy = (posM_133 + (vec2(1.0, 1.0) * fxaaQualityRcpFrame_42.xy)).xy; - vec4 tmpvar_181; + mediump vec4 tmpvar_181; tmpvar_181 = xll_tex2Dlod (tex_39, tmpvar_180); highp float tmpvar_182; tmpvar_182 = FxaaLuma (tmpvar_181); @@ -365,7 +365,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_184; tmpvar_184.zw = vec2(0.0, 0.0); tmpvar_184.xy = (posM_133 + (vec2(1.0, -1.0) * fxaaQualityRcpFrame_42.xy)).xy; - vec4 tmpvar_185; + mediump vec4 tmpvar_185; tmpvar_185 = xll_tex2Dlod (tex_39, tmpvar_184); highp float tmpvar_186; tmpvar_186 = FxaaLuma (tmpvar_185); @@ -375,7 +375,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_188; tmpvar_188.zw = vec2(0.0, 0.0); tmpvar_188.xy = (posM_133 + (vec2(-1.0, 1.0) * fxaaQualityRcpFrame_42.xy)).xy; - vec4 tmpvar_189; + mediump vec4 tmpvar_189; tmpvar_189 = xll_tex2Dlod (tex_39, tmpvar_188); highp float tmpvar_190; tmpvar_190 = FxaaLuma (tmpvar_189); @@ -513,9 +513,9 @@ vec4 FxaaPixelShader ( }; highp float tmpvar_236; tmpvar_236 = abs (subpixB_89); - float tmpvar_237; + mediump float tmpvar_237; tmpvar_237 = xll_saturate ((tmpvar_236 * subpixRcpRange_109)); - float tmpvar_238; + mediump float tmpvar_238; tmpvar_238 = tmpvar_237; subpixC_82 = tmpvar_238; highp float tmpvar_239; @@ -570,7 +570,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_252; tmpvar_252.zw = vec2(0.0, 0.0); tmpvar_252.xy = posN_79.xy; - vec4 tmpvar_253; + mediump vec4 tmpvar_253; tmpvar_253 = xll_tex2Dlod (tex_39, tmpvar_252); highp float tmpvar_254; tmpvar_254 = FxaaLuma (tmpvar_253); @@ -583,7 +583,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_257; tmpvar_257.zw = vec2(0.0, 0.0); tmpvar_257.xy = posP_78.xy; - vec4 tmpvar_258; + mediump vec4 tmpvar_258; tmpvar_258 = xll_tex2Dlod (tex_39, tmpvar_257); highp float tmpvar_259; tmpvar_259 = FxaaLuma (tmpvar_258); @@ -651,7 +651,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_277; tmpvar_277.zw = vec2(0.0, 0.0); tmpvar_277.xy = posN_79.xy.xy; - vec4 tmpvar_278; + mediump vec4 tmpvar_278; tmpvar_278 = xll_tex2Dlod (tex_39, tmpvar_277); highp float tmpvar_279; tmpvar_279 = FxaaLuma (tmpvar_278); @@ -663,7 +663,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_281; tmpvar_281.zw = vec2(0.0, 0.0); tmpvar_281.xy = posP_78.xy.xy; - vec4 tmpvar_282; + mediump vec4 tmpvar_282; tmpvar_282 = xll_tex2Dlod (tex_39, tmpvar_281); highp float tmpvar_283; tmpvar_283 = FxaaLuma (tmpvar_282); @@ -719,7 +719,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_296; tmpvar_296.zw = vec2(0.0, 0.0); tmpvar_296.xy = posN_79.xy.xy; - vec4 tmpvar_297; + mediump vec4 tmpvar_297; tmpvar_297 = xll_tex2Dlod (tex_39, tmpvar_296); highp float tmpvar_298; tmpvar_298 = FxaaLuma (tmpvar_297); @@ -731,7 +731,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_300; tmpvar_300.zw = vec2(0.0, 0.0); tmpvar_300.xy = posP_78.xy.xy; - vec4 tmpvar_301; + mediump vec4 tmpvar_301; tmpvar_301 = xll_tex2Dlod (tex_39, tmpvar_300); highp float tmpvar_302; tmpvar_302 = FxaaLuma (tmpvar_301); @@ -787,7 +787,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_315; tmpvar_315.zw = vec2(0.0, 0.0); tmpvar_315.xy = posN_79.xy.xy; - vec4 tmpvar_316; + mediump vec4 tmpvar_316; tmpvar_316 = xll_tex2Dlod (tex_39, tmpvar_315); highp float tmpvar_317; tmpvar_317 = FxaaLuma (tmpvar_316); @@ -799,7 +799,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_319; tmpvar_319.zw = vec2(0.0, 0.0); tmpvar_319.xy = posP_78.xy.xy; - vec4 tmpvar_320; + mediump vec4 tmpvar_320; tmpvar_320 = xll_tex2Dlod (tex_39, tmpvar_319); highp float tmpvar_321; tmpvar_321 = FxaaLuma (tmpvar_320); @@ -855,7 +855,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_334; tmpvar_334.zw = vec2(0.0, 0.0); tmpvar_334.xy = posN_79.xy.xy; - vec4 tmpvar_335; + mediump vec4 tmpvar_335; tmpvar_335 = xll_tex2Dlod (tex_39, tmpvar_334); highp float tmpvar_336; tmpvar_336 = FxaaLuma (tmpvar_335); @@ -867,7 +867,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_338; tmpvar_338.zw = vec2(0.0, 0.0); tmpvar_338.xy = posP_78.xy.xy; - vec4 tmpvar_339; + mediump vec4 tmpvar_339; tmpvar_339 = xll_tex2Dlod (tex_39, tmpvar_338); highp float tmpvar_340; tmpvar_340 = FxaaLuma (tmpvar_339); @@ -923,7 +923,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_353; tmpvar_353.zw = vec2(0.0, 0.0); tmpvar_353.xy = posN_79.xy.xy; - vec4 tmpvar_354; + mediump vec4 tmpvar_354; tmpvar_354 = xll_tex2Dlod (tex_39, tmpvar_353); highp float tmpvar_355; tmpvar_355 = FxaaLuma (tmpvar_354); @@ -935,7 +935,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_357; tmpvar_357.zw = vec2(0.0, 0.0); tmpvar_357.xy = posP_78.xy.xy; - vec4 tmpvar_358; + mediump vec4 tmpvar_358; tmpvar_358 = xll_tex2Dlod (tex_39, tmpvar_357); highp float tmpvar_359; tmpvar_359 = FxaaLuma (tmpvar_358); @@ -991,7 +991,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_372; tmpvar_372.zw = vec2(0.0, 0.0); tmpvar_372.xy = posN_79.xy.xy; - vec4 tmpvar_373; + mediump vec4 tmpvar_373; tmpvar_373 = xll_tex2Dlod (tex_39, tmpvar_372); highp float tmpvar_374; tmpvar_374 = FxaaLuma (tmpvar_373); @@ -1003,7 +1003,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_376; tmpvar_376.zw = vec2(0.0, 0.0); tmpvar_376.xy = posP_78.xy.xy; - vec4 tmpvar_377; + mediump vec4 tmpvar_377; tmpvar_377 = xll_tex2Dlod (tex_39, tmpvar_376); highp float tmpvar_378; tmpvar_378 = FxaaLuma (tmpvar_377); @@ -1059,7 +1059,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_391; tmpvar_391.zw = vec2(0.0, 0.0); tmpvar_391.xy = posN_79.xy.xy; - vec4 tmpvar_392; + mediump vec4 tmpvar_392; tmpvar_392 = xll_tex2Dlod (tex_39, tmpvar_391); highp float tmpvar_393; tmpvar_393 = FxaaLuma (tmpvar_392); @@ -1071,7 +1071,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_395; tmpvar_395.zw = vec2(0.0, 0.0); tmpvar_395.xy = posP_78.xy.xy; - vec4 tmpvar_396; + mediump vec4 tmpvar_396; tmpvar_396 = xll_tex2Dlod (tex_39, tmpvar_395); highp float tmpvar_397; tmpvar_397 = FxaaLuma (tmpvar_396); @@ -1127,7 +1127,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_410; tmpvar_410.zw = vec2(0.0, 0.0); tmpvar_410.xy = posN_79.xy.xy; - vec4 tmpvar_411; + mediump vec4 tmpvar_411; tmpvar_411 = xll_tex2Dlod (tex_39, tmpvar_410); highp float tmpvar_412; tmpvar_412 = FxaaLuma (tmpvar_411); @@ -1139,7 +1139,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_414; tmpvar_414.zw = vec2(0.0, 0.0); tmpvar_414.xy = posP_78.xy.xy; - vec4 tmpvar_415; + mediump vec4 tmpvar_415; tmpvar_415 = xll_tex2Dlod (tex_39, tmpvar_414); highp float tmpvar_416; tmpvar_416 = FxaaLuma (tmpvar_415); @@ -1195,7 +1195,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_429; tmpvar_429.zw = vec2(0.0, 0.0); tmpvar_429.xy = posN_79.xy.xy; - vec4 tmpvar_430; + mediump vec4 tmpvar_430; tmpvar_430 = xll_tex2Dlod (tex_39, tmpvar_429); highp float tmpvar_431; tmpvar_431 = FxaaLuma (tmpvar_430); @@ -1207,7 +1207,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_433; tmpvar_433.zw = vec2(0.0, 0.0); tmpvar_433.xy = posP_78.xy.xy; - vec4 tmpvar_434; + mediump vec4 tmpvar_434; tmpvar_434 = xll_tex2Dlod (tex_39, tmpvar_433); highp float tmpvar_435; tmpvar_435 = FxaaLuma (tmpvar_434); @@ -1263,7 +1263,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_448; tmpvar_448.zw = vec2(0.0, 0.0); tmpvar_448.xy = posN_79.xy.xy; - vec4 tmpvar_449; + mediump vec4 tmpvar_449; tmpvar_449 = xll_tex2Dlod (tex_39, tmpvar_448); highp float tmpvar_450; tmpvar_450 = FxaaLuma (tmpvar_449); @@ -1275,7 +1275,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_452; tmpvar_452.zw = vec2(0.0, 0.0); tmpvar_452.xy = posP_78.xy.xy; - vec4 tmpvar_453; + mediump vec4 tmpvar_453; tmpvar_453 = xll_tex2Dlod (tex_39, tmpvar_452); highp float tmpvar_454; tmpvar_454 = FxaaLuma (tmpvar_453); @@ -1417,7 +1417,7 @@ vec4 FxaaPixelShader ( highp vec4 tmpvar_489; tmpvar_489.zw = vec2(0.0, 0.0); tmpvar_489.xy = posM_133.xy; - vec4 tmpvar_490; + mediump vec4 tmpvar_490; tmpvar_490 = xll_tex2Dlod (tex_39, tmpvar_489); highp vec4 tmpvar_491; tmpvar_491.xyz = tmpvar_490.xyz.xyz; @@ -1430,7 +1430,7 @@ vec4 xlat_main ( ) { highp float fxaaN_493; - float tmpvar_494; + mediump float tmpvar_494; tmpvar_494 = 0.5; fxaaN_493 = tmpvar_494; highp vec4 tmpvar_495; diff --git a/3rdparty/glsl-optimizer/tests/fragment/z-particle-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/z-particle-irES.txt index 8d5c675db..bea978475 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/z-particle-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/z-particle-irES.txt @@ -19,7 +19,7 @@ void main () { v2f xlt_i_3; lowp vec4 xl_retval_4; - vec4 tmpvar_5; + mediump vec4 tmpvar_5; tmpvar_5 = vec4(0.0, 0.0, 0.0, 0.0); xlt_i_3.vertex = tmpvar_5; lowp vec4 tmpvar_6; diff --git a/3rdparty/glsl-optimizer/tests/fragment/z-prepasslight-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/z-prepasslight-irES.txt index f8d3b32ea..84a053d3d 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/z-prepasslight-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/z-prepasslight-irES.txt @@ -20,197 +20,197 @@ uniform highp vec4 _ZBufferParams; uniform highp vec4 unity_LightmapFade; varying highp vec4 xlv_TEXCOORD0; varying highp vec3 xlv_TEXCOORD1; -float xll_saturate ( - in float x_1 +mediump float xll_saturate ( + in mediump float x_1 ) { - float tmpvar_2; + mediump float tmpvar_2; tmpvar_2 = clamp (x_1, 0.0, 1.0); return tmpvar_2; } -vec2 xll_saturate ( - in vec2 x_3 +mediump vec2 xll_saturate ( + in mediump vec2 x_3 ) { - vec2 tmpvar_4; + mediump vec2 tmpvar_4; tmpvar_4 = clamp (x_3, 0.0, 1.0); return tmpvar_4; } -vec3 xll_saturate ( - in vec3 x_5 +mediump vec3 xll_saturate ( + in mediump vec3 x_5 ) { - vec3 tmpvar_6; + mediump vec3 tmpvar_6; tmpvar_6 = clamp (x_5, 0.0, 1.0); return tmpvar_6; } -vec4 xll_saturate ( - in vec4 x_7 +mediump vec4 xll_saturate ( + in mediump vec4 x_7 ) { - vec4 tmpvar_8; + mediump vec4 tmpvar_8; tmpvar_8 = clamp (x_7, 0.0, 1.0); return tmpvar_8; } -mat2 xll_saturate ( - in mat2 m_9 +mediump mat2 xll_saturate ( + in mediump mat2 m_9 ) { - vec2 tmpvar_10; + mediump vec2 tmpvar_10; tmpvar_10 = clamp (m_9[0], 0.0, 1.0); - vec2 tmpvar_11; + mediump vec2 tmpvar_11; tmpvar_11 = clamp (m_9[1], 0.0, 1.0); - mat2 tmpvar_12; - vec2 tmpvar_13; + mediump mat2 tmpvar_12; + mediump vec2 tmpvar_13; tmpvar_13 = tmpvar_10; tmpvar_12[0] = tmpvar_13; - vec2 tmpvar_14; + mediump vec2 tmpvar_14; tmpvar_14 = tmpvar_11; tmpvar_12[1] = tmpvar_14; return tmpvar_12; } -mat3 xll_saturate ( - in mat3 m_15 +mediump mat3 xll_saturate ( + in mediump mat3 m_15 ) { - vec3 tmpvar_16; + mediump vec3 tmpvar_16; tmpvar_16 = clamp (m_15[0], 0.0, 1.0); - vec3 tmpvar_17; + mediump vec3 tmpvar_17; tmpvar_17 = clamp (m_15[1], 0.0, 1.0); - vec3 tmpvar_18; + mediump vec3 tmpvar_18; tmpvar_18 = clamp (m_15[2], 0.0, 1.0); - mat3 tmpvar_19; - vec3 tmpvar_20; + mediump mat3 tmpvar_19; + mediump vec3 tmpvar_20; tmpvar_20 = tmpvar_16; tmpvar_19[0] = tmpvar_20; - vec3 tmpvar_21; + mediump vec3 tmpvar_21; tmpvar_21 = tmpvar_17; tmpvar_19[1] = tmpvar_21; - vec3 tmpvar_22; + mediump vec3 tmpvar_22; tmpvar_22 = tmpvar_18; tmpvar_19[2] = tmpvar_22; return tmpvar_19; } -mat4 xll_saturate ( - in mat4 m_23 +mediump mat4 xll_saturate ( + in mediump mat4 m_23 ) { - vec4 tmpvar_24; + mediump vec4 tmpvar_24; tmpvar_24 = clamp (m_23[0], 0.0, 1.0); - vec4 tmpvar_25; + mediump vec4 tmpvar_25; tmpvar_25 = clamp (m_23[1], 0.0, 1.0); - vec4 tmpvar_26; + mediump vec4 tmpvar_26; tmpvar_26 = clamp (m_23[2], 0.0, 1.0); - vec4 tmpvar_27; + mediump vec4 tmpvar_27; tmpvar_27 = clamp (m_23[3], 0.0, 1.0); - mat4 tmpvar_28; - vec4 tmpvar_29; + mediump mat4 tmpvar_28; + mediump vec4 tmpvar_29; tmpvar_29 = tmpvar_24; tmpvar_28[0] = tmpvar_29; - vec4 tmpvar_30; + mediump vec4 tmpvar_30; tmpvar_30 = tmpvar_25; tmpvar_28[1] = tmpvar_30; - vec4 tmpvar_31; + mediump vec4 tmpvar_31; tmpvar_31 = tmpvar_26; tmpvar_28[2] = tmpvar_31; - vec4 tmpvar_32; + mediump vec4 tmpvar_32; tmpvar_32 = tmpvar_27; tmpvar_28[3] = tmpvar_32; return tmpvar_28; } -vec2 xll_vecTSel ( +mediump vec2 xll_vecTSel ( in bvec2 a_33, - in vec2 b_34, - in vec2 c_35 + in mediump vec2 b_34, + in mediump vec2 c_35 ) { - float tmpvar_36; + mediump float tmpvar_36; if (a_33.x) { tmpvar_36 = b_34.x; } else { tmpvar_36 = c_35.x; }; - float tmpvar_37; + mediump float tmpvar_37; if (a_33.y) { tmpvar_37 = b_34.y; } else { tmpvar_37 = c_35.y; }; - vec2 tmpvar_38; + mediump vec2 tmpvar_38; tmpvar_38.x = tmpvar_36; tmpvar_38.y = tmpvar_37; return tmpvar_38; } -vec3 xll_vecTSel ( +mediump vec3 xll_vecTSel ( in bvec3 a_39, - in vec3 b_40, - in vec3 c_41 + in mediump vec3 b_40, + in mediump vec3 c_41 ) { - float tmpvar_42; + mediump float tmpvar_42; if (a_39.x) { tmpvar_42 = b_40.x; } else { tmpvar_42 = c_41.x; }; - float tmpvar_43; + mediump float tmpvar_43; if (a_39.y) { tmpvar_43 = b_40.y; } else { tmpvar_43 = c_41.y; }; - float tmpvar_44; + mediump float tmpvar_44; if (a_39.z) { tmpvar_44 = b_40.z; } else { tmpvar_44 = c_41.z; }; - vec3 tmpvar_45; + mediump vec3 tmpvar_45; tmpvar_45.x = tmpvar_42; tmpvar_45.y = tmpvar_43; tmpvar_45.z = tmpvar_44; return tmpvar_45; } -vec4 xll_vecTSel ( +mediump vec4 xll_vecTSel ( in bvec4 a_46, - in vec4 b_47, - in vec4 c_48 + in mediump vec4 b_47, + in mediump vec4 c_48 ) { - float tmpvar_49; + mediump float tmpvar_49; if (a_46.x) { tmpvar_49 = b_47.x; } else { tmpvar_49 = c_48.x; }; - float tmpvar_50; + mediump float tmpvar_50; if (a_46.y) { tmpvar_50 = b_47.y; } else { tmpvar_50 = c_48.y; }; - float tmpvar_51; + mediump float tmpvar_51; if (a_46.z) { tmpvar_51 = b_47.z; } else { tmpvar_51 = c_48.z; }; - float tmpvar_52; + mediump float tmpvar_52; if (a_46.w) { tmpvar_52 = b_47.w; } else { tmpvar_52 = c_48.w; }; - vec4 tmpvar_53; + mediump vec4 tmpvar_53; tmpvar_53.x = tmpvar_49; tmpvar_53.y = tmpvar_50; tmpvar_53.z = tmpvar_51; @@ -239,7 +239,7 @@ float DecodeFloatRGBA ( ) { highp vec4 kDecodeDot_58; - vec4 tmpvar_59; + mediump vec4 tmpvar_59; tmpvar_59 = vec4(1.0, 0.00392157, 1.53787e-05, 6.22737e-09); kDecodeDot_58 = tmpvar_59; highp float tmpvar_60; @@ -270,7 +270,7 @@ mediump float unitySampleShadow ( mediump vec4 shadows_68; highp vec4 shadowVals_69; highp float z_70; - float tmpvar_71; + mediump float tmpvar_71; tmpvar_71 = 0.0078125; z_70 = tmpvar_71; highp vec3 tmpvar_72; @@ -317,9 +317,9 @@ mediump float unitySampleShadow ( tmpvar_86 = lessThan (shadowVals_69, tmpvar_85); highp vec4 tmpvar_87; tmpvar_87 = _LightShadowData.xxxx.xyzw; - vec4 tmpvar_88; + mediump vec4 tmpvar_88; tmpvar_88 = xll_vecTSel (tmpvar_86, tmpvar_87, vec4(1.0, 1.0, 1.0, 1.0)); - vec4 tmpvar_89; + mediump vec4 tmpvar_89; tmpvar_89 = tmpvar_88; shadows_68 = tmpvar_89; mediump float tmpvar_90; @@ -338,9 +338,9 @@ mediump float ComputeShadow ( highp float tmpvar_96; tmpvar_96 = ((z_92 * _LightShadowData.z) + _LightShadowData.w); fade_95 = tmpvar_96; - float tmpvar_97; + mediump float tmpvar_97; tmpvar_97 = xll_saturate (fade_95); - float tmpvar_98; + mediump float tmpvar_98; tmpvar_98 = tmpvar_97; fade_95 = tmpvar_98; highp float tmpvar_99; @@ -472,7 +472,7 @@ mediump vec4 xlat_main ( mediump float tmpvar_156; tmpvar_156 = tmpvar_155; spec_106 = tmpvar_156; - float tmpvar_157; + mediump float tmpvar_157; tmpvar_157 = xll_saturate (atten_109); highp float tmpvar_158; tmpvar_158 = (spec_106 * tmpvar_157); @@ -488,7 +488,7 @@ mediump vec4 xlat_main ( highp float tmpvar_162; tmpvar_162 = ((vpos_114.z * unity_LightmapFade.z) + unity_LightmapFade.w); fade_104 = tmpvar_162; - float tmpvar_163; + mediump float tmpvar_163; tmpvar_163 = xll_saturate ((1.0 - fade_104)); mediump vec4 tmpvar_164; tmpvar_164 = (res_105 * tmpvar_163); @@ -502,7 +502,7 @@ void main () { v2f xlt_i_166; mediump vec4 xl_retval_167; - vec4 tmpvar_168; + mediump vec4 tmpvar_168; tmpvar_168 = vec4(0.0, 0.0, 0.0, 0.0); xlt_i_166.pos = tmpvar_168; highp vec4 tmpvar_169; diff --git a/3rdparty/glsl-optimizer/tests/fragment/z-treeleaf-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/z-treeleaf-irES.txt index 33213a69c..6f32169a5 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/z-treeleaf-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/z-treeleaf-irES.txt @@ -36,7 +36,7 @@ varying highp vec3 xlv_TEXCOORD1; varying highp vec3 xlv_TEXCOORD2; varying highp vec2 xlv_TEXCOORD3; void xll_clip ( - in float x_1 + in mediump float x_1 ) { if ((x_1 < 0.0)) { @@ -44,106 +44,106 @@ void xll_clip ( }; } -float xll_saturate ( - in float x_2 +mediump float xll_saturate ( + in mediump float x_2 ) { - float tmpvar_3; + mediump float tmpvar_3; tmpvar_3 = clamp (x_2, 0.0, 1.0); return tmpvar_3; } -vec2 xll_saturate ( - in vec2 x_4 +mediump vec2 xll_saturate ( + in mediump vec2 x_4 ) { - vec2 tmpvar_5; + mediump vec2 tmpvar_5; tmpvar_5 = clamp (x_4, 0.0, 1.0); return tmpvar_5; } -vec3 xll_saturate ( - in vec3 x_6 +mediump vec3 xll_saturate ( + in mediump vec3 x_6 ) { - vec3 tmpvar_7; + mediump vec3 tmpvar_7; tmpvar_7 = clamp (x_6, 0.0, 1.0); return tmpvar_7; } -vec4 xll_saturate ( - in vec4 x_8 +mediump vec4 xll_saturate ( + in mediump vec4 x_8 ) { - vec4 tmpvar_9; + mediump vec4 tmpvar_9; tmpvar_9 = clamp (x_8, 0.0, 1.0); return tmpvar_9; } -mat2 xll_saturate ( - in mat2 m_10 +mediump mat2 xll_saturate ( + in mediump mat2 m_10 ) { - vec2 tmpvar_11; + mediump vec2 tmpvar_11; tmpvar_11 = clamp (m_10[0], 0.0, 1.0); - vec2 tmpvar_12; + mediump vec2 tmpvar_12; tmpvar_12 = clamp (m_10[1], 0.0, 1.0); - mat2 tmpvar_13; - vec2 tmpvar_14; + mediump mat2 tmpvar_13; + mediump vec2 tmpvar_14; tmpvar_14 = tmpvar_11; tmpvar_13[0] = tmpvar_14; - vec2 tmpvar_15; + mediump vec2 tmpvar_15; tmpvar_15 = tmpvar_12; tmpvar_13[1] = tmpvar_15; return tmpvar_13; } -mat3 xll_saturate ( - in mat3 m_16 +mediump mat3 xll_saturate ( + in mediump mat3 m_16 ) { - vec3 tmpvar_17; + mediump vec3 tmpvar_17; tmpvar_17 = clamp (m_16[0], 0.0, 1.0); - vec3 tmpvar_18; + mediump vec3 tmpvar_18; tmpvar_18 = clamp (m_16[1], 0.0, 1.0); - vec3 tmpvar_19; + mediump vec3 tmpvar_19; tmpvar_19 = clamp (m_16[2], 0.0, 1.0); - mat3 tmpvar_20; - vec3 tmpvar_21; + mediump mat3 tmpvar_20; + mediump vec3 tmpvar_21; tmpvar_21 = tmpvar_17; tmpvar_20[0] = tmpvar_21; - vec3 tmpvar_22; + mediump vec3 tmpvar_22; tmpvar_22 = tmpvar_18; tmpvar_20[1] = tmpvar_22; - vec3 tmpvar_23; + mediump vec3 tmpvar_23; tmpvar_23 = tmpvar_19; tmpvar_20[2] = tmpvar_23; return tmpvar_20; } -mat4 xll_saturate ( - in mat4 m_24 +mediump mat4 xll_saturate ( + in mediump mat4 m_24 ) { - vec4 tmpvar_25; + mediump vec4 tmpvar_25; tmpvar_25 = clamp (m_24[0], 0.0, 1.0); - vec4 tmpvar_26; + mediump vec4 tmpvar_26; tmpvar_26 = clamp (m_24[1], 0.0, 1.0); - vec4 tmpvar_27; + mediump vec4 tmpvar_27; tmpvar_27 = clamp (m_24[2], 0.0, 1.0); - vec4 tmpvar_28; + mediump vec4 tmpvar_28; tmpvar_28 = clamp (m_24[3], 0.0, 1.0); - mat4 tmpvar_29; - vec4 tmpvar_30; + mediump mat4 tmpvar_29; + mediump vec4 tmpvar_30; tmpvar_30 = tmpvar_25; tmpvar_29[0] = tmpvar_30; - vec4 tmpvar_31; + mediump vec4 tmpvar_31; tmpvar_31 = tmpvar_26; tmpvar_29[1] = tmpvar_31; - vec4 tmpvar_32; + mediump vec4 tmpvar_32; tmpvar_32 = tmpvar_27; tmpvar_29[2] = tmpvar_32; - vec4 tmpvar_33; + mediump vec4 tmpvar_33; tmpvar_33 = tmpvar_28; tmpvar_29[3] = tmpvar_33; return tmpvar_29; @@ -253,12 +253,12 @@ mediump vec4 LightingTreeLeaf ( spec_66 = tmpvar_78; mediump float tmpvar_79; tmpvar_79 = dot (viewDir_61, -(lightDir_60)); - float tmpvar_80; + mediump float tmpvar_80; tmpvar_80 = xll_saturate (tmpvar_79); - float tmpvar_81; + mediump float tmpvar_81; tmpvar_81 = tmpvar_80; backContrib_65 = tmpvar_81; - float tmpvar_82; + mediump float tmpvar_82; tmpvar_82 = xll_saturate (-(nl_68)); mediump float tmpvar_83; tmpvar_83 = mix (tmpvar_82, backContrib_65, _TranslucencyViewDependency); @@ -301,16 +301,16 @@ mediump vec4 xlat_main ( highp vec4 tmpvar_98; tmpvar_98 = IN_92.lop_color; surfIN_96.color = tmpvar_98; - vec3 tmpvar_99; + mediump vec3 tmpvar_99; tmpvar_99 = vec3(0.0, 0.0, 0.0); o_95.Albedo = tmpvar_99; - vec3 tmpvar_100; + mediump vec3 tmpvar_100; tmpvar_100 = vec3(0.0, 0.0, 0.0); o_95.Emission = tmpvar_100; - float tmpvar_101; + mediump float tmpvar_101; tmpvar_101 = 0.0; o_95.Specular = tmpvar_101; - float tmpvar_102; + mediump float tmpvar_102; tmpvar_102 = 0.0; o_95.Alpha = tmpvar_102; surf (surfIN_96, o_95); @@ -339,7 +339,7 @@ void main () { v2f_surf xlt_IN_110; mediump vec4 xl_retval_111; - vec4 tmpvar_112; + mediump vec4 tmpvar_112; tmpvar_112 = vec4(0.0, 0.0, 0.0, 0.0); xlt_IN_110.pos = tmpvar_112; highp vec2 tmpvar_113; diff --git a/3rdparty/glsl-optimizer/tests/fragment/z-treeleafloop-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/z-treeleafloop-irES.txt index e3b882889..c29d6caad 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/z-treeleafloop-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/z-treeleafloop-irES.txt @@ -21,7 +21,7 @@ varying highp vec3 xlv_TEXCOORD2; varying highp vec3 xlv_TEXCOORD3; varying highp vec3 xlv_TEXCOORD4; void xll_clip ( - in float x_1 + in mediump float x_1 ) { if ((x_1 < 0.0)) { @@ -117,7 +117,7 @@ lowp vec4 xlat_main ( mediump vec3 tmpvar_38; tmpvar_38 = (light_11 * 2.0); c_3.xyz = tmpvar_38.xyz.xyz; - float tmpvar_39; + mediump float tmpvar_39; tmpvar_39 = 1.0; c_3.w = vec4(tmpvar_39).w; return c_3; diff --git a/3rdparty/glsl-optimizer/tests/fragment/zun-MobileBumpSpec-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/zun-MobileBumpSpec-irES.txt index d05ffa309..83b381b94 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/zun-MobileBumpSpec-irES.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/zun-MobileBumpSpec-irES.txt @@ -98,7 +98,7 @@ lowp vec4 LightingMobileBlinnPhong ( (s_14.Albedo * diff_21) + spec_19) * _LightColor0.xyz) * (atten_17 * 2.0)); c_18.xyz = tmpvar_30.xyz.xyz; - float tmpvar_31; + mediump float tmpvar_31; tmpvar_31 = 0.0; c_18.w = vec4(tmpvar_31).w; return c_18; @@ -115,26 +115,26 @@ lowp vec4 frag_surf ( mediump vec2 tmpvar_37; tmpvar_37 = IN_32.pack0.xy; surfIN_36.uv_MainTex = tmpvar_37; - vec3 tmpvar_38; + mediump vec3 tmpvar_38; tmpvar_38 = vec3(0.0, 0.0, 0.0); o_35.Albedo = tmpvar_38; - vec3 tmpvar_39; + mediump vec3 tmpvar_39; tmpvar_39 = vec3(0.0, 0.0, 0.0); o_35.Emission = tmpvar_39; - float tmpvar_40; + mediump float tmpvar_40; tmpvar_40 = 0.0; o_35.Specular = tmpvar_40; - float tmpvar_41; + mediump float tmpvar_41; tmpvar_41 = 0.0; o_35.Alpha = tmpvar_41; - float tmpvar_42; + mediump float tmpvar_42; tmpvar_42 = 0.0; o_35.Gloss = tmpvar_42; surf (surfIN_36, o_35); - float tmpvar_43; + mediump float tmpvar_43; tmpvar_43 = 1.0; atten_34 = tmpvar_43; - vec4 tmpvar_44; + mediump vec4 tmpvar_44; tmpvar_44 = vec4(0.0, 0.0, 0.0, 0.0); c_33 = tmpvar_44; lowp vec4 tmpvar_45; @@ -152,7 +152,7 @@ void main () { v2f_surf xlt_IN_48; lowp vec4 xl_retval_49; - vec4 tmpvar_50; + mediump vec4 tmpvar_50; tmpvar_50 = vec4(0.0, 0.0, 0.0, 0.0); xlt_IN_48.pos = tmpvar_50; mediump vec2 tmpvar_51; diff --git a/3rdparty/glsl-optimizer/tests/fragment/zun-SSAO24-irES3.txt b/3rdparty/glsl-optimizer/tests/fragment/zun-SSAO24-irES3.txt index 6740c2a7f..04b0d18af 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/zun-SSAO24-irES3.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/zun-SSAO24-irES3.txt @@ -13,11 +13,11 @@ uniform sampler2D _RandomTexture; uniform highp vec4 _Params; in highp vec2 xlv_TEXCOORD0; in highp vec2 xlv_TEXCOORD1; -float xll_saturate_f ( - in float x_1 +mediump float xll_saturate_f ( + in mediump float x_1 ) { - float tmpvar_2; + mediump float tmpvar_2; tmpvar_2 = clamp (x_1, 0.0, 1.0); return tmpvar_2; } @@ -27,7 +27,7 @@ float DecodeFloatRG ( ) { highp vec2 kDecodeDot_4; - vec2 tmpvar_5; + mediump vec2 tmpvar_5; tmpvar_5 = vec2(1.0, 0.00392157); kDecodeDot_4 = tmpvar_5; highp float tmpvar_6; @@ -43,7 +43,7 @@ vec3 DecodeViewNormalStereo ( highp float g_9; highp vec3 nn_10; highp float kScale_11; - float tmpvar_12; + mediump float tmpvar_12; tmpvar_12 = 1.7777; kScale_11 = tmpvar_12; highp vec3 tmpvar_13; @@ -119,7 +119,7 @@ mediump float frag_ao ( highp float tmpvar_42; tmpvar_42 = (_Params.x / depth_33); scale_32 = tmpvar_42; - float tmpvar_43; + mediump float tmpvar_43; tmpvar_43 = 0.0; occ_31 = tmpvar_43; int tmpvar_44; @@ -144,13 +144,13 @@ mediump float frag_ao ( randomDir_52 = tmpvar_54; highp float tmpvar_55; tmpvar_55 = dot (viewNorm_34, randomDir_52); - float tmpvar_56; + mediump float tmpvar_56; if ((tmpvar_55 < 0.0)) { tmpvar_56 = 1.0; } else { tmpvar_56 = -(1.0); }; - float tmpvar_57; + mediump float tmpvar_57; tmpvar_57 = tmpvar_56; flip_51 = tmpvar_57; mediump vec3 tmpvar_58; @@ -174,9 +174,9 @@ mediump float frag_ao ( highp float tmpvar_64; tmpvar_64 = (sampleD_47 * _ProjectionParams.z); sampleD_47 = tmpvar_64; - float tmpvar_65; + mediump float tmpvar_65; tmpvar_65 = xll_saturate_f ((sD_49 - sampleD_47)); - float tmpvar_66; + mediump float tmpvar_66; tmpvar_66 = tmpvar_65; zd_45 = tmpvar_66; if ((zd_45 > _Params.y)) { @@ -215,7 +215,7 @@ void main () { v2f_ao xlt_i_76; mediump vec4 xl_retval_77; - vec4 tmpvar_78; + mediump vec4 tmpvar_78; tmpvar_78 = vec4(0.0, 0.0, 0.0, 0.0); xlt_i_76.pos = tmpvar_78; highp vec2 tmpvar_79; diff --git a/3rdparty/glsl-optimizer/tests/fragment/zun-SSAO24-outES3.txt b/3rdparty/glsl-optimizer/tests/fragment/zun-SSAO24-outES3.txt index bae904683..45e4d65bb 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/zun-SSAO24-outES3.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/zun-SSAO24-outES3.txt @@ -48,7 +48,7 @@ void main () randomDir_17 = tmpvar_18; highp float tmpvar_20; tmpvar_20 = dot (viewNorm_7, randomDir_17); - float tmpvar_21; + mediump float tmpvar_21; if ((tmpvar_20 < 0.0)) { tmpvar_21 = 1.0; } else { diff --git a/3rdparty/glsl-optimizer/tests/fragment/zun-SSAO8-inES.txt b/3rdparty/glsl-optimizer/tests/fragment/zun-SSAO8-inES.txt new file mode 100644 index 000000000..2d51f9842 --- /dev/null +++ b/3rdparty/glsl-optimizer/tests/fragment/zun-SSAO8-inES.txt @@ -0,0 +1,131 @@ +float xll_saturate_f( float x) { + return clamp( x, 0.0, 1.0); +} +vec2 xll_saturate_vf2( vec2 x) { + return clamp( x, 0.0, 1.0); +} +vec3 xll_saturate_vf3( vec3 x) { + return clamp( x, 0.0, 1.0); +} +vec4 xll_saturate_vf4( vec4 x) { + return clamp( x, 0.0, 1.0); +} +mat2 xll_saturate_mf2x2(mat2 m) { + return mat2( clamp(m[0], 0.0, 1.0), clamp(m[1], 0.0, 1.0)); +} +mat3 xll_saturate_mf3x3(mat3 m) { + return mat3( clamp(m[0], 0.0, 1.0), clamp(m[1], 0.0, 1.0), clamp(m[2], 0.0, 1.0)); +} +mat4 xll_saturate_mf4x4(mat4 m) { + return mat4( clamp(m[0], 0.0, 1.0), clamp(m[1], 0.0, 1.0), clamp(m[2], 0.0, 1.0), clamp(m[3], 0.0, 1.0)); +} +#line 4 +struct v2f_ao { + highp vec4 pos; + highp vec2 uv; + highp vec2 uvr; +}; +#line 10 +uniform sampler2D _CameraDepthNormalsTexture; +uniform sampler2D _RandomTexture; +uniform highp vec4 _Params; +uniform highp vec4 _ProjectionParams; +#line 15 +#line 36 +#line 83 +#line 25 +highp float DecodeFloatRG( in highp vec2 enc ) { + #line 27 + highp vec2 kDecodeDot = vec2( 1.0, 0.00392157); + return dot( enc, kDecodeDot); +} +#line 15 +highp vec3 DecodeViewNormalStereo( in highp vec4 enc4 ) { + highp float kScale = 1.7777; + highp vec3 nn = ((enc4.xyz * vec3( (2.0 * kScale), (2.0 * kScale), 0.0)) + vec3( (-kScale), (-kScale), 1.0)); + #line 19 + highp float g = (2.0 / dot( nn.xyz, nn.xyz)); + highp vec3 n; + n.xy = (g * nn.xy); + n.z = (g - 1.0); + #line 23 + return n; +} +#line 30 +void DecodeDepthNormal( in highp vec4 enc, out highp float depth, out highp vec3 normal ) { + #line 32 + depth = DecodeFloatRG( enc.zw); + normal = DecodeViewNormalStereo( enc); +} +#line 36 +mediump float frag_ao( in v2f_ao i, in highp int sampleCount, in highp vec3 samples[8] ) { + mediump vec3 randN = ((texture2D( _RandomTexture, i.uvr).xyz * 2.0) - 1.0); + #line 42 + highp vec4 depthnormal = texture2D( _CameraDepthNormalsTexture, i.uv); + highp vec3 viewNorm; + highp float depth; + DecodeDepthNormal( depthnormal, depth, viewNorm); + #line 46 + depth *= _ProjectionParams.z; + highp float scale = (_Params.x / depth); + #line 50 + highp float occ = 0.0; + highp int s = 0; + for ( ; (s < sampleCount); (++s)) { + #line 54 + mediump vec3 randomDir = reflect( samples[s], randN); + mediump float flip = (( (dot( viewNorm, randomDir) < 0.0) ) ? ( 1.0 ) : ( -1.0 )); + #line 58 + randomDir *= (-flip); + randomDir += (viewNorm * 0.3); + #line 62 + highp vec2 offset = (randomDir.xy * scale); + highp float sD = (depth - (randomDir.z * _Params.x)); + #line 66 + highp vec4 sampleND = texture2D( _CameraDepthNormalsTexture, (i.uv + offset)); + highp float sampleD; + highp vec3 sampleN; + DecodeDepthNormal( sampleND, sampleD, sampleN); + #line 70 + sampleD *= _ProjectionParams.z; + highp float zd = xll_saturate_f((sD - sampleD)); + if ((zd > _Params.y)){ + #line 74 + occ += pow( (1.0 - zd), _Params.z); + } + } + #line 79 + occ /= float(sampleCount); + return (1.0 - occ); +} +#line 83 +mediump vec4 xlat_main( in v2f_ao i ) { + highp vec3 RAND_SAMPLES[8]; + RAND_SAMPLES[0] = vec3( 0.0130572, 0.587232, -0.119337); + RAND_SAMPLES[1] = vec3( 0.323078, 0.0220727, -0.418873); + RAND_SAMPLES[2] = vec3( -0.310725, -0.191367, 0.0561369); + RAND_SAMPLES[3] = vec3( -0.479646, 0.0939877, -0.580265); + RAND_SAMPLES[4] = vec3( 0.139999, -0.33577, 0.559679); + RAND_SAMPLES[5] = vec3( -0.248458, 0.255532, 0.348944); + RAND_SAMPLES[6] = vec3( 0.18719, -0.702764, -0.231748); + RAND_SAMPLES[7] = vec3( 0.884915, 0.284208, 0.368524); + #line 95 + return vec4( frag_ao( i, 8, RAND_SAMPLES)); +} +varying highp vec2 xlv_TEXCOORD0; +varying highp vec2 xlv_TEXCOORD1; +void main() { + mediump vec4 xl_retval; + v2f_ao xlt_i; + xlt_i.pos = vec4(0.0); + xlt_i.uv = vec2(xlv_TEXCOORD0); + xlt_i.uvr = vec2(xlv_TEXCOORD1); + xl_retval = xlat_main( xlt_i); + gl_FragData[0] = vec4(xl_retval); +} + +// uniforms: +// _CameraDepthNormalsTexture: type 25 arrsize 0 +// _Params: type 12 arrsize 0 +// _ProjectionParams: type 12 arrsize 0 +// _RandomTexture: type 25 arrsize 0 diff --git a/3rdparty/glsl-optimizer/tests/fragment/zun-SSAO8-irES.txt b/3rdparty/glsl-optimizer/tests/fragment/zun-SSAO8-irES.txt new file mode 100644 index 000000000..8be54d020 --- /dev/null +++ b/3rdparty/glsl-optimizer/tests/fragment/zun-SSAO8-irES.txt @@ -0,0 +1,355 @@ +struct v2f_ao { + highp vec4 pos; + highp vec2 uv; + highp vec2 uvr; +}; +uniform sampler2D _CameraDepthNormalsTexture; +uniform sampler2D _RandomTexture; +uniform highp vec4 _Params; +uniform highp vec4 _ProjectionParams; +varying highp vec2 xlv_TEXCOORD0; +varying highp vec2 xlv_TEXCOORD1; +mediump float xll_saturate_f ( + in mediump float x_1 +) +{ + mediump float tmpvar_2; + tmpvar_2 = clamp (x_1, 0.0, 1.0); + return tmpvar_2; +} + +mediump vec2 xll_saturate_vf2 ( + in mediump vec2 x_3 +) +{ + mediump vec2 tmpvar_4; + tmpvar_4 = clamp (x_3, 0.0, 1.0); + return tmpvar_4; +} + +mediump vec3 xll_saturate_vf3 ( + in mediump vec3 x_5 +) +{ + mediump vec3 tmpvar_6; + tmpvar_6 = clamp (x_5, 0.0, 1.0); + return tmpvar_6; +} + +mediump vec4 xll_saturate_vf4 ( + in mediump vec4 x_7 +) +{ + mediump vec4 tmpvar_8; + tmpvar_8 = clamp (x_7, 0.0, 1.0); + return tmpvar_8; +} + +mediump mat2 xll_saturate_mf2x2 ( + in mediump mat2 m_9 +) +{ + mediump vec2 tmpvar_10; + tmpvar_10 = clamp (m_9[0], 0.0, 1.0); + mediump vec2 tmpvar_11; + tmpvar_11 = clamp (m_9[1], 0.0, 1.0); + mediump mat2 tmpvar_12; + mediump vec2 tmpvar_13; + tmpvar_13 = tmpvar_10; + tmpvar_12[0] = tmpvar_13; + mediump vec2 tmpvar_14; + tmpvar_14 = tmpvar_11; + tmpvar_12[1] = tmpvar_14; + return tmpvar_12; +} + +mediump mat3 xll_saturate_mf3x3 ( + in mediump mat3 m_15 +) +{ + mediump vec3 tmpvar_16; + tmpvar_16 = clamp (m_15[0], 0.0, 1.0); + mediump vec3 tmpvar_17; + tmpvar_17 = clamp (m_15[1], 0.0, 1.0); + mediump vec3 tmpvar_18; + tmpvar_18 = clamp (m_15[2], 0.0, 1.0); + mediump mat3 tmpvar_19; + mediump vec3 tmpvar_20; + tmpvar_20 = tmpvar_16; + tmpvar_19[0] = tmpvar_20; + mediump vec3 tmpvar_21; + tmpvar_21 = tmpvar_17; + tmpvar_19[1] = tmpvar_21; + mediump vec3 tmpvar_22; + tmpvar_22 = tmpvar_18; + tmpvar_19[2] = tmpvar_22; + return tmpvar_19; +} + +mediump mat4 xll_saturate_mf4x4 ( + in mediump mat4 m_23 +) +{ + mediump vec4 tmpvar_24; + tmpvar_24 = clamp (m_23[0], 0.0, 1.0); + mediump vec4 tmpvar_25; + tmpvar_25 = clamp (m_23[1], 0.0, 1.0); + mediump vec4 tmpvar_26; + tmpvar_26 = clamp (m_23[2], 0.0, 1.0); + mediump vec4 tmpvar_27; + tmpvar_27 = clamp (m_23[3], 0.0, 1.0); + mediump mat4 tmpvar_28; + mediump vec4 tmpvar_29; + tmpvar_29 = tmpvar_24; + tmpvar_28[0] = tmpvar_29; + mediump vec4 tmpvar_30; + tmpvar_30 = tmpvar_25; + tmpvar_28[1] = tmpvar_30; + mediump vec4 tmpvar_31; + tmpvar_31 = tmpvar_26; + tmpvar_28[2] = tmpvar_31; + mediump vec4 tmpvar_32; + tmpvar_32 = tmpvar_27; + tmpvar_28[3] = tmpvar_32; + return tmpvar_28; +} + +float DecodeFloatRG ( + in highp vec2 enc_33 +) +{ + highp vec2 kDecodeDot_34; + mediump vec2 tmpvar_35; + tmpvar_35 = vec2(1.0, 0.00392157); + kDecodeDot_34 = tmpvar_35; + highp float tmpvar_36; + tmpvar_36 = dot (enc_33, kDecodeDot_34); + return tmpvar_36; +} + +vec3 DecodeViewNormalStereo ( + in highp vec4 enc4_37 +) +{ + highp vec3 n_38; + highp float g_39; + highp vec3 nn_40; + highp float kScale_41; + mediump float tmpvar_42; + tmpvar_42 = 1.7777; + kScale_41 = tmpvar_42; + highp vec3 tmpvar_43; + tmpvar_43.z = 0.0; + tmpvar_43.x = (2.0 * kScale_41); + tmpvar_43.y = (2.0 * kScale_41); + highp vec3 tmpvar_44; + tmpvar_44.z = 1.0; + tmpvar_44.x = -(kScale_41); + tmpvar_44.y = -(kScale_41); + highp vec3 tmpvar_45; + tmpvar_45 = ((enc4_37.xyz * tmpvar_43) + tmpvar_44); + nn_40 = tmpvar_45; + highp float tmpvar_46; + tmpvar_46 = dot (nn_40.xyz, nn_40.xyz); + highp float tmpvar_47; + tmpvar_47 = (2.0 / tmpvar_46); + g_39 = tmpvar_47; + highp vec2 tmpvar_48; + tmpvar_48 = (g_39 * nn_40.xy); + n_38.xy = tmpvar_48.xy.xy; + highp float tmpvar_49; + tmpvar_49 = (g_39 - 1.0); + n_38.z = vec3(tmpvar_49).z; + return n_38; +} + +void DecodeDepthNormal ( + in highp vec4 enc_50, + out highp float depth_51, + out highp vec3 normal_52 +) +{ + highp float tmpvar_53; + tmpvar_53 = DecodeFloatRG (enc_50.zw); + highp float tmpvar_54; + tmpvar_54 = tmpvar_53; + depth_51 = tmpvar_54; + highp vec3 tmpvar_55; + tmpvar_55 = DecodeViewNormalStereo (enc_50); + highp vec3 tmpvar_56; + tmpvar_56 = tmpvar_55; + normal_52 = tmpvar_56; +} + +mediump float frag_ao ( + in v2f_ao i_57, + in int sampleCount_58, + in highp vec3 samples_59[8] +) +{ + int s_60; + highp float occ_61; + highp float scale_62; + highp float depth_63; + highp vec3 viewNorm_64; + highp vec4 depthnormal_65; + mediump vec3 randN_66; + lowp vec4 tmpvar_67; + tmpvar_67 = texture2D (_RandomTexture, i_57.uvr); + lowp vec3 tmpvar_68; + tmpvar_68 = ((tmpvar_67.xyz * 2.0) - 1.0); + randN_66 = tmpvar_68; + lowp vec4 tmpvar_69; + tmpvar_69 = texture2D (_CameraDepthNormalsTexture, i_57.uv); + lowp vec4 tmpvar_70; + tmpvar_70 = tmpvar_69; + depthnormal_65 = tmpvar_70; + DecodeDepthNormal (depthnormal_65, depth_63, viewNorm_64); + highp float tmpvar_71; + tmpvar_71 = (depth_63 * _ProjectionParams.z); + depth_63 = tmpvar_71; + highp float tmpvar_72; + tmpvar_72 = (_Params.x / depth_63); + scale_62 = tmpvar_72; + mediump float tmpvar_73; + tmpvar_73 = 0.0; + occ_61 = tmpvar_73; + int tmpvar_74; + tmpvar_74 = 0; + s_60 = tmpvar_74; + while (true) { + highp float zd_75; + highp vec3 sampleN_76; + highp float sampleD_77; + highp vec4 sampleND_78; + highp float sD_79; + highp vec2 offset_80; + mediump float flip_81; + mediump vec3 randomDir_82; + if (!((s_60 < sampleCount_58))) { + break; + }; + highp vec3 tmpvar_83; + tmpvar_83 = reflect (samples_59[s_60], randN_66); + highp vec3 tmpvar_84; + tmpvar_84 = tmpvar_83; + randomDir_82 = tmpvar_84; + highp float tmpvar_85; + tmpvar_85 = dot (viewNorm_64, randomDir_82); + mediump float tmpvar_86; + if ((tmpvar_85 < 0.0)) { + tmpvar_86 = 1.0; + } else { + tmpvar_86 = -(1.0); + }; + mediump float tmpvar_87; + tmpvar_87 = tmpvar_86; + flip_81 = tmpvar_87; + mediump vec3 tmpvar_88; + tmpvar_88 = (randomDir_82 * -(flip_81)); + randomDir_82 = tmpvar_88; + highp vec3 tmpvar_89; + tmpvar_89 = (randomDir_82 + (viewNorm_64 * 0.3)); + randomDir_82 = tmpvar_89; + highp vec2 tmpvar_90; + tmpvar_90 = (randomDir_82.xy * scale_62); + offset_80 = tmpvar_90; + highp float tmpvar_91; + tmpvar_91 = (depth_63 - (randomDir_82.z * _Params.x)); + sD_79 = tmpvar_91; + lowp vec4 tmpvar_92; + tmpvar_92 = texture2D (_CameraDepthNormalsTexture, (i_57.uv + offset_80)); + lowp vec4 tmpvar_93; + tmpvar_93 = tmpvar_92; + sampleND_78 = tmpvar_93; + DecodeDepthNormal (sampleND_78, sampleD_77, sampleN_76); + highp float tmpvar_94; + tmpvar_94 = (sampleD_77 * _ProjectionParams.z); + sampleD_77 = tmpvar_94; + mediump float tmpvar_95; + tmpvar_95 = xll_saturate_f ((sD_79 - sampleD_77)); + mediump float tmpvar_96; + tmpvar_96 = tmpvar_95; + zd_75 = tmpvar_96; + if ((zd_75 > _Params.y)) { + highp float tmpvar_97; + tmpvar_97 = pow ((1.0 - zd_75), _Params.z); + highp float tmpvar_98; + tmpvar_98 = (occ_61 + tmpvar_97); + occ_61 = tmpvar_98; + }; + int tmpvar_99; + tmpvar_99 = (s_60 + 1); + s_60 = tmpvar_99; + }; + highp float tmpvar_100; + tmpvar_100 = (occ_61 / float(sampleCount_58)); + occ_61 = tmpvar_100; + return (1.0 - occ_61); +} + +mediump vec4 xlat_main ( + in v2f_ao i_101 +) +{ + highp vec3 RAND_SAMPLES_102[8]; + mediump vec3 tmpvar_103; + tmpvar_103 = vec3(0.0130572, 0.587232, -0.119337); + RAND_SAMPLES_102[0] = tmpvar_103; + mediump vec3 tmpvar_104; + tmpvar_104 = vec3(0.323078, 0.0220727, -0.418873); + RAND_SAMPLES_102[1] = tmpvar_104; + mediump vec3 tmpvar_105; + tmpvar_105 = vec3(-0.310725, -0.191367, 0.0561369); + RAND_SAMPLES_102[2] = tmpvar_105; + mediump vec3 tmpvar_106; + tmpvar_106 = vec3(-0.479646, 0.0939877, -0.580265); + RAND_SAMPLES_102[3] = tmpvar_106; + mediump vec3 tmpvar_107; + tmpvar_107 = vec3(0.139999, -0.33577, 0.559679); + RAND_SAMPLES_102[4] = tmpvar_107; + mediump vec3 tmpvar_108; + tmpvar_108 = vec3(-0.248458, 0.255532, 0.348944); + RAND_SAMPLES_102[5] = tmpvar_108; + mediump vec3 tmpvar_109; + tmpvar_109 = vec3(0.18719, -0.702764, -0.231748); + RAND_SAMPLES_102[6] = tmpvar_109; + mediump vec3 tmpvar_110; + tmpvar_110 = vec3(0.884915, 0.284208, 0.368524); + RAND_SAMPLES_102[7] = tmpvar_110; + mediump float tmpvar_111; + tmpvar_111 = frag_ao (i_101, 8, RAND_SAMPLES_102); + mediump vec4 tmpvar_112; + tmpvar_112 = vec4(tmpvar_111); + return tmpvar_112; +} + +void main () +{ + v2f_ao xlt_i_113; + mediump vec4 xl_retval_114; + mediump vec4 tmpvar_115; + tmpvar_115 = vec4(0.0, 0.0, 0.0, 0.0); + xlt_i_113.pos = tmpvar_115; + highp vec2 tmpvar_116; + tmpvar_116 = xlv_TEXCOORD0.xy; + highp vec2 tmpvar_117; + tmpvar_117 = tmpvar_116; + xlt_i_113.uv = tmpvar_117; + highp vec2 tmpvar_118; + tmpvar_118 = xlv_TEXCOORD1.xy; + highp vec2 tmpvar_119; + tmpvar_119 = tmpvar_118; + xlt_i_113.uvr = tmpvar_119; + mediump vec4 tmpvar_120; + tmpvar_120 = xlat_main (xlt_i_113); + mediump vec4 tmpvar_121; + tmpvar_121 = tmpvar_120; + xl_retval_114 = tmpvar_121; + mediump vec4 tmpvar_122; + tmpvar_122 = xl_retval_114.xyzw; + mediump vec4 tmpvar_123; + tmpvar_123 = tmpvar_122; + gl_FragData[0] = tmpvar_123; +} + diff --git a/3rdparty/glsl-optimizer/tests/fragment/zun-SSAO8-outES.txt b/3rdparty/glsl-optimizer/tests/fragment/zun-SSAO8-outES.txt new file mode 100644 index 000000000..82d6281ee --- /dev/null +++ b/3rdparty/glsl-optimizer/tests/fragment/zun-SSAO8-outES.txt @@ -0,0 +1,94 @@ +uniform sampler2D _CameraDepthNormalsTexture; +uniform sampler2D _RandomTexture; +uniform highp vec4 _Params; +uniform highp vec4 _ProjectionParams; +varying highp vec2 xlv_TEXCOORD0; +varying highp vec2 xlv_TEXCOORD1; +void main () +{ + highp vec3 RAND_SAMPLES_1[8]; + RAND_SAMPLES_1[0] = vec3(0.0130572, 0.587232, -0.119337); + RAND_SAMPLES_1[1] = vec3(0.323078, 0.0220727, -0.418873); + RAND_SAMPLES_1[2] = vec3(-0.310725, -0.191367, 0.0561369); + RAND_SAMPLES_1[3] = vec3(-0.479646, 0.0939877, -0.580265); + RAND_SAMPLES_1[4] = vec3(0.139999, -0.33577, 0.559679); + RAND_SAMPLES_1[5] = vec3(-0.248458, 0.255532, 0.348944); + RAND_SAMPLES_1[6] = vec3(0.18719, -0.702764, -0.231748); + RAND_SAMPLES_1[7] = vec3(0.884915, 0.284208, 0.368524); + mediump float tmpvar_2; + highp vec2 tmpvar_3; + tmpvar_3 = xlv_TEXCOORD0; + highp vec3 samples_4[8]; + samples_4[0]=RAND_SAMPLES_1[0];samples_4[1]=RAND_SAMPLES_1[1];samples_4[2]=RAND_SAMPLES_1[2];samples_4[3]=RAND_SAMPLES_1[3];samples_4[4]=RAND_SAMPLES_1[4];samples_4[5]=RAND_SAMPLES_1[5];samples_4[6]=RAND_SAMPLES_1[6];samples_4[7]=RAND_SAMPLES_1[7]; + highp float occ_6; + highp float scale_7; + highp float depth_8; + highp vec3 viewNorm_9; + highp vec4 depthnormal_10; + mediump vec3 randN_11; + lowp vec3 tmpvar_12; + tmpvar_12 = ((texture2D (_RandomTexture, xlv_TEXCOORD1).xyz * 2.0) - 1.0); + randN_11 = tmpvar_12; + lowp vec4 tmpvar_13; + tmpvar_13 = texture2D (_CameraDepthNormalsTexture, xlv_TEXCOORD0); + depthnormal_10 = tmpvar_13; + highp vec3 n_14; + highp vec3 tmpvar_15; + tmpvar_15 = ((depthnormal_10.xyz * vec3(3.5554, 3.5554, 0.0)) + vec3(-1.7777, -1.7777, 1.0)); + highp float tmpvar_16; + tmpvar_16 = (2.0 / dot (tmpvar_15, tmpvar_15)); + n_14.xy = (tmpvar_16 * tmpvar_15.xy); + n_14.z = (tmpvar_16 - 1.0); + viewNorm_9 = n_14; + highp float tmpvar_17; + tmpvar_17 = (dot (depthnormal_10.zw, vec2(1.0, 0.00392157)) * _ProjectionParams.z); + depth_8 = tmpvar_17; + scale_7 = (_Params.x / tmpvar_17); + occ_6 = 0.0; + for (int s_5 = 0; s_5 < 8; s_5++) { + highp vec4 sampleND_18; + mediump vec3 randomDir_19; + highp vec3 tmpvar_20; + highp vec3 I_21; + I_21 = samples_4[s_5]; + tmpvar_20 = (I_21 - (2.0 * ( + dot (randN_11, I_21) + * randN_11))); + randomDir_19 = tmpvar_20; + highp float tmpvar_22; + tmpvar_22 = dot (viewNorm_9, randomDir_19); + mediump float tmpvar_23; + if ((tmpvar_22 < 0.0)) { + tmpvar_23 = 1.0; + } else { + tmpvar_23 = -1.0; + }; + mediump vec3 tmpvar_24; + tmpvar_24 = (randomDir_19 * -(tmpvar_23)); + highp vec3 tmpvar_25; + tmpvar_25 = (tmpvar_24 + (viewNorm_9 * 0.3)); + randomDir_19 = tmpvar_25; + lowp vec4 tmpvar_26; + highp vec2 P_27; + P_27 = (tmpvar_3 + (randomDir_19.xy * scale_7)); + tmpvar_26 = texture2D (_CameraDepthNormalsTexture, P_27); + sampleND_18 = tmpvar_26; + highp float tmpvar_28; + tmpvar_28 = clamp (((depth_8 - + (randomDir_19.z * _Params.x) + ) - ( + dot (sampleND_18.zw, vec2(1.0, 0.00392157)) + * _ProjectionParams.z)), 0.0, 1.0); + if ((tmpvar_28 > _Params.y)) { + occ_6 = (occ_6 + pow ((1.0 - tmpvar_28), _Params.z)); + }; + }; + highp float tmpvar_29; + tmpvar_29 = (occ_6 / 8.0); + occ_6 = tmpvar_29; + tmpvar_2 = (1.0 - tmpvar_29); + gl_FragData[0] = vec4(tmpvar_2); +} + + +// inputs: 2, stats: 49 alu 3 tex 4 flow diff --git a/3rdparty/glsl-optimizer/tests/fragment/zunity-MotionBlur-TileMax-out.txt b/3rdparty/glsl-optimizer/tests/fragment/zunity-MotionBlur-TileMax-out.txt index b54a94b4e..9bab30b01 100644 --- a/3rdparty/glsl-optimizer/tests/fragment/zunity-MotionBlur-TileMax-out.txt +++ b/3rdparty/glsl-optimizer/tests/fragment/zunity-MotionBlur-TileMax-out.txt @@ -8,24 +8,92 @@ void main () uvCorner_3 = xlv_TEXCOORD0; mx_2 = texture2D (_MainTex, xlv_TEXCOORD0).xy; for (int j_1 = 0; j_1 < 8; j_1++) { - for (int l_4 = 0; l_4 < 8; l_4++) { - vec2 tmpvar_5; - tmpvar_5.x = float(l_4); - tmpvar_5.y = float(j_1); - vec4 tmpvar_6; - tmpvar_6 = texture2D (_MainTex, (uvCorner_3 + (tmpvar_5 * _MainTex_TexelSize.xy))); - mx_2 = mix (mx_2, tmpvar_6.xy, vec2(float(( - dot (tmpvar_6.xy, tmpvar_6.xy) - >= - dot (mx_2, mx_2) - )))); - }; + vec2 tmpvar_4; + tmpvar_4.x = 0.0; + tmpvar_4.y = float(j_1); + vec4 tmpvar_5; + tmpvar_5 = texture2D (_MainTex, (uvCorner_3 + (tmpvar_4 * _MainTex_TexelSize.xy))); + mx_2 = mix (mx_2, tmpvar_5.xy, vec2(float(( + dot (tmpvar_5.xy, tmpvar_5.xy) + >= + dot (mx_2, mx_2) + )))); + vec2 tmpvar_6; + tmpvar_6.x = 1.0; + tmpvar_6.y = float(j_1); + vec4 tmpvar_7; + tmpvar_7 = texture2D (_MainTex, (uvCorner_3 + (tmpvar_6 * _MainTex_TexelSize.xy))); + mx_2 = mix (mx_2, tmpvar_7.xy, vec2(float(( + dot (tmpvar_7.xy, tmpvar_7.xy) + >= + dot (mx_2, mx_2) + )))); + vec2 tmpvar_8; + tmpvar_8.x = 2.0; + tmpvar_8.y = float(j_1); + vec4 tmpvar_9; + tmpvar_9 = texture2D (_MainTex, (uvCorner_3 + (tmpvar_8 * _MainTex_TexelSize.xy))); + mx_2 = mix (mx_2, tmpvar_9.xy, vec2(float(( + dot (tmpvar_9.xy, tmpvar_9.xy) + >= + dot (mx_2, mx_2) + )))); + vec2 tmpvar_10; + tmpvar_10.x = 3.0; + tmpvar_10.y = float(j_1); + vec4 tmpvar_11; + tmpvar_11 = texture2D (_MainTex, (uvCorner_3 + (tmpvar_10 * _MainTex_TexelSize.xy))); + mx_2 = mix (mx_2, tmpvar_11.xy, vec2(float(( + dot (tmpvar_11.xy, tmpvar_11.xy) + >= + dot (mx_2, mx_2) + )))); + vec2 tmpvar_12; + tmpvar_12.x = 4.0; + tmpvar_12.y = float(j_1); + vec4 tmpvar_13; + tmpvar_13 = texture2D (_MainTex, (uvCorner_3 + (tmpvar_12 * _MainTex_TexelSize.xy))); + mx_2 = mix (mx_2, tmpvar_13.xy, vec2(float(( + dot (tmpvar_13.xy, tmpvar_13.xy) + >= + dot (mx_2, mx_2) + )))); + vec2 tmpvar_14; + tmpvar_14.x = 5.0; + tmpvar_14.y = float(j_1); + vec4 tmpvar_15; + tmpvar_15 = texture2D (_MainTex, (uvCorner_3 + (tmpvar_14 * _MainTex_TexelSize.xy))); + mx_2 = mix (mx_2, tmpvar_15.xy, vec2(float(( + dot (tmpvar_15.xy, tmpvar_15.xy) + >= + dot (mx_2, mx_2) + )))); + vec2 tmpvar_16; + tmpvar_16.x = 6.0; + tmpvar_16.y = float(j_1); + vec4 tmpvar_17; + tmpvar_17 = texture2D (_MainTex, (uvCorner_3 + (tmpvar_16 * _MainTex_TexelSize.xy))); + mx_2 = mix (mx_2, tmpvar_17.xy, vec2(float(( + dot (tmpvar_17.xy, tmpvar_17.xy) + >= + dot (mx_2, mx_2) + )))); + vec2 tmpvar_18; + tmpvar_18.x = 7.0; + tmpvar_18.y = float(j_1); + vec4 tmpvar_19; + tmpvar_19 = texture2D (_MainTex, (uvCorner_3 + (tmpvar_18 * _MainTex_TexelSize.xy))); + mx_2 = mix (mx_2, tmpvar_19.xy, vec2(float(( + dot (tmpvar_19.xy, tmpvar_19.xy) + >= + dot (mx_2, mx_2) + )))); }; - vec4 tmpvar_7; - tmpvar_7.zw = vec2(0.0, 0.0); - tmpvar_7.xy = mx_2; - gl_FragData[0] = tmpvar_7; + vec4 tmpvar_20; + tmpvar_20.zw = vec2(0.0, 0.0); + tmpvar_20.xy = mx_2; + gl_FragData[0] = tmpvar_20; } -// inputs: 1, stats: 16 alu 2 tex 4 flow +// inputs: 1, stats: 76 alu 9 tex 2 flow diff --git a/3rdparty/glsl-optimizer/tests/vertex/z-NichsHybridLight-in.txt b/3rdparty/glsl-optimizer/tests/vertex/z-NichsHybridLight-in.txt new file mode 100644 index 000000000..5804c5985 --- /dev/null +++ b/3rdparty/glsl-optimizer/tests/vertex/z-NichsHybridLight-in.txt @@ -0,0 +1,187 @@ +vec4 xll_tex2Dlod(sampler2D s, vec4 coord) { + return texture2DLod( s, coord.xy, coord.w); +} +mat3 xll_transpose_mf3x3(mat3 m) { + return mat3( m[0][0], m[1][0], m[2][0], + m[0][1], m[1][1], m[2][1], + m[0][2], m[1][2], m[2][2]); +} +mat3 xll_constructMat3_mf4x4( mat4 m) { + return mat3( vec3( m[0]), vec3( m[1]), vec3( m[2])); +} +struct Lamp { + vec4 posRange; + vec4 colorImp; + vec4 spotParam; +}; +struct v2f { + vec4 pos; + vec3 hybridDir; + vec3 hybridCol; + vec3 ambient; + vec2 uv; +}; +struct HybridAppData { + vec4 vertex; + vec4 tangent; + vec3 normal; + vec4 texcoord; + vec4 bakedCol; + vec2 bakedDir; +}; +uniform vec3 _WorldSpaceCameraPos; +uniform mat4 _Object2World; +uniform mat4 _World2Object; + +uniform vec3 _Tonemap_blackLevel; +uniform vec3 _Tonemap_toeLength; +uniform vec3 _Tonemap_heel; +uniform vec3 _Tonemap_shoulder; +uniform vec3 _Tonemap_colorScale1; +uniform vec3 _Tonemap_colorScale2; +uniform vec3 _HybridSunDir; +uniform vec4 _HybridSunCol; +uniform vec3 GridLightTextureStartCell; +uniform vec3 GridLightTextureCellSize; +uniform sampler2D GridLightTexture; +uniform vec4 IngameGridLimit; +uniform vec4 LightPos[30]; +uniform vec4 LightCol[30]; +uniform vec4 _MainTex_ST; +float Luma( in vec3 c ) { + return dot( c, vec3( 0.22, 0.707, 0.071)); +} +void CalcDynamicLight( in vec3 worldVert, in vec3 worldNorm, in Lamp lamp[4], inout vec3 hybridDir, inout vec3 hybridCol ) +{ + vec3 lAgg = vec3( 0.0); + float wAgg = 0.001; + vec4 atten; + int i = 0; + for ( ; (i < 4); (i++)) { + vec3 lightToVert = (lamp[i].posRange.xyz - worldVert); + float lengthSq = dot( lightToVert, lightToVert); + vec3 lightToVertNorm = (lightToVert * inversesqrt(lengthSq)); + atten[i] = max( (1.0 - ((lengthSq * lamp[i].posRange.w) * 0.8)), 0.0); + atten[i] *= atten[i]; + float nDotL = max( dot( lightToVertNorm, worldNorm), 0.05); + float weight = ((atten[i] * lamp[i].colorImp.w) * nDotL); + lAgg += (weight * lightToVertNorm); + wAgg += weight; + } + float w = (Luma( hybridCol) * 2.0); + lAgg += (hybridDir * w); + wAgg += w; + hybridDir = (lAgg / wAgg); + int j = 0; + for ( ; (j < 4); (j++)) { + vec3 lightToVertNorm_1 = normalize((lamp[j].posRange.xyz - worldVert)); + hybridCol += (lamp[j].colorImp.xyz * atten[j]); + } +} +ivec4 GetLightIdxFromGrid( in vec3 worldVert ) +{ + vec2 pos = ((worldVert - GridLightTextureStartCell) * GridLightTextureCellSize).xz; + pos = clamp( pos, IngameGridLimit.xy, IngameGridLimit.zw); + return ivec4((xll_tex2Dlod( GridLightTexture, vec4( pos.x, pos.y, 0.0, 0.0)) * 255.0)); +} +vec3 DecodeBakedCol( in vec3 bakedCol ) +{ + vec3 c = (bakedCol * 3.0); + return (c * c); +} +vec3 DecodeNormal( in vec2 enc ) +{ + vec4 nn = ((enc.xyxy * vec4( 2.0, 2.0, 0.0, 0.0)) + vec4( -1.0, -1.0, 1.01, -1.0)); + float l = dot( nn.xyz, (-nn.xyw)); + nn.z = l; + nn.xy *= sqrt(l); + return ((nn.xyz * 2.0) + vec3( 0.0, 0.0, -1.0)); +} +void DecodeBaking( in vec4 bakedColor, in vec2 bakedDir, out vec3 hybridCol, out vec3 hybridDir ) +{ + hybridDir = (DecodeNormal( bakedDir) * (bakedColor.w * 2.0)); + hybridCol = DecodeBakedCol( bakedColor.xyz); +} +void LoadBakedLight( in vec3 worldVert, in vec3 worldNorm, in vec4 bakedColor, in vec2 bakedDir, out vec3 hybridCol, out vec3 hybridDir ) +{ + DecodeBaking( bakedColor, bakedDir, hybridCol, hybridDir); +} +void ReadLightArray3( in ivec4 lightIdx, out Lamp l0, out Lamp l1, out Lamp l2, out Lamp l3 ) +{ + l0.posRange = LightPos[lightIdx.x]; + l0.colorImp = LightCol[lightIdx.x]; + l0.spotParam = vec4( 0.0, 0.0, 0.0, 1.0); + l1.posRange = LightPos[lightIdx.y]; + l1.colorImp = LightCol[lightIdx.y]; + l1.spotParam = vec4( 0.0, 0.0, 0.0, 1.0); + l2.posRange = LightPos[lightIdx.z]; + l2.colorImp = LightCol[lightIdx.z]; + l2.spotParam = vec4( 0.0, 0.0, 0.0, 1.0); + l3.posRange = LightPos[lightIdx.w]; + l3.colorImp = LightCol[lightIdx.w]; + l3.spotParam = vec4( 0.0, 0.0, 0.0, 1.0); +} +vec3 JimTonemapping( in vec3 x ) +{ + x = max( (x - (_Tonemap_blackLevel * 0.25)), vec3( 0.0, 0.0, 0.0)); + x = ((x * ((_Tonemap_colorScale1 * x) + _Tonemap_heel)) / ((x * ((_Tonemap_colorScale2 * x) + _Tonemap_shoulder)) + _Tonemap_toeLength)); + return x; +} +vec3 NichTonemap( in vec3 x ) +{ + return (JimTonemapping( (x * 0.25)) * 4.0); + float total = (length(x) + 0.0001); + vec3 norm = (x / total); + float tonemapped = (JimTonemapping( vec3( 0.0, (total * 0.25), 0.0)).y * 4.0); + return (norm * tonemapped); +} +vec3 VertexTonemap( in vec3 x ) +{ + return NichTonemap( x); +} +void DoCalcHybridLight2( in vec3 worldVert, in vec3 worldNorm, out vec3 hybridDir, out vec3 hybridCol, out vec3 ambient, in vec4 bakedColor, in vec2 bakedDir ) +{ + LoadBakedLight( worldVert, worldNorm, bakedColor, bakedDir, hybridCol, hybridDir); + ivec4 lightIdx = GetLightIdxFromGrid( worldVert); + Lamp l[4]; + ReadLightArray3( lightIdx, l[0], l[1], l[2], l[3]); + CalcDynamicLight( worldVert, worldNorm, l, hybridDir, hybridCol); + hybridCol = VertexTonemap( hybridCol); + ambient = VertexTonemap( (_HybridSunCol.xyz * dot( worldNorm, _HybridSunDir))); +} +v2f vert (in HybridAppData v) +{ + v2f o; + o.pos = (gl_ModelViewProjectionMatrix * v.vertex); + o.uv = ((v.texcoord.xy * _MainTex_ST.xy) + _MainTex_ST.zw); + vec3 worldVert = (_Object2World * v.vertex).xyz; + vec3 worldNorm = normalize((xll_constructMat3_mf4x4( _Object2World) * v.normal.xyz)); + DoCalcHybridLight2( worldVert, worldNorm, o.hybridDir, o.hybridCol, o.ambient, v.bakedCol, v.bakedDir); + vec3 eyeToVert = normalize((_WorldSpaceCameraPos.xyz - worldVert)); + vec3 binormal = (cross( v.normal, v.tangent.xyz) * v.tangent.w); + mat3 rotation = xll_transpose_mf3x3(mat3( v.tangent.xyz, binormal, v.normal)); + o.hybridDir = (rotation * (xll_constructMat3_mf4x4( _World2Object) * o.hybridDir)); + return o; +} +attribute vec4 TANGENT; +varying vec3 xlv_TEXCOORD0; +varying vec3 xlv_TEXCOORD1; +varying vec3 xlv_COLOR; +varying vec2 xlv_TEXCOORD2; +void main() +{ + v2f xl_retval; + HybridAppData xlt_v; + xlt_v.vertex = vec4(gl_Vertex); + xlt_v.tangent = vec4(TANGENT); + xlt_v.normal = vec3(gl_Normal); + xlt_v.texcoord = vec4(gl_MultiTexCoord0); + xlt_v.bakedCol = vec4(gl_Color); + xlt_v.bakedDir = vec2(gl_MultiTexCoord1); + xl_retval = vert( xlt_v); + gl_Position = vec4(xl_retval.pos); + xlv_TEXCOORD0 = vec3(xl_retval.hybridDir); + xlv_TEXCOORD1 = vec3(xl_retval.hybridCol); + xlv_COLOR = vec3(xl_retval.ambient); + xlv_TEXCOORD2 = vec2(xl_retval.uv); +} diff --git a/3rdparty/glsl-optimizer/tests/vertex/z-NichsHybridLight-ir.txt b/3rdparty/glsl-optimizer/tests/vertex/z-NichsHybridLight-ir.txt new file mode 100644 index 000000000..318bcdc9d --- /dev/null +++ b/3rdparty/glsl-optimizer/tests/vertex/z-NichsHybridLight-ir.txt @@ -0,0 +1,587 @@ +struct Lamp { + vec4 posRange; + vec4 colorImp; + vec4 spotParam; +}; +struct v2f { + vec4 pos; + vec3 hybridDir; + vec3 hybridCol; + vec3 ambient; + vec2 uv; +}; +struct HybridAppData { + vec4 vertex; + vec4 tangent; + vec3 normal; + vec4 texcoord; + vec4 bakedCol; + vec2 bakedDir; +}; +uniform vec3 _WorldSpaceCameraPos; +uniform mat4 _Object2World; +uniform mat4 _World2Object; +uniform vec3 _Tonemap_blackLevel; +uniform vec3 _Tonemap_toeLength; +uniform vec3 _Tonemap_heel; +uniform vec3 _Tonemap_shoulder; +uniform vec3 _Tonemap_colorScale1; +uniform vec3 _Tonemap_colorScale2; +uniform vec3 _HybridSunDir; +uniform vec4 _HybridSunCol; +uniform vec3 GridLightTextureStartCell; +uniform vec3 GridLightTextureCellSize; +uniform sampler2D GridLightTexture; +uniform vec4 IngameGridLimit; +uniform vec4 LightPos[30]; +uniform vec4 LightCol[30]; +uniform vec4 _MainTex_ST; +attribute vec4 TANGENT; +varying vec3 xlv_TEXCOORD0; +varying vec3 xlv_TEXCOORD1; +varying vec3 xlv_COLOR; +varying vec2 xlv_TEXCOORD2; +vec4 xll_tex2Dlod ( + in sampler2D s_1, + in vec4 coord_2 +) +{ + vec4 tmpvar_3; + tmpvar_3 = texture2DLod (s_1, coord_2.xy, coord_2.w); + return tmpvar_3; +} + +mat3 xll_transpose_mf3x3 ( + in mat3 m_4 +) +{ + mat3 tmpvar_5; + float tmpvar_6; + tmpvar_6 = m_4[0][0]; + tmpvar_5[0].x = tmpvar_6; + float tmpvar_7; + tmpvar_7 = m_4[1][0]; + tmpvar_5[0].y = tmpvar_7; + float tmpvar_8; + tmpvar_8 = m_4[2][0]; + tmpvar_5[0].z = tmpvar_8; + float tmpvar_9; + tmpvar_9 = m_4[0][1]; + tmpvar_5[1].x = tmpvar_9; + float tmpvar_10; + tmpvar_10 = m_4[1][1]; + tmpvar_5[1].y = tmpvar_10; + float tmpvar_11; + tmpvar_11 = m_4[2][1]; + tmpvar_5[1].z = tmpvar_11; + float tmpvar_12; + tmpvar_12 = m_4[0][2]; + tmpvar_5[2].x = tmpvar_12; + float tmpvar_13; + tmpvar_13 = m_4[1][2]; + tmpvar_5[2].y = tmpvar_13; + float tmpvar_14; + tmpvar_14 = m_4[2][2]; + tmpvar_5[2].z = tmpvar_14; + return tmpvar_5; +} + +mat3 xll_constructMat3_mf4x4 ( + in mat4 m_15 +) +{ + vec3 tmpvar_16; + tmpvar_16 = m_15[0].xyz; + vec3 tmpvar_17; + tmpvar_17 = m_15[1].xyz; + vec3 tmpvar_18; + tmpvar_18 = m_15[2].xyz; + mat3 tmpvar_19; + vec3 tmpvar_20; + tmpvar_20 = tmpvar_16; + tmpvar_19[0] = tmpvar_20; + vec3 tmpvar_21; + tmpvar_21 = tmpvar_17; + tmpvar_19[1] = tmpvar_21; + vec3 tmpvar_22; + tmpvar_22 = tmpvar_18; + tmpvar_19[2] = tmpvar_22; + return tmpvar_19; +} + +float Luma ( + in vec3 c_23 +) +{ + float tmpvar_24; + tmpvar_24 = dot (c_23, vec3(0.22, 0.707, 0.071)); + return tmpvar_24; +} + +void CalcDynamicLight ( + in vec3 worldVert_25, + in vec3 worldNorm_26, + in Lamp lamp_27[4], + inout vec3 hybridDir_28, + inout vec3 hybridCol_29 +) +{ + int j_30; + float w_31; + int i_32; + vec4 atten_33; + float wAgg_34; + vec3 lAgg_35; + vec3 tmpvar_36; + tmpvar_36 = vec3(0.0, 0.0, 0.0); + lAgg_35 = tmpvar_36; + float tmpvar_37; + tmpvar_37 = 0.001; + wAgg_34 = tmpvar_37; + int tmpvar_38; + tmpvar_38 = 0; + i_32 = tmpvar_38; + while (true) { + float weight_39; + float nDotL_40; + vec3 lightToVertNorm_41; + float lengthSq_42; + vec3 lightToVert_43; + if (!((i_32 < 4))) { + break; + }; + vec3 tmpvar_44; + tmpvar_44 = (lamp_27[i_32].posRange.xyz - worldVert_25); + lightToVert_43 = tmpvar_44; + float tmpvar_45; + tmpvar_45 = dot (lightToVert_43, lightToVert_43); + float tmpvar_46; + tmpvar_46 = tmpvar_45; + lengthSq_42 = tmpvar_46; + float tmpvar_47; + tmpvar_47 = inversesqrt (lengthSq_42); + vec3 tmpvar_48; + tmpvar_48 = (lightToVert_43 * tmpvar_47); + lightToVertNorm_41 = tmpvar_48; + float tmpvar_49; + tmpvar_49 = max ((1.0 - ((lengthSq_42 * lamp_27[i_32].posRange.w) * 0.8)), 0.0); + vec4 tmpvar_50; + tmpvar_50 = atten_33; tmpvar_50[i_32] = tmpvar_49; + atten_33 = tmpvar_50; + vec4 tmpvar_51; + tmpvar_51 = atten_33; tmpvar_51[i_32] = (atten_33[i_32] * atten_33[i_32]); + atten_33 = tmpvar_51; + float tmpvar_52; + tmpvar_52 = dot (lightToVertNorm_41, worldNorm_26); + float tmpvar_53; + tmpvar_53 = max (tmpvar_52, 0.05); + float tmpvar_54; + tmpvar_54 = tmpvar_53; + nDotL_40 = tmpvar_54; + float tmpvar_55; + tmpvar_55 = ((atten_33[i_32] * lamp_27[i_32].colorImp.w) * nDotL_40); + weight_39 = tmpvar_55; + vec3 tmpvar_56; + tmpvar_56 = (lAgg_35 + (weight_39 * lightToVertNorm_41)); + lAgg_35 = tmpvar_56; + float tmpvar_57; + tmpvar_57 = (wAgg_34 + weight_39); + wAgg_34 = tmpvar_57; + int _post_incdec_tmp_58; + _post_incdec_tmp_58 = i_32; + int tmpvar_59; + tmpvar_59 = (i_32 + 1); + i_32 = tmpvar_59; + }; + float tmpvar_60; + tmpvar_60 = Luma (hybridCol_29); + float tmpvar_61; + tmpvar_61 = (tmpvar_60 * 2.0); + w_31 = tmpvar_61; + vec3 tmpvar_62; + tmpvar_62 = (lAgg_35 + (hybridDir_28 * w_31)); + lAgg_35 = tmpvar_62; + float tmpvar_63; + tmpvar_63 = (wAgg_34 + w_31); + wAgg_34 = tmpvar_63; + vec3 tmpvar_64; + tmpvar_64 = (lAgg_35 / wAgg_34); + hybridDir_28 = tmpvar_64; + int tmpvar_65; + tmpvar_65 = 0; + j_30 = tmpvar_65; + while (true) { + vec3 lightToVertNorm_1_66; + if (!((j_30 < 4))) { + break; + }; + vec3 tmpvar_67; + tmpvar_67 = normalize ((lamp_27[j_30].posRange.xyz - worldVert_25)); + vec3 tmpvar_68; + tmpvar_68 = tmpvar_67; + lightToVertNorm_1_66 = tmpvar_68; + vec3 tmpvar_69; + tmpvar_69 = (hybridCol_29 + (lamp_27[j_30].colorImp.xyz * atten_33[j_30])); + hybridCol_29 = tmpvar_69; + int _post_incdec_tmp_70; + _post_incdec_tmp_70 = j_30; + int tmpvar_71; + tmpvar_71 = (j_30 + 1); + j_30 = tmpvar_71; + }; +} + +ivec4 GetLightIdxFromGrid ( + in vec3 worldVert_72 +) +{ + vec2 pos_73; + vec2 tmpvar_74; + tmpvar_74 = ((worldVert_72 - GridLightTextureStartCell) * GridLightTextureCellSize).xz; + pos_73 = tmpvar_74; + vec2 tmpvar_75; + tmpvar_75 = clamp (pos_73, IngameGridLimit.xy, IngameGridLimit.zw); + vec2 tmpvar_76; + tmpvar_76 = tmpvar_75; + pos_73 = tmpvar_76; + vec4 tmpvar_77; + tmpvar_77.zw = vec2(0.0, 0.0); + tmpvar_77.x = pos_73.x; + tmpvar_77.y = pos_73.y; + vec4 tmpvar_78; + tmpvar_78 = xll_tex2Dlod (GridLightTexture, tmpvar_77); + ivec4 tmpvar_79; + tmpvar_79 = ivec4((tmpvar_78 * 255.0)).xyzw; + return tmpvar_79; +} + +vec3 DecodeBakedCol ( + in vec3 bakedCol_80 +) +{ + vec3 c_81; + vec3 tmpvar_82; + tmpvar_82 = (bakedCol_80 * 3.0); + c_81 = tmpvar_82; + return (c_81 * c_81); +} + +vec3 DecodeNormal ( + in vec2 enc_83 +) +{ + float l_84; + vec4 nn_85; + vec4 tmpvar_86; + tmpvar_86 = ((enc_83.xyxy * vec4(2.0, 2.0, 0.0, 0.0)) + vec4(-1.0, -1.0, 1.01, -1.0)); + nn_85 = tmpvar_86; + float tmpvar_87; + tmpvar_87 = dot (nn_85.xyz, -(nn_85.xyw)); + float tmpvar_88; + tmpvar_88 = tmpvar_87; + l_84 = tmpvar_88; + float tmpvar_89; + tmpvar_89 = l_84; + nn_85.z = vec3(tmpvar_89).z; + float tmpvar_90; + tmpvar_90 = sqrt (l_84); + vec2 tmpvar_91; + tmpvar_91 = (nn_85.xy * tmpvar_90); + nn_85.xy = tmpvar_91.xy.xy; + return ((nn_85.xyz * 2.0) + vec3(0.0, 0.0, -1.0)); +} + +void DecodeBaking ( + in vec4 bakedColor_92, + in vec2 bakedDir_93, + out vec3 hybridCol_94, + out vec3 hybridDir_95 +) +{ + vec3 tmpvar_96; + tmpvar_96 = DecodeNormal (bakedDir_93); + vec3 tmpvar_97; + tmpvar_97 = (tmpvar_96 * (bakedColor_92.w * 2.0)); + hybridDir_95 = tmpvar_97; + vec3 tmpvar_98; + tmpvar_98 = DecodeBakedCol (bakedColor_92.xyz); + vec3 tmpvar_99; + tmpvar_99 = tmpvar_98; + hybridCol_94 = tmpvar_99; +} + +void LoadBakedLight ( + in vec3 worldVert_100, + in vec3 worldNorm_101, + in vec4 bakedColor_102, + in vec2 bakedDir_103, + out vec3 hybridCol_104, + out vec3 hybridDir_105 +) +{ + DecodeBaking (bakedColor_102, bakedDir_103, hybridCol_104, hybridDir_105); +} + +void ReadLightArray3 ( + in ivec4 lightIdx_106, + out Lamp l0_107, + out Lamp l1_108, + out Lamp l2_109, + out Lamp l3_110 +) +{ + vec4 tmpvar_111; + tmpvar_111 = LightPos[lightIdx_106.x]; + l0_107.posRange = tmpvar_111; + vec4 tmpvar_112; + tmpvar_112 = LightCol[lightIdx_106.x]; + l0_107.colorImp = tmpvar_112; + vec4 tmpvar_113; + tmpvar_113 = vec4(0.0, 0.0, 0.0, 1.0); + l0_107.spotParam = tmpvar_113; + vec4 tmpvar_114; + tmpvar_114 = LightPos[lightIdx_106.y]; + l1_108.posRange = tmpvar_114; + vec4 tmpvar_115; + tmpvar_115 = LightCol[lightIdx_106.y]; + l1_108.colorImp = tmpvar_115; + vec4 tmpvar_116; + tmpvar_116 = vec4(0.0, 0.0, 0.0, 1.0); + l1_108.spotParam = tmpvar_116; + vec4 tmpvar_117; + tmpvar_117 = LightPos[lightIdx_106.z]; + l2_109.posRange = tmpvar_117; + vec4 tmpvar_118; + tmpvar_118 = LightCol[lightIdx_106.z]; + l2_109.colorImp = tmpvar_118; + vec4 tmpvar_119; + tmpvar_119 = vec4(0.0, 0.0, 0.0, 1.0); + l2_109.spotParam = tmpvar_119; + vec4 tmpvar_120; + tmpvar_120 = LightPos[lightIdx_106.w]; + l3_110.posRange = tmpvar_120; + vec4 tmpvar_121; + tmpvar_121 = LightCol[lightIdx_106.w]; + l3_110.colorImp = tmpvar_121; + vec4 tmpvar_122; + tmpvar_122 = vec4(0.0, 0.0, 0.0, 1.0); + l3_110.spotParam = tmpvar_122; +} + +vec3 JimTonemapping ( + in vec3 x_123 +) +{ + vec3 tmpvar_124; + tmpvar_124 = max ((x_123 - (_Tonemap_blackLevel * 0.25)), vec3(0.0, 0.0, 0.0)); + vec3 tmpvar_125; + tmpvar_125 = tmpvar_124; + x_123 = tmpvar_125; + vec3 tmpvar_126; + tmpvar_126 = ((x_123 * ( + (_Tonemap_colorScale1 * x_123) + + _Tonemap_heel)) / ((x_123 * + ((_Tonemap_colorScale2 * x_123) + _Tonemap_shoulder) + ) + _Tonemap_toeLength)); + x_123 = tmpvar_126; + return x_123; +} + +vec3 NichTonemap ( + in vec3 x_127 +) +{ + float tonemapped_128; + vec3 norm_129; + float total_130; + vec3 tmpvar_131; + tmpvar_131 = JimTonemapping ((x_127 * 0.25)); + return (tmpvar_131 * 4.0); + float tmpvar_132; + tmpvar_132 = length (x_127); + float tmpvar_133; + tmpvar_133 = (tmpvar_132 + 0.0001); + total_130 = tmpvar_133; + vec3 tmpvar_134; + tmpvar_134 = (x_127 / total_130); + norm_129 = tmpvar_134; + vec3 tmpvar_135; + tmpvar_135.xz = vec2(0.0, 0.0); + tmpvar_135.y = (total_130 * 0.25); + vec3 tmpvar_136; + tmpvar_136 = JimTonemapping (tmpvar_135); + float tmpvar_137; + tmpvar_137 = (tmpvar_136.y * 4.0); + tonemapped_128 = tmpvar_137; + return (norm_129 * tonemapped_128); +} + +vec3 VertexTonemap ( + in vec3 x_138 +) +{ + vec3 tmpvar_139; + tmpvar_139 = NichTonemap (x_138); + return tmpvar_139; +} + +void DoCalcHybridLight2 ( + in vec3 worldVert_140, + in vec3 worldNorm_141, + out vec3 hybridDir_142, + out vec3 hybridCol_143, + out vec3 ambient_144, + in vec4 bakedColor_145, + in vec2 bakedDir_146 +) +{ + Lamp l_147[4]; + ivec4 lightIdx_148; + LoadBakedLight (worldVert_140, worldNorm_141, bakedColor_145, bakedDir_146, hybridCol_143, hybridDir_142); + ivec4 tmpvar_149; + tmpvar_149 = GetLightIdxFromGrid (worldVert_140); + ivec4 tmpvar_150; + tmpvar_150 = tmpvar_149; + lightIdx_148 = tmpvar_150; + ReadLightArray3 (lightIdx_148, l_147[0], l_147[1], l_147[2], l_147[3]); + CalcDynamicLight (worldVert_140, worldNorm_141, l_147, hybridDir_142, hybridCol_143); + vec3 tmpvar_151; + tmpvar_151 = VertexTonemap (hybridCol_143); + vec3 tmpvar_152; + tmpvar_152 = tmpvar_151; + hybridCol_143 = tmpvar_152; + float tmpvar_153; + tmpvar_153 = dot (worldNorm_141, _HybridSunDir); + vec3 tmpvar_154; + tmpvar_154 = VertexTonemap ((_HybridSunCol.xyz * tmpvar_153)); + vec3 tmpvar_155; + tmpvar_155 = tmpvar_154; + ambient_144 = tmpvar_155; +} + +v2f vert ( + in HybridAppData v_156 +) +{ + mat3 rotation_157; + vec3 binormal_158; + vec3 eyeToVert_159; + vec3 worldNorm_160; + vec3 worldVert_161; + v2f o_162; + vec4 tmpvar_163; + tmpvar_163 = (gl_ModelViewProjectionMatrix * v_156.vertex); + o_162.pos = tmpvar_163; + vec2 tmpvar_164; + tmpvar_164 = ((v_156.texcoord.xy * _MainTex_ST.xy) + _MainTex_ST.zw); + o_162.uv = tmpvar_164; + vec3 tmpvar_165; + tmpvar_165 = (_Object2World * v_156.vertex).xyz; + worldVert_161 = tmpvar_165; + mat3 tmpvar_166; + tmpvar_166 = xll_constructMat3_mf4x4 (_Object2World); + vec3 tmpvar_167; + tmpvar_167 = normalize ((tmpvar_166 * v_156.normal.xyz)); + vec3 tmpvar_168; + tmpvar_168 = tmpvar_167; + worldNorm_160 = tmpvar_168; + DoCalcHybridLight2 (worldVert_161, worldNorm_160, o_162.hybridDir, o_162.hybridCol, o_162.ambient, v_156.bakedCol, v_156.bakedDir); + vec3 tmpvar_169; + tmpvar_169 = normalize ((_WorldSpaceCameraPos.xyz - worldVert_161)); + vec3 tmpvar_170; + tmpvar_170 = tmpvar_169; + eyeToVert_159 = tmpvar_170; + vec3 tmpvar_171; + tmpvar_171 = cross (v_156.normal, v_156.tangent.xyz); + vec3 tmpvar_172; + tmpvar_172 = (tmpvar_171 * v_156.tangent.w); + binormal_158 = tmpvar_172; + mat3 tmpvar_173; + vec3 tmpvar_174; + tmpvar_174 = v_156.tangent.xyz; + tmpvar_173[0] = tmpvar_174; + vec3 tmpvar_175; + tmpvar_175 = binormal_158; + tmpvar_173[1] = tmpvar_175; + vec3 tmpvar_176; + tmpvar_176 = v_156.normal; + tmpvar_173[2] = tmpvar_176; + mat3 tmpvar_177; + tmpvar_177 = xll_transpose_mf3x3 (tmpvar_173); + mat3 tmpvar_178; + tmpvar_178 = tmpvar_177; + rotation_157 = tmpvar_178; + mat3 tmpvar_179; + tmpvar_179 = xll_constructMat3_mf4x4 (_World2Object); + vec3 tmpvar_180; + tmpvar_180 = (rotation_157 * (tmpvar_179 * o_162.hybridDir)); + o_162.hybridDir = tmpvar_180; + return o_162; +} + +void main () +{ + HybridAppData xlt_v_181; + v2f xl_retval_182; + vec4 tmpvar_183; + tmpvar_183 = gl_Vertex.xyzw; + vec4 tmpvar_184; + tmpvar_184 = tmpvar_183; + xlt_v_181.vertex = tmpvar_184; + vec4 tmpvar_185; + tmpvar_185 = TANGENT.xyzw; + vec4 tmpvar_186; + tmpvar_186 = tmpvar_185; + xlt_v_181.tangent = tmpvar_186; + vec3 tmpvar_187; + tmpvar_187 = gl_Normal.xyz; + vec3 tmpvar_188; + tmpvar_188 = tmpvar_187; + xlt_v_181.normal = tmpvar_188; + vec4 tmpvar_189; + tmpvar_189 = gl_MultiTexCoord0.xyzw; + vec4 tmpvar_190; + tmpvar_190 = tmpvar_189; + xlt_v_181.texcoord = tmpvar_190; + vec4 tmpvar_191; + tmpvar_191 = gl_Color.xyzw; + vec4 tmpvar_192; + tmpvar_192 = tmpvar_191; + xlt_v_181.bakedCol = tmpvar_192; + vec2 tmpvar_193; + tmpvar_193 = gl_MultiTexCoord1.xy; + vec2 tmpvar_194; + tmpvar_194 = tmpvar_193; + xlt_v_181.bakedDir = tmpvar_194; + v2f tmpvar_195; + tmpvar_195 = vert (xlt_v_181); + v2f tmpvar_196; + tmpvar_196 = tmpvar_195; + xl_retval_182 = tmpvar_196; + vec4 tmpvar_197; + tmpvar_197 = xl_retval_182.pos.xyzw; + vec4 tmpvar_198; + tmpvar_198 = tmpvar_197; + gl_Position = tmpvar_198; + vec3 tmpvar_199; + tmpvar_199 = xl_retval_182.hybridDir.xyz; + vec3 tmpvar_200; + tmpvar_200 = tmpvar_199; + xlv_TEXCOORD0 = tmpvar_200; + vec3 tmpvar_201; + tmpvar_201 = xl_retval_182.hybridCol.xyz; + vec3 tmpvar_202; + tmpvar_202 = tmpvar_201; + xlv_TEXCOORD1 = tmpvar_202; + vec3 tmpvar_203; + tmpvar_203 = xl_retval_182.ambient.xyz; + vec3 tmpvar_204; + tmpvar_204 = tmpvar_203; + xlv_COLOR = tmpvar_204; + vec2 tmpvar_205; + tmpvar_205 = xl_retval_182.uv.xy; + vec2 tmpvar_206; + tmpvar_206 = tmpvar_205; + xlv_TEXCOORD2 = tmpvar_206; +} + diff --git a/3rdparty/glsl-optimizer/tests/vertex/z-NichsHybridLight-out.txt b/3rdparty/glsl-optimizer/tests/vertex/z-NichsHybridLight-out.txt new file mode 100644 index 000000000..3743b7dea --- /dev/null +++ b/3rdparty/glsl-optimizer/tests/vertex/z-NichsHybridLight-out.txt @@ -0,0 +1,200 @@ +uniform mat4 _Object2World; +uniform mat4 _World2Object; +uniform vec3 _Tonemap_blackLevel; +uniform vec3 _Tonemap_toeLength; +uniform vec3 _Tonemap_heel; +uniform vec3 _Tonemap_shoulder; +uniform vec3 _Tonemap_colorScale1; +uniform vec3 _Tonemap_colorScale2; +uniform vec3 _HybridSunDir; +uniform vec4 _HybridSunCol; +uniform vec3 GridLightTextureStartCell; +uniform vec3 GridLightTextureCellSize; +uniform sampler2D GridLightTexture; +uniform vec4 IngameGridLimit; +uniform vec4 LightPos[30]; +uniform vec4 LightCol[30]; +uniform vec4 _MainTex_ST; +attribute vec4 TANGENT; +varying vec3 xlv_TEXCOORD0; +varying vec3 xlv_TEXCOORD1; +varying vec3 xlv_COLOR; +varying vec2 xlv_TEXCOORD2; +void main () +{ + vec3 tmpvar_1; + tmpvar_1 = (_Object2World * gl_Vertex).xyz; + mat3 tmpvar_2; + tmpvar_2[0] = _Object2World[0].xyz; + tmpvar_2[1] = _Object2World[1].xyz; + tmpvar_2[2] = _Object2World[2].xyz; + vec3 tmpvar_3; + tmpvar_3 = normalize((tmpvar_2 * gl_Normal)); + vec4 nn_4; + vec4 tmpvar_5; + tmpvar_5 = ((gl_MultiTexCoord1.xyxy * vec4(2.0, 2.0, 0.0, 0.0)) + vec4(-1.0, -1.0, 1.01, -1.0)); + nn_4.w = tmpvar_5.w; + float tmpvar_6; + tmpvar_6 = dot (tmpvar_5.xyz, -(tmpvar_5.xyw)); + nn_4.z = tmpvar_6; + nn_4.xy = (tmpvar_5.xy * sqrt(tmpvar_6)); + vec3 tmpvar_7; + vec3 tmpvar_8; + tmpvar_8 = (gl_Color.xyz * 3.0); + tmpvar_7 = (tmpvar_8 * tmpvar_8); + ivec4 tmpvar_9; + tmpvar_9 = ivec4((texture2DLod (GridLightTexture, clamp ( + ((tmpvar_1 - GridLightTextureStartCell) * GridLightTextureCellSize) + .xz, IngameGridLimit.xy, IngameGridLimit.zw), 0.0) * 255.0)); + vec4 tmpvar_10; + vec4 tmpvar_11; + vec4 tmpvar_12; + vec4 tmpvar_13; + vec4 tmpvar_14; + vec4 tmpvar_15; + vec4 tmpvar_16; + vec4 tmpvar_17; + tmpvar_10 = LightPos[tmpvar_9.x]; + tmpvar_11 = LightCol[tmpvar_9.x]; + tmpvar_12 = LightPos[tmpvar_9.y]; + tmpvar_13 = LightCol[tmpvar_9.y]; + tmpvar_14 = LightPos[tmpvar_9.z]; + tmpvar_15 = LightCol[tmpvar_9.z]; + tmpvar_16 = LightPos[tmpvar_9.w]; + tmpvar_17 = LightCol[tmpvar_9.w]; + vec3 hybridCol_18; + vec4 atten_19; + float wAgg_20; + vec3 lAgg_21; + vec3 tmpvar_22; + tmpvar_22 = (tmpvar_10.xyz - tmpvar_1); + float tmpvar_23; + tmpvar_23 = dot (tmpvar_22, tmpvar_22); + vec3 tmpvar_24; + tmpvar_24 = (tmpvar_22 * inversesqrt(tmpvar_23)); + vec4 tmpvar_25; + tmpvar_25 = atten_19; tmpvar_25.x = max ((1.0 - ( + (tmpvar_23 * tmpvar_10.w) + * 0.8)), 0.0); + vec4 tmpvar_26; + tmpvar_26 = tmpvar_25; tmpvar_26.x = (tmpvar_25.x * tmpvar_25.x); + float tmpvar_27; + tmpvar_27 = ((tmpvar_26.x * tmpvar_11.w) * max (dot (tmpvar_24, tmpvar_3), 0.05)); + lAgg_21 = (tmpvar_27 * tmpvar_24); + wAgg_20 = (0.001 + tmpvar_27); + vec3 tmpvar_28; + tmpvar_28 = (tmpvar_12.xyz - tmpvar_1); + float tmpvar_29; + tmpvar_29 = dot (tmpvar_28, tmpvar_28); + vec3 tmpvar_30; + tmpvar_30 = (tmpvar_28 * inversesqrt(tmpvar_29)); + vec4 tmpvar_31; + tmpvar_31 = tmpvar_26; tmpvar_31.y = max ((1.0 - ( + (tmpvar_29 * tmpvar_12.w) + * 0.8)), 0.0); + vec4 tmpvar_32; + tmpvar_32 = tmpvar_31; tmpvar_32.y = (tmpvar_31.y * tmpvar_31.y); + float tmpvar_33; + tmpvar_33 = ((tmpvar_32.y * tmpvar_13.w) * max (dot (tmpvar_30, tmpvar_3), 0.05)); + lAgg_21 = (lAgg_21 + (tmpvar_33 * tmpvar_30)); + wAgg_20 = (wAgg_20 + tmpvar_33); + vec3 tmpvar_34; + tmpvar_34 = (tmpvar_14.xyz - tmpvar_1); + float tmpvar_35; + tmpvar_35 = dot (tmpvar_34, tmpvar_34); + vec3 tmpvar_36; + tmpvar_36 = (tmpvar_34 * inversesqrt(tmpvar_35)); + vec4 tmpvar_37; + tmpvar_37 = tmpvar_32; tmpvar_37.z = max ((1.0 - ( + (tmpvar_35 * tmpvar_14.w) + * 0.8)), 0.0); + vec4 tmpvar_38; + tmpvar_38 = tmpvar_37; tmpvar_38.z = (tmpvar_37.z * tmpvar_37.z); + float tmpvar_39; + tmpvar_39 = ((tmpvar_38.z * tmpvar_15.w) * max (dot (tmpvar_36, tmpvar_3), 0.05)); + lAgg_21 = (lAgg_21 + (tmpvar_39 * tmpvar_36)); + wAgg_20 = (wAgg_20 + tmpvar_39); + vec3 tmpvar_40; + tmpvar_40 = (tmpvar_16.xyz - tmpvar_1); + float tmpvar_41; + tmpvar_41 = dot (tmpvar_40, tmpvar_40); + vec3 tmpvar_42; + tmpvar_42 = (tmpvar_40 * inversesqrt(tmpvar_41)); + vec4 tmpvar_43; + tmpvar_43 = tmpvar_38; tmpvar_43.w = max ((1.0 - ( + (tmpvar_41 * tmpvar_16.w) + * 0.8)), 0.0); + vec4 tmpvar_44; + tmpvar_44 = tmpvar_43; tmpvar_44.w = (tmpvar_43.w * tmpvar_43.w); + atten_19 = tmpvar_44; + float tmpvar_45; + tmpvar_45 = ((tmpvar_44.w * tmpvar_17.w) * max (dot (tmpvar_42, tmpvar_3), 0.05)); + lAgg_21 = (lAgg_21 + (tmpvar_45 * tmpvar_42)); + wAgg_20 = (wAgg_20 + tmpvar_45); + float tmpvar_46; + tmpvar_46 = (dot (tmpvar_7, vec3(0.22, 0.707, 0.071)) * 2.0); + vec3 tmpvar_47; + tmpvar_47 = (lAgg_21 + (( + ((nn_4.xyz * 2.0) + vec3(0.0, 0.0, -1.0)) + * + (gl_Color.w * 2.0) + ) * tmpvar_46)); + lAgg_21 = tmpvar_47; + float tmpvar_48; + tmpvar_48 = (wAgg_20 + tmpvar_46); + wAgg_20 = tmpvar_48; + hybridCol_18 = (tmpvar_7 + (tmpvar_11.xyz * tmpvar_44.x)); + hybridCol_18 = (hybridCol_18 + (tmpvar_13.xyz * tmpvar_44.y)); + hybridCol_18 = (hybridCol_18 + (tmpvar_15.xyz * tmpvar_44.z)); + hybridCol_18 = (hybridCol_18 + (tmpvar_17.xyz * tmpvar_44.w)); + vec3 x_49; + x_49 = (hybridCol_18 * 0.25); + vec3 tmpvar_50; + vec3 cse_51; + cse_51 = (_Tonemap_blackLevel * 0.25); + tmpvar_50 = max ((x_49 - cse_51), vec3(0.0, 0.0, 0.0)); + vec3 tmpvar_52; + tmpvar_52 = ((tmpvar_50 * ( + (_Tonemap_colorScale1 * tmpvar_50) + + _Tonemap_heel)) / ((tmpvar_50 * + ((_Tonemap_colorScale2 * tmpvar_50) + _Tonemap_shoulder) + ) + _Tonemap_toeLength)); + x_49 = tmpvar_52; + vec3 x_53; + x_53 = ((_HybridSunCol.xyz * dot (tmpvar_3, _HybridSunDir)) * 0.25); + vec3 tmpvar_54; + tmpvar_54 = max ((x_53 - cse_51), vec3(0.0, 0.0, 0.0)); + vec3 tmpvar_55; + tmpvar_55 = ((tmpvar_54 * ( + (_Tonemap_colorScale1 * tmpvar_54) + + _Tonemap_heel)) / ((tmpvar_54 * + ((_Tonemap_colorScale2 * tmpvar_54) + _Tonemap_shoulder) + ) + _Tonemap_toeLength)); + x_53 = tmpvar_55; + vec3 tmpvar_56; + vec3 tmpvar_57; + tmpvar_56 = TANGENT.xyz; + tmpvar_57 = (((gl_Normal.yzx * TANGENT.zxy) - (gl_Normal.zxy * TANGENT.yzx)) * TANGENT.w); + mat3 tmpvar_58; + tmpvar_58[0].x = tmpvar_56.x; + tmpvar_58[0].y = tmpvar_57.x; + tmpvar_58[0].z = gl_Normal.x; + tmpvar_58[1].x = tmpvar_56.y; + tmpvar_58[1].y = tmpvar_57.y; + tmpvar_58[1].z = gl_Normal.y; + tmpvar_58[2].x = tmpvar_56.z; + tmpvar_58[2].y = tmpvar_57.z; + tmpvar_58[2].z = gl_Normal.z; + mat3 tmpvar_59; + tmpvar_59[0] = _World2Object[0].xyz; + tmpvar_59[1] = _World2Object[1].xyz; + tmpvar_59[2] = _World2Object[2].xyz; + gl_Position = (gl_ModelViewProjectionMatrix * gl_Vertex); + xlv_TEXCOORD0 = (tmpvar_58 * (tmpvar_59 * (tmpvar_47 / tmpvar_48))); + xlv_TEXCOORD1 = (tmpvar_52 * 4.0); + xlv_COLOR = (tmpvar_55 * 4.0); + xlv_TEXCOORD2 = ((gl_MultiTexCoord0.xy * _MainTex_ST.xy) + _MainTex_ST.zw); +} + + +// inputs: 6, stats: 141 alu 1 tex 0 flow diff --git a/examples/02-metaballs/fs_metaballs.bin.h b/examples/02-metaballs/fs_metaballs.bin.h index 985ac02fb..41f85426c 100644 --- a/examples/02-metaballs/fs_metaballs.bin.h +++ b/examples/02-metaballs/fs_metaballs.bin.h @@ -1,15 +1,17 @@ -static const uint8_t fs_metaballs_glsl[363] = +static const uint8_t fs_metaballs_glsl[395] = { 0x46, 0x53, 0x48, 0x01, 0x03, 0x2c, 0xf5, 0x3f, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // FSH..,.?varying - 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v - 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x6e, 0x6f, // arying vec3 v_no + 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, // mediump vec4 v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x6d, // olor0;.varying m + 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x6e, 0x6f, // ediump vec3 v_no 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, // rmal;.void main - 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, // ().{. float tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_1;. tmpvar_ - 0x31, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, // 1 = dot (normali - 0x7a, 0x65, 0x28, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x29, 0x2c, 0x20, 0x76, 0x65, // ze(v_normal), ve - 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x2d, 0x31, 0x2e, // c3(0.0, 0.0, -1. - 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, // 0));. vec4 tmpv + 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, // ().{. mediump f + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, // loat tmpvar_1;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x74, 0x20, // tmpvar_1 = dot + 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x76, 0x5f, 0x6e, 0x6f, 0x72, // (normalize(v_nor + 0x6d, 0x61, 0x6c, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, // mal), vec3(0.0, + 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6d, // 0.0, -1.0));. m + 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, // ediump vec4 tmpv 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // ar_2;. tmpvar_2 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // .w = 1.0;. tmpv 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x20, 0x28, // ar_2.xyz = pow ( diff --git a/examples/02-metaballs/vs_metaballs.bin.h b/examples/02-metaballs/vs_metaballs.bin.h index 8a7833113..481d165d8 100644 --- a/examples/02-metaballs/vs_metaballs.bin.h +++ b/examples/02-metaballs/vs_metaballs.bin.h @@ -1,25 +1,29 @@ -static const uint8_t vs_metaballs_glsl[447] = +static const uint8_t vs_metaballs_glsl[511] = { 0x56, 0x53, 0x48, 0x01, 0x03, 0x2c, 0xf5, 0x3f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // VSH..,.?attribut - 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // e vec4 a_color0; - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // .attribute vec3 + 0x65, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, // e mediump vec4 a + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // _color0;.attribu + 0x74, 0x65, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // te mediump vec3 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, // a_normal;.attrib - 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, // ute vec3 a_posit - 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, // ion;.varying vec + 0x75, 0x74, 0x65, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, // ute mediump vec3 + 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x76, 0x61, 0x72, // a_position;.var + 0x79, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, // ying mediump vec 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // 4 v_color0;.vary - 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, // ing vec3 v_norma - 0x6c, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, // l;.uniform mat4 - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // u_model[32];.uni - 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // form mat4 u_mode + 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, // ing mediump vec3 + 0x20, 0x76, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // v_normal;.unifo + 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, // rm mat4 u_model[ + 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x65, 0x64, // 32];.uniform med + 0x69, 0x75, 0x6d, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // iump mat4 u_mode 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, // lViewProj;.void - 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, // main ().{. vec4 - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_1;. tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, // var_1.w = 1.0;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // tmpvar_1.xyz = - 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, // a_position;. gl - 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, // _Position = (u_m - 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, // odelViewProj * t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, // mpvar_1);. vec4 + 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, // main ().{. medi + 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ump vec4 tmpvar_ + 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, // 1;. tmpvar_1.w + 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // = 1.0;. tmpvar_ + 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // 1.xyz = a_positi + 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // on;. gl_Positio + 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, // n = (u_modelView + 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, // Proj * tmpvar_1) + 0x3b, 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ;. mediump vec4 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_2;. tmp 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x20, // var_2.w = 0.0;. 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, // tmpvar_2.xyz = diff --git a/examples/17-drawstress/fs_drawstress.bin.h b/examples/17-drawstress/fs_drawstress.bin.h index c769fce11..fd17e8d43 100644 --- a/examples/17-drawstress/fs_drawstress.bin.h +++ b/examples/17-drawstress/fs_drawstress.bin.h @@ -1,10 +1,11 @@ -static const uint8_t fs_drawstress_glsl[77] = +static const uint8_t fs_drawstress_glsl[85] = { 0x46, 0x53, 0x48, 0x01, 0xa4, 0x8b, 0xef, 0x49, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // FSH....Ivarying - 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v - 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{. - 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, // gl_FragColor = v - 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _color0;.}... + 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, // mediump vec4 v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // olor0;.void main + 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, // ().{. gl_FragC + 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // olor = v_color0; + 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .}... }; static const uint8_t fs_drawstress_dx9[137] = { diff --git a/examples/17-drawstress/vs_drawstress.bin.h b/examples/17-drawstress/vs_drawstress.bin.h index f8f3281a2..ad1fb7a2c 100644 --- a/examples/17-drawstress/vs_drawstress.bin.h +++ b/examples/17-drawstress/vs_drawstress.bin.h @@ -1,22 +1,25 @@ -static const uint8_t vs_drawstress_glsl[267] = +static const uint8_t vs_drawstress_glsl[307] = { 0x56, 0x53, 0x48, 0x01, 0xa4, 0x8b, 0xef, 0x49, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // VSH....Iattribut - 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // e vec4 a_color0; - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // .attribute vec3 + 0x65, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, // e mediump vec4 a + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // _color0;.attribu + 0x74, 0x65, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // te mediump vec3 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // a_position;.vary - 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ing vec4 v_color - 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, // 0;.uniform mat4 + 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ing mediump vec4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // v_color0;.unifo + 0x72, 0x6d, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, // rm mediump mat4 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, // u_modelViewProj; 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, // .void main ().{. - 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, // vec4 tmpvar_1; - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, // . tmpvar_1.w = - 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // 1.0;. tmpvar_1. - 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // xyz = a_position - 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, // ;. gl_Position - 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, // = (u_modelViewPr - 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, // oj * tmpvar_1);. - 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, // v_color0 = a_c - 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // olor0;.}... + 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, // mediump vec4 t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_1;. tmpva + 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, // r_1.w = 1.0;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, // mpvar_1.xyz = a_ + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, // position;. gl_P + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // osition = (u_mod + 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, // elViewProj * tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // var_1);. v_colo + 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, // r0 = a_color0;.} + 0x0a, 0x0a, 0x00, // ... }; static const uint8_t vs_drawstress_dx9[319] = { diff --git a/examples/common/font/fs_font_basic.bin.h b/examples/common/font/fs_font_basic.bin.h index 1cf51d9f6..4255ea45a 100644 --- a/examples/common/font/fs_font_basic.bin.h +++ b/examples/common/font/fs_font_basic.bin.h @@ -1,8 +1,9 @@ -static const uint8_t fs_font_basic_glsl[507] = +static const uint8_t fs_font_basic_glsl[523] = { 0x46, 0x53, 0x48, 0x01, 0x01, 0x83, 0xf2, 0xe1, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // FSH.....varying - 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v - 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, // arying vec4 v_te + 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, // mediump vec4 v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x6d, // olor0;.varying m + 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, // ediump vec4 v_te 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // xcoord0;.uniform 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x75, 0x5f, 0x74, // samplerCube u_t 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, // exColor;.void ma diff --git a/examples/common/font/fs_font_distance_field.bin.h b/examples/common/font/fs_font_distance_field.bin.h index e3a93036b..47d0e0dc1 100644 --- a/examples/common/font/fs_font_distance_field.bin.h +++ b/examples/common/font/fs_font_distance_field.bin.h @@ -1,8 +1,9 @@ -static const uint8_t fs_font_distance_field_glsl[949] = +static const uint8_t fs_font_distance_field_glsl[997] = { 0x46, 0x53, 0x48, 0x01, 0x01, 0x83, 0xf2, 0xe1, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // FSH.....varying - 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v - 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, // arying vec4 v_te + 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, // mediump vec4 v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x6d, // olor0;.varying m + 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, // ediump vec4 v_te 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // xcoord0;.uniform 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x75, 0x5f, 0x74, // samplerCube u_t 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, // exColor;.void ma @@ -23,21 +24,23 @@ static const uint8_t fs_font_distance_field_glsl[949] = 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x3d, // y;. rgba_1[2] = 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x72, // tmpvar_2.x;. r 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // gba_1[3] = tmpva - 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, // r_2.w;. vec3 tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // pvar_4;. tmpvar - 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // _4 = dFdx(v_texc - 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, // oord0.xyz);. ve + 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, // r_2.w;. mediump + 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, // vec3 tmpvar_4;. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x64, 0x46, 0x64, // tmpvar_4 = dFd + 0x78, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, // x(v_texcoord0.xy + 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, // z);. mediump ve 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, // c3 tmpvar_5;. t 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x64, 0x46, 0x64, 0x79, 0x28, 0x76, // mpvar_5 = dFdy(v 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, // _texcoord0.xyz); - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // . float tmpvar_ - 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, // 6;. tmpvar_6 = - 0x28, 0x38, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x28, 0x73, 0x71, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, // (8.0 * (sqrt(. - 0x20, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2c, // dot (tmpvar_4, - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2b, // tmpvar_4). ) + - 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, // sqrt(. dot ( - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // tmpvar_5, tmpvar - 0x5f, 0x35, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // _5). )));. flo + 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // . mediump float + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_6;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x38, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x28, // var_6 = (8.0 * ( + 0x73, 0x71, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, // sqrt(. dot (t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // mpvar_4, tmpvar_ + 0x34, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x0a, 0x20, // 4). ) + sqrt(. + 0x20, 0x20, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, // dot (tmpvar_5 + 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, // , tmpvar_5). )) + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, // );. mediump flo 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, // at edge0_7;. ed 0x67, 0x65, 0x30, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, // ge0_7 = (0.5 - t 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, // mpvar_6);. lowp diff --git a/examples/common/font/fs_font_distance_field_subpixel.bin.h b/examples/common/font/fs_font_distance_field_subpixel.bin.h index 500561fe8..e971be08f 100644 --- a/examples/common/font/fs_font_distance_field_subpixel.bin.h +++ b/examples/common/font/fs_font_distance_field_subpixel.bin.h @@ -1,8 +1,9 @@ -static const uint8_t fs_font_distance_field_subpixel_glsl[1241] = +static const uint8_t fs_font_distance_field_subpixel_glsl[1297] = { 0x46, 0x53, 0x48, 0x01, 0x01, 0x83, 0xf2, 0xe1, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // FSH.....varying - 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v - 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, // arying vec4 v_te + 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, // mediump vec4 v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x6d, // olor0;.varying m + 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, // ediump vec4 v_te 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // xcoord0;.uniform 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x75, 0x5f, 0x74, // samplerCube u_t 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, // exColor;.void ma @@ -10,35 +11,37 @@ static const uint8_t fs_font_distance_field_subpixel_glsl[1241] = 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // pvar_1;. tmpvar 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, // _1 = int(((v_tex 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x20, // coord0.w * 4.0) - 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // + 0.5));. vec3 - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // tmpvar_2;. tmpv - 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x64, 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, 0x74, 0x65, // ar_2 = dFdx(v_te - 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, // xcoord0.xyz);. + 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, // + 0.5));. mediu + 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // mp vec3 tmpvar_2 + 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x64, // ;. tmpvar_2 = d + 0x46, 0x64, 0x78, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, // Fdx(v_texcoord0. + 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, // xyz);. mediump 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, // vec3 tmpvar_3;. 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x64, 0x46, 0x64, 0x79, // tmpvar_3 = dFdy 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, // (v_texcoord0.xyz - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // );. vec3 tmpvar - 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, // _4;. tmpvar_4 = - 0x20, 0x28, 0x30, 0x2e, 0x31, 0x36, 0x36, 0x36, 0x36, 0x37, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, // (0.166667 * tmp - 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, // var_2);. lowp f - 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, // loat tmpvar_5;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, // tmpvar_5 = text - 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x75, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // ureCube (u_texCo - 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // lor, (v_texcoord - 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, // 0.xyz - tmpvar_4 - 0x29, 0x29, 0x2e, 0x7a, 0x79, 0x78, 0x77, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // )).zyxw[tmpvar_1 - 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, // ];. lowp float - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // tmpvar_6;. tmpv - 0x61, 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, // ar_6 = textureCu - 0x62, 0x65, 0x20, 0x28, 0x75, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, // be (u_texColor, - 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, // (v_texcoord0.xyz - 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x29, 0x2e, 0x7a, 0x79, // + tmpvar_4)).zy - 0x78, 0x77, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x5d, 0x3b, 0x0a, 0x20, 0x20, // xw[tmpvar_1];. - 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // lowp float tmpva - 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, // r_7;. tmpvar_7 - 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // = (0.5 * (tmpvar - 0x5f, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x29, 0x3b, // _5 + tmpvar_6)); - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // . float tmpvar_ + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, // );. mediump vec + 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // 3 tmpvar_4;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x31, 0x36, 0x36, 0x36, // pvar_4 = (0.1666 + 0x36, 0x37, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x3b, 0x0a, // 67 * tmpvar_2);. + 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, // lowp float tmp + 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_5;. tmpvar_ + 0x35, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, // 5 = textureCube + 0x28, 0x75, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x76, 0x5f, // (u_texColor, (v_ + 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, // texcoord0.xyz - + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x29, 0x2e, 0x7a, 0x79, 0x78, 0x77, 0x5b, // tmpvar_4)).zyxw[ + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, // tmpvar_1];. low + 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, // p float tmpvar_6 + 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x74, // ;. tmpvar_6 = t + 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x75, 0x62, 0x65, 0x20, 0x28, 0x75, 0x5f, 0x74, 0x65, // extureCube (u_te + 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // xColor, (v_texco + 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ord0.xyz + tmpva + 0x72, 0x5f, 0x34, 0x29, 0x29, 0x2e, 0x7a, 0x79, 0x78, 0x77, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, // r_4)).zyxw[tmpva + 0x72, 0x5f, 0x31, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, // r_1];. lowp flo + 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x74, // at tmpvar_7;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2a, // mpvar_7 = (0.5 * + 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, // (tmpvar_5 + tmp + 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, // var_6));. mediu + 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // mp float tmpvar_ 0x38, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, // 8;. tmpvar_8 = 0x28, 0x38, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x28, 0x73, 0x71, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, // (8.0 * (sqrt(. 0x20, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2c, // dot (tmpvar_2, @@ -51,33 +54,34 @@ static const uint8_t fs_font_distance_field_subpixel_glsl[1241] = 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // tmpvar_5;. tmpv 0x61, 0x72, 0x5f, 0x39, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ar_9.y = tmpvar_ 0x37, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x2e, 0x7a, 0x20, // 7;. tmpvar_9.z - 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // = tmpvar_6;. fl - 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, // oat edge0_10;. - 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, // edge0_10 = (0.5 - 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, // - tmpvar_8);. l + 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x6d, 0x65, // = tmpvar_6;. me + 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, // diump float edge + 0x30, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, // 0_10;. edge0_10 + 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // = (0.5 - tmpvar + 0x5f, 0x38, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, // _8);. lowp vec3 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // tmpvar_11;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, // pvar_11 = clamp + 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x2d, 0x20, 0x65, 0x64, // (((tmpvar_9 - ed + 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, // ge0_10) / (. + 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x29, // (0.5 + tmpvar_8) + 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x29, 0x29, // . - edge0_10)) + 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, // , 0.0, 1.0);. l 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // owp vec3 tmpvar_ - 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, // 11;. tmpvar_11 - 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // = clamp (((tmpva - 0x72, 0x5f, 0x39, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x29, 0x20, // r_9 - edge0_10) - 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, // / (. (0.5 + t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, // mpvar_8). - ed - 0x67, 0x65, 0x30, 0x5f, 0x31, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, // ge0_10)), 0.0, 1 - 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, // .0);. lowp vec3 - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // tmpvar_12;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, // pvar_12 = ((tmpv - 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ar_11 * (tmpvar_ - 0x31, 0x31, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, // 11 * . (3.0 - - 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // (2.0 * tmpvar_1 - 0x31, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // 1)). )) * v_col - 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, // or0.w);. gl_Fra - 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, // gColor.xyz = tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, // var_12;. lowp f - 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, // loat tmpvar_13;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x74, // tmpvar_13 = (t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // mpvar_7 * v_colo - 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, // r0.w);. gl_Frag - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // Color.w = tmpvar - 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _13;.}... + 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x20, // 12;. tmpvar_12 + 0x3d, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x2a, 0x20, // = ((tmpvar_11 * + 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, // (tmpvar_11 * . + 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, // (3.0 - (2.0 * + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, // tmpvar_11)). )) + 0x20, 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, // * v_color0.w);. + 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, // gl_FragColor.x + 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, // yz = tmpvar_12;. + 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, // lowp float tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // var_13;. tmpvar + 0x5f, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, // _13 = (tmpvar_7 + 0x2a, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x20, // * v_color0.w);. + 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x77, 0x20, // gl_FragColor.w + 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, // = tmpvar_13;.}.. + 0x00, // . }; static const uint8_t fs_font_distance_field_subpixel_dx9[885] = { diff --git a/examples/common/font/vs_font_basic.bin.h b/examples/common/font/vs_font_basic.bin.h index e30b8604e..36e13f382 100644 --- a/examples/common/font/vs_font_basic.bin.h +++ b/examples/common/font/vs_font_basic.bin.h @@ -1,28 +1,32 @@ -static const uint8_t vs_font_basic_glsl[361] = +static const uint8_t vs_font_basic_glsl[417] = { 0x56, 0x53, 0x48, 0x01, 0x01, 0x83, 0xf2, 0xe1, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // VSH.....attribut - 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // e vec4 a_color0; - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, // .attribute vec2 + 0x65, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, // e mediump vec4 a + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // _color0;.attribu + 0x74, 0x65, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, // te mediump vec2 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, // a_position;.attr - 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // ibute vec4 a_tex - 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // coord0;.varying + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, // ibute mediump ve + 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, // c4 a_texcoord0;. + 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, // varying mediump 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v - 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, // arying vec4 v_te - 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // xcoord0;.uniform + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, // arying mediump v + 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, // ec4 v_texcoord0; + 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, // .uniform mediump 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // mat4 u_modelVie 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // wProj;.void main - 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // ().{. vec4 tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_1;. tmpvar_ - 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, // 1.zw = vec2(0.0, - 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 1.0);. tmpvar_ - 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // 1.xy = a_positio - 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // n;. gl_Position - 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, // = (u_modelViewP - 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, // roj * tmpvar_1); - 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, // . v_texcoord0 = - 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, // a_texcoord0;. - 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // v_color0 = a_col - 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // or0;.}... + 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, // ().{. mediump + 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, // vec4 tmpvar_1;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, // tmpvar_1.zw = v + 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, // ec2(0.0, 1.0);. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, // tmpvar_1.xy = a + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, // _position;. gl_ + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, // Position = (u_mo + 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, // delViewProj * tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // pvar_1);. v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // coord0 = a_texco + 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // ord0;. v_color0 + 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, // = a_color0;.}.. + 0x00, // . }; static const uint8_t vs_font_basic_dx9[335] = { diff --git a/examples/common/font/vs_font_distance_field.bin.h b/examples/common/font/vs_font_distance_field.bin.h index dbda8cbaf..4d88f97cd 100644 --- a/examples/common/font/vs_font_distance_field.bin.h +++ b/examples/common/font/vs_font_distance_field.bin.h @@ -1,28 +1,32 @@ -static const uint8_t vs_font_distance_field_glsl[361] = +static const uint8_t vs_font_distance_field_glsl[417] = { 0x56, 0x53, 0x48, 0x01, 0x01, 0x83, 0xf2, 0xe1, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // VSH.....attribut - 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // e vec4 a_color0; - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, // .attribute vec2 + 0x65, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, // e mediump vec4 a + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // _color0;.attribu + 0x74, 0x65, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, // te mediump vec2 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, // a_position;.attr - 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // ibute vec4 a_tex - 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // coord0;.varying + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, // ibute mediump ve + 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, // c4 a_texcoord0;. + 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, // varying mediump 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v - 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, // arying vec4 v_te - 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // xcoord0;.uniform + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, // arying mediump v + 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, // ec4 v_texcoord0; + 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, // .uniform mediump 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // mat4 u_modelVie 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // wProj;.void main - 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // ().{. vec4 tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_1;. tmpvar_ - 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, // 1.zw = vec2(0.0, - 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 1.0);. tmpvar_ - 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // 1.xy = a_positio - 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // n;. gl_Position - 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, // = (u_modelViewP - 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, // roj * tmpvar_1); - 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, // . v_texcoord0 = - 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, // a_texcoord0;. - 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // v_color0 = a_col - 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // or0;.}... + 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, // ().{. mediump + 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, // vec4 tmpvar_1;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, // tmpvar_1.zw = v + 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, // ec2(0.0, 1.0);. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, // tmpvar_1.xy = a + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, // _position;. gl_ + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, // Position = (u_mo + 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, // delViewProj * tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // pvar_1);. v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // coord0 = a_texco + 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // ord0;. v_color0 + 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, // = a_color0;.}.. + 0x00, // . }; static const uint8_t vs_font_distance_field_dx9[335] = { diff --git a/examples/common/font/vs_font_distance_field_subpixel.bin.h b/examples/common/font/vs_font_distance_field_subpixel.bin.h index 0e334f623..4f5015c04 100644 --- a/examples/common/font/vs_font_distance_field_subpixel.bin.h +++ b/examples/common/font/vs_font_distance_field_subpixel.bin.h @@ -1,28 +1,32 @@ -static const uint8_t vs_font_distance_field_subpixel_glsl[361] = +static const uint8_t vs_font_distance_field_subpixel_glsl[417] = { 0x56, 0x53, 0x48, 0x01, 0x01, 0x83, 0xf2, 0xe1, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // VSH.....attribut - 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // e vec4 a_color0; - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, // .attribute vec2 + 0x65, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, // e mediump vec4 a + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // _color0;.attribu + 0x74, 0x65, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, // te mediump vec2 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, // a_position;.attr - 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // ibute vec4 a_tex - 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // coord0;.varying + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, // ibute mediump ve + 0x63, 0x34, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, // c4 a_texcoord0;. + 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, // varying mediump 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v - 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, // arying vec4 v_te - 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // xcoord0;.uniform + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, // arying mediump v + 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, // ec4 v_texcoord0; + 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, // .uniform mediump 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // mat4 u_modelVie 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // wProj;.void main - 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // ().{. vec4 tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_1;. tmpvar_ - 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, // 1.zw = vec2(0.0, - 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 1.0);. tmpvar_ - 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // 1.xy = a_positio - 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // n;. gl_Position - 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, // = (u_modelViewP - 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, // roj * tmpvar_1); - 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, // . v_texcoord0 = - 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, // a_texcoord0;. - 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, // v_color0 = a_col - 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // or0;.}... + 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, // ().{. mediump + 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, // vec4 tmpvar_1;. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, // tmpvar_1.zw = v + 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, // ec2(0.0, 1.0);. + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, // tmpvar_1.xy = a + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, // _position;. gl_ + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, // Position = (u_mo + 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, // delViewProj * tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // pvar_1);. v_tex + 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // coord0 = a_texco + 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // ord0;. v_color0 + 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, // = a_color0;.}.. + 0x00, // . }; static const uint8_t vs_font_distance_field_subpixel_dx9[335] = { diff --git a/examples/common/imgui/fs_imgui_color.bin.h b/examples/common/imgui/fs_imgui_color.bin.h index 3f86edb82..1ecab91b4 100644 --- a/examples/common/imgui/fs_imgui_color.bin.h +++ b/examples/common/imgui/fs_imgui_color.bin.h @@ -1,10 +1,11 @@ -static const uint8_t fs_imgui_color_glsl[77] = +static const uint8_t fs_imgui_color_glsl[85] = { 0x46, 0x53, 0x48, 0x01, 0xa4, 0x8b, 0xef, 0x49, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // FSH....Ivarying - 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v - 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{. - 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, // gl_FragColor = v - 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _color0;.}... + 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, // mediump vec4 v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // olor0;.void main + 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, // ().{. gl_FragC + 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // olor = v_color0; + 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .}... }; static const uint8_t fs_imgui_color_dx9[137] = { diff --git a/examples/common/imgui/fs_imgui_texture.bin.h b/examples/common/imgui/fs_imgui_texture.bin.h index 408446c25..2f9f3f3f8 100644 --- a/examples/common/imgui/fs_imgui_texture.bin.h +++ b/examples/common/imgui/fs_imgui_texture.bin.h @@ -1,8 +1,9 @@ -static const uint8_t fs_imgui_texture_glsl[255] = +static const uint8_t fs_imgui_texture_glsl[271] = { 0x46, 0x53, 0x48, 0x01, 0x01, 0x83, 0xf2, 0xe1, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // FSH.....varying - 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v - 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, // arying vec2 v_te + 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, // mediump vec4 v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x6d, // olor0;.varying m + 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, // ediump vec2 v_te 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // xcoord0;.uniform 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x75, 0x5f, 0x74, 0x65, 0x78, // sampler2D u_tex 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // Color;.void main diff --git a/examples/common/imgui/vs_imgui_color.bin.h b/examples/common/imgui/vs_imgui_color.bin.h index 7e17a7231..6ab1d04af 100644 --- a/examples/common/imgui/vs_imgui_color.bin.h +++ b/examples/common/imgui/vs_imgui_color.bin.h @@ -1,22 +1,25 @@ -static const uint8_t vs_imgui_color_glsl[268] = +static const uint8_t vs_imgui_color_glsl[308] = { 0x56, 0x53, 0x48, 0x01, 0xa4, 0x8b, 0xef, 0x49, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // VSH....Iattribut - 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // e vec4 a_color0; - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, // .attribute vec2 + 0x65, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, // e mediump vec4 a + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // _color0;.attribu + 0x74, 0x65, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, // te mediump vec2 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, // a_position;.vary - 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // ing vec4 v_color - 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, // 0;.uniform mat4 + 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, // ing mediump vec4 + 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, // v_color0;.unifo + 0x72, 0x6d, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, // rm mediump mat4 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, // u_viewProj;.void - 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, // main ().{. vec - 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // 4 tmpvar_1;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, // pvar_1.zw = vec2 - 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // (0.0, 1.0);. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, // pvar_1.xy = a_po - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, // sition;. gl_Pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, // ition = (u_viewP - 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, // roj * tmpvar_1); - 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, // . v_color0 = a_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // color0;.}... + 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, // main ().{. med + 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // iump vec4 tmpvar + 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, // _1;. tmpvar_1.z + 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, // w = vec2(0.0, 1. + 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, // 0);. tmpvar_1.x + 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, // y = a_position;. + 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, // gl_Position = + 0x28, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, // (u_viewProj * tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // pvar_1);. v_col + 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, // or0 = a_color0;. + 0x7d, 0x0a, 0x0a, 0x00, // }... }; static const uint8_t vs_imgui_color_dx9[290] = { diff --git a/examples/common/imgui/vs_imgui_texture.bin.h b/examples/common/imgui/vs_imgui_texture.bin.h index 271943f4d..3a223cf69 100644 --- a/examples/common/imgui/vs_imgui_texture.bin.h +++ b/examples/common/imgui/vs_imgui_texture.bin.h @@ -1,27 +1,31 @@ -static const uint8_t vs_imgui_texture_glsl[351] = +static const uint8_t vs_imgui_texture_glsl[407] = { 0x56, 0x53, 0x48, 0x01, 0x01, 0x83, 0xf2, 0xe1, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // VSH.....attribut - 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // e vec4 a_color0; - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, // .attribute vec2 + 0x65, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, // e mediump vec4 a + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // _color0;.attribu + 0x74, 0x65, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, // te mediump vec2 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, // a_position;.attr - 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // ibute vec2 a_tex - 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // coord0;.varying + 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, // ibute mediump ve + 0x63, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, // c2 a_texcoord0;. + 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, // varying mediump 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v - 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, // arying vec2 v_te - 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // xcoord0;.uniform + 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, // arying mediump v + 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, // ec2 v_texcoord0; + 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, // .uniform mediump 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // mat4 u_viewProj 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, // ;.void main ().{ - 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // . vec4 tmpvar_1 - 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, // ;. tmpvar_1.zw - 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, // = vec2(0.0, 1.0) - 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, // ;. tmpvar_1.xy - 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, // = a_position;. - 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, // gl_Position = (u - 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // _viewProj * tmpv - 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, // ar_1);. v_texco - 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, // ord0 = a_texcoor - 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, // d0;. v_color0 = - 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // a_color0;.}... + 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, // . mediump vec4 + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // tmpvar_1;. tmpv + 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, // ar_1.zw = vec2(0 + 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // .0, 1.0);. tmpv + 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, // ar_1.xy = a_posi + 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, // tion;. gl_Posit + 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // ion = (u_viewPro + 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, // j * tmpvar_1);. + 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, // v_texcoord0 = a + 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, // _texcoord0;. v_ + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // color0 = a_color + 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // 0;.}... }; static const uint8_t vs_imgui_texture_dx9[326] = { diff --git a/examples/makefile b/examples/makefile index 1b5969711..ad9ce94bd 100644 --- a/examples/makefile +++ b/examples/makefile @@ -22,5 +22,6 @@ rebuild: @make -s --no-print-directory rebuild -C 16-shadowmaps @make -s --no-print-directory rebuild -C 17-drawstress @make -s --no-print-directory rebuild -C 18-ibl + @make -s --no-print-directory rebuild -C 19-oit @make -s --no-print-directory rebuild -C common/font @make -s --no-print-directory rebuild -C common/imgui diff --git a/examples/runtime/shaders/gles/fs_bump.bin b/examples/runtime/shaders/gles/fs_bump.bin index 091ebac4126675574b1709a2e7fb838d6f4ac22b..9201abb3324af746cef8a40c45bb702afeb2aeac 100644 GIT binary patch delta 367 zcmZ3X^g>zOE!cz6^2EGHWr;-ZzMTzX`(_(PZbo*fsgvE9OyTS* zCTBQ%50dx?rYSJ-&CSe<5Smq3U11WFGg!^x?0KxSVC>E2Y#R|8p0gt~XmcPmByu1$ Z{Ng~;u!;+z;T;!3g98W`o)?8>ZdHF@Ti8&a; z*pwRq4Jt{kNY2kMN-@CDQI?rnZp{HRe&Y7+o68tE87H?hnM^*+ zm=`im?qzkEe3R8|vN+q!%{$mOFitMuaGAV^!))>|j+vWha{>i|xm_mD=Qf*smwV>s II-V?600Na#)&Kwi diff --git a/examples/runtime/shaders/gles/fs_callback.bin b/examples/runtime/shaders/gles/fs_callback.bin index 3de1a98bf48a4617f74b95d326adfe4b83ec010e..b950eadecdc46f57c652abc02ee239f558beaa02 100644 GIT binary patch delta 76 zcmX@k{GM6dE!cyxW$~RqWr;~K(^U`7EP^vP&evcB E0C930;{X5v delta 56 zcmaFQe4JU$E!cyxW$~RqWr;08+*W;Q#;t diff --git a/examples/runtime/shaders/gles/fs_hdr_blur.bin b/examples/runtime/shaders/gles/fs_hdr_blur.bin index f614c5fd191710d949a8649ea4cd8f2f2b786b6c..278a52651cbbd9ab8453dc5ed8b8a3cc5bb6f664 100644 GIT binary patch delta 99 zcmbQvwx3PhE!czc_T%4g$`XqzGxO3Fa#K?>OLGe*@=LSBn3~d>P^LmzYO;w!S$s)q WMRIAG< diff --git a/examples/runtime/shaders/gles/fs_hdr_bright.bin b/examples/runtime/shaders/gles/fs_hdr_bright.bin index 93656fcad43f11b5979b0465b69567e9bf82af49..cd77c10c296ee9243742546864deb0d8a1edf85e 100644 GIT binary patch delta 43 tcmew@&@CwL7VN>8FK1^{mRMAonU}7Ro0^hYnp-fD-;5o~+~{J?0RTTS4!ZyV delta 27 icmeAc{4K!m7VN>8FK1^{mRMAonU_9M+-zg083zD*atOiz diff --git a/examples/runtime/shaders/gles/fs_hdr_lum.bin b/examples/runtime/shaders/gles/fs_hdr_lum.bin index 2f1c6246d43ac5603e8620beef1542261d77fe29..1c3d194c08075a1269ba329250c4f8e55dcd789f 100644 GIT binary patch delta 32 ncmaDN_(o9NE!cxGU(U{^EU~CEGcR2sH#H@*G`CIKE!cz6Y^_jNSz=LTW?s5NZfZ(qX>P$pehCLCQ=u$1*;t`0z97HYnhQ-C zOs*_5wcMJkG%qtPzbF@OhQB>K%(z|?IP-uJocYlW#++=%*ac_rXEcSgKQs2h*$qrz Q;p`ITGcfjMdlpV60DH4d4*&oF delta 132 zcmdnMdxFQ`E!cz6Y^_jNSz=LTW?s5NS!%MeLRoxXeo<~>jx`sWa6x`ChFDo1lgMO6Ch5s8OudtDGJTnRmHG7M I6)YS~0C6=ixc~qF diff --git a/examples/runtime/shaders/gles/fs_hdr_skybox.bin b/examples/runtime/shaders/gles/fs_hdr_skybox.bin index 0cb35d2b9ebe10d15683469ba8081ab2e5a12ce9..12fe462db32ae513ad8642878d29541e1c954d71 100644 GIT binary patch delta 64 zcmX@h@|H#1E!cxGU(U{^EU~CEGcR2sH#H@*G`Cn diff --git a/examples/runtime/shaders/gles/fs_hdr_tonemap.bin b/examples/runtime/shaders/gles/fs_hdr_tonemap.bin index e8f484515be99c799673322662eaf57df09ac7f6..aac8a5aab4c0d1c1593e2d2d85d246f6409df290 100644 GIT binary patch delta 133 zcmewmE!czc_T%4g$`XqzGxO3Fa#K?>OLGe*@=LSBn3~d>P^LmzYO;w!S$s)q jMRIP$pehC#QQ=u$1*;t`0zAQ7f+?uO2 zFEcH_C>O5ITG9ccLm@Y@#6+PqKDVR-LlwvfkX%|$VtO%#?8F*Lc9^wOlHts6CNSn? mO-64xyO_}n&fdeA2xrSMIl|d7OqOu=6efEZd-EkGZ59CTH(G@N delta 149 zcmey$_m?-#E!cxGsQQ~&Sz=LTW?s5NS!%MeLRoxXeo<~>jx`sWa9L(*xiwd5US=9l z9;DVpp)|fAu_!UO7$KaSSOOBxEvbNuP3#k&xK?7~*`&$ljK-6T7`-MRVf36V%9Jp< UmdRoAQ6`JYtjub%7 diff --git a/examples/runtime/shaders/gles/fs_ibl_skybox.bin b/examples/runtime/shaders/gles/fs_ibl_skybox.bin index 708d33747c91919b55ffeca4b3af5888d4df9975..265dc2facce4fb18de01a27e56178b61cbeb8f5f 100644 GIT binary patch delta 43 tcmeys+`uC47VN=zAlK2fEU~CEGcR2sH#H@*G`C~(xzTAIBLGaQ50d}@ delta 27 icmZo*`M}KY7VN=zAlK2fEU~CEGcSFjxXH%gwTu9PI|-Tq diff --git a/examples/runtime/shaders/gles/fs_instancing.bin b/examples/runtime/shaders/gles/fs_instancing.bin index 693031755e1ddd134dcb771d8711cc45c2f8ab7d..686cc13252b20c0fca87b9d2f0112746c9c9085f 100644 GIT binary patch delta 29 kcmeYb6?Y5vU|iDu-m@&Rs4_DzT_HC$C9^cQU?RUA0HG@i@&Et; delta 21 ccmWIb<#!AAU|iDu-m@&Rs4_DzeWJJ>08+*W;Q#;t diff --git a/examples/runtime/shaders/gles/fs_mesh.bin b/examples/runtime/shaders/gles/fs_mesh.bin index 3ad77fcae2547a0773402fac9448f52413edb56f..f99990b20f51010da61595888a83bdc4260ac2b5 100644 GIT binary patch delta 194 zcmZ3^)y^&M7VN<|b*}60vc#gw%)E4k+|-oJ(%gcH{1Q%3rb1b2vav#0d|rN0Zeor# z7n(|#bU}VGhTOzJF?N`NX$o*=s|lRB!wt^-I~m5D+|OtVXCG$lgR=vezQWj>U6>y; F0sx?eN&El+ delta 129 zcmZqYUd|Qh7VN<|b*}60vc#gw%)E4kveaY~g|hhM{G9wE18XiMVPl|hUVc$-Vh)CI zL4Gk@Y+|9<#D4jS+l(iEbe(L+IEghaCqJ=dav+n)P$peo;LrQ=u$1*+iiP$peo;LrQ=u$1*+iigf}E!cx`Z%Dm$Sz=LTW?s5NS!%M0LRox4ez7%IX 0.5)) { - vec3 tmpvar_24; + mediump vec3 tmpvar_24; tmpvar_24 = (tmpvar_3 + (tmpvar_9 * tmpvar_23)); - vec3 _pos_25; + mediump vec3 _pos_25; _pos_25 = (tmpvar_24 + vec3(0.002, 0.0, 0.0)); - vec3 tmpvar_26; + mediump vec3 tmpvar_26; tmpvar_26 = max ((abs(_pos_25) - vec3(2.5, 2.5, 2.5)), 0.0); - vec3 _pos_27; + mediump vec3 _pos_27; _pos_27 = (_pos_25 + vec3(4.0, 0.0, 0.0)); - vec3 _pos_28; + mediump vec3 _pos_28; _pos_28 = (_pos_25 + vec3(-4.0, 0.0, 0.0)); - vec3 _pos_29; + mediump vec3 _pos_29; _pos_29 = (_pos_25 + vec3(0.0, 4.0, 0.0)); - vec3 _pos_30; + mediump vec3 _pos_30; _pos_30 = (_pos_25 + vec3(0.0, -4.0, 0.0)); - vec3 _pos_31; + mediump vec3 _pos_31; _pos_31 = (_pos_25 + vec3(0.0, 0.0, 4.0)); - vec3 _pos_32; + mediump vec3 _pos_32; _pos_32 = (_pos_25 + vec3(0.0, 0.0, -4.0)); - vec3 _pos_33; + mediump vec3 _pos_33; _pos_33 = (tmpvar_24 - vec3(0.002, 0.0, 0.0)); - vec3 tmpvar_34; + mediump vec3 tmpvar_34; tmpvar_34 = max ((abs(_pos_33) - vec3(2.5, 2.5, 2.5)), 0.0); - vec3 _pos_35; + mediump vec3 _pos_35; _pos_35 = (_pos_33 + vec3(4.0, 0.0, 0.0)); - vec3 _pos_36; + mediump vec3 _pos_36; _pos_36 = (_pos_33 + vec3(-4.0, 0.0, 0.0)); - vec3 _pos_37; + mediump vec3 _pos_37; _pos_37 = (_pos_33 + vec3(0.0, 4.0, 0.0)); - vec3 _pos_38; + mediump vec3 _pos_38; _pos_38 = (_pos_33 + vec3(0.0, -4.0, 0.0)); - vec3 _pos_39; + mediump vec3 _pos_39; _pos_39 = (_pos_33 + vec3(0.0, 0.0, 4.0)); - vec3 _pos_40; + mediump vec3 _pos_40; _pos_40 = (_pos_33 + vec3(0.0, 0.0, -4.0)); - vec3 _pos_41; + mediump vec3 _pos_41; _pos_41 = (tmpvar_24 + vec3(0.0, 0.002, 0.0)); - vec3 tmpvar_42; + mediump vec3 tmpvar_42; tmpvar_42 = max ((abs(_pos_41) - vec3(2.5, 2.5, 2.5)), 0.0); - vec3 _pos_43; + mediump vec3 _pos_43; _pos_43 = (_pos_41 + vec3(4.0, 0.0, 0.0)); - vec3 _pos_44; + mediump vec3 _pos_44; _pos_44 = (_pos_41 + vec3(-4.0, 0.0, 0.0)); - vec3 _pos_45; + mediump vec3 _pos_45; _pos_45 = (_pos_41 + vec3(0.0, 4.0, 0.0)); - vec3 _pos_46; + mediump vec3 _pos_46; _pos_46 = (_pos_41 + vec3(0.0, -4.0, 0.0)); - vec3 _pos_47; + mediump vec3 _pos_47; _pos_47 = (_pos_41 + vec3(0.0, 0.0, 4.0)); - vec3 _pos_48; + mediump vec3 _pos_48; _pos_48 = (_pos_41 + vec3(0.0, 0.0, -4.0)); - vec3 _pos_49; + mediump vec3 _pos_49; _pos_49 = (tmpvar_24 - vec3(0.0, 0.002, 0.0)); - vec3 tmpvar_50; + mediump vec3 tmpvar_50; tmpvar_50 = max ((abs(_pos_49) - vec3(2.5, 2.5, 2.5)), 0.0); - vec3 _pos_51; + mediump vec3 _pos_51; _pos_51 = (_pos_49 + vec3(4.0, 0.0, 0.0)); - vec3 _pos_52; + mediump vec3 _pos_52; _pos_52 = (_pos_49 + vec3(-4.0, 0.0, 0.0)); - vec3 _pos_53; + mediump vec3 _pos_53; _pos_53 = (_pos_49 + vec3(0.0, 4.0, 0.0)); - vec3 _pos_54; + mediump vec3 _pos_54; _pos_54 = (_pos_49 + vec3(0.0, -4.0, 0.0)); - vec3 _pos_55; + mediump vec3 _pos_55; _pos_55 = (_pos_49 + vec3(0.0, 0.0, 4.0)); - vec3 _pos_56; + mediump vec3 _pos_56; _pos_56 = (_pos_49 + vec3(0.0, 0.0, -4.0)); - vec3 _pos_57; + mediump vec3 _pos_57; _pos_57 = (tmpvar_24 + vec3(0.0, 0.0, 0.002)); - vec3 tmpvar_58; + mediump vec3 tmpvar_58; tmpvar_58 = max ((abs(_pos_57) - vec3(2.5, 2.5, 2.5)), 0.0); - vec3 _pos_59; + mediump vec3 _pos_59; _pos_59 = (_pos_57 + vec3(4.0, 0.0, 0.0)); - vec3 _pos_60; + mediump vec3 _pos_60; _pos_60 = (_pos_57 + vec3(-4.0, 0.0, 0.0)); - vec3 _pos_61; + mediump vec3 _pos_61; _pos_61 = (_pos_57 + vec3(0.0, 4.0, 0.0)); - vec3 _pos_62; + mediump vec3 _pos_62; _pos_62 = (_pos_57 + vec3(0.0, -4.0, 0.0)); - vec3 _pos_63; + mediump vec3 _pos_63; _pos_63 = (_pos_57 + vec3(0.0, 0.0, 4.0)); - vec3 _pos_64; + mediump vec3 _pos_64; _pos_64 = (_pos_57 + vec3(0.0, 0.0, -4.0)); - vec3 _pos_65; + mediump vec3 _pos_65; _pos_65 = (tmpvar_24 - vec3(0.0, 0.0, 0.002)); - vec3 tmpvar_66; + mediump vec3 tmpvar_66; tmpvar_66 = max ((abs(_pos_65) - vec3(2.5, 2.5, 2.5)), 0.0); - vec3 _pos_67; + mediump vec3 _pos_67; _pos_67 = (_pos_65 + vec3(4.0, 0.0, 0.0)); - vec3 _pos_68; + mediump vec3 _pos_68; _pos_68 = (_pos_65 + vec3(-4.0, 0.0, 0.0)); - vec3 _pos_69; + mediump vec3 _pos_69; _pos_69 = (_pos_65 + vec3(0.0, 4.0, 0.0)); - vec3 _pos_70; + mediump vec3 _pos_70; _pos_70 = (_pos_65 + vec3(0.0, -4.0, 0.0)); - vec3 _pos_71; + mediump vec3 _pos_71; _pos_71 = (_pos_65 + vec3(0.0, 0.0, 4.0)); - vec3 _pos_72; + mediump vec3 _pos_72; _pos_72 = (_pos_65 + vec3(0.0, 0.0, -4.0)); - vec3 tmpvar_73; + mediump vec3 tmpvar_73; tmpvar_73.x = (min (min ( min (min (min (min ( (sqrt(dot (tmpvar_26, tmpvar_26)) - 0.5) @@ -260,76 +260,127 @@ void main () ), ( sqrt(dot (_pos_72, _pos_72)) - 1.0))); - vec3 tmpvar_74; + mediump vec3 tmpvar_74; tmpvar_74 = normalize(tmpvar_73); - float tmpvar_75; + mediump float tmpvar_75; tmpvar_75 = dot (tmpvar_74, u_lightDir); - vec2 tmpvar_76; + mediump vec2 tmpvar_76; tmpvar_76.x = tmpvar_75; tmpvar_76.y = dot ((u_lightDir - ( (2.0 * tmpvar_75) * tmpvar_74)), tmpvar_9); - float tmpvar_77; + mediump float tmpvar_77; tmpvar_77 = max (0.0, tmpvar_75); - vec4 tmpvar_78; + mediump vec4 tmpvar_78; tmpvar_78.xw = vec2(1.0, 1.0); tmpvar_78.y = tmpvar_77; tmpvar_78.z = (float((tmpvar_75 >= 0.0)) * max (0.0, tmpvar_76.y)); - float tmpvar_79; - tmpvar_79 = ((0.9 * tmpvar_77) + (pow (tmpvar_78.z, 128.0) * max ( - (0.2 + (0.8 * pow ((1.0 - tmpvar_75), 5.0))) - , 0.0))); - vec3 _pos_80; - _pos_80 = tmpvar_24; - vec3 _normal_81; - _normal_81 = tmpvar_74; - float occ_83; - occ_83 = 0.0; - for (int ii_82 = 1; ii_82 < 4; ii_82++) { - float tmpvar_84; - tmpvar_84 = float(ii_82); - vec3 _pos_85; - _pos_85 = (_pos_80 + ((_normal_81 * tmpvar_84) * 0.2)); - vec3 tmpvar_86; - tmpvar_86 = max ((abs(_pos_85) - vec3(2.5, 2.5, 2.5)), 0.0); - vec3 _pos_87; - _pos_87 = (_pos_85 + vec3(4.0, 0.0, 0.0)); - vec3 _pos_88; - _pos_88 = (_pos_85 + vec3(-4.0, 0.0, 0.0)); - vec3 _pos_89; - _pos_89 = (_pos_85 + vec3(0.0, 4.0, 0.0)); - vec3 _pos_90; - _pos_90 = (_pos_85 + vec3(0.0, -4.0, 0.0)); - vec3 _pos_91; - _pos_91 = (_pos_85 + vec3(0.0, 0.0, 4.0)); - vec3 _pos_92; - _pos_92 = (_pos_85 + vec3(0.0, 0.0, -4.0)); - occ_83 = (occ_83 + (( - (tmpvar_84 * 0.2) - - - min (min (min (min ( - min (min ((sqrt( - dot (tmpvar_86, tmpvar_86) - ) - 0.5), (sqrt( - dot (_pos_87, _pos_87) - ) - 1.0)), (sqrt(dot (_pos_88, _pos_88)) - 1.0)) - , - (sqrt(dot (_pos_89, _pos_89)) - 1.0) - ), ( - sqrt(dot (_pos_90, _pos_90)) - - 1.0)), (sqrt( - dot (_pos_91, _pos_91) - ) - 1.0)), (sqrt(dot (_pos_92, _pos_92)) - 1.0)) - ) / exp2(tmpvar_84))); - }; - float tmpvar_93; - tmpvar_93 = pow ((tmpvar_79 * (1.0 - occ_83)), 0.454545); - vec4 tmpvar_94; - tmpvar_94.w = 1.0; - tmpvar_94.x = tmpvar_93; - tmpvar_94.y = tmpvar_93; - tmpvar_94.z = tmpvar_93; - gl_FragColor = tmpvar_94; + mediump float occ_79; + mediump vec3 _pos_80; + _pos_80 = (tmpvar_24 + (tmpvar_74 * 0.2)); + mediump vec3 tmpvar_81; + tmpvar_81 = max ((abs(_pos_80) - vec3(2.5, 2.5, 2.5)), 0.0); + mediump vec3 _pos_82; + _pos_82 = (_pos_80 + vec3(4.0, 0.0, 0.0)); + mediump vec3 _pos_83; + _pos_83 = (_pos_80 + vec3(-4.0, 0.0, 0.0)); + mediump vec3 _pos_84; + _pos_84 = (_pos_80 + vec3(0.0, 4.0, 0.0)); + mediump vec3 _pos_85; + _pos_85 = (_pos_80 + vec3(0.0, -4.0, 0.0)); + mediump vec3 _pos_86; + _pos_86 = (_pos_80 + vec3(0.0, 0.0, 4.0)); + mediump vec3 _pos_87; + _pos_87 = (_pos_80 + vec3(0.0, 0.0, -4.0)); + occ_79 = ((0.2 - min ( + min (min (min (min ( + min ((sqrt(dot (tmpvar_81, tmpvar_81)) - 0.5), (sqrt(dot (_pos_82, _pos_82)) - 1.0)) + , + (sqrt(dot (_pos_83, _pos_83)) - 1.0) + ), ( + sqrt(dot (_pos_84, _pos_84)) + - 1.0)), (sqrt( + dot (_pos_85, _pos_85) + ) - 1.0)), (sqrt(dot (_pos_86, _pos_86)) - 1.0)) + , + (sqrt(dot (_pos_87, _pos_87)) - 1.0) + )) / 2.0); + mediump vec3 _pos_88; + _pos_88 = (tmpvar_24 + (0.4 * tmpvar_74)); + mediump vec3 tmpvar_89; + tmpvar_89 = max ((abs(_pos_88) - vec3(2.5, 2.5, 2.5)), 0.0); + mediump vec3 _pos_90; + _pos_90 = (_pos_88 + vec3(4.0, 0.0, 0.0)); + mediump vec3 _pos_91; + _pos_91 = (_pos_88 + vec3(-4.0, 0.0, 0.0)); + mediump vec3 _pos_92; + _pos_92 = (_pos_88 + vec3(0.0, 4.0, 0.0)); + mediump vec3 _pos_93; + _pos_93 = (_pos_88 + vec3(0.0, -4.0, 0.0)); + mediump vec3 _pos_94; + _pos_94 = (_pos_88 + vec3(0.0, 0.0, 4.0)); + mediump vec3 _pos_95; + _pos_95 = (_pos_88 + vec3(0.0, 0.0, -4.0)); + occ_79 = (occ_79 + ((0.4 - + min (min (min (min ( + min (min ((sqrt( + dot (tmpvar_89, tmpvar_89) + ) - 0.5), (sqrt( + dot (_pos_90, _pos_90) + ) - 1.0)), (sqrt(dot (_pos_91, _pos_91)) - 1.0)) + , + (sqrt(dot (_pos_92, _pos_92)) - 1.0) + ), ( + sqrt(dot (_pos_93, _pos_93)) + - 1.0)), (sqrt( + dot (_pos_94, _pos_94) + ) - 1.0)), (sqrt(dot (_pos_95, _pos_95)) - 1.0)) + ) / 4.0)); + mediump vec3 _pos_96; + _pos_96 = (tmpvar_24 + (0.6 * tmpvar_74)); + mediump vec3 tmpvar_97; + tmpvar_97 = max ((abs(_pos_96) - vec3(2.5, 2.5, 2.5)), 0.0); + mediump vec3 _pos_98; + _pos_98 = (_pos_96 + vec3(4.0, 0.0, 0.0)); + mediump vec3 _pos_99; + _pos_99 = (_pos_96 + vec3(-4.0, 0.0, 0.0)); + mediump vec3 _pos_100; + _pos_100 = (_pos_96 + vec3(0.0, 4.0, 0.0)); + mediump vec3 _pos_101; + _pos_101 = (_pos_96 + vec3(0.0, -4.0, 0.0)); + mediump vec3 _pos_102; + _pos_102 = (_pos_96 + vec3(0.0, 0.0, 4.0)); + mediump vec3 _pos_103; + _pos_103 = (_pos_96 + vec3(0.0, 0.0, -4.0)); + occ_79 = (occ_79 + ((0.6 - + min (min (min (min ( + min (min ((sqrt( + dot (tmpvar_97, tmpvar_97) + ) - 0.5), (sqrt( + dot (_pos_98, _pos_98) + ) - 1.0)), (sqrt(dot (_pos_99, _pos_99)) - 1.0)) + , + (sqrt(dot (_pos_100, _pos_100)) - 1.0) + ), ( + sqrt(dot (_pos_101, _pos_101)) + - 1.0)), (sqrt( + dot (_pos_102, _pos_102) + ) - 1.0)), (sqrt(dot (_pos_103, _pos_103)) - 1.0)) + ) / 8.0)); + mediump float tmpvar_104; + tmpvar_104 = pow ((( + (0.9 * tmpvar_77) + + + (pow (tmpvar_78.z, 128.0) * max ((0.2 + (0.8 * + pow ((1.0 - tmpvar_75), 5.0) + )), 0.0)) + ) * (1.0 - occ_79)), 0.454545); + mediump vec4 tmpvar_105; + tmpvar_105.w = 1.0; + tmpvar_105.x = tmpvar_104; + tmpvar_105.y = tmpvar_104; + tmpvar_105.z = tmpvar_104; + gl_FragColor = tmpvar_105; gl_FragDepth = (tmpvar_23 / tmpvar_7); } else { gl_FragColor = v_color0; diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_esm.bin b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_esm.bin index be969dc5f3efc85d6a1247cd1ee2d70fd54a1ea8..6b4bd216d1ed87325bac27909662d11f11197e05 100644 GIT binary patch delta 499 zcmbOv`%6yTE!cyRqae$pEU~CEGcR2sH#H@*G`C&4s2Mq{bMirYtkH+?uO2FEcH_C>LfH#DLQHg2bZ4++srv`HA_Gswj4q#wX|J zg_m|&dAKbbRN?9B-*EC`8YHgiQJlZ_Qhatnar7jI}}&7}Yfq{*w< y>R{R@Yp}b***WZCaP~p=2pD^_1V=i;iaIV^n8f5=T)*M$E!=Q}HvizB#RLG_0<}y4 delta 305 zcmew*H%YeME!cyRqae$pEU~CEGcR4CEH&9!p)5WxzbH2`$C?XC*aRqCoROH4U!I(w zUzCC(2hviOnObhmRhpNX2Gk2O$3&qtz96wEF}K(dhq#foCAx;>{G9wE6y?T1V{#Kq zQj0PZbG#GbQWJm3OqOAko@~!3H#wD2X>vah?_^Y-{De`16>RzBg`CopO_+=~=QD9L zO>SaI-~5qkSrH~A*J%VbrK(8*04;hP_Fq%lqQ V=eC(Vnfuq|sXQ*5AM(s(0sze2YkdF! diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_esm_csm.bin b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_esm_csm.bin index 67aa61c17..74e155bc0 100644 --- a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_esm_csm.bin +++ b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_esm_csm.bin @@ -1,21 +1,21 @@ -FSHFvarying vec3 v_normal; -varying vec4 v_texcoord1; -varying vec4 v_texcoord2; -varying vec4 v_texcoord3; -varying vec4 v_texcoord4; -varying vec3 v_view; -uniform vec4 u_params1; -uniform vec4 u_params2; -uniform vec4 u_color; -uniform vec3 u_materialKa; -uniform vec3 u_materialKd; -uniform vec4 u_materialKs; -uniform vec4 u_lightPosition; -uniform vec4 u_lightAmbientPower; -uniform vec4 u_lightDiffusePower; -uniform vec4 u_lightSpecularPower; -uniform vec4 u_lightSpotDirectionInner; -uniform vec4 u_lightAttenuationSpotOuter; +FSHFvarying mediump vec3 v_normal; +varying mediump vec4 v_texcoord1; +varying mediump vec4 v_texcoord2; +varying mediump vec4 v_texcoord3; +varying mediump vec4 v_texcoord4; +varying mediump vec3 v_view; +uniform mediump vec4 u_params1; +uniform mediump vec4 u_params2; +uniform mediump vec4 u_color; +uniform mediump vec3 u_materialKa; +uniform mediump vec3 u_materialKd; +uniform mediump vec4 u_materialKs; +uniform mediump vec4 u_lightPosition; +uniform mediump vec4 u_lightAmbientPower; +uniform mediump vec4 u_lightDiffusePower; +uniform mediump vec4 u_lightSpecularPower; +uniform mediump vec4 u_lightSpotDirectionInner; +uniform mediump vec4 u_lightAttenuationSpotOuter; uniform sampler2D u_shadowMap0; uniform sampler2D u_shadowMap1; uniform sampler2D u_shadowMap2; @@ -24,11 +24,11 @@ void main () { lowp float visibility_1; lowp vec3 colorCoverage_2; - vec2 tmpvar_3; + mediump vec2 tmpvar_3; tmpvar_3 = (v_texcoord1.xy / v_texcoord1.w); - vec2 tmpvar_4; + mediump vec2 tmpvar_4; tmpvar_4 = (v_texcoord2.xy / v_texcoord2.w); - vec2 tmpvar_5; + mediump vec2 tmpvar_5; tmpvar_5 = (v_texcoord3.xy / v_texcoord3.w); bvec2 tmpvar_6; tmpvar_6 = lessThan (tmpvar_3, vec2(0.99, 0.99)); @@ -61,7 +61,7 @@ void main () tmpvar_13 = bool(0); }; if (tmpvar_7) { - vec2 _texcoord_15; + mediump vec2 _texcoord_15; _texcoord_15 = (v_texcoord1.xy / v_texcoord1.w); bvec2 tmpvar_16; tmpvar_16 = greaterThan (_texcoord_15, vec2(0.0, 0.0)); @@ -80,10 +80,10 @@ void main () tmpvar_20.y = tmpvar_19; tmpvar_20.z = -(tmpvar_19); colorCoverage_2 = tmpvar_20; - float _depthMultiplier_21; + mediump float _depthMultiplier_21; _depthMultiplier_21 = (u_params1.w * u_params1.z); lowp float tmpvar_22; - vec2 tmpvar_23; + mediump vec2 tmpvar_23; tmpvar_23 = (v_texcoord1.xy / v_texcoord1.w); bool tmpvar_24; if (any(greaterThan (tmpvar_23, vec2(1.0, 1.0)))) { @@ -101,7 +101,7 @@ void main () visibility_1 = tmpvar_22; } else { if (tmpvar_10) { - vec2 _texcoord_25; + mediump vec2 _texcoord_25; _texcoord_25 = (v_texcoord2.xy / v_texcoord2.w); bvec2 tmpvar_26; tmpvar_26 = greaterThan (_texcoord_25, vec2(0.0, 0.0)); @@ -120,10 +120,10 @@ void main () tmpvar_30.y = tmpvar_29; tmpvar_30.z = -(tmpvar_29); colorCoverage_2 = tmpvar_30; - float _depthMultiplier_31; + mediump float _depthMultiplier_31; _depthMultiplier_31 = (u_params1.w * u_params1.z); lowp float tmpvar_32; - vec2 tmpvar_33; + mediump vec2 tmpvar_33; tmpvar_33 = (v_texcoord2.xy / v_texcoord2.w); bool tmpvar_34; if (any(greaterThan (tmpvar_33, vec2(1.0, 1.0)))) { @@ -141,7 +141,7 @@ void main () visibility_1 = tmpvar_32; } else { if (tmpvar_13) { - vec2 _texcoord_35; + mediump vec2 _texcoord_35; _texcoord_35 = (v_texcoord3.xy / v_texcoord3.w); bvec2 tmpvar_36; tmpvar_36 = greaterThan (_texcoord_35, vec2(0.0, 0.0)); @@ -160,10 +160,10 @@ void main () tmpvar_40.y = -(tmpvar_39); tmpvar_40.z = tmpvar_39; colorCoverage_2 = tmpvar_40; - float _depthMultiplier_41; + mediump float _depthMultiplier_41; _depthMultiplier_41 = (u_params1.w * u_params1.z); lowp float tmpvar_42; - vec2 tmpvar_43; + mediump vec2 tmpvar_43; tmpvar_43 = (v_texcoord3.xy / v_texcoord3.w); bool tmpvar_44; if (any(greaterThan (tmpvar_43, vec2(1.0, 1.0)))) { @@ -180,7 +180,7 @@ void main () }; visibility_1 = tmpvar_42; } else { - vec2 _texcoord_45; + mediump vec2 _texcoord_45; _texcoord_45 = (v_texcoord4.xy / v_texcoord4.w); bvec2 tmpvar_46; tmpvar_46 = greaterThan (_texcoord_45, vec2(0.0, 0.0)); @@ -199,10 +199,10 @@ void main () tmpvar_50.y = -(tmpvar_49); tmpvar_50.z = -(tmpvar_49); colorCoverage_2 = tmpvar_50; - float _depthMultiplier_51; + mediump float _depthMultiplier_51; _depthMultiplier_51 = (u_params1.w * u_params1.z); lowp float tmpvar_52; - vec2 tmpvar_53; + mediump vec2 tmpvar_53; tmpvar_53 = (v_texcoord4.xy / v_texcoord4.w); bool tmpvar_54; if (any(greaterThan (tmpvar_53, vec2(1.0, 1.0)))) { @@ -221,21 +221,21 @@ void main () }; }; }; - vec3 tmpvar_55; + mediump vec3 tmpvar_55; tmpvar_55 = -(normalize(v_view)); - vec3 tmpvar_56; - float tmpvar_57; + mediump vec3 tmpvar_56; + mediump float tmpvar_57; tmpvar_56 = -(normalize(u_lightPosition.xyz)); tmpvar_57 = 1.0; if ((0.0 != u_lightPosition.w)) { - vec3 tmpvar_58; + mediump vec3 tmpvar_58; tmpvar_58 = (u_lightPosition.xyz - v_view); - vec3 tmpvar_59; + mediump vec3 tmpvar_59; tmpvar_59 = normalize(tmpvar_58); tmpvar_56 = tmpvar_59; - float tmpvar_60; + mediump float tmpvar_60; tmpvar_60 = cos((u_lightAttenuationSpotOuter.w * 0.0174533)); - float tmpvar_61; + mediump float tmpvar_61; tmpvar_61 = sqrt(dot (tmpvar_58, tmpvar_58)); tmpvar_57 = ((1.0/(( (u_lightAttenuationSpotOuter.x + (u_lightAttenuationSpotOuter.y * tmpvar_61)) @@ -253,9 +253,9 @@ void main () (u_lightAttenuationSpotOuter.w >= 90.0) ))); }; - float tmpvar_62; + mediump float tmpvar_62; tmpvar_62 = dot (v_normal, tmpvar_56); - vec2 tmpvar_63; + mediump vec2 tmpvar_63; tmpvar_63.x = tmpvar_62; tmpvar_63.y = ((( float((tmpvar_62 >= 0.0)) @@ -264,9 +264,9 @@ void main () ((2.0 * tmpvar_62) * v_normal) - tmpvar_56), tmpvar_55)), u_materialKs.w) ) * (2.0 + u_materialKs.w)) / 8.0); - vec2 tmpvar_64; + mediump vec2 tmpvar_64; tmpvar_64 = (max (tmpvar_63, 0.0) * tmpvar_57); - float tmpvar_65; + mediump float tmpvar_65; tmpvar_65 = sqrt(dot (v_view, v_view)); lowp vec3 tmpvar_66; tmpvar_66 = mix (vec3(0.0, 0.0, 0.0), (pow ( diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_esm_linear.bin b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_esm_linear.bin index 6aa548485ed2d6eec69047ea268ccd1115761dec..bd95e5c1925a03236966b6f4753db13f1a26feef 100644 GIT binary patch delta 499 zcmdldyG&l(E!cyRqae$pEU~CEGcR2sH#H@*G`C&4s2Mq{bMirYtkH+?uO2FEcH_C>LfH#DLQHg2bZ4++srv`HA_Gswj4q#wX|J z!E*$9yD^_vY!Xzd?{G9wE6y?T1V{#Kq zQj0PZbG#GbQWJm3OqOAko@~!3#|pM=@= 90.0) ))); }; - float tmpvar_62; + mediump float tmpvar_62; tmpvar_62 = dot (v_normal, tmpvar_56); - vec2 tmpvar_63; + mediump vec2 tmpvar_63; tmpvar_63.x = tmpvar_62; tmpvar_63.y = ((( float((tmpvar_62 >= 0.0)) @@ -272,9 +272,9 @@ void main () ((2.0 * tmpvar_62) * v_normal) - tmpvar_56), tmpvar_55)), u_materialKs.w) ) * (2.0 + u_materialKs.w)) / 8.0); - vec2 tmpvar_64; + mediump vec2 tmpvar_64; tmpvar_64 = (max (tmpvar_63, 0.0) * tmpvar_57); - float tmpvar_65; + mediump float tmpvar_65; tmpvar_65 = sqrt(dot (v_view, v_view)); lowp vec3 tmpvar_66; tmpvar_66 = mix (vec3(0.0, 0.0, 0.0), (pow ( diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_esm_linear_omni.bin b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_esm_linear_omni.bin index b2d9cf628f87f80966a46ffef341db1e35931eda..b02043e6fd590d820f7a3f72b739701368b55fe5 100644 GIT binary patch delta 752 zcmexmddWiEE!cz6t#R#~vc#gw%)E4k+|-oJ(%gcH{1O^arb1b2vWY@jd_jJ3W=Up# zo;4S`T6<}Bn6^l1O*CyKsTIlj`9&$lnEHC9Rge@L1MMiwOf9$OD$UDG%P-1>yJe4L z29i1xh0^$f#G=I9Vj~Qt5Vw}bC+Fwn7h#n(2I|gDEJ-cOOw934#85I>mQe=gnaLK6 zGP-CM=VYd5lmx&-0?nn93mKJpQFKfWloX!4hLMX0S#E5(OQAR;F(tno90l=))?5m(P~H5R$%GNEO^)Rh zjJ^3e%Niy)XA=7>1gDzo8G@6*dl1fQMwul7Wpv@5yiuRRW#T+l0Hm7hu zW!fCbcYtZKq+tE#1%fI}lg|j734#NpB)0$<67j|+K)sWdMd~K66mgmSRU~wBkZAbk ajiPBxljS9BCMQe$nw%=>vU#KALM8y`f_*^% diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_esm_omni.bin b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_esm_omni.bin index 93759022af85bb710abb934e724f9316dc3fe471..5366452b829c8e9506158e4a9d915c2698bfe9de 100644 GIT binary patch delta 717 zcmX?Oy2L`yJe4L z29i1xh0^$f#G=I9Vj~Qt5Vw}bC+Fwn7h#n(2I|gDEJ-cOOw934#85I>mQe=gnaLK6 zGP-CM=VYd5lmx&-0?nn93mKK+x+f#Cw=$~0#cwcb!q}6Tv|-H2T1-lCwl@>Pm|P}B zxOgvZ^2@>D8*gaMr2q@E&99kE7~$IFSWdy%o1e3+VS;levA;ras=1ya zI0?K5;hf0|0@-jaT>?A^iK#;7ib(D;Rw&6W049!jV-qB|Ouj2r2h%<|O4t?7o+lgz lXMYxsfU!4wiKHW}*dS&LlbHNQ>^GeKOdM{|W-WeGnM_)f zPctb_{=%d*S&ms@vKzAp#LD7~#FYGUumj_PE>zgOnc0MK@_Uw(n-8$AX4+iL@seqC z3inf{&4GLem?ldKW^L{k&4s2Mq{bMirYtkH+?uO2FEcH_C>LfH#DLQHg2bZ4++srv`HA_Gswj4q#wX|J zhMncy4&mRpQ4&g7S@=88zB87q|J768L6-Vo@01z5mLHe{=V>sZI; z3TJ;}3xl)W*&|@=&GXpPnc$90%gIkHnVi5SHd%p75vF9a1J`dj+lm`*{G9wE6y?T1V{#Kq zQj0PZbG#GbQWJm3OqOAko@~!3H#wD2X>vah?_^YF1zS9skxP;vt`y>!$?}}ilTDb6 zH|H}cF>Rj7a+7g#6`PqL*uy2c1wfz18v-4wF!>@|-Q;j~m&uFSLnm>BZ;t0kW14)H U%Vx45_piyqJT9B#d1f*J0MX@a6#xJL diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_hard_csm.bin b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_hard_csm.bin index 16bed84f1..d3d465f35 100644 --- a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_hard_csm.bin +++ b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_hard_csm.bin @@ -1,21 +1,21 @@ -FSHFvarying vec3 v_normal; -varying vec4 v_texcoord1; -varying vec4 v_texcoord2; -varying vec4 v_texcoord3; -varying vec4 v_texcoord4; -varying vec3 v_view; -uniform vec4 u_params1; -uniform vec4 u_params2; -uniform vec4 u_color; -uniform vec3 u_materialKa; -uniform vec3 u_materialKd; -uniform vec4 u_materialKs; -uniform vec4 u_lightPosition; -uniform vec4 u_lightAmbientPower; -uniform vec4 u_lightDiffusePower; -uniform vec4 u_lightSpecularPower; -uniform vec4 u_lightSpotDirectionInner; -uniform vec4 u_lightAttenuationSpotOuter; +FSHFvarying mediump vec3 v_normal; +varying mediump vec4 v_texcoord1; +varying mediump vec4 v_texcoord2; +varying mediump vec4 v_texcoord3; +varying mediump vec4 v_texcoord4; +varying mediump vec3 v_view; +uniform mediump vec4 u_params1; +uniform mediump vec4 u_params2; +uniform mediump vec4 u_color; +uniform mediump vec3 u_materialKa; +uniform mediump vec3 u_materialKd; +uniform mediump vec4 u_materialKs; +uniform mediump vec4 u_lightPosition; +uniform mediump vec4 u_lightAmbientPower; +uniform mediump vec4 u_lightDiffusePower; +uniform mediump vec4 u_lightSpecularPower; +uniform mediump vec4 u_lightSpotDirectionInner; +uniform mediump vec4 u_lightAttenuationSpotOuter; uniform sampler2D u_shadowMap0; uniform sampler2D u_shadowMap1; uniform sampler2D u_shadowMap2; @@ -24,11 +24,11 @@ void main () { lowp float visibility_1; lowp vec3 colorCoverage_2; - vec2 tmpvar_3; + mediump vec2 tmpvar_3; tmpvar_3 = (v_texcoord1.xy / v_texcoord1.w); - vec2 tmpvar_4; + mediump vec2 tmpvar_4; tmpvar_4 = (v_texcoord2.xy / v_texcoord2.w); - vec2 tmpvar_5; + mediump vec2 tmpvar_5; tmpvar_5 = (v_texcoord3.xy / v_texcoord3.w); bvec2 tmpvar_6; tmpvar_6 = lessThan (tmpvar_3, vec2(0.99, 0.99)); @@ -61,7 +61,7 @@ void main () tmpvar_13 = bool(0); }; if (tmpvar_7) { - vec2 _texcoord_15; + mediump vec2 _texcoord_15; _texcoord_15 = (v_texcoord1.xy / v_texcoord1.w); bvec2 tmpvar_16; tmpvar_16 = greaterThan (_texcoord_15, vec2(0.0, 0.0)); @@ -81,7 +81,7 @@ void main () tmpvar_20.z = -(tmpvar_19); colorCoverage_2 = tmpvar_20; lowp float tmpvar_21; - vec2 tmpvar_22; + mediump vec2 tmpvar_22; tmpvar_22 = (v_texcoord1.xy / v_texcoord1.w); bool tmpvar_23; if (any(greaterThan (tmpvar_22, vec2(1.0, 1.0)))) { @@ -99,7 +99,7 @@ void main () visibility_1 = tmpvar_21; } else { if (tmpvar_10) { - vec2 _texcoord_24; + mediump vec2 _texcoord_24; _texcoord_24 = (v_texcoord2.xy / v_texcoord2.w); bvec2 tmpvar_25; tmpvar_25 = greaterThan (_texcoord_24, vec2(0.0, 0.0)); @@ -119,7 +119,7 @@ void main () tmpvar_29.z = -(tmpvar_28); colorCoverage_2 = tmpvar_29; lowp float tmpvar_30; - vec2 tmpvar_31; + mediump vec2 tmpvar_31; tmpvar_31 = (v_texcoord2.xy / v_texcoord2.w); bool tmpvar_32; if (any(greaterThan (tmpvar_31, vec2(1.0, 1.0)))) { @@ -137,7 +137,7 @@ void main () visibility_1 = tmpvar_30; } else { if (tmpvar_13) { - vec2 _texcoord_33; + mediump vec2 _texcoord_33; _texcoord_33 = (v_texcoord3.xy / v_texcoord3.w); bvec2 tmpvar_34; tmpvar_34 = greaterThan (_texcoord_33, vec2(0.0, 0.0)); @@ -157,7 +157,7 @@ void main () tmpvar_38.z = tmpvar_37; colorCoverage_2 = tmpvar_38; lowp float tmpvar_39; - vec2 tmpvar_40; + mediump vec2 tmpvar_40; tmpvar_40 = (v_texcoord3.xy / v_texcoord3.w); bool tmpvar_41; if (any(greaterThan (tmpvar_40, vec2(1.0, 1.0)))) { @@ -174,7 +174,7 @@ void main () }; visibility_1 = tmpvar_39; } else { - vec2 _texcoord_42; + mediump vec2 _texcoord_42; _texcoord_42 = (v_texcoord4.xy / v_texcoord4.w); bvec2 tmpvar_43; tmpvar_43 = greaterThan (_texcoord_42, vec2(0.0, 0.0)); @@ -194,7 +194,7 @@ void main () tmpvar_47.z = -(tmpvar_46); colorCoverage_2 = tmpvar_47; lowp float tmpvar_48; - vec2 tmpvar_49; + mediump vec2 tmpvar_49; tmpvar_49 = (v_texcoord4.xy / v_texcoord4.w); bool tmpvar_50; if (any(greaterThan (tmpvar_49, vec2(1.0, 1.0)))) { @@ -213,21 +213,21 @@ void main () }; }; }; - vec3 tmpvar_51; + mediump vec3 tmpvar_51; tmpvar_51 = -(normalize(v_view)); - vec3 tmpvar_52; - float tmpvar_53; + mediump vec3 tmpvar_52; + mediump float tmpvar_53; tmpvar_52 = -(normalize(u_lightPosition.xyz)); tmpvar_53 = 1.0; if ((0.0 != u_lightPosition.w)) { - vec3 tmpvar_54; + mediump vec3 tmpvar_54; tmpvar_54 = (u_lightPosition.xyz - v_view); - vec3 tmpvar_55; + mediump vec3 tmpvar_55; tmpvar_55 = normalize(tmpvar_54); tmpvar_52 = tmpvar_55; - float tmpvar_56; + mediump float tmpvar_56; tmpvar_56 = cos((u_lightAttenuationSpotOuter.w * 0.0174533)); - float tmpvar_57; + mediump float tmpvar_57; tmpvar_57 = sqrt(dot (tmpvar_54, tmpvar_54)); tmpvar_53 = ((1.0/(( (u_lightAttenuationSpotOuter.x + (u_lightAttenuationSpotOuter.y * tmpvar_57)) @@ -245,9 +245,9 @@ void main () (u_lightAttenuationSpotOuter.w >= 90.0) ))); }; - float tmpvar_58; + mediump float tmpvar_58; tmpvar_58 = dot (v_normal, tmpvar_52); - vec2 tmpvar_59; + mediump vec2 tmpvar_59; tmpvar_59.x = tmpvar_58; tmpvar_59.y = ((( float((tmpvar_58 >= 0.0)) @@ -256,9 +256,9 @@ void main () ((2.0 * tmpvar_58) * v_normal) - tmpvar_52), tmpvar_51)), u_materialKs.w) ) * (2.0 + u_materialKs.w)) / 8.0); - vec2 tmpvar_60; + mediump vec2 tmpvar_60; tmpvar_60 = (max (tmpvar_59, 0.0) * tmpvar_53); - float tmpvar_61; + mediump float tmpvar_61; tmpvar_61 = sqrt(dot (v_view, v_view)); lowp vec3 tmpvar_62; tmpvar_62 = mix (vec3(0.0, 0.0, 0.0), (pow ( diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_hard_linear.bin b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_hard_linear.bin index 3ac6fa0e71a919147567773207894b87533c6e0f..b9976e4450908352e580e6da3903157d3075bb2a 100644 GIT binary patch delta 497 zcmdlXGeb_?E!cyRqae$pEU~CEGcR2sH#H@*G`C&4s2Mq{bMirYtkH+?uO2FEcH_C>LfH#DLQHg2bZ4++srv`HA_Gswj4q#wX|J zg_nBbhB%z|*vWKK47MI_UV6-sgofMFJI2=u-JEMO)Fvem(~Pd>-y z3TF$khr!wD>=7{b=6&qxOmIi0<>V)pOm5&3o9w`)2vagSf$KM%9mNeda`QaySxf+v CzOtSG delta 317 zcmbOsw?n4hE!cyRqae$pEU~CEGcR4CEH&9!p)5WxzbH2`$C?XC*aRqCoROH4U!I(w zUzCC(2hviOnObhmRhpNX2Gk2O$3&qtz96wEF}K(dhq#foCAx;>{G9wE6y?T1V{#Kq zQj0PZbG#GbQWJm3OqOAko@~!3H#wD2X>vah?_^YF1zS8>kxP;vt`y>!$@ZMmlTDb6 zH|H~PGi`2S5n!4;i_J_B?BSB!0-#Uh4S^0-nEa8gZgM%h%jCoCp_3Ij!Z+7*q%lo? U%Vjg!ko(tUV;+~y^*l3~0N?v;VE_OC diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_hard_linear_csm.bin b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_hard_linear_csm.bin index cf09c2566..f87f74d3d 100644 --- a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_hard_linear_csm.bin +++ b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_hard_linear_csm.bin @@ -1,21 +1,21 @@ -FSHFvarying vec3 v_normal; -varying vec4 v_texcoord1; -varying vec4 v_texcoord2; -varying vec4 v_texcoord3; -varying vec4 v_texcoord4; -varying vec3 v_view; -uniform vec4 u_params1; -uniform vec4 u_params2; -uniform vec4 u_color; -uniform vec3 u_materialKa; -uniform vec3 u_materialKd; -uniform vec4 u_materialKs; -uniform vec4 u_lightPosition; -uniform vec4 u_lightAmbientPower; -uniform vec4 u_lightDiffusePower; -uniform vec4 u_lightSpecularPower; -uniform vec4 u_lightSpotDirectionInner; -uniform vec4 u_lightAttenuationSpotOuter; +FSHFvarying mediump vec3 v_normal; +varying mediump vec4 v_texcoord1; +varying mediump vec4 v_texcoord2; +varying mediump vec4 v_texcoord3; +varying mediump vec4 v_texcoord4; +varying mediump vec3 v_view; +uniform mediump vec4 u_params1; +uniform mediump vec4 u_params2; +uniform mediump vec4 u_color; +uniform mediump vec3 u_materialKa; +uniform mediump vec3 u_materialKd; +uniform mediump vec4 u_materialKs; +uniform mediump vec4 u_lightPosition; +uniform mediump vec4 u_lightAmbientPower; +uniform mediump vec4 u_lightDiffusePower; +uniform mediump vec4 u_lightSpecularPower; +uniform mediump vec4 u_lightSpotDirectionInner; +uniform mediump vec4 u_lightAttenuationSpotOuter; uniform sampler2D u_shadowMap0; uniform sampler2D u_shadowMap1; uniform sampler2D u_shadowMap2; @@ -24,11 +24,11 @@ void main () { lowp float visibility_1; lowp vec3 colorCoverage_2; - vec2 tmpvar_3; + mediump vec2 tmpvar_3; tmpvar_3 = (v_texcoord1.xy / v_texcoord1.w); - vec2 tmpvar_4; + mediump vec2 tmpvar_4; tmpvar_4 = (v_texcoord2.xy / v_texcoord2.w); - vec2 tmpvar_5; + mediump vec2 tmpvar_5; tmpvar_5 = (v_texcoord3.xy / v_texcoord3.w); bvec2 tmpvar_6; tmpvar_6 = lessThan (tmpvar_3, vec2(0.99, 0.99)); @@ -61,7 +61,7 @@ void main () tmpvar_13 = bool(0); }; if (tmpvar_7) { - vec2 _texcoord_15; + mediump vec2 _texcoord_15; _texcoord_15 = (v_texcoord1.xy / v_texcoord1.w); bvec2 tmpvar_16; tmpvar_16 = greaterThan (_texcoord_15, vec2(0.0, 0.0)); @@ -80,7 +80,7 @@ void main () tmpvar_20.y = tmpvar_19; tmpvar_20.z = -(tmpvar_19); colorCoverage_2 = tmpvar_20; - vec4 tmpvar_21; + mediump vec4 tmpvar_21; tmpvar_21.w = 1.0; tmpvar_21.xy = (v_texcoord1.xy / v_texcoord1.w); tmpvar_21.z = v_texcoord1.z; @@ -99,7 +99,7 @@ void main () visibility_1 = tmpvar_22; } else { if (tmpvar_10) { - vec2 _texcoord_24; + mediump vec2 _texcoord_24; _texcoord_24 = (v_texcoord2.xy / v_texcoord2.w); bvec2 tmpvar_25; tmpvar_25 = greaterThan (_texcoord_24, vec2(0.0, 0.0)); @@ -118,7 +118,7 @@ void main () tmpvar_29.y = tmpvar_28; tmpvar_29.z = -(tmpvar_28); colorCoverage_2 = tmpvar_29; - vec4 tmpvar_30; + mediump vec4 tmpvar_30; tmpvar_30.w = 1.0; tmpvar_30.xy = (v_texcoord2.xy / v_texcoord2.w); tmpvar_30.z = v_texcoord2.z; @@ -137,7 +137,7 @@ void main () visibility_1 = tmpvar_31; } else { if (tmpvar_13) { - vec2 _texcoord_33; + mediump vec2 _texcoord_33; _texcoord_33 = (v_texcoord3.xy / v_texcoord3.w); bvec2 tmpvar_34; tmpvar_34 = greaterThan (_texcoord_33, vec2(0.0, 0.0)); @@ -156,7 +156,7 @@ void main () tmpvar_38.y = -(tmpvar_37); tmpvar_38.z = tmpvar_37; colorCoverage_2 = tmpvar_38; - vec4 tmpvar_39; + mediump vec4 tmpvar_39; tmpvar_39.w = 1.0; tmpvar_39.xy = (v_texcoord3.xy / v_texcoord3.w); tmpvar_39.z = v_texcoord3.z; @@ -174,7 +174,7 @@ void main () }; visibility_1 = tmpvar_40; } else { - vec2 _texcoord_42; + mediump vec2 _texcoord_42; _texcoord_42 = (v_texcoord4.xy / v_texcoord4.w); bvec2 tmpvar_43; tmpvar_43 = greaterThan (_texcoord_42, vec2(0.0, 0.0)); @@ -193,7 +193,7 @@ void main () tmpvar_47.y = -(tmpvar_46); tmpvar_47.z = -(tmpvar_46); colorCoverage_2 = tmpvar_47; - vec4 tmpvar_48; + mediump vec4 tmpvar_48; tmpvar_48.w = 1.0; tmpvar_48.xy = (v_texcoord4.xy / v_texcoord4.w); tmpvar_48.z = v_texcoord4.z; @@ -213,21 +213,21 @@ void main () }; }; }; - vec3 tmpvar_51; + mediump vec3 tmpvar_51; tmpvar_51 = -(normalize(v_view)); - vec3 tmpvar_52; - float tmpvar_53; + mediump vec3 tmpvar_52; + mediump float tmpvar_53; tmpvar_52 = -(normalize(u_lightPosition.xyz)); tmpvar_53 = 1.0; if ((0.0 != u_lightPosition.w)) { - vec3 tmpvar_54; + mediump vec3 tmpvar_54; tmpvar_54 = (u_lightPosition.xyz - v_view); - vec3 tmpvar_55; + mediump vec3 tmpvar_55; tmpvar_55 = normalize(tmpvar_54); tmpvar_52 = tmpvar_55; - float tmpvar_56; + mediump float tmpvar_56; tmpvar_56 = cos((u_lightAttenuationSpotOuter.w * 0.0174533)); - float tmpvar_57; + mediump float tmpvar_57; tmpvar_57 = sqrt(dot (tmpvar_54, tmpvar_54)); tmpvar_53 = ((1.0/(( (u_lightAttenuationSpotOuter.x + (u_lightAttenuationSpotOuter.y * tmpvar_57)) @@ -245,9 +245,9 @@ void main () (u_lightAttenuationSpotOuter.w >= 90.0) ))); }; - float tmpvar_58; + mediump float tmpvar_58; tmpvar_58 = dot (v_normal, tmpvar_52); - vec2 tmpvar_59; + mediump vec2 tmpvar_59; tmpvar_59.x = tmpvar_58; tmpvar_59.y = ((( float((tmpvar_58 >= 0.0)) @@ -256,9 +256,9 @@ void main () ((2.0 * tmpvar_58) * v_normal) - tmpvar_52), tmpvar_51)), u_materialKs.w) ) * (2.0 + u_materialKs.w)) / 8.0); - vec2 tmpvar_60; + mediump vec2 tmpvar_60; tmpvar_60 = (max (tmpvar_59, 0.0) * tmpvar_53); - float tmpvar_61; + mediump float tmpvar_61; tmpvar_61 = sqrt(dot (v_view, v_view)); lowp vec3 tmpvar_62; tmpvar_62 = mix (vec3(0.0, 0.0, 0.0), (pow ( diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_hard_linear_omni.bin b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_hard_linear_omni.bin index b46df703bd43105cf1d6cd4641ee482b2f6d6e50..7e40f8d98134458a963c3ad1fce5c85877e03163 100644 GIT binary patch delta 715 zcmexra@1VhE!cz6t#R#~vc#gw%)E4k+|-oJ(%gcH{1O^arb1b2vWY@jd_jJ3W=Up# zo;4S`T6<}Bn6^l1O*CyKsTIlj`9&$lnEHC9Rge@L1MMiwOf9$OD$UDG%P-1>yJe4L z29i1xh0^$f#G=I9Vj~Qt5Vw}bC+Fwn7h#n(2I|gDEJ-cOOw934#85I>mQe=gnaLK6 zGP-CM=VYd5lmx&-0?nn93mKK+x+gO#^P=dUtSBim`8*>RT*VDWO&EI;lQxVwS&K;t z&h}E4Jyf`Bp(M8em^9*zfl&>&e{!2p9n6-=%)+j4 qw!3f`oIOW40><9_SvVbGMWmQ5Ok(m>vEOiZzc}2W&6mX&F#!NKFa%Zr delta 344 zcmX?V{?#PXE!cz6t#R#~vc#gw%)E4kveaZ_g|hg({G!~%9BVElVH2QmL4I*&NoIZ? zhD1qfMRI5N{VnIGz&8+PqqW%OeT%VGnup| zpJq~={DnzrvK+I*WH)9Hh?T_|i7ENzUbK&9u3g<0aGP z6z-=?n*;d{Fm09;lw+D~FKi|V4vUi90$?D-8yf@lO`axPH(5r+Wpai{=;Wg!;hR-N Z)0iet61SOrP5js78xk&?RU{WO0RV0ydhh@M diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_hard_omni.bin b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_hard_omni.bin index e77cba7184033635123b15b07f9687583b1f23ba..ed0463f64fb396bd20be460dcd569e335146780b 100644 GIT binary patch delta 705 zcmca?ve;bQE!cz6t#R#~vc#gw%)E4k+|-oJ(%gcH{1O^arb1b2vWY@jd_jJ3W=Up# zo;4S`T6<}Bn6^l1O*CyKsTIlj`9&$lnEHC9Rge@L1MMiwOf9$OD$UDG%P-1>yJe4L z29i1xh0^$f#G=I9Vj~Qt5Vw}bC+Fwn7h#n(2I|gDEJ-cOOw934#85I>mQe=gnaLK6 zGP-CM=VYd5lmx&-0?nn93mKK+x+f#Cw=$~0#cwcb!q}6Tv|-H2T1-lCwl@>Pm|P}B zxOgvZ^2@>D8*gaMr2q@E&99kE7~$IFSWdy%o1e3+VS;levA;ras=1ya zI0?Kr5gZGFrwGGjgv=F@++eIwl3M^w5b?&q2!`7~IYp=rX3OMuRRW#T+l0Hm7hu zW!fCbcY|rOq2Lq7$+E&`g5ba?$t?heLcFmtP~YSd;kwDcgk2`PiG)sGEE2w%Ni>aV Wa)G$b= 90.0) ))); }; - float tmpvar_98; + mediump float tmpvar_98; tmpvar_98 = dot (v_normal, tmpvar_92); - vec2 tmpvar_99; + mediump vec2 tmpvar_99; tmpvar_99.x = tmpvar_98; tmpvar_99.y = ((( float((tmpvar_98 >= 0.0)) @@ -438,9 +438,9 @@ void main () ((2.0 * tmpvar_98) * v_normal) - tmpvar_92), tmpvar_91)), u_materialKs.w) ) * (2.0 + u_materialKs.w)) / 8.0); - vec2 tmpvar_100; + mediump vec2 tmpvar_100; tmpvar_100 = (max (tmpvar_99, 0.0) * tmpvar_93); - float tmpvar_101; + mediump float tmpvar_101; tmpvar_101 = sqrt(dot (v_view, v_view)); lowp vec3 tmpvar_102; tmpvar_102 = mix (vec3(0.0, 0.0, 0.0), (pow ( diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_pcf_csm.bin b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_pcf_csm.bin index 388c2922a..689b09728 100644 --- a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_pcf_csm.bin +++ b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_pcf_csm.bin @@ -1,22 +1,22 @@ -FSHFvarying vec3 v_normal; -varying vec4 v_texcoord1; -varying vec4 v_texcoord2; -varying vec4 v_texcoord3; -varying vec4 v_texcoord4; -varying vec3 v_view; -uniform vec4 u_params1; -uniform vec4 u_params2; -uniform vec4 u_color; -uniform vec3 u_materialKa; -uniform vec3 u_materialKd; -uniform vec4 u_materialKs; -uniform vec4 u_lightPosition; -uniform vec4 u_lightAmbientPower; -uniform vec4 u_lightDiffusePower; -uniform vec4 u_lightSpecularPower; -uniform vec4 u_lightSpotDirectionInner; -uniform vec4 u_lightAttenuationSpotOuter; -uniform vec4 u_smSamplingParams; +FSHFvarying mediump vec3 v_normal; +varying mediump vec4 v_texcoord1; +varying mediump vec4 v_texcoord2; +varying mediump vec4 v_texcoord3; +varying mediump vec4 v_texcoord4; +varying mediump vec3 v_view; +uniform mediump vec4 u_params1; +uniform mediump vec4 u_params2; +uniform mediump vec4 u_color; +uniform mediump vec3 u_materialKa; +uniform mediump vec3 u_materialKd; +uniform mediump vec4 u_materialKs; +uniform mediump vec4 u_lightPosition; +uniform mediump vec4 u_lightAmbientPower; +uniform mediump vec4 u_lightDiffusePower; +uniform mediump vec4 u_lightSpecularPower; +uniform mediump vec4 u_lightSpotDirectionInner; +uniform mediump vec4 u_lightAttenuationSpotOuter; +uniform mediump vec4 u_smSamplingParams; uniform sampler2D u_shadowMap0; uniform sampler2D u_shadowMap1; uniform sampler2D u_shadowMap2; @@ -25,11 +25,11 @@ void main () { lowp float visibility_1; lowp vec3 colorCoverage_2; - vec2 tmpvar_3; + mediump vec2 tmpvar_3; tmpvar_3 = (v_texcoord1.xy / v_texcoord1.w); - vec2 tmpvar_4; + mediump vec2 tmpvar_4; tmpvar_4 = (v_texcoord2.xy / v_texcoord2.w); - vec2 tmpvar_5; + mediump vec2 tmpvar_5; tmpvar_5 = (v_texcoord3.xy / v_texcoord3.w); bvec2 tmpvar_6; tmpvar_6 = lessThan (tmpvar_3, vec2(0.99, 0.99)); @@ -62,7 +62,7 @@ void main () tmpvar_13 = bool(0); }; if (tmpvar_7) { - vec2 _texcoord_15; + mediump vec2 _texcoord_15; _texcoord_15 = (v_texcoord1.xy / v_texcoord1.w); bvec2 tmpvar_16; tmpvar_16 = greaterThan (_texcoord_15, vec2(0.0, 0.0)); @@ -83,15 +83,15 @@ void main () colorCoverage_2 = tmpvar_20; lowp float result_21; result_21 = 0.0; - vec2 tmpvar_22; + mediump vec2 tmpvar_22; tmpvar_22 = ((u_smSamplingParams.zw * u_params2.zz) * v_texcoord1.w); - vec4 tmpvar_23; + mediump vec4 tmpvar_23; tmpvar_23.zw = vec2(0.0, 0.0); tmpvar_23.xy = (vec2(-1.5, -1.5) * tmpvar_22); - vec4 _shadowCoord_24; + mediump vec4 _shadowCoord_24; _shadowCoord_24 = (v_texcoord1 + tmpvar_23); lowp float tmpvar_25; - vec2 tmpvar_26; + mediump vec2 tmpvar_26; tmpvar_26 = (_shadowCoord_24.xy / _shadowCoord_24.w); bool tmpvar_27; if (any(greaterThan (tmpvar_26, vec2(1.0, 1.0)))) { @@ -107,13 +107,13 @@ void main () / _shadowCoord_24.w))); }; result_21 = tmpvar_25; - vec4 tmpvar_28; + mediump vec4 tmpvar_28; tmpvar_28.zw = vec2(0.0, 0.0); tmpvar_28.xy = (vec2(-1.5, -0.5) * tmpvar_22); - vec4 _shadowCoord_29; + mediump vec4 _shadowCoord_29; _shadowCoord_29 = (v_texcoord1 + tmpvar_28); lowp float tmpvar_30; - vec2 tmpvar_31; + mediump vec2 tmpvar_31; tmpvar_31 = (_shadowCoord_29.xy / _shadowCoord_29.w); bool tmpvar_32; if (any(greaterThan (tmpvar_31, vec2(1.0, 1.0)))) { @@ -129,13 +129,13 @@ void main () / _shadowCoord_29.w))); }; result_21 = (tmpvar_25 + tmpvar_30); - vec4 tmpvar_33; + mediump vec4 tmpvar_33; tmpvar_33.zw = vec2(0.0, 0.0); tmpvar_33.xy = (vec2(-1.5, 0.5) * tmpvar_22); - vec4 _shadowCoord_34; + mediump vec4 _shadowCoord_34; _shadowCoord_34 = (v_texcoord1 + tmpvar_33); lowp float tmpvar_35; - vec2 tmpvar_36; + mediump vec2 tmpvar_36; tmpvar_36 = (_shadowCoord_34.xy / _shadowCoord_34.w); bool tmpvar_37; if (any(greaterThan (tmpvar_36, vec2(1.0, 1.0)))) { @@ -151,13 +151,13 @@ void main () / _shadowCoord_34.w))); }; result_21 = (result_21 + tmpvar_35); - vec4 tmpvar_38; + mediump vec4 tmpvar_38; tmpvar_38.zw = vec2(0.0, 0.0); tmpvar_38.xy = (vec2(-1.5, 1.5) * tmpvar_22); - vec4 _shadowCoord_39; + mediump vec4 _shadowCoord_39; _shadowCoord_39 = (v_texcoord1 + tmpvar_38); lowp float tmpvar_40; - vec2 tmpvar_41; + mediump vec2 tmpvar_41; tmpvar_41 = (_shadowCoord_39.xy / _shadowCoord_39.w); bool tmpvar_42; if (any(greaterThan (tmpvar_41, vec2(1.0, 1.0)))) { @@ -173,13 +173,13 @@ void main () / _shadowCoord_39.w))); }; result_21 = (result_21 + tmpvar_40); - vec4 tmpvar_43; + mediump vec4 tmpvar_43; tmpvar_43.zw = vec2(0.0, 0.0); tmpvar_43.xy = (vec2(-0.5, -1.5) * tmpvar_22); - vec4 _shadowCoord_44; + mediump vec4 _shadowCoord_44; _shadowCoord_44 = (v_texcoord1 + tmpvar_43); lowp float tmpvar_45; - vec2 tmpvar_46; + mediump vec2 tmpvar_46; tmpvar_46 = (_shadowCoord_44.xy / _shadowCoord_44.w); bool tmpvar_47; if (any(greaterThan (tmpvar_46, vec2(1.0, 1.0)))) { @@ -195,13 +195,13 @@ void main () / _shadowCoord_44.w))); }; result_21 = (result_21 + tmpvar_45); - vec4 tmpvar_48; + mediump vec4 tmpvar_48; tmpvar_48.zw = vec2(0.0, 0.0); tmpvar_48.xy = (vec2(-0.5, -0.5) * tmpvar_22); - vec4 _shadowCoord_49; + mediump vec4 _shadowCoord_49; _shadowCoord_49 = (v_texcoord1 + tmpvar_48); lowp float tmpvar_50; - vec2 tmpvar_51; + mediump vec2 tmpvar_51; tmpvar_51 = (_shadowCoord_49.xy / _shadowCoord_49.w); bool tmpvar_52; if (any(greaterThan (tmpvar_51, vec2(1.0, 1.0)))) { @@ -217,13 +217,13 @@ void main () / _shadowCoord_49.w))); }; result_21 = (result_21 + tmpvar_50); - vec4 tmpvar_53; + mediump vec4 tmpvar_53; tmpvar_53.zw = vec2(0.0, 0.0); tmpvar_53.xy = (vec2(-0.5, 0.5) * tmpvar_22); - vec4 _shadowCoord_54; + mediump vec4 _shadowCoord_54; _shadowCoord_54 = (v_texcoord1 + tmpvar_53); lowp float tmpvar_55; - vec2 tmpvar_56; + mediump vec2 tmpvar_56; tmpvar_56 = (_shadowCoord_54.xy / _shadowCoord_54.w); bool tmpvar_57; if (any(greaterThan (tmpvar_56, vec2(1.0, 1.0)))) { @@ -239,13 +239,13 @@ void main () / _shadowCoord_54.w))); }; result_21 = (result_21 + tmpvar_55); - vec4 tmpvar_58; + mediump vec4 tmpvar_58; tmpvar_58.zw = vec2(0.0, 0.0); tmpvar_58.xy = (vec2(-0.5, 1.5) * tmpvar_22); - vec4 _shadowCoord_59; + mediump vec4 _shadowCoord_59; _shadowCoord_59 = (v_texcoord1 + tmpvar_58); lowp float tmpvar_60; - vec2 tmpvar_61; + mediump vec2 tmpvar_61; tmpvar_61 = (_shadowCoord_59.xy / _shadowCoord_59.w); bool tmpvar_62; if (any(greaterThan (tmpvar_61, vec2(1.0, 1.0)))) { @@ -261,13 +261,13 @@ void main () / _shadowCoord_59.w))); }; result_21 = (result_21 + tmpvar_60); - vec4 tmpvar_63; + mediump vec4 tmpvar_63; tmpvar_63.zw = vec2(0.0, 0.0); tmpvar_63.xy = (vec2(0.5, -1.5) * tmpvar_22); - vec4 _shadowCoord_64; + mediump vec4 _shadowCoord_64; _shadowCoord_64 = (v_texcoord1 + tmpvar_63); lowp float tmpvar_65; - vec2 tmpvar_66; + mediump vec2 tmpvar_66; tmpvar_66 = (_shadowCoord_64.xy / _shadowCoord_64.w); bool tmpvar_67; if (any(greaterThan (tmpvar_66, vec2(1.0, 1.0)))) { @@ -283,13 +283,13 @@ void main () / _shadowCoord_64.w))); }; result_21 = (result_21 + tmpvar_65); - vec4 tmpvar_68; + mediump vec4 tmpvar_68; tmpvar_68.zw = vec2(0.0, 0.0); tmpvar_68.xy = (vec2(0.5, -0.5) * tmpvar_22); - vec4 _shadowCoord_69; + mediump vec4 _shadowCoord_69; _shadowCoord_69 = (v_texcoord1 + tmpvar_68); lowp float tmpvar_70; - vec2 tmpvar_71; + mediump vec2 tmpvar_71; tmpvar_71 = (_shadowCoord_69.xy / _shadowCoord_69.w); bool tmpvar_72; if (any(greaterThan (tmpvar_71, vec2(1.0, 1.0)))) { @@ -305,13 +305,13 @@ void main () / _shadowCoord_69.w))); }; result_21 = (result_21 + tmpvar_70); - vec4 tmpvar_73; + mediump vec4 tmpvar_73; tmpvar_73.zw = vec2(0.0, 0.0); tmpvar_73.xy = (vec2(0.5, 0.5) * tmpvar_22); - vec4 _shadowCoord_74; + mediump vec4 _shadowCoord_74; _shadowCoord_74 = (v_texcoord1 + tmpvar_73); lowp float tmpvar_75; - vec2 tmpvar_76; + mediump vec2 tmpvar_76; tmpvar_76 = (_shadowCoord_74.xy / _shadowCoord_74.w); bool tmpvar_77; if (any(greaterThan (tmpvar_76, vec2(1.0, 1.0)))) { @@ -327,13 +327,13 @@ void main () / _shadowCoord_74.w))); }; result_21 = (result_21 + tmpvar_75); - vec4 tmpvar_78; + mediump vec4 tmpvar_78; tmpvar_78.zw = vec2(0.0, 0.0); tmpvar_78.xy = (vec2(0.5, 1.5) * tmpvar_22); - vec4 _shadowCoord_79; + mediump vec4 _shadowCoord_79; _shadowCoord_79 = (v_texcoord1 + tmpvar_78); lowp float tmpvar_80; - vec2 tmpvar_81; + mediump vec2 tmpvar_81; tmpvar_81 = (_shadowCoord_79.xy / _shadowCoord_79.w); bool tmpvar_82; if (any(greaterThan (tmpvar_81, vec2(1.0, 1.0)))) { @@ -349,13 +349,13 @@ void main () / _shadowCoord_79.w))); }; result_21 = (result_21 + tmpvar_80); - vec4 tmpvar_83; + mediump vec4 tmpvar_83; tmpvar_83.zw = vec2(0.0, 0.0); tmpvar_83.xy = (vec2(1.5, -1.5) * tmpvar_22); - vec4 _shadowCoord_84; + mediump vec4 _shadowCoord_84; _shadowCoord_84 = (v_texcoord1 + tmpvar_83); lowp float tmpvar_85; - vec2 tmpvar_86; + mediump vec2 tmpvar_86; tmpvar_86 = (_shadowCoord_84.xy / _shadowCoord_84.w); bool tmpvar_87; if (any(greaterThan (tmpvar_86, vec2(1.0, 1.0)))) { @@ -371,13 +371,13 @@ void main () / _shadowCoord_84.w))); }; result_21 = (result_21 + tmpvar_85); - vec4 tmpvar_88; + mediump vec4 tmpvar_88; tmpvar_88.zw = vec2(0.0, 0.0); tmpvar_88.xy = (vec2(1.5, -0.5) * tmpvar_22); - vec4 _shadowCoord_89; + mediump vec4 _shadowCoord_89; _shadowCoord_89 = (v_texcoord1 + tmpvar_88); lowp float tmpvar_90; - vec2 tmpvar_91; + mediump vec2 tmpvar_91; tmpvar_91 = (_shadowCoord_89.xy / _shadowCoord_89.w); bool tmpvar_92; if (any(greaterThan (tmpvar_91, vec2(1.0, 1.0)))) { @@ -393,13 +393,13 @@ void main () / _shadowCoord_89.w))); }; result_21 = (result_21 + tmpvar_90); - vec4 tmpvar_93; + mediump vec4 tmpvar_93; tmpvar_93.zw = vec2(0.0, 0.0); tmpvar_93.xy = (vec2(1.5, 0.5) * tmpvar_22); - vec4 _shadowCoord_94; + mediump vec4 _shadowCoord_94; _shadowCoord_94 = (v_texcoord1 + tmpvar_93); lowp float tmpvar_95; - vec2 tmpvar_96; + mediump vec2 tmpvar_96; tmpvar_96 = (_shadowCoord_94.xy / _shadowCoord_94.w); bool tmpvar_97; if (any(greaterThan (tmpvar_96, vec2(1.0, 1.0)))) { @@ -415,13 +415,13 @@ void main () / _shadowCoord_94.w))); }; result_21 = (result_21 + tmpvar_95); - vec4 tmpvar_98; + mediump vec4 tmpvar_98; tmpvar_98.zw = vec2(0.0, 0.0); tmpvar_98.xy = (vec2(1.5, 1.5) * tmpvar_22); - vec4 _shadowCoord_99; + mediump vec4 _shadowCoord_99; _shadowCoord_99 = (v_texcoord1 + tmpvar_98); lowp float tmpvar_100; - vec2 tmpvar_101; + mediump vec2 tmpvar_101; tmpvar_101 = (_shadowCoord_99.xy / _shadowCoord_99.w); bool tmpvar_102; if (any(greaterThan (tmpvar_101, vec2(1.0, 1.0)))) { @@ -442,7 +442,7 @@ void main () visibility_1 = (tmpvar_103 / 16.0); } else { if (tmpvar_10) { - vec2 _texcoord_104; + mediump vec2 _texcoord_104; _texcoord_104 = (v_texcoord2.xy / v_texcoord2.w); bvec2 tmpvar_105; tmpvar_105 = greaterThan (_texcoord_104, vec2(0.0, 0.0)); @@ -463,15 +463,15 @@ void main () colorCoverage_2 = tmpvar_109; lowp float result_110; result_110 = 0.0; - vec2 tmpvar_111; + mediump vec2 tmpvar_111; tmpvar_111 = ((u_smSamplingParams.zw * (u_params2.zz / 2.0)) * v_texcoord2.w); - vec4 tmpvar_112; + mediump vec4 tmpvar_112; tmpvar_112.zw = vec2(0.0, 0.0); tmpvar_112.xy = (vec2(-1.5, -1.5) * tmpvar_111); - vec4 _shadowCoord_113; + mediump vec4 _shadowCoord_113; _shadowCoord_113 = (v_texcoord2 + tmpvar_112); lowp float tmpvar_114; - vec2 tmpvar_115; + mediump vec2 tmpvar_115; tmpvar_115 = (_shadowCoord_113.xy / _shadowCoord_113.w); bool tmpvar_116; if (any(greaterThan (tmpvar_115, vec2(1.0, 1.0)))) { @@ -487,13 +487,13 @@ void main () / _shadowCoord_113.w))); }; result_110 = tmpvar_114; - vec4 tmpvar_117; + mediump vec4 tmpvar_117; tmpvar_117.zw = vec2(0.0, 0.0); tmpvar_117.xy = (vec2(-1.5, -0.5) * tmpvar_111); - vec4 _shadowCoord_118; + mediump vec4 _shadowCoord_118; _shadowCoord_118 = (v_texcoord2 + tmpvar_117); lowp float tmpvar_119; - vec2 tmpvar_120; + mediump vec2 tmpvar_120; tmpvar_120 = (_shadowCoord_118.xy / _shadowCoord_118.w); bool tmpvar_121; if (any(greaterThan (tmpvar_120, vec2(1.0, 1.0)))) { @@ -509,13 +509,13 @@ void main () / _shadowCoord_118.w))); }; result_110 = (tmpvar_114 + tmpvar_119); - vec4 tmpvar_122; + mediump vec4 tmpvar_122; tmpvar_122.zw = vec2(0.0, 0.0); tmpvar_122.xy = (vec2(-1.5, 0.5) * tmpvar_111); - vec4 _shadowCoord_123; + mediump vec4 _shadowCoord_123; _shadowCoord_123 = (v_texcoord2 + tmpvar_122); lowp float tmpvar_124; - vec2 tmpvar_125; + mediump vec2 tmpvar_125; tmpvar_125 = (_shadowCoord_123.xy / _shadowCoord_123.w); bool tmpvar_126; if (any(greaterThan (tmpvar_125, vec2(1.0, 1.0)))) { @@ -531,13 +531,13 @@ void main () / _shadowCoord_123.w))); }; result_110 = (result_110 + tmpvar_124); - vec4 tmpvar_127; + mediump vec4 tmpvar_127; tmpvar_127.zw = vec2(0.0, 0.0); tmpvar_127.xy = (vec2(-1.5, 1.5) * tmpvar_111); - vec4 _shadowCoord_128; + mediump vec4 _shadowCoord_128; _shadowCoord_128 = (v_texcoord2 + tmpvar_127); lowp float tmpvar_129; - vec2 tmpvar_130; + mediump vec2 tmpvar_130; tmpvar_130 = (_shadowCoord_128.xy / _shadowCoord_128.w); bool tmpvar_131; if (any(greaterThan (tmpvar_130, vec2(1.0, 1.0)))) { @@ -553,13 +553,13 @@ void main () / _shadowCoord_128.w))); }; result_110 = (result_110 + tmpvar_129); - vec4 tmpvar_132; + mediump vec4 tmpvar_132; tmpvar_132.zw = vec2(0.0, 0.0); tmpvar_132.xy = (vec2(-0.5, -1.5) * tmpvar_111); - vec4 _shadowCoord_133; + mediump vec4 _shadowCoord_133; _shadowCoord_133 = (v_texcoord2 + tmpvar_132); lowp float tmpvar_134; - vec2 tmpvar_135; + mediump vec2 tmpvar_135; tmpvar_135 = (_shadowCoord_133.xy / _shadowCoord_133.w); bool tmpvar_136; if (any(greaterThan (tmpvar_135, vec2(1.0, 1.0)))) { @@ -575,13 +575,13 @@ void main () / _shadowCoord_133.w))); }; result_110 = (result_110 + tmpvar_134); - vec4 tmpvar_137; + mediump vec4 tmpvar_137; tmpvar_137.zw = vec2(0.0, 0.0); tmpvar_137.xy = (vec2(-0.5, -0.5) * tmpvar_111); - vec4 _shadowCoord_138; + mediump vec4 _shadowCoord_138; _shadowCoord_138 = (v_texcoord2 + tmpvar_137); lowp float tmpvar_139; - vec2 tmpvar_140; + mediump vec2 tmpvar_140; tmpvar_140 = (_shadowCoord_138.xy / _shadowCoord_138.w); bool tmpvar_141; if (any(greaterThan (tmpvar_140, vec2(1.0, 1.0)))) { @@ -597,13 +597,13 @@ void main () / _shadowCoord_138.w))); }; result_110 = (result_110 + tmpvar_139); - vec4 tmpvar_142; + mediump vec4 tmpvar_142; tmpvar_142.zw = vec2(0.0, 0.0); tmpvar_142.xy = (vec2(-0.5, 0.5) * tmpvar_111); - vec4 _shadowCoord_143; + mediump vec4 _shadowCoord_143; _shadowCoord_143 = (v_texcoord2 + tmpvar_142); lowp float tmpvar_144; - vec2 tmpvar_145; + mediump vec2 tmpvar_145; tmpvar_145 = (_shadowCoord_143.xy / _shadowCoord_143.w); bool tmpvar_146; if (any(greaterThan (tmpvar_145, vec2(1.0, 1.0)))) { @@ -619,13 +619,13 @@ void main () / _shadowCoord_143.w))); }; result_110 = (result_110 + tmpvar_144); - vec4 tmpvar_147; + mediump vec4 tmpvar_147; tmpvar_147.zw = vec2(0.0, 0.0); tmpvar_147.xy = (vec2(-0.5, 1.5) * tmpvar_111); - vec4 _shadowCoord_148; + mediump vec4 _shadowCoord_148; _shadowCoord_148 = (v_texcoord2 + tmpvar_147); lowp float tmpvar_149; - vec2 tmpvar_150; + mediump vec2 tmpvar_150; tmpvar_150 = (_shadowCoord_148.xy / _shadowCoord_148.w); bool tmpvar_151; if (any(greaterThan (tmpvar_150, vec2(1.0, 1.0)))) { @@ -641,13 +641,13 @@ void main () / _shadowCoord_148.w))); }; result_110 = (result_110 + tmpvar_149); - vec4 tmpvar_152; + mediump vec4 tmpvar_152; tmpvar_152.zw = vec2(0.0, 0.0); tmpvar_152.xy = (vec2(0.5, -1.5) * tmpvar_111); - vec4 _shadowCoord_153; + mediump vec4 _shadowCoord_153; _shadowCoord_153 = (v_texcoord2 + tmpvar_152); lowp float tmpvar_154; - vec2 tmpvar_155; + mediump vec2 tmpvar_155; tmpvar_155 = (_shadowCoord_153.xy / _shadowCoord_153.w); bool tmpvar_156; if (any(greaterThan (tmpvar_155, vec2(1.0, 1.0)))) { @@ -663,13 +663,13 @@ void main () / _shadowCoord_153.w))); }; result_110 = (result_110 + tmpvar_154); - vec4 tmpvar_157; + mediump vec4 tmpvar_157; tmpvar_157.zw = vec2(0.0, 0.0); tmpvar_157.xy = (vec2(0.5, -0.5) * tmpvar_111); - vec4 _shadowCoord_158; + mediump vec4 _shadowCoord_158; _shadowCoord_158 = (v_texcoord2 + tmpvar_157); lowp float tmpvar_159; - vec2 tmpvar_160; + mediump vec2 tmpvar_160; tmpvar_160 = (_shadowCoord_158.xy / _shadowCoord_158.w); bool tmpvar_161; if (any(greaterThan (tmpvar_160, vec2(1.0, 1.0)))) { @@ -685,13 +685,13 @@ void main () / _shadowCoord_158.w))); }; result_110 = (result_110 + tmpvar_159); - vec4 tmpvar_162; + mediump vec4 tmpvar_162; tmpvar_162.zw = vec2(0.0, 0.0); tmpvar_162.xy = (vec2(0.5, 0.5) * tmpvar_111); - vec4 _shadowCoord_163; + mediump vec4 _shadowCoord_163; _shadowCoord_163 = (v_texcoord2 + tmpvar_162); lowp float tmpvar_164; - vec2 tmpvar_165; + mediump vec2 tmpvar_165; tmpvar_165 = (_shadowCoord_163.xy / _shadowCoord_163.w); bool tmpvar_166; if (any(greaterThan (tmpvar_165, vec2(1.0, 1.0)))) { @@ -707,13 +707,13 @@ void main () / _shadowCoord_163.w))); }; result_110 = (result_110 + tmpvar_164); - vec4 tmpvar_167; + mediump vec4 tmpvar_167; tmpvar_167.zw = vec2(0.0, 0.0); tmpvar_167.xy = (vec2(0.5, 1.5) * tmpvar_111); - vec4 _shadowCoord_168; + mediump vec4 _shadowCoord_168; _shadowCoord_168 = (v_texcoord2 + tmpvar_167); lowp float tmpvar_169; - vec2 tmpvar_170; + mediump vec2 tmpvar_170; tmpvar_170 = (_shadowCoord_168.xy / _shadowCoord_168.w); bool tmpvar_171; if (any(greaterThan (tmpvar_170, vec2(1.0, 1.0)))) { @@ -729,13 +729,13 @@ void main () / _shadowCoord_168.w))); }; result_110 = (result_110 + tmpvar_169); - vec4 tmpvar_172; + mediump vec4 tmpvar_172; tmpvar_172.zw = vec2(0.0, 0.0); tmpvar_172.xy = (vec2(1.5, -1.5) * tmpvar_111); - vec4 _shadowCoord_173; + mediump vec4 _shadowCoord_173; _shadowCoord_173 = (v_texcoord2 + tmpvar_172); lowp float tmpvar_174; - vec2 tmpvar_175; + mediump vec2 tmpvar_175; tmpvar_175 = (_shadowCoord_173.xy / _shadowCoord_173.w); bool tmpvar_176; if (any(greaterThan (tmpvar_175, vec2(1.0, 1.0)))) { @@ -751,13 +751,13 @@ void main () / _shadowCoord_173.w))); }; result_110 = (result_110 + tmpvar_174); - vec4 tmpvar_177; + mediump vec4 tmpvar_177; tmpvar_177.zw = vec2(0.0, 0.0); tmpvar_177.xy = (vec2(1.5, -0.5) * tmpvar_111); - vec4 _shadowCoord_178; + mediump vec4 _shadowCoord_178; _shadowCoord_178 = (v_texcoord2 + tmpvar_177); lowp float tmpvar_179; - vec2 tmpvar_180; + mediump vec2 tmpvar_180; tmpvar_180 = (_shadowCoord_178.xy / _shadowCoord_178.w); bool tmpvar_181; if (any(greaterThan (tmpvar_180, vec2(1.0, 1.0)))) { @@ -773,13 +773,13 @@ void main () / _shadowCoord_178.w))); }; result_110 = (result_110 + tmpvar_179); - vec4 tmpvar_182; + mediump vec4 tmpvar_182; tmpvar_182.zw = vec2(0.0, 0.0); tmpvar_182.xy = (vec2(1.5, 0.5) * tmpvar_111); - vec4 _shadowCoord_183; + mediump vec4 _shadowCoord_183; _shadowCoord_183 = (v_texcoord2 + tmpvar_182); lowp float tmpvar_184; - vec2 tmpvar_185; + mediump vec2 tmpvar_185; tmpvar_185 = (_shadowCoord_183.xy / _shadowCoord_183.w); bool tmpvar_186; if (any(greaterThan (tmpvar_185, vec2(1.0, 1.0)))) { @@ -795,13 +795,13 @@ void main () / _shadowCoord_183.w))); }; result_110 = (result_110 + tmpvar_184); - vec4 tmpvar_187; + mediump vec4 tmpvar_187; tmpvar_187.zw = vec2(0.0, 0.0); tmpvar_187.xy = (vec2(1.5, 1.5) * tmpvar_111); - vec4 _shadowCoord_188; + mediump vec4 _shadowCoord_188; _shadowCoord_188 = (v_texcoord2 + tmpvar_187); lowp float tmpvar_189; - vec2 tmpvar_190; + mediump vec2 tmpvar_190; tmpvar_190 = (_shadowCoord_188.xy / _shadowCoord_188.w); bool tmpvar_191; if (any(greaterThan (tmpvar_190, vec2(1.0, 1.0)))) { @@ -822,7 +822,7 @@ void main () visibility_1 = (tmpvar_192 / 16.0); } else { if (tmpvar_13) { - vec2 _texcoord_193; + mediump vec2 _texcoord_193; _texcoord_193 = (v_texcoord3.xy / v_texcoord3.w); bvec2 tmpvar_194; tmpvar_194 = greaterThan (_texcoord_193, vec2(0.0, 0.0)); @@ -843,15 +843,15 @@ void main () colorCoverage_2 = tmpvar_198; lowp float result_199; result_199 = 0.0; - vec2 tmpvar_200; + mediump vec2 tmpvar_200; tmpvar_200 = ((u_smSamplingParams.zw * (u_params2.zz / 3.0)) * v_texcoord3.w); - vec4 tmpvar_201; + mediump vec4 tmpvar_201; tmpvar_201.zw = vec2(0.0, 0.0); tmpvar_201.xy = (vec2(-1.5, -1.5) * tmpvar_200); - vec4 _shadowCoord_202; + mediump vec4 _shadowCoord_202; _shadowCoord_202 = (v_texcoord3 + tmpvar_201); lowp float tmpvar_203; - vec2 tmpvar_204; + mediump vec2 tmpvar_204; tmpvar_204 = (_shadowCoord_202.xy / _shadowCoord_202.w); bool tmpvar_205; if (any(greaterThan (tmpvar_204, vec2(1.0, 1.0)))) { @@ -867,13 +867,13 @@ void main () / _shadowCoord_202.w))); }; result_199 = tmpvar_203; - vec4 tmpvar_206; + mediump vec4 tmpvar_206; tmpvar_206.zw = vec2(0.0, 0.0); tmpvar_206.xy = (vec2(-1.5, -0.5) * tmpvar_200); - vec4 _shadowCoord_207; + mediump vec4 _shadowCoord_207; _shadowCoord_207 = (v_texcoord3 + tmpvar_206); lowp float tmpvar_208; - vec2 tmpvar_209; + mediump vec2 tmpvar_209; tmpvar_209 = (_shadowCoord_207.xy / _shadowCoord_207.w); bool tmpvar_210; if (any(greaterThan (tmpvar_209, vec2(1.0, 1.0)))) { @@ -889,13 +889,13 @@ void main () / _shadowCoord_207.w))); }; result_199 = (tmpvar_203 + tmpvar_208); - vec4 tmpvar_211; + mediump vec4 tmpvar_211; tmpvar_211.zw = vec2(0.0, 0.0); tmpvar_211.xy = (vec2(-1.5, 0.5) * tmpvar_200); - vec4 _shadowCoord_212; + mediump vec4 _shadowCoord_212; _shadowCoord_212 = (v_texcoord3 + tmpvar_211); lowp float tmpvar_213; - vec2 tmpvar_214; + mediump vec2 tmpvar_214; tmpvar_214 = (_shadowCoord_212.xy / _shadowCoord_212.w); bool tmpvar_215; if (any(greaterThan (tmpvar_214, vec2(1.0, 1.0)))) { @@ -911,13 +911,13 @@ void main () / _shadowCoord_212.w))); }; result_199 = (result_199 + tmpvar_213); - vec4 tmpvar_216; + mediump vec4 tmpvar_216; tmpvar_216.zw = vec2(0.0, 0.0); tmpvar_216.xy = (vec2(-1.5, 1.5) * tmpvar_200); - vec4 _shadowCoord_217; + mediump vec4 _shadowCoord_217; _shadowCoord_217 = (v_texcoord3 + tmpvar_216); lowp float tmpvar_218; - vec2 tmpvar_219; + mediump vec2 tmpvar_219; tmpvar_219 = (_shadowCoord_217.xy / _shadowCoord_217.w); bool tmpvar_220; if (any(greaterThan (tmpvar_219, vec2(1.0, 1.0)))) { @@ -933,13 +933,13 @@ void main () / _shadowCoord_217.w))); }; result_199 = (result_199 + tmpvar_218); - vec4 tmpvar_221; + mediump vec4 tmpvar_221; tmpvar_221.zw = vec2(0.0, 0.0); tmpvar_221.xy = (vec2(-0.5, -1.5) * tmpvar_200); - vec4 _shadowCoord_222; + mediump vec4 _shadowCoord_222; _shadowCoord_222 = (v_texcoord3 + tmpvar_221); lowp float tmpvar_223; - vec2 tmpvar_224; + mediump vec2 tmpvar_224; tmpvar_224 = (_shadowCoord_222.xy / _shadowCoord_222.w); bool tmpvar_225; if (any(greaterThan (tmpvar_224, vec2(1.0, 1.0)))) { @@ -955,13 +955,13 @@ void main () / _shadowCoord_222.w))); }; result_199 = (result_199 + tmpvar_223); - vec4 tmpvar_226; + mediump vec4 tmpvar_226; tmpvar_226.zw = vec2(0.0, 0.0); tmpvar_226.xy = (vec2(-0.5, -0.5) * tmpvar_200); - vec4 _shadowCoord_227; + mediump vec4 _shadowCoord_227; _shadowCoord_227 = (v_texcoord3 + tmpvar_226); lowp float tmpvar_228; - vec2 tmpvar_229; + mediump vec2 tmpvar_229; tmpvar_229 = (_shadowCoord_227.xy / _shadowCoord_227.w); bool tmpvar_230; if (any(greaterThan (tmpvar_229, vec2(1.0, 1.0)))) { @@ -977,13 +977,13 @@ void main () / _shadowCoord_227.w))); }; result_199 = (result_199 + tmpvar_228); - vec4 tmpvar_231; + mediump vec4 tmpvar_231; tmpvar_231.zw = vec2(0.0, 0.0); tmpvar_231.xy = (vec2(-0.5, 0.5) * tmpvar_200); - vec4 _shadowCoord_232; + mediump vec4 _shadowCoord_232; _shadowCoord_232 = (v_texcoord3 + tmpvar_231); lowp float tmpvar_233; - vec2 tmpvar_234; + mediump vec2 tmpvar_234; tmpvar_234 = (_shadowCoord_232.xy / _shadowCoord_232.w); bool tmpvar_235; if (any(greaterThan (tmpvar_234, vec2(1.0, 1.0)))) { @@ -999,13 +999,13 @@ void main () / _shadowCoord_232.w))); }; result_199 = (result_199 + tmpvar_233); - vec4 tmpvar_236; + mediump vec4 tmpvar_236; tmpvar_236.zw = vec2(0.0, 0.0); tmpvar_236.xy = (vec2(-0.5, 1.5) * tmpvar_200); - vec4 _shadowCoord_237; + mediump vec4 _shadowCoord_237; _shadowCoord_237 = (v_texcoord3 + tmpvar_236); lowp float tmpvar_238; - vec2 tmpvar_239; + mediump vec2 tmpvar_239; tmpvar_239 = (_shadowCoord_237.xy / _shadowCoord_237.w); bool tmpvar_240; if (any(greaterThan (tmpvar_239, vec2(1.0, 1.0)))) { @@ -1021,13 +1021,13 @@ void main () / _shadowCoord_237.w))); }; result_199 = (result_199 + tmpvar_238); - vec4 tmpvar_241; + mediump vec4 tmpvar_241; tmpvar_241.zw = vec2(0.0, 0.0); tmpvar_241.xy = (vec2(0.5, -1.5) * tmpvar_200); - vec4 _shadowCoord_242; + mediump vec4 _shadowCoord_242; _shadowCoord_242 = (v_texcoord3 + tmpvar_241); lowp float tmpvar_243; - vec2 tmpvar_244; + mediump vec2 tmpvar_244; tmpvar_244 = (_shadowCoord_242.xy / _shadowCoord_242.w); bool tmpvar_245; if (any(greaterThan (tmpvar_244, vec2(1.0, 1.0)))) { @@ -1043,13 +1043,13 @@ void main () / _shadowCoord_242.w))); }; result_199 = (result_199 + tmpvar_243); - vec4 tmpvar_246; + mediump vec4 tmpvar_246; tmpvar_246.zw = vec2(0.0, 0.0); tmpvar_246.xy = (vec2(0.5, -0.5) * tmpvar_200); - vec4 _shadowCoord_247; + mediump vec4 _shadowCoord_247; _shadowCoord_247 = (v_texcoord3 + tmpvar_246); lowp float tmpvar_248; - vec2 tmpvar_249; + mediump vec2 tmpvar_249; tmpvar_249 = (_shadowCoord_247.xy / _shadowCoord_247.w); bool tmpvar_250; if (any(greaterThan (tmpvar_249, vec2(1.0, 1.0)))) { @@ -1065,13 +1065,13 @@ void main () / _shadowCoord_247.w))); }; result_199 = (result_199 + tmpvar_248); - vec4 tmpvar_251; + mediump vec4 tmpvar_251; tmpvar_251.zw = vec2(0.0, 0.0); tmpvar_251.xy = (vec2(0.5, 0.5) * tmpvar_200); - vec4 _shadowCoord_252; + mediump vec4 _shadowCoord_252; _shadowCoord_252 = (v_texcoord3 + tmpvar_251); lowp float tmpvar_253; - vec2 tmpvar_254; + mediump vec2 tmpvar_254; tmpvar_254 = (_shadowCoord_252.xy / _shadowCoord_252.w); bool tmpvar_255; if (any(greaterThan (tmpvar_254, vec2(1.0, 1.0)))) { @@ -1087,13 +1087,13 @@ void main () / _shadowCoord_252.w))); }; result_199 = (result_199 + tmpvar_253); - vec4 tmpvar_256; + mediump vec4 tmpvar_256; tmpvar_256.zw = vec2(0.0, 0.0); tmpvar_256.xy = (vec2(0.5, 1.5) * tmpvar_200); - vec4 _shadowCoord_257; + mediump vec4 _shadowCoord_257; _shadowCoord_257 = (v_texcoord3 + tmpvar_256); lowp float tmpvar_258; - vec2 tmpvar_259; + mediump vec2 tmpvar_259; tmpvar_259 = (_shadowCoord_257.xy / _shadowCoord_257.w); bool tmpvar_260; if (any(greaterThan (tmpvar_259, vec2(1.0, 1.0)))) { @@ -1109,13 +1109,13 @@ void main () / _shadowCoord_257.w))); }; result_199 = (result_199 + tmpvar_258); - vec4 tmpvar_261; + mediump vec4 tmpvar_261; tmpvar_261.zw = vec2(0.0, 0.0); tmpvar_261.xy = (vec2(1.5, -1.5) * tmpvar_200); - vec4 _shadowCoord_262; + mediump vec4 _shadowCoord_262; _shadowCoord_262 = (v_texcoord3 + tmpvar_261); lowp float tmpvar_263; - vec2 tmpvar_264; + mediump vec2 tmpvar_264; tmpvar_264 = (_shadowCoord_262.xy / _shadowCoord_262.w); bool tmpvar_265; if (any(greaterThan (tmpvar_264, vec2(1.0, 1.0)))) { @@ -1131,13 +1131,13 @@ void main () / _shadowCoord_262.w))); }; result_199 = (result_199 + tmpvar_263); - vec4 tmpvar_266; + mediump vec4 tmpvar_266; tmpvar_266.zw = vec2(0.0, 0.0); tmpvar_266.xy = (vec2(1.5, -0.5) * tmpvar_200); - vec4 _shadowCoord_267; + mediump vec4 _shadowCoord_267; _shadowCoord_267 = (v_texcoord3 + tmpvar_266); lowp float tmpvar_268; - vec2 tmpvar_269; + mediump vec2 tmpvar_269; tmpvar_269 = (_shadowCoord_267.xy / _shadowCoord_267.w); bool tmpvar_270; if (any(greaterThan (tmpvar_269, vec2(1.0, 1.0)))) { @@ -1153,13 +1153,13 @@ void main () / _shadowCoord_267.w))); }; result_199 = (result_199 + tmpvar_268); - vec4 tmpvar_271; + mediump vec4 tmpvar_271; tmpvar_271.zw = vec2(0.0, 0.0); tmpvar_271.xy = (vec2(1.5, 0.5) * tmpvar_200); - vec4 _shadowCoord_272; + mediump vec4 _shadowCoord_272; _shadowCoord_272 = (v_texcoord3 + tmpvar_271); lowp float tmpvar_273; - vec2 tmpvar_274; + mediump vec2 tmpvar_274; tmpvar_274 = (_shadowCoord_272.xy / _shadowCoord_272.w); bool tmpvar_275; if (any(greaterThan (tmpvar_274, vec2(1.0, 1.0)))) { @@ -1175,13 +1175,13 @@ void main () / _shadowCoord_272.w))); }; result_199 = (result_199 + tmpvar_273); - vec4 tmpvar_276; + mediump vec4 tmpvar_276; tmpvar_276.zw = vec2(0.0, 0.0); tmpvar_276.xy = (vec2(1.5, 1.5) * tmpvar_200); - vec4 _shadowCoord_277; + mediump vec4 _shadowCoord_277; _shadowCoord_277 = (v_texcoord3 + tmpvar_276); lowp float tmpvar_278; - vec2 tmpvar_279; + mediump vec2 tmpvar_279; tmpvar_279 = (_shadowCoord_277.xy / _shadowCoord_277.w); bool tmpvar_280; if (any(greaterThan (tmpvar_279, vec2(1.0, 1.0)))) { @@ -1201,7 +1201,7 @@ void main () result_199 = tmpvar_281; visibility_1 = (tmpvar_281 / 16.0); } else { - vec2 _texcoord_282; + mediump vec2 _texcoord_282; _texcoord_282 = (v_texcoord4.xy / v_texcoord4.w); bvec2 tmpvar_283; tmpvar_283 = greaterThan (_texcoord_282, vec2(0.0, 0.0)); @@ -1222,15 +1222,15 @@ void main () colorCoverage_2 = tmpvar_287; lowp float result_288; result_288 = 0.0; - vec2 tmpvar_289; + mediump vec2 tmpvar_289; tmpvar_289 = ((u_smSamplingParams.zw * (u_params2.zz / 4.0)) * v_texcoord4.w); - vec4 tmpvar_290; + mediump vec4 tmpvar_290; tmpvar_290.zw = vec2(0.0, 0.0); tmpvar_290.xy = (vec2(-1.5, -1.5) * tmpvar_289); - vec4 _shadowCoord_291; + mediump vec4 _shadowCoord_291; _shadowCoord_291 = (v_texcoord4 + tmpvar_290); lowp float tmpvar_292; - vec2 tmpvar_293; + mediump vec2 tmpvar_293; tmpvar_293 = (_shadowCoord_291.xy / _shadowCoord_291.w); bool tmpvar_294; if (any(greaterThan (tmpvar_293, vec2(1.0, 1.0)))) { @@ -1246,13 +1246,13 @@ void main () / _shadowCoord_291.w))); }; result_288 = tmpvar_292; - vec4 tmpvar_295; + mediump vec4 tmpvar_295; tmpvar_295.zw = vec2(0.0, 0.0); tmpvar_295.xy = (vec2(-1.5, -0.5) * tmpvar_289); - vec4 _shadowCoord_296; + mediump vec4 _shadowCoord_296; _shadowCoord_296 = (v_texcoord4 + tmpvar_295); lowp float tmpvar_297; - vec2 tmpvar_298; + mediump vec2 tmpvar_298; tmpvar_298 = (_shadowCoord_296.xy / _shadowCoord_296.w); bool tmpvar_299; if (any(greaterThan (tmpvar_298, vec2(1.0, 1.0)))) { @@ -1268,13 +1268,13 @@ void main () / _shadowCoord_296.w))); }; result_288 = (tmpvar_292 + tmpvar_297); - vec4 tmpvar_300; + mediump vec4 tmpvar_300; tmpvar_300.zw = vec2(0.0, 0.0); tmpvar_300.xy = (vec2(-1.5, 0.5) * tmpvar_289); - vec4 _shadowCoord_301; + mediump vec4 _shadowCoord_301; _shadowCoord_301 = (v_texcoord4 + tmpvar_300); lowp float tmpvar_302; - vec2 tmpvar_303; + mediump vec2 tmpvar_303; tmpvar_303 = (_shadowCoord_301.xy / _shadowCoord_301.w); bool tmpvar_304; if (any(greaterThan (tmpvar_303, vec2(1.0, 1.0)))) { @@ -1290,13 +1290,13 @@ void main () / _shadowCoord_301.w))); }; result_288 = (result_288 + tmpvar_302); - vec4 tmpvar_305; + mediump vec4 tmpvar_305; tmpvar_305.zw = vec2(0.0, 0.0); tmpvar_305.xy = (vec2(-1.5, 1.5) * tmpvar_289); - vec4 _shadowCoord_306; + mediump vec4 _shadowCoord_306; _shadowCoord_306 = (v_texcoord4 + tmpvar_305); lowp float tmpvar_307; - vec2 tmpvar_308; + mediump vec2 tmpvar_308; tmpvar_308 = (_shadowCoord_306.xy / _shadowCoord_306.w); bool tmpvar_309; if (any(greaterThan (tmpvar_308, vec2(1.0, 1.0)))) { @@ -1312,13 +1312,13 @@ void main () / _shadowCoord_306.w))); }; result_288 = (result_288 + tmpvar_307); - vec4 tmpvar_310; + mediump vec4 tmpvar_310; tmpvar_310.zw = vec2(0.0, 0.0); tmpvar_310.xy = (vec2(-0.5, -1.5) * tmpvar_289); - vec4 _shadowCoord_311; + mediump vec4 _shadowCoord_311; _shadowCoord_311 = (v_texcoord4 + tmpvar_310); lowp float tmpvar_312; - vec2 tmpvar_313; + mediump vec2 tmpvar_313; tmpvar_313 = (_shadowCoord_311.xy / _shadowCoord_311.w); bool tmpvar_314; if (any(greaterThan (tmpvar_313, vec2(1.0, 1.0)))) { @@ -1334,13 +1334,13 @@ void main () / _shadowCoord_311.w))); }; result_288 = (result_288 + tmpvar_312); - vec4 tmpvar_315; + mediump vec4 tmpvar_315; tmpvar_315.zw = vec2(0.0, 0.0); tmpvar_315.xy = (vec2(-0.5, -0.5) * tmpvar_289); - vec4 _shadowCoord_316; + mediump vec4 _shadowCoord_316; _shadowCoord_316 = (v_texcoord4 + tmpvar_315); lowp float tmpvar_317; - vec2 tmpvar_318; + mediump vec2 tmpvar_318; tmpvar_318 = (_shadowCoord_316.xy / _shadowCoord_316.w); bool tmpvar_319; if (any(greaterThan (tmpvar_318, vec2(1.0, 1.0)))) { @@ -1356,13 +1356,13 @@ void main () / _shadowCoord_316.w))); }; result_288 = (result_288 + tmpvar_317); - vec4 tmpvar_320; + mediump vec4 tmpvar_320; tmpvar_320.zw = vec2(0.0, 0.0); tmpvar_320.xy = (vec2(-0.5, 0.5) * tmpvar_289); - vec4 _shadowCoord_321; + mediump vec4 _shadowCoord_321; _shadowCoord_321 = (v_texcoord4 + tmpvar_320); lowp float tmpvar_322; - vec2 tmpvar_323; + mediump vec2 tmpvar_323; tmpvar_323 = (_shadowCoord_321.xy / _shadowCoord_321.w); bool tmpvar_324; if (any(greaterThan (tmpvar_323, vec2(1.0, 1.0)))) { @@ -1378,13 +1378,13 @@ void main () / _shadowCoord_321.w))); }; result_288 = (result_288 + tmpvar_322); - vec4 tmpvar_325; + mediump vec4 tmpvar_325; tmpvar_325.zw = vec2(0.0, 0.0); tmpvar_325.xy = (vec2(-0.5, 1.5) * tmpvar_289); - vec4 _shadowCoord_326; + mediump vec4 _shadowCoord_326; _shadowCoord_326 = (v_texcoord4 + tmpvar_325); lowp float tmpvar_327; - vec2 tmpvar_328; + mediump vec2 tmpvar_328; tmpvar_328 = (_shadowCoord_326.xy / _shadowCoord_326.w); bool tmpvar_329; if (any(greaterThan (tmpvar_328, vec2(1.0, 1.0)))) { @@ -1400,13 +1400,13 @@ void main () / _shadowCoord_326.w))); }; result_288 = (result_288 + tmpvar_327); - vec4 tmpvar_330; + mediump vec4 tmpvar_330; tmpvar_330.zw = vec2(0.0, 0.0); tmpvar_330.xy = (vec2(0.5, -1.5) * tmpvar_289); - vec4 _shadowCoord_331; + mediump vec4 _shadowCoord_331; _shadowCoord_331 = (v_texcoord4 + tmpvar_330); lowp float tmpvar_332; - vec2 tmpvar_333; + mediump vec2 tmpvar_333; tmpvar_333 = (_shadowCoord_331.xy / _shadowCoord_331.w); bool tmpvar_334; if (any(greaterThan (tmpvar_333, vec2(1.0, 1.0)))) { @@ -1422,13 +1422,13 @@ void main () / _shadowCoord_331.w))); }; result_288 = (result_288 + tmpvar_332); - vec4 tmpvar_335; + mediump vec4 tmpvar_335; tmpvar_335.zw = vec2(0.0, 0.0); tmpvar_335.xy = (vec2(0.5, -0.5) * tmpvar_289); - vec4 _shadowCoord_336; + mediump vec4 _shadowCoord_336; _shadowCoord_336 = (v_texcoord4 + tmpvar_335); lowp float tmpvar_337; - vec2 tmpvar_338; + mediump vec2 tmpvar_338; tmpvar_338 = (_shadowCoord_336.xy / _shadowCoord_336.w); bool tmpvar_339; if (any(greaterThan (tmpvar_338, vec2(1.0, 1.0)))) { @@ -1444,13 +1444,13 @@ void main () / _shadowCoord_336.w))); }; result_288 = (result_288 + tmpvar_337); - vec4 tmpvar_340; + mediump vec4 tmpvar_340; tmpvar_340.zw = vec2(0.0, 0.0); tmpvar_340.xy = (vec2(0.5, 0.5) * tmpvar_289); - vec4 _shadowCoord_341; + mediump vec4 _shadowCoord_341; _shadowCoord_341 = (v_texcoord4 + tmpvar_340); lowp float tmpvar_342; - vec2 tmpvar_343; + mediump vec2 tmpvar_343; tmpvar_343 = (_shadowCoord_341.xy / _shadowCoord_341.w); bool tmpvar_344; if (any(greaterThan (tmpvar_343, vec2(1.0, 1.0)))) { @@ -1466,13 +1466,13 @@ void main () / _shadowCoord_341.w))); }; result_288 = (result_288 + tmpvar_342); - vec4 tmpvar_345; + mediump vec4 tmpvar_345; tmpvar_345.zw = vec2(0.0, 0.0); tmpvar_345.xy = (vec2(0.5, 1.5) * tmpvar_289); - vec4 _shadowCoord_346; + mediump vec4 _shadowCoord_346; _shadowCoord_346 = (v_texcoord4 + tmpvar_345); lowp float tmpvar_347; - vec2 tmpvar_348; + mediump vec2 tmpvar_348; tmpvar_348 = (_shadowCoord_346.xy / _shadowCoord_346.w); bool tmpvar_349; if (any(greaterThan (tmpvar_348, vec2(1.0, 1.0)))) { @@ -1488,13 +1488,13 @@ void main () / _shadowCoord_346.w))); }; result_288 = (result_288 + tmpvar_347); - vec4 tmpvar_350; + mediump vec4 tmpvar_350; tmpvar_350.zw = vec2(0.0, 0.0); tmpvar_350.xy = (vec2(1.5, -1.5) * tmpvar_289); - vec4 _shadowCoord_351; + mediump vec4 _shadowCoord_351; _shadowCoord_351 = (v_texcoord4 + tmpvar_350); lowp float tmpvar_352; - vec2 tmpvar_353; + mediump vec2 tmpvar_353; tmpvar_353 = (_shadowCoord_351.xy / _shadowCoord_351.w); bool tmpvar_354; if (any(greaterThan (tmpvar_353, vec2(1.0, 1.0)))) { @@ -1510,13 +1510,13 @@ void main () / _shadowCoord_351.w))); }; result_288 = (result_288 + tmpvar_352); - vec4 tmpvar_355; + mediump vec4 tmpvar_355; tmpvar_355.zw = vec2(0.0, 0.0); tmpvar_355.xy = (vec2(1.5, -0.5) * tmpvar_289); - vec4 _shadowCoord_356; + mediump vec4 _shadowCoord_356; _shadowCoord_356 = (v_texcoord4 + tmpvar_355); lowp float tmpvar_357; - vec2 tmpvar_358; + mediump vec2 tmpvar_358; tmpvar_358 = (_shadowCoord_356.xy / _shadowCoord_356.w); bool tmpvar_359; if (any(greaterThan (tmpvar_358, vec2(1.0, 1.0)))) { @@ -1532,13 +1532,13 @@ void main () / _shadowCoord_356.w))); }; result_288 = (result_288 + tmpvar_357); - vec4 tmpvar_360; + mediump vec4 tmpvar_360; tmpvar_360.zw = vec2(0.0, 0.0); tmpvar_360.xy = (vec2(1.5, 0.5) * tmpvar_289); - vec4 _shadowCoord_361; + mediump vec4 _shadowCoord_361; _shadowCoord_361 = (v_texcoord4 + tmpvar_360); lowp float tmpvar_362; - vec2 tmpvar_363; + mediump vec2 tmpvar_363; tmpvar_363 = (_shadowCoord_361.xy / _shadowCoord_361.w); bool tmpvar_364; if (any(greaterThan (tmpvar_363, vec2(1.0, 1.0)))) { @@ -1554,13 +1554,13 @@ void main () / _shadowCoord_361.w))); }; result_288 = (result_288 + tmpvar_362); - vec4 tmpvar_365; + mediump vec4 tmpvar_365; tmpvar_365.zw = vec2(0.0, 0.0); tmpvar_365.xy = (vec2(1.5, 1.5) * tmpvar_289); - vec4 _shadowCoord_366; + mediump vec4 _shadowCoord_366; _shadowCoord_366 = (v_texcoord4 + tmpvar_365); lowp float tmpvar_367; - vec2 tmpvar_368; + mediump vec2 tmpvar_368; tmpvar_368 = (_shadowCoord_366.xy / _shadowCoord_366.w); bool tmpvar_369; if (any(greaterThan (tmpvar_368, vec2(1.0, 1.0)))) { @@ -1582,21 +1582,21 @@ void main () }; }; }; - vec3 tmpvar_371; + mediump vec3 tmpvar_371; tmpvar_371 = -(normalize(v_view)); - vec3 tmpvar_372; - float tmpvar_373; + mediump vec3 tmpvar_372; + mediump float tmpvar_373; tmpvar_372 = -(normalize(u_lightPosition.xyz)); tmpvar_373 = 1.0; if ((0.0 != u_lightPosition.w)) { - vec3 tmpvar_374; + mediump vec3 tmpvar_374; tmpvar_374 = (u_lightPosition.xyz - v_view); - vec3 tmpvar_375; + mediump vec3 tmpvar_375; tmpvar_375 = normalize(tmpvar_374); tmpvar_372 = tmpvar_375; - float tmpvar_376; + mediump float tmpvar_376; tmpvar_376 = cos((u_lightAttenuationSpotOuter.w * 0.0174533)); - float tmpvar_377; + mediump float tmpvar_377; tmpvar_377 = sqrt(dot (tmpvar_374, tmpvar_374)); tmpvar_373 = ((1.0/(( (u_lightAttenuationSpotOuter.x + (u_lightAttenuationSpotOuter.y * tmpvar_377)) @@ -1614,9 +1614,9 @@ void main () (u_lightAttenuationSpotOuter.w >= 90.0) ))); }; - float tmpvar_378; + mediump float tmpvar_378; tmpvar_378 = dot (v_normal, tmpvar_372); - vec2 tmpvar_379; + mediump vec2 tmpvar_379; tmpvar_379.x = tmpvar_378; tmpvar_379.y = ((( float((tmpvar_378 >= 0.0)) @@ -1625,9 +1625,9 @@ void main () ((2.0 * tmpvar_378) * v_normal) - tmpvar_372), tmpvar_371)), u_materialKs.w) ) * (2.0 + u_materialKs.w)) / 8.0); - vec2 tmpvar_380; + mediump vec2 tmpvar_380; tmpvar_380 = (max (tmpvar_379, 0.0) * tmpvar_373); - float tmpvar_381; + mediump float tmpvar_381; tmpvar_381 = sqrt(dot (v_view, v_view)); lowp vec3 tmpvar_382; tmpvar_382 = mix (vec3(0.0, 0.0, 0.0), (pow ( diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_pcf_linear.bin b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_pcf_linear.bin index d23ed4895..144487283 100644 --- a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_pcf_linear.bin +++ b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_pcf_linear.bin @@ -1,23 +1,23 @@ -FSHpjHvarying vec3 v_normal; -varying vec4 v_shadowcoord; -varying vec3 v_view; -uniform vec4 u_params1; -uniform vec4 u_params2; -uniform vec4 u_color; -uniform vec3 u_materialKa; -uniform vec3 u_materialKd; -uniform vec4 u_materialKs; -uniform vec4 u_lightPosition; -uniform vec4 u_lightAmbientPower; -uniform vec4 u_lightDiffusePower; -uniform vec4 u_lightSpecularPower; -uniform vec4 u_lightSpotDirectionInner; -uniform vec4 u_lightAttenuationSpotOuter; -uniform vec4 u_smSamplingParams; +FSHpjHvarying mediump vec3 v_normal; +varying mediump vec4 v_shadowcoord; +varying mediump vec3 v_view; +uniform mediump vec4 u_params1; +uniform mediump vec4 u_params2; +uniform mediump vec4 u_color; +uniform mediump vec3 u_materialKa; +uniform mediump vec3 u_materialKd; +uniform mediump vec4 u_materialKs; +uniform mediump vec4 u_lightPosition; +uniform mediump vec4 u_lightAmbientPower; +uniform mediump vec4 u_lightDiffusePower; +uniform mediump vec4 u_lightSpecularPower; +uniform mediump vec4 u_lightSpotDirectionInner; +uniform mediump vec4 u_lightAttenuationSpotOuter; +uniform mediump vec4 u_smSamplingParams; uniform sampler2D u_shadowMap0; void main () { - vec2 _texcoord_1; + mediump vec2 _texcoord_1; _texcoord_1 = (v_shadowcoord.xy / v_shadowcoord.w); bvec2 tmpvar_2; tmpvar_2 = greaterThan (_texcoord_1, vec2(0.0, 0.0)); @@ -35,22 +35,22 @@ void main () tmpvar_6.x = tmpvar_5; tmpvar_6.y = -(tmpvar_5); tmpvar_6.z = -(tmpvar_5); - vec4 tmpvar_7; + mediump vec4 tmpvar_7; tmpvar_7.w = 1.0; tmpvar_7.xy = (v_shadowcoord.xy / v_shadowcoord.w); tmpvar_7.z = v_shadowcoord.z; lowp float tmpvar_8; lowp float result_9; result_9 = 0.0; - vec2 tmpvar_10; + mediump vec2 tmpvar_10; tmpvar_10 = (u_smSamplingParams.zw * u_params2.zz); - vec4 tmpvar_11; + mediump vec4 tmpvar_11; tmpvar_11.zw = vec2(0.0, 0.0); tmpvar_11.xy = (vec2(-1.5, -1.5) * tmpvar_10); - vec4 _shadowCoord_12; + mediump vec4 _shadowCoord_12; _shadowCoord_12 = (tmpvar_7 + tmpvar_11); lowp float tmpvar_13; - vec2 tmpvar_14; + mediump vec2 tmpvar_14; tmpvar_14 = (_shadowCoord_12.xy / _shadowCoord_12.w); bool tmpvar_15; if (any(greaterThan (tmpvar_14, vec2(1.0, 1.0)))) { @@ -66,13 +66,13 @@ void main () / _shadowCoord_12.w))); }; result_9 = tmpvar_13; - vec4 tmpvar_16; + mediump vec4 tmpvar_16; tmpvar_16.zw = vec2(0.0, 0.0); tmpvar_16.xy = (vec2(-1.5, -0.5) * tmpvar_10); - vec4 _shadowCoord_17; + mediump vec4 _shadowCoord_17; _shadowCoord_17 = (tmpvar_7 + tmpvar_16); lowp float tmpvar_18; - vec2 tmpvar_19; + mediump vec2 tmpvar_19; tmpvar_19 = (_shadowCoord_17.xy / _shadowCoord_17.w); bool tmpvar_20; if (any(greaterThan (tmpvar_19, vec2(1.0, 1.0)))) { @@ -88,13 +88,13 @@ void main () / _shadowCoord_17.w))); }; result_9 = (tmpvar_13 + tmpvar_18); - vec4 tmpvar_21; + mediump vec4 tmpvar_21; tmpvar_21.zw = vec2(0.0, 0.0); tmpvar_21.xy = (vec2(-1.5, 0.5) * tmpvar_10); - vec4 _shadowCoord_22; + mediump vec4 _shadowCoord_22; _shadowCoord_22 = (tmpvar_7 + tmpvar_21); lowp float tmpvar_23; - vec2 tmpvar_24; + mediump vec2 tmpvar_24; tmpvar_24 = (_shadowCoord_22.xy / _shadowCoord_22.w); bool tmpvar_25; if (any(greaterThan (tmpvar_24, vec2(1.0, 1.0)))) { @@ -110,13 +110,13 @@ void main () / _shadowCoord_22.w))); }; result_9 = (result_9 + tmpvar_23); - vec4 tmpvar_26; + mediump vec4 tmpvar_26; tmpvar_26.zw = vec2(0.0, 0.0); tmpvar_26.xy = (vec2(-1.5, 1.5) * tmpvar_10); - vec4 _shadowCoord_27; + mediump vec4 _shadowCoord_27; _shadowCoord_27 = (tmpvar_7 + tmpvar_26); lowp float tmpvar_28; - vec2 tmpvar_29; + mediump vec2 tmpvar_29; tmpvar_29 = (_shadowCoord_27.xy / _shadowCoord_27.w); bool tmpvar_30; if (any(greaterThan (tmpvar_29, vec2(1.0, 1.0)))) { @@ -132,13 +132,13 @@ void main () / _shadowCoord_27.w))); }; result_9 = (result_9 + tmpvar_28); - vec4 tmpvar_31; + mediump vec4 tmpvar_31; tmpvar_31.zw = vec2(0.0, 0.0); tmpvar_31.xy = (vec2(-0.5, -1.5) * tmpvar_10); - vec4 _shadowCoord_32; + mediump vec4 _shadowCoord_32; _shadowCoord_32 = (tmpvar_7 + tmpvar_31); lowp float tmpvar_33; - vec2 tmpvar_34; + mediump vec2 tmpvar_34; tmpvar_34 = (_shadowCoord_32.xy / _shadowCoord_32.w); bool tmpvar_35; if (any(greaterThan (tmpvar_34, vec2(1.0, 1.0)))) { @@ -154,13 +154,13 @@ void main () / _shadowCoord_32.w))); }; result_9 = (result_9 + tmpvar_33); - vec4 tmpvar_36; + mediump vec4 tmpvar_36; tmpvar_36.zw = vec2(0.0, 0.0); tmpvar_36.xy = (vec2(-0.5, -0.5) * tmpvar_10); - vec4 _shadowCoord_37; + mediump vec4 _shadowCoord_37; _shadowCoord_37 = (tmpvar_7 + tmpvar_36); lowp float tmpvar_38; - vec2 tmpvar_39; + mediump vec2 tmpvar_39; tmpvar_39 = (_shadowCoord_37.xy / _shadowCoord_37.w); bool tmpvar_40; if (any(greaterThan (tmpvar_39, vec2(1.0, 1.0)))) { @@ -176,13 +176,13 @@ void main () / _shadowCoord_37.w))); }; result_9 = (result_9 + tmpvar_38); - vec4 tmpvar_41; + mediump vec4 tmpvar_41; tmpvar_41.zw = vec2(0.0, 0.0); tmpvar_41.xy = (vec2(-0.5, 0.5) * tmpvar_10); - vec4 _shadowCoord_42; + mediump vec4 _shadowCoord_42; _shadowCoord_42 = (tmpvar_7 + tmpvar_41); lowp float tmpvar_43; - vec2 tmpvar_44; + mediump vec2 tmpvar_44; tmpvar_44 = (_shadowCoord_42.xy / _shadowCoord_42.w); bool tmpvar_45; if (any(greaterThan (tmpvar_44, vec2(1.0, 1.0)))) { @@ -198,13 +198,13 @@ void main () / _shadowCoord_42.w))); }; result_9 = (result_9 + tmpvar_43); - vec4 tmpvar_46; + mediump vec4 tmpvar_46; tmpvar_46.zw = vec2(0.0, 0.0); tmpvar_46.xy = (vec2(-0.5, 1.5) * tmpvar_10); - vec4 _shadowCoord_47; + mediump vec4 _shadowCoord_47; _shadowCoord_47 = (tmpvar_7 + tmpvar_46); lowp float tmpvar_48; - vec2 tmpvar_49; + mediump vec2 tmpvar_49; tmpvar_49 = (_shadowCoord_47.xy / _shadowCoord_47.w); bool tmpvar_50; if (any(greaterThan (tmpvar_49, vec2(1.0, 1.0)))) { @@ -220,13 +220,13 @@ void main () / _shadowCoord_47.w))); }; result_9 = (result_9 + tmpvar_48); - vec4 tmpvar_51; + mediump vec4 tmpvar_51; tmpvar_51.zw = vec2(0.0, 0.0); tmpvar_51.xy = (vec2(0.5, -1.5) * tmpvar_10); - vec4 _shadowCoord_52; + mediump vec4 _shadowCoord_52; _shadowCoord_52 = (tmpvar_7 + tmpvar_51); lowp float tmpvar_53; - vec2 tmpvar_54; + mediump vec2 tmpvar_54; tmpvar_54 = (_shadowCoord_52.xy / _shadowCoord_52.w); bool tmpvar_55; if (any(greaterThan (tmpvar_54, vec2(1.0, 1.0)))) { @@ -242,13 +242,13 @@ void main () / _shadowCoord_52.w))); }; result_9 = (result_9 + tmpvar_53); - vec4 tmpvar_56; + mediump vec4 tmpvar_56; tmpvar_56.zw = vec2(0.0, 0.0); tmpvar_56.xy = (vec2(0.5, -0.5) * tmpvar_10); - vec4 _shadowCoord_57; + mediump vec4 _shadowCoord_57; _shadowCoord_57 = (tmpvar_7 + tmpvar_56); lowp float tmpvar_58; - vec2 tmpvar_59; + mediump vec2 tmpvar_59; tmpvar_59 = (_shadowCoord_57.xy / _shadowCoord_57.w); bool tmpvar_60; if (any(greaterThan (tmpvar_59, vec2(1.0, 1.0)))) { @@ -264,13 +264,13 @@ void main () / _shadowCoord_57.w))); }; result_9 = (result_9 + tmpvar_58); - vec4 tmpvar_61; + mediump vec4 tmpvar_61; tmpvar_61.zw = vec2(0.0, 0.0); tmpvar_61.xy = (vec2(0.5, 0.5) * tmpvar_10); - vec4 _shadowCoord_62; + mediump vec4 _shadowCoord_62; _shadowCoord_62 = (tmpvar_7 + tmpvar_61); lowp float tmpvar_63; - vec2 tmpvar_64; + mediump vec2 tmpvar_64; tmpvar_64 = (_shadowCoord_62.xy / _shadowCoord_62.w); bool tmpvar_65; if (any(greaterThan (tmpvar_64, vec2(1.0, 1.0)))) { @@ -286,13 +286,13 @@ void main () / _shadowCoord_62.w))); }; result_9 = (result_9 + tmpvar_63); - vec4 tmpvar_66; + mediump vec4 tmpvar_66; tmpvar_66.zw = vec2(0.0, 0.0); tmpvar_66.xy = (vec2(0.5, 1.5) * tmpvar_10); - vec4 _shadowCoord_67; + mediump vec4 _shadowCoord_67; _shadowCoord_67 = (tmpvar_7 + tmpvar_66); lowp float tmpvar_68; - vec2 tmpvar_69; + mediump vec2 tmpvar_69; tmpvar_69 = (_shadowCoord_67.xy / _shadowCoord_67.w); bool tmpvar_70; if (any(greaterThan (tmpvar_69, vec2(1.0, 1.0)))) { @@ -308,13 +308,13 @@ void main () / _shadowCoord_67.w))); }; result_9 = (result_9 + tmpvar_68); - vec4 tmpvar_71; + mediump vec4 tmpvar_71; tmpvar_71.zw = vec2(0.0, 0.0); tmpvar_71.xy = (vec2(1.5, -1.5) * tmpvar_10); - vec4 _shadowCoord_72; + mediump vec4 _shadowCoord_72; _shadowCoord_72 = (tmpvar_7 + tmpvar_71); lowp float tmpvar_73; - vec2 tmpvar_74; + mediump vec2 tmpvar_74; tmpvar_74 = (_shadowCoord_72.xy / _shadowCoord_72.w); bool tmpvar_75; if (any(greaterThan (tmpvar_74, vec2(1.0, 1.0)))) { @@ -330,13 +330,13 @@ void main () / _shadowCoord_72.w))); }; result_9 = (result_9 + tmpvar_73); - vec4 tmpvar_76; + mediump vec4 tmpvar_76; tmpvar_76.zw = vec2(0.0, 0.0); tmpvar_76.xy = (vec2(1.5, -0.5) * tmpvar_10); - vec4 _shadowCoord_77; + mediump vec4 _shadowCoord_77; _shadowCoord_77 = (tmpvar_7 + tmpvar_76); lowp float tmpvar_78; - vec2 tmpvar_79; + mediump vec2 tmpvar_79; tmpvar_79 = (_shadowCoord_77.xy / _shadowCoord_77.w); bool tmpvar_80; if (any(greaterThan (tmpvar_79, vec2(1.0, 1.0)))) { @@ -352,13 +352,13 @@ void main () / _shadowCoord_77.w))); }; result_9 = (result_9 + tmpvar_78); - vec4 tmpvar_81; + mediump vec4 tmpvar_81; tmpvar_81.zw = vec2(0.0, 0.0); tmpvar_81.xy = (vec2(1.5, 0.5) * tmpvar_10); - vec4 _shadowCoord_82; + mediump vec4 _shadowCoord_82; _shadowCoord_82 = (tmpvar_7 + tmpvar_81); lowp float tmpvar_83; - vec2 tmpvar_84; + mediump vec2 tmpvar_84; tmpvar_84 = (_shadowCoord_82.xy / _shadowCoord_82.w); bool tmpvar_85; if (any(greaterThan (tmpvar_84, vec2(1.0, 1.0)))) { @@ -374,13 +374,13 @@ void main () / _shadowCoord_82.w))); }; result_9 = (result_9 + tmpvar_83); - vec4 tmpvar_86; + mediump vec4 tmpvar_86; tmpvar_86.zw = vec2(0.0, 0.0); tmpvar_86.xy = (vec2(1.5, 1.5) * tmpvar_10); - vec4 _shadowCoord_87; + mediump vec4 _shadowCoord_87; _shadowCoord_87 = (tmpvar_7 + tmpvar_86); lowp float tmpvar_88; - vec2 tmpvar_89; + mediump vec2 tmpvar_89; tmpvar_89 = (_shadowCoord_87.xy / _shadowCoord_87.w); bool tmpvar_90; if (any(greaterThan (tmpvar_89, vec2(1.0, 1.0)))) { @@ -399,21 +399,21 @@ void main () tmpvar_91 = (result_9 + tmpvar_88); result_9 = tmpvar_91; tmpvar_8 = (tmpvar_91 / 16.0); - vec3 tmpvar_92; + mediump vec3 tmpvar_92; tmpvar_92 = -(normalize(v_view)); - vec3 tmpvar_93; - float tmpvar_94; + mediump vec3 tmpvar_93; + mediump float tmpvar_94; tmpvar_93 = -(normalize(u_lightPosition.xyz)); tmpvar_94 = 1.0; if ((0.0 != u_lightPosition.w)) { - vec3 tmpvar_95; + mediump vec3 tmpvar_95; tmpvar_95 = (u_lightPosition.xyz - v_view); - vec3 tmpvar_96; + mediump vec3 tmpvar_96; tmpvar_96 = normalize(tmpvar_95); tmpvar_93 = tmpvar_96; - float tmpvar_97; + mediump float tmpvar_97; tmpvar_97 = cos((u_lightAttenuationSpotOuter.w * 0.0174533)); - float tmpvar_98; + mediump float tmpvar_98; tmpvar_98 = sqrt(dot (tmpvar_95, tmpvar_95)); tmpvar_94 = ((1.0/(( (u_lightAttenuationSpotOuter.x + (u_lightAttenuationSpotOuter.y * tmpvar_98)) @@ -431,9 +431,9 @@ void main () (u_lightAttenuationSpotOuter.w >= 90.0) ))); }; - float tmpvar_99; + mediump float tmpvar_99; tmpvar_99 = dot (v_normal, tmpvar_93); - vec2 tmpvar_100; + mediump vec2 tmpvar_100; tmpvar_100.x = tmpvar_99; tmpvar_100.y = ((( float((tmpvar_99 >= 0.0)) @@ -442,9 +442,9 @@ void main () ((2.0 * tmpvar_99) * v_normal) - tmpvar_93), tmpvar_92)), u_materialKs.w) ) * (2.0 + u_materialKs.w)) / 8.0); - vec2 tmpvar_101; + mediump vec2 tmpvar_101; tmpvar_101 = (max (tmpvar_100, 0.0) * tmpvar_94); - float tmpvar_102; + mediump float tmpvar_102; tmpvar_102 = sqrt(dot (v_view, v_view)); lowp vec3 tmpvar_103; tmpvar_103 = mix (vec3(0.0, 0.0, 0.0), (pow ( diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_pcf_linear_csm.bin b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_pcf_linear_csm.bin index 399165c9a..41b8c085a 100644 --- a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_pcf_linear_csm.bin +++ b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_pcf_linear_csm.bin @@ -1,22 +1,22 @@ -FSHFvarying vec3 v_normal; -varying vec4 v_texcoord1; -varying vec4 v_texcoord2; -varying vec4 v_texcoord3; -varying vec4 v_texcoord4; -varying vec3 v_view; -uniform vec4 u_params1; -uniform vec4 u_params2; -uniform vec4 u_color; -uniform vec3 u_materialKa; -uniform vec3 u_materialKd; -uniform vec4 u_materialKs; -uniform vec4 u_lightPosition; -uniform vec4 u_lightAmbientPower; -uniform vec4 u_lightDiffusePower; -uniform vec4 u_lightSpecularPower; -uniform vec4 u_lightSpotDirectionInner; -uniform vec4 u_lightAttenuationSpotOuter; -uniform vec4 u_smSamplingParams; +FSHFvarying mediump vec3 v_normal; +varying mediump vec4 v_texcoord1; +varying mediump vec4 v_texcoord2; +varying mediump vec4 v_texcoord3; +varying mediump vec4 v_texcoord4; +varying mediump vec3 v_view; +uniform mediump vec4 u_params1; +uniform mediump vec4 u_params2; +uniform mediump vec4 u_color; +uniform mediump vec3 u_materialKa; +uniform mediump vec3 u_materialKd; +uniform mediump vec4 u_materialKs; +uniform mediump vec4 u_lightPosition; +uniform mediump vec4 u_lightAmbientPower; +uniform mediump vec4 u_lightDiffusePower; +uniform mediump vec4 u_lightSpecularPower; +uniform mediump vec4 u_lightSpotDirectionInner; +uniform mediump vec4 u_lightAttenuationSpotOuter; +uniform mediump vec4 u_smSamplingParams; uniform sampler2D u_shadowMap0; uniform sampler2D u_shadowMap1; uniform sampler2D u_shadowMap2; @@ -25,11 +25,11 @@ void main () { lowp float visibility_1; lowp vec3 colorCoverage_2; - vec2 tmpvar_3; + mediump vec2 tmpvar_3; tmpvar_3 = (v_texcoord1.xy / v_texcoord1.w); - vec2 tmpvar_4; + mediump vec2 tmpvar_4; tmpvar_4 = (v_texcoord2.xy / v_texcoord2.w); - vec2 tmpvar_5; + mediump vec2 tmpvar_5; tmpvar_5 = (v_texcoord3.xy / v_texcoord3.w); bvec2 tmpvar_6; tmpvar_6 = lessThan (tmpvar_3, vec2(0.99, 0.99)); @@ -62,7 +62,7 @@ void main () tmpvar_13 = bool(0); }; if (tmpvar_7) { - vec2 _texcoord_15; + mediump vec2 _texcoord_15; _texcoord_15 = (v_texcoord1.xy / v_texcoord1.w); bvec2 tmpvar_16; tmpvar_16 = greaterThan (_texcoord_15, vec2(0.0, 0.0)); @@ -81,21 +81,21 @@ void main () tmpvar_20.y = tmpvar_19; tmpvar_20.z = -(tmpvar_19); colorCoverage_2 = tmpvar_20; - vec4 tmpvar_21; + mediump vec4 tmpvar_21; tmpvar_21.w = 1.0; tmpvar_21.xy = (v_texcoord1.xy / v_texcoord1.w); tmpvar_21.z = v_texcoord1.z; lowp float result_22; result_22 = 0.0; - vec2 tmpvar_23; + mediump vec2 tmpvar_23; tmpvar_23 = (u_smSamplingParams.zw * u_params2.zz); - vec4 tmpvar_24; + mediump vec4 tmpvar_24; tmpvar_24.zw = vec2(0.0, 0.0); tmpvar_24.xy = (vec2(-1.5, -1.5) * tmpvar_23); - vec4 _shadowCoord_25; + mediump vec4 _shadowCoord_25; _shadowCoord_25 = (tmpvar_21 + tmpvar_24); lowp float tmpvar_26; - vec2 tmpvar_27; + mediump vec2 tmpvar_27; tmpvar_27 = (_shadowCoord_25.xy / _shadowCoord_25.w); bool tmpvar_28; if (any(greaterThan (tmpvar_27, vec2(1.0, 1.0)))) { @@ -111,13 +111,13 @@ void main () / _shadowCoord_25.w))); }; result_22 = tmpvar_26; - vec4 tmpvar_29; + mediump vec4 tmpvar_29; tmpvar_29.zw = vec2(0.0, 0.0); tmpvar_29.xy = (vec2(-1.5, -0.5) * tmpvar_23); - vec4 _shadowCoord_30; + mediump vec4 _shadowCoord_30; _shadowCoord_30 = (tmpvar_21 + tmpvar_29); lowp float tmpvar_31; - vec2 tmpvar_32; + mediump vec2 tmpvar_32; tmpvar_32 = (_shadowCoord_30.xy / _shadowCoord_30.w); bool tmpvar_33; if (any(greaterThan (tmpvar_32, vec2(1.0, 1.0)))) { @@ -133,13 +133,13 @@ void main () / _shadowCoord_30.w))); }; result_22 = (tmpvar_26 + tmpvar_31); - vec4 tmpvar_34; + mediump vec4 tmpvar_34; tmpvar_34.zw = vec2(0.0, 0.0); tmpvar_34.xy = (vec2(-1.5, 0.5) * tmpvar_23); - vec4 _shadowCoord_35; + mediump vec4 _shadowCoord_35; _shadowCoord_35 = (tmpvar_21 + tmpvar_34); lowp float tmpvar_36; - vec2 tmpvar_37; + mediump vec2 tmpvar_37; tmpvar_37 = (_shadowCoord_35.xy / _shadowCoord_35.w); bool tmpvar_38; if (any(greaterThan (tmpvar_37, vec2(1.0, 1.0)))) { @@ -155,13 +155,13 @@ void main () / _shadowCoord_35.w))); }; result_22 = (result_22 + tmpvar_36); - vec4 tmpvar_39; + mediump vec4 tmpvar_39; tmpvar_39.zw = vec2(0.0, 0.0); tmpvar_39.xy = (vec2(-1.5, 1.5) * tmpvar_23); - vec4 _shadowCoord_40; + mediump vec4 _shadowCoord_40; _shadowCoord_40 = (tmpvar_21 + tmpvar_39); lowp float tmpvar_41; - vec2 tmpvar_42; + mediump vec2 tmpvar_42; tmpvar_42 = (_shadowCoord_40.xy / _shadowCoord_40.w); bool tmpvar_43; if (any(greaterThan (tmpvar_42, vec2(1.0, 1.0)))) { @@ -177,13 +177,13 @@ void main () / _shadowCoord_40.w))); }; result_22 = (result_22 + tmpvar_41); - vec4 tmpvar_44; + mediump vec4 tmpvar_44; tmpvar_44.zw = vec2(0.0, 0.0); tmpvar_44.xy = (vec2(-0.5, -1.5) * tmpvar_23); - vec4 _shadowCoord_45; + mediump vec4 _shadowCoord_45; _shadowCoord_45 = (tmpvar_21 + tmpvar_44); lowp float tmpvar_46; - vec2 tmpvar_47; + mediump vec2 tmpvar_47; tmpvar_47 = (_shadowCoord_45.xy / _shadowCoord_45.w); bool tmpvar_48; if (any(greaterThan (tmpvar_47, vec2(1.0, 1.0)))) { @@ -199,13 +199,13 @@ void main () / _shadowCoord_45.w))); }; result_22 = (result_22 + tmpvar_46); - vec4 tmpvar_49; + mediump vec4 tmpvar_49; tmpvar_49.zw = vec2(0.0, 0.0); tmpvar_49.xy = (vec2(-0.5, -0.5) * tmpvar_23); - vec4 _shadowCoord_50; + mediump vec4 _shadowCoord_50; _shadowCoord_50 = (tmpvar_21 + tmpvar_49); lowp float tmpvar_51; - vec2 tmpvar_52; + mediump vec2 tmpvar_52; tmpvar_52 = (_shadowCoord_50.xy / _shadowCoord_50.w); bool tmpvar_53; if (any(greaterThan (tmpvar_52, vec2(1.0, 1.0)))) { @@ -221,13 +221,13 @@ void main () / _shadowCoord_50.w))); }; result_22 = (result_22 + tmpvar_51); - vec4 tmpvar_54; + mediump vec4 tmpvar_54; tmpvar_54.zw = vec2(0.0, 0.0); tmpvar_54.xy = (vec2(-0.5, 0.5) * tmpvar_23); - vec4 _shadowCoord_55; + mediump vec4 _shadowCoord_55; _shadowCoord_55 = (tmpvar_21 + tmpvar_54); lowp float tmpvar_56; - vec2 tmpvar_57; + mediump vec2 tmpvar_57; tmpvar_57 = (_shadowCoord_55.xy / _shadowCoord_55.w); bool tmpvar_58; if (any(greaterThan (tmpvar_57, vec2(1.0, 1.0)))) { @@ -243,13 +243,13 @@ void main () / _shadowCoord_55.w))); }; result_22 = (result_22 + tmpvar_56); - vec4 tmpvar_59; + mediump vec4 tmpvar_59; tmpvar_59.zw = vec2(0.0, 0.0); tmpvar_59.xy = (vec2(-0.5, 1.5) * tmpvar_23); - vec4 _shadowCoord_60; + mediump vec4 _shadowCoord_60; _shadowCoord_60 = (tmpvar_21 + tmpvar_59); lowp float tmpvar_61; - vec2 tmpvar_62; + mediump vec2 tmpvar_62; tmpvar_62 = (_shadowCoord_60.xy / _shadowCoord_60.w); bool tmpvar_63; if (any(greaterThan (tmpvar_62, vec2(1.0, 1.0)))) { @@ -265,13 +265,13 @@ void main () / _shadowCoord_60.w))); }; result_22 = (result_22 + tmpvar_61); - vec4 tmpvar_64; + mediump vec4 tmpvar_64; tmpvar_64.zw = vec2(0.0, 0.0); tmpvar_64.xy = (vec2(0.5, -1.5) * tmpvar_23); - vec4 _shadowCoord_65; + mediump vec4 _shadowCoord_65; _shadowCoord_65 = (tmpvar_21 + tmpvar_64); lowp float tmpvar_66; - vec2 tmpvar_67; + mediump vec2 tmpvar_67; tmpvar_67 = (_shadowCoord_65.xy / _shadowCoord_65.w); bool tmpvar_68; if (any(greaterThan (tmpvar_67, vec2(1.0, 1.0)))) { @@ -287,13 +287,13 @@ void main () / _shadowCoord_65.w))); }; result_22 = (result_22 + tmpvar_66); - vec4 tmpvar_69; + mediump vec4 tmpvar_69; tmpvar_69.zw = vec2(0.0, 0.0); tmpvar_69.xy = (vec2(0.5, -0.5) * tmpvar_23); - vec4 _shadowCoord_70; + mediump vec4 _shadowCoord_70; _shadowCoord_70 = (tmpvar_21 + tmpvar_69); lowp float tmpvar_71; - vec2 tmpvar_72; + mediump vec2 tmpvar_72; tmpvar_72 = (_shadowCoord_70.xy / _shadowCoord_70.w); bool tmpvar_73; if (any(greaterThan (tmpvar_72, vec2(1.0, 1.0)))) { @@ -309,13 +309,13 @@ void main () / _shadowCoord_70.w))); }; result_22 = (result_22 + tmpvar_71); - vec4 tmpvar_74; + mediump vec4 tmpvar_74; tmpvar_74.zw = vec2(0.0, 0.0); tmpvar_74.xy = (vec2(0.5, 0.5) * tmpvar_23); - vec4 _shadowCoord_75; + mediump vec4 _shadowCoord_75; _shadowCoord_75 = (tmpvar_21 + tmpvar_74); lowp float tmpvar_76; - vec2 tmpvar_77; + mediump vec2 tmpvar_77; tmpvar_77 = (_shadowCoord_75.xy / _shadowCoord_75.w); bool tmpvar_78; if (any(greaterThan (tmpvar_77, vec2(1.0, 1.0)))) { @@ -331,13 +331,13 @@ void main () / _shadowCoord_75.w))); }; result_22 = (result_22 + tmpvar_76); - vec4 tmpvar_79; + mediump vec4 tmpvar_79; tmpvar_79.zw = vec2(0.0, 0.0); tmpvar_79.xy = (vec2(0.5, 1.5) * tmpvar_23); - vec4 _shadowCoord_80; + mediump vec4 _shadowCoord_80; _shadowCoord_80 = (tmpvar_21 + tmpvar_79); lowp float tmpvar_81; - vec2 tmpvar_82; + mediump vec2 tmpvar_82; tmpvar_82 = (_shadowCoord_80.xy / _shadowCoord_80.w); bool tmpvar_83; if (any(greaterThan (tmpvar_82, vec2(1.0, 1.0)))) { @@ -353,13 +353,13 @@ void main () / _shadowCoord_80.w))); }; result_22 = (result_22 + tmpvar_81); - vec4 tmpvar_84; + mediump vec4 tmpvar_84; tmpvar_84.zw = vec2(0.0, 0.0); tmpvar_84.xy = (vec2(1.5, -1.5) * tmpvar_23); - vec4 _shadowCoord_85; + mediump vec4 _shadowCoord_85; _shadowCoord_85 = (tmpvar_21 + tmpvar_84); lowp float tmpvar_86; - vec2 tmpvar_87; + mediump vec2 tmpvar_87; tmpvar_87 = (_shadowCoord_85.xy / _shadowCoord_85.w); bool tmpvar_88; if (any(greaterThan (tmpvar_87, vec2(1.0, 1.0)))) { @@ -375,13 +375,13 @@ void main () / _shadowCoord_85.w))); }; result_22 = (result_22 + tmpvar_86); - vec4 tmpvar_89; + mediump vec4 tmpvar_89; tmpvar_89.zw = vec2(0.0, 0.0); tmpvar_89.xy = (vec2(1.5, -0.5) * tmpvar_23); - vec4 _shadowCoord_90; + mediump vec4 _shadowCoord_90; _shadowCoord_90 = (tmpvar_21 + tmpvar_89); lowp float tmpvar_91; - vec2 tmpvar_92; + mediump vec2 tmpvar_92; tmpvar_92 = (_shadowCoord_90.xy / _shadowCoord_90.w); bool tmpvar_93; if (any(greaterThan (tmpvar_92, vec2(1.0, 1.0)))) { @@ -397,13 +397,13 @@ void main () / _shadowCoord_90.w))); }; result_22 = (result_22 + tmpvar_91); - vec4 tmpvar_94; + mediump vec4 tmpvar_94; tmpvar_94.zw = vec2(0.0, 0.0); tmpvar_94.xy = (vec2(1.5, 0.5) * tmpvar_23); - vec4 _shadowCoord_95; + mediump vec4 _shadowCoord_95; _shadowCoord_95 = (tmpvar_21 + tmpvar_94); lowp float tmpvar_96; - vec2 tmpvar_97; + mediump vec2 tmpvar_97; tmpvar_97 = (_shadowCoord_95.xy / _shadowCoord_95.w); bool tmpvar_98; if (any(greaterThan (tmpvar_97, vec2(1.0, 1.0)))) { @@ -419,13 +419,13 @@ void main () / _shadowCoord_95.w))); }; result_22 = (result_22 + tmpvar_96); - vec4 tmpvar_99; + mediump vec4 tmpvar_99; tmpvar_99.zw = vec2(0.0, 0.0); tmpvar_99.xy = (vec2(1.5, 1.5) * tmpvar_23); - vec4 _shadowCoord_100; + mediump vec4 _shadowCoord_100; _shadowCoord_100 = (tmpvar_21 + tmpvar_99); lowp float tmpvar_101; - vec2 tmpvar_102; + mediump vec2 tmpvar_102; tmpvar_102 = (_shadowCoord_100.xy / _shadowCoord_100.w); bool tmpvar_103; if (any(greaterThan (tmpvar_102, vec2(1.0, 1.0)))) { @@ -446,7 +446,7 @@ void main () visibility_1 = (tmpvar_104 / 16.0); } else { if (tmpvar_10) { - vec2 _texcoord_105; + mediump vec2 _texcoord_105; _texcoord_105 = (v_texcoord2.xy / v_texcoord2.w); bvec2 tmpvar_106; tmpvar_106 = greaterThan (_texcoord_105, vec2(0.0, 0.0)); @@ -465,21 +465,21 @@ void main () tmpvar_110.y = tmpvar_109; tmpvar_110.z = -(tmpvar_109); colorCoverage_2 = tmpvar_110; - vec4 tmpvar_111; + mediump vec4 tmpvar_111; tmpvar_111.w = 1.0; tmpvar_111.xy = (v_texcoord2.xy / v_texcoord2.w); tmpvar_111.z = v_texcoord2.z; lowp float result_112; result_112 = 0.0; - vec2 tmpvar_113; + mediump vec2 tmpvar_113; tmpvar_113 = (u_smSamplingParams.zw * (u_params2.zz / 2.0)); - vec4 tmpvar_114; + mediump vec4 tmpvar_114; tmpvar_114.zw = vec2(0.0, 0.0); tmpvar_114.xy = (vec2(-1.5, -1.5) * tmpvar_113); - vec4 _shadowCoord_115; + mediump vec4 _shadowCoord_115; _shadowCoord_115 = (tmpvar_111 + tmpvar_114); lowp float tmpvar_116; - vec2 tmpvar_117; + mediump vec2 tmpvar_117; tmpvar_117 = (_shadowCoord_115.xy / _shadowCoord_115.w); bool tmpvar_118; if (any(greaterThan (tmpvar_117, vec2(1.0, 1.0)))) { @@ -495,13 +495,13 @@ void main () / _shadowCoord_115.w))); }; result_112 = tmpvar_116; - vec4 tmpvar_119; + mediump vec4 tmpvar_119; tmpvar_119.zw = vec2(0.0, 0.0); tmpvar_119.xy = (vec2(-1.5, -0.5) * tmpvar_113); - vec4 _shadowCoord_120; + mediump vec4 _shadowCoord_120; _shadowCoord_120 = (tmpvar_111 + tmpvar_119); lowp float tmpvar_121; - vec2 tmpvar_122; + mediump vec2 tmpvar_122; tmpvar_122 = (_shadowCoord_120.xy / _shadowCoord_120.w); bool tmpvar_123; if (any(greaterThan (tmpvar_122, vec2(1.0, 1.0)))) { @@ -517,13 +517,13 @@ void main () / _shadowCoord_120.w))); }; result_112 = (tmpvar_116 + tmpvar_121); - vec4 tmpvar_124; + mediump vec4 tmpvar_124; tmpvar_124.zw = vec2(0.0, 0.0); tmpvar_124.xy = (vec2(-1.5, 0.5) * tmpvar_113); - vec4 _shadowCoord_125; + mediump vec4 _shadowCoord_125; _shadowCoord_125 = (tmpvar_111 + tmpvar_124); lowp float tmpvar_126; - vec2 tmpvar_127; + mediump vec2 tmpvar_127; tmpvar_127 = (_shadowCoord_125.xy / _shadowCoord_125.w); bool tmpvar_128; if (any(greaterThan (tmpvar_127, vec2(1.0, 1.0)))) { @@ -539,13 +539,13 @@ void main () / _shadowCoord_125.w))); }; result_112 = (result_112 + tmpvar_126); - vec4 tmpvar_129; + mediump vec4 tmpvar_129; tmpvar_129.zw = vec2(0.0, 0.0); tmpvar_129.xy = (vec2(-1.5, 1.5) * tmpvar_113); - vec4 _shadowCoord_130; + mediump vec4 _shadowCoord_130; _shadowCoord_130 = (tmpvar_111 + tmpvar_129); lowp float tmpvar_131; - vec2 tmpvar_132; + mediump vec2 tmpvar_132; tmpvar_132 = (_shadowCoord_130.xy / _shadowCoord_130.w); bool tmpvar_133; if (any(greaterThan (tmpvar_132, vec2(1.0, 1.0)))) { @@ -561,13 +561,13 @@ void main () / _shadowCoord_130.w))); }; result_112 = (result_112 + tmpvar_131); - vec4 tmpvar_134; + mediump vec4 tmpvar_134; tmpvar_134.zw = vec2(0.0, 0.0); tmpvar_134.xy = (vec2(-0.5, -1.5) * tmpvar_113); - vec4 _shadowCoord_135; + mediump vec4 _shadowCoord_135; _shadowCoord_135 = (tmpvar_111 + tmpvar_134); lowp float tmpvar_136; - vec2 tmpvar_137; + mediump vec2 tmpvar_137; tmpvar_137 = (_shadowCoord_135.xy / _shadowCoord_135.w); bool tmpvar_138; if (any(greaterThan (tmpvar_137, vec2(1.0, 1.0)))) { @@ -583,13 +583,13 @@ void main () / _shadowCoord_135.w))); }; result_112 = (result_112 + tmpvar_136); - vec4 tmpvar_139; + mediump vec4 tmpvar_139; tmpvar_139.zw = vec2(0.0, 0.0); tmpvar_139.xy = (vec2(-0.5, -0.5) * tmpvar_113); - vec4 _shadowCoord_140; + mediump vec4 _shadowCoord_140; _shadowCoord_140 = (tmpvar_111 + tmpvar_139); lowp float tmpvar_141; - vec2 tmpvar_142; + mediump vec2 tmpvar_142; tmpvar_142 = (_shadowCoord_140.xy / _shadowCoord_140.w); bool tmpvar_143; if (any(greaterThan (tmpvar_142, vec2(1.0, 1.0)))) { @@ -605,13 +605,13 @@ void main () / _shadowCoord_140.w))); }; result_112 = (result_112 + tmpvar_141); - vec4 tmpvar_144; + mediump vec4 tmpvar_144; tmpvar_144.zw = vec2(0.0, 0.0); tmpvar_144.xy = (vec2(-0.5, 0.5) * tmpvar_113); - vec4 _shadowCoord_145; + mediump vec4 _shadowCoord_145; _shadowCoord_145 = (tmpvar_111 + tmpvar_144); lowp float tmpvar_146; - vec2 tmpvar_147; + mediump vec2 tmpvar_147; tmpvar_147 = (_shadowCoord_145.xy / _shadowCoord_145.w); bool tmpvar_148; if (any(greaterThan (tmpvar_147, vec2(1.0, 1.0)))) { @@ -627,13 +627,13 @@ void main () / _shadowCoord_145.w))); }; result_112 = (result_112 + tmpvar_146); - vec4 tmpvar_149; + mediump vec4 tmpvar_149; tmpvar_149.zw = vec2(0.0, 0.0); tmpvar_149.xy = (vec2(-0.5, 1.5) * tmpvar_113); - vec4 _shadowCoord_150; + mediump vec4 _shadowCoord_150; _shadowCoord_150 = (tmpvar_111 + tmpvar_149); lowp float tmpvar_151; - vec2 tmpvar_152; + mediump vec2 tmpvar_152; tmpvar_152 = (_shadowCoord_150.xy / _shadowCoord_150.w); bool tmpvar_153; if (any(greaterThan (tmpvar_152, vec2(1.0, 1.0)))) { @@ -649,13 +649,13 @@ void main () / _shadowCoord_150.w))); }; result_112 = (result_112 + tmpvar_151); - vec4 tmpvar_154; + mediump vec4 tmpvar_154; tmpvar_154.zw = vec2(0.0, 0.0); tmpvar_154.xy = (vec2(0.5, -1.5) * tmpvar_113); - vec4 _shadowCoord_155; + mediump vec4 _shadowCoord_155; _shadowCoord_155 = (tmpvar_111 + tmpvar_154); lowp float tmpvar_156; - vec2 tmpvar_157; + mediump vec2 tmpvar_157; tmpvar_157 = (_shadowCoord_155.xy / _shadowCoord_155.w); bool tmpvar_158; if (any(greaterThan (tmpvar_157, vec2(1.0, 1.0)))) { @@ -671,13 +671,13 @@ void main () / _shadowCoord_155.w))); }; result_112 = (result_112 + tmpvar_156); - vec4 tmpvar_159; + mediump vec4 tmpvar_159; tmpvar_159.zw = vec2(0.0, 0.0); tmpvar_159.xy = (vec2(0.5, -0.5) * tmpvar_113); - vec4 _shadowCoord_160; + mediump vec4 _shadowCoord_160; _shadowCoord_160 = (tmpvar_111 + tmpvar_159); lowp float tmpvar_161; - vec2 tmpvar_162; + mediump vec2 tmpvar_162; tmpvar_162 = (_shadowCoord_160.xy / _shadowCoord_160.w); bool tmpvar_163; if (any(greaterThan (tmpvar_162, vec2(1.0, 1.0)))) { @@ -693,13 +693,13 @@ void main () / _shadowCoord_160.w))); }; result_112 = (result_112 + tmpvar_161); - vec4 tmpvar_164; + mediump vec4 tmpvar_164; tmpvar_164.zw = vec2(0.0, 0.0); tmpvar_164.xy = (vec2(0.5, 0.5) * tmpvar_113); - vec4 _shadowCoord_165; + mediump vec4 _shadowCoord_165; _shadowCoord_165 = (tmpvar_111 + tmpvar_164); lowp float tmpvar_166; - vec2 tmpvar_167; + mediump vec2 tmpvar_167; tmpvar_167 = (_shadowCoord_165.xy / _shadowCoord_165.w); bool tmpvar_168; if (any(greaterThan (tmpvar_167, vec2(1.0, 1.0)))) { @@ -715,13 +715,13 @@ void main () / _shadowCoord_165.w))); }; result_112 = (result_112 + tmpvar_166); - vec4 tmpvar_169; + mediump vec4 tmpvar_169; tmpvar_169.zw = vec2(0.0, 0.0); tmpvar_169.xy = (vec2(0.5, 1.5) * tmpvar_113); - vec4 _shadowCoord_170; + mediump vec4 _shadowCoord_170; _shadowCoord_170 = (tmpvar_111 + tmpvar_169); lowp float tmpvar_171; - vec2 tmpvar_172; + mediump vec2 tmpvar_172; tmpvar_172 = (_shadowCoord_170.xy / _shadowCoord_170.w); bool tmpvar_173; if (any(greaterThan (tmpvar_172, vec2(1.0, 1.0)))) { @@ -737,13 +737,13 @@ void main () / _shadowCoord_170.w))); }; result_112 = (result_112 + tmpvar_171); - vec4 tmpvar_174; + mediump vec4 tmpvar_174; tmpvar_174.zw = vec2(0.0, 0.0); tmpvar_174.xy = (vec2(1.5, -1.5) * tmpvar_113); - vec4 _shadowCoord_175; + mediump vec4 _shadowCoord_175; _shadowCoord_175 = (tmpvar_111 + tmpvar_174); lowp float tmpvar_176; - vec2 tmpvar_177; + mediump vec2 tmpvar_177; tmpvar_177 = (_shadowCoord_175.xy / _shadowCoord_175.w); bool tmpvar_178; if (any(greaterThan (tmpvar_177, vec2(1.0, 1.0)))) { @@ -759,13 +759,13 @@ void main () / _shadowCoord_175.w))); }; result_112 = (result_112 + tmpvar_176); - vec4 tmpvar_179; + mediump vec4 tmpvar_179; tmpvar_179.zw = vec2(0.0, 0.0); tmpvar_179.xy = (vec2(1.5, -0.5) * tmpvar_113); - vec4 _shadowCoord_180; + mediump vec4 _shadowCoord_180; _shadowCoord_180 = (tmpvar_111 + tmpvar_179); lowp float tmpvar_181; - vec2 tmpvar_182; + mediump vec2 tmpvar_182; tmpvar_182 = (_shadowCoord_180.xy / _shadowCoord_180.w); bool tmpvar_183; if (any(greaterThan (tmpvar_182, vec2(1.0, 1.0)))) { @@ -781,13 +781,13 @@ void main () / _shadowCoord_180.w))); }; result_112 = (result_112 + tmpvar_181); - vec4 tmpvar_184; + mediump vec4 tmpvar_184; tmpvar_184.zw = vec2(0.0, 0.0); tmpvar_184.xy = (vec2(1.5, 0.5) * tmpvar_113); - vec4 _shadowCoord_185; + mediump vec4 _shadowCoord_185; _shadowCoord_185 = (tmpvar_111 + tmpvar_184); lowp float tmpvar_186; - vec2 tmpvar_187; + mediump vec2 tmpvar_187; tmpvar_187 = (_shadowCoord_185.xy / _shadowCoord_185.w); bool tmpvar_188; if (any(greaterThan (tmpvar_187, vec2(1.0, 1.0)))) { @@ -803,13 +803,13 @@ void main () / _shadowCoord_185.w))); }; result_112 = (result_112 + tmpvar_186); - vec4 tmpvar_189; + mediump vec4 tmpvar_189; tmpvar_189.zw = vec2(0.0, 0.0); tmpvar_189.xy = (vec2(1.5, 1.5) * tmpvar_113); - vec4 _shadowCoord_190; + mediump vec4 _shadowCoord_190; _shadowCoord_190 = (tmpvar_111 + tmpvar_189); lowp float tmpvar_191; - vec2 tmpvar_192; + mediump vec2 tmpvar_192; tmpvar_192 = (_shadowCoord_190.xy / _shadowCoord_190.w); bool tmpvar_193; if (any(greaterThan (tmpvar_192, vec2(1.0, 1.0)))) { @@ -830,7 +830,7 @@ void main () visibility_1 = (tmpvar_194 / 16.0); } else { if (tmpvar_13) { - vec2 _texcoord_195; + mediump vec2 _texcoord_195; _texcoord_195 = (v_texcoord3.xy / v_texcoord3.w); bvec2 tmpvar_196; tmpvar_196 = greaterThan (_texcoord_195, vec2(0.0, 0.0)); @@ -849,21 +849,21 @@ void main () tmpvar_200.y = -(tmpvar_199); tmpvar_200.z = tmpvar_199; colorCoverage_2 = tmpvar_200; - vec4 tmpvar_201; + mediump vec4 tmpvar_201; tmpvar_201.w = 1.0; tmpvar_201.xy = (v_texcoord3.xy / v_texcoord3.w); tmpvar_201.z = v_texcoord3.z; lowp float result_202; result_202 = 0.0; - vec2 tmpvar_203; + mediump vec2 tmpvar_203; tmpvar_203 = (u_smSamplingParams.zw * (u_params2.zz / 3.0)); - vec4 tmpvar_204; + mediump vec4 tmpvar_204; tmpvar_204.zw = vec2(0.0, 0.0); tmpvar_204.xy = (vec2(-1.5, -1.5) * tmpvar_203); - vec4 _shadowCoord_205; + mediump vec4 _shadowCoord_205; _shadowCoord_205 = (tmpvar_201 + tmpvar_204); lowp float tmpvar_206; - vec2 tmpvar_207; + mediump vec2 tmpvar_207; tmpvar_207 = (_shadowCoord_205.xy / _shadowCoord_205.w); bool tmpvar_208; if (any(greaterThan (tmpvar_207, vec2(1.0, 1.0)))) { @@ -879,13 +879,13 @@ void main () / _shadowCoord_205.w))); }; result_202 = tmpvar_206; - vec4 tmpvar_209; + mediump vec4 tmpvar_209; tmpvar_209.zw = vec2(0.0, 0.0); tmpvar_209.xy = (vec2(-1.5, -0.5) * tmpvar_203); - vec4 _shadowCoord_210; + mediump vec4 _shadowCoord_210; _shadowCoord_210 = (tmpvar_201 + tmpvar_209); lowp float tmpvar_211; - vec2 tmpvar_212; + mediump vec2 tmpvar_212; tmpvar_212 = (_shadowCoord_210.xy / _shadowCoord_210.w); bool tmpvar_213; if (any(greaterThan (tmpvar_212, vec2(1.0, 1.0)))) { @@ -901,13 +901,13 @@ void main () / _shadowCoord_210.w))); }; result_202 = (tmpvar_206 + tmpvar_211); - vec4 tmpvar_214; + mediump vec4 tmpvar_214; tmpvar_214.zw = vec2(0.0, 0.0); tmpvar_214.xy = (vec2(-1.5, 0.5) * tmpvar_203); - vec4 _shadowCoord_215; + mediump vec4 _shadowCoord_215; _shadowCoord_215 = (tmpvar_201 + tmpvar_214); lowp float tmpvar_216; - vec2 tmpvar_217; + mediump vec2 tmpvar_217; tmpvar_217 = (_shadowCoord_215.xy / _shadowCoord_215.w); bool tmpvar_218; if (any(greaterThan (tmpvar_217, vec2(1.0, 1.0)))) { @@ -923,13 +923,13 @@ void main () / _shadowCoord_215.w))); }; result_202 = (result_202 + tmpvar_216); - vec4 tmpvar_219; + mediump vec4 tmpvar_219; tmpvar_219.zw = vec2(0.0, 0.0); tmpvar_219.xy = (vec2(-1.5, 1.5) * tmpvar_203); - vec4 _shadowCoord_220; + mediump vec4 _shadowCoord_220; _shadowCoord_220 = (tmpvar_201 + tmpvar_219); lowp float tmpvar_221; - vec2 tmpvar_222; + mediump vec2 tmpvar_222; tmpvar_222 = (_shadowCoord_220.xy / _shadowCoord_220.w); bool tmpvar_223; if (any(greaterThan (tmpvar_222, vec2(1.0, 1.0)))) { @@ -945,13 +945,13 @@ void main () / _shadowCoord_220.w))); }; result_202 = (result_202 + tmpvar_221); - vec4 tmpvar_224; + mediump vec4 tmpvar_224; tmpvar_224.zw = vec2(0.0, 0.0); tmpvar_224.xy = (vec2(-0.5, -1.5) * tmpvar_203); - vec4 _shadowCoord_225; + mediump vec4 _shadowCoord_225; _shadowCoord_225 = (tmpvar_201 + tmpvar_224); lowp float tmpvar_226; - vec2 tmpvar_227; + mediump vec2 tmpvar_227; tmpvar_227 = (_shadowCoord_225.xy / _shadowCoord_225.w); bool tmpvar_228; if (any(greaterThan (tmpvar_227, vec2(1.0, 1.0)))) { @@ -967,13 +967,13 @@ void main () / _shadowCoord_225.w))); }; result_202 = (result_202 + tmpvar_226); - vec4 tmpvar_229; + mediump vec4 tmpvar_229; tmpvar_229.zw = vec2(0.0, 0.0); tmpvar_229.xy = (vec2(-0.5, -0.5) * tmpvar_203); - vec4 _shadowCoord_230; + mediump vec4 _shadowCoord_230; _shadowCoord_230 = (tmpvar_201 + tmpvar_229); lowp float tmpvar_231; - vec2 tmpvar_232; + mediump vec2 tmpvar_232; tmpvar_232 = (_shadowCoord_230.xy / _shadowCoord_230.w); bool tmpvar_233; if (any(greaterThan (tmpvar_232, vec2(1.0, 1.0)))) { @@ -989,13 +989,13 @@ void main () / _shadowCoord_230.w))); }; result_202 = (result_202 + tmpvar_231); - vec4 tmpvar_234; + mediump vec4 tmpvar_234; tmpvar_234.zw = vec2(0.0, 0.0); tmpvar_234.xy = (vec2(-0.5, 0.5) * tmpvar_203); - vec4 _shadowCoord_235; + mediump vec4 _shadowCoord_235; _shadowCoord_235 = (tmpvar_201 + tmpvar_234); lowp float tmpvar_236; - vec2 tmpvar_237; + mediump vec2 tmpvar_237; tmpvar_237 = (_shadowCoord_235.xy / _shadowCoord_235.w); bool tmpvar_238; if (any(greaterThan (tmpvar_237, vec2(1.0, 1.0)))) { @@ -1011,13 +1011,13 @@ void main () / _shadowCoord_235.w))); }; result_202 = (result_202 + tmpvar_236); - vec4 tmpvar_239; + mediump vec4 tmpvar_239; tmpvar_239.zw = vec2(0.0, 0.0); tmpvar_239.xy = (vec2(-0.5, 1.5) * tmpvar_203); - vec4 _shadowCoord_240; + mediump vec4 _shadowCoord_240; _shadowCoord_240 = (tmpvar_201 + tmpvar_239); lowp float tmpvar_241; - vec2 tmpvar_242; + mediump vec2 tmpvar_242; tmpvar_242 = (_shadowCoord_240.xy / _shadowCoord_240.w); bool tmpvar_243; if (any(greaterThan (tmpvar_242, vec2(1.0, 1.0)))) { @@ -1033,13 +1033,13 @@ void main () / _shadowCoord_240.w))); }; result_202 = (result_202 + tmpvar_241); - vec4 tmpvar_244; + mediump vec4 tmpvar_244; tmpvar_244.zw = vec2(0.0, 0.0); tmpvar_244.xy = (vec2(0.5, -1.5) * tmpvar_203); - vec4 _shadowCoord_245; + mediump vec4 _shadowCoord_245; _shadowCoord_245 = (tmpvar_201 + tmpvar_244); lowp float tmpvar_246; - vec2 tmpvar_247; + mediump vec2 tmpvar_247; tmpvar_247 = (_shadowCoord_245.xy / _shadowCoord_245.w); bool tmpvar_248; if (any(greaterThan (tmpvar_247, vec2(1.0, 1.0)))) { @@ -1055,13 +1055,13 @@ void main () / _shadowCoord_245.w))); }; result_202 = (result_202 + tmpvar_246); - vec4 tmpvar_249; + mediump vec4 tmpvar_249; tmpvar_249.zw = vec2(0.0, 0.0); tmpvar_249.xy = (vec2(0.5, -0.5) * tmpvar_203); - vec4 _shadowCoord_250; + mediump vec4 _shadowCoord_250; _shadowCoord_250 = (tmpvar_201 + tmpvar_249); lowp float tmpvar_251; - vec2 tmpvar_252; + mediump vec2 tmpvar_252; tmpvar_252 = (_shadowCoord_250.xy / _shadowCoord_250.w); bool tmpvar_253; if (any(greaterThan (tmpvar_252, vec2(1.0, 1.0)))) { @@ -1077,13 +1077,13 @@ void main () / _shadowCoord_250.w))); }; result_202 = (result_202 + tmpvar_251); - vec4 tmpvar_254; + mediump vec4 tmpvar_254; tmpvar_254.zw = vec2(0.0, 0.0); tmpvar_254.xy = (vec2(0.5, 0.5) * tmpvar_203); - vec4 _shadowCoord_255; + mediump vec4 _shadowCoord_255; _shadowCoord_255 = (tmpvar_201 + tmpvar_254); lowp float tmpvar_256; - vec2 tmpvar_257; + mediump vec2 tmpvar_257; tmpvar_257 = (_shadowCoord_255.xy / _shadowCoord_255.w); bool tmpvar_258; if (any(greaterThan (tmpvar_257, vec2(1.0, 1.0)))) { @@ -1099,13 +1099,13 @@ void main () / _shadowCoord_255.w))); }; result_202 = (result_202 + tmpvar_256); - vec4 tmpvar_259; + mediump vec4 tmpvar_259; tmpvar_259.zw = vec2(0.0, 0.0); tmpvar_259.xy = (vec2(0.5, 1.5) * tmpvar_203); - vec4 _shadowCoord_260; + mediump vec4 _shadowCoord_260; _shadowCoord_260 = (tmpvar_201 + tmpvar_259); lowp float tmpvar_261; - vec2 tmpvar_262; + mediump vec2 tmpvar_262; tmpvar_262 = (_shadowCoord_260.xy / _shadowCoord_260.w); bool tmpvar_263; if (any(greaterThan (tmpvar_262, vec2(1.0, 1.0)))) { @@ -1121,13 +1121,13 @@ void main () / _shadowCoord_260.w))); }; result_202 = (result_202 + tmpvar_261); - vec4 tmpvar_264; + mediump vec4 tmpvar_264; tmpvar_264.zw = vec2(0.0, 0.0); tmpvar_264.xy = (vec2(1.5, -1.5) * tmpvar_203); - vec4 _shadowCoord_265; + mediump vec4 _shadowCoord_265; _shadowCoord_265 = (tmpvar_201 + tmpvar_264); lowp float tmpvar_266; - vec2 tmpvar_267; + mediump vec2 tmpvar_267; tmpvar_267 = (_shadowCoord_265.xy / _shadowCoord_265.w); bool tmpvar_268; if (any(greaterThan (tmpvar_267, vec2(1.0, 1.0)))) { @@ -1143,13 +1143,13 @@ void main () / _shadowCoord_265.w))); }; result_202 = (result_202 + tmpvar_266); - vec4 tmpvar_269; + mediump vec4 tmpvar_269; tmpvar_269.zw = vec2(0.0, 0.0); tmpvar_269.xy = (vec2(1.5, -0.5) * tmpvar_203); - vec4 _shadowCoord_270; + mediump vec4 _shadowCoord_270; _shadowCoord_270 = (tmpvar_201 + tmpvar_269); lowp float tmpvar_271; - vec2 tmpvar_272; + mediump vec2 tmpvar_272; tmpvar_272 = (_shadowCoord_270.xy / _shadowCoord_270.w); bool tmpvar_273; if (any(greaterThan (tmpvar_272, vec2(1.0, 1.0)))) { @@ -1165,13 +1165,13 @@ void main () / _shadowCoord_270.w))); }; result_202 = (result_202 + tmpvar_271); - vec4 tmpvar_274; + mediump vec4 tmpvar_274; tmpvar_274.zw = vec2(0.0, 0.0); tmpvar_274.xy = (vec2(1.5, 0.5) * tmpvar_203); - vec4 _shadowCoord_275; + mediump vec4 _shadowCoord_275; _shadowCoord_275 = (tmpvar_201 + tmpvar_274); lowp float tmpvar_276; - vec2 tmpvar_277; + mediump vec2 tmpvar_277; tmpvar_277 = (_shadowCoord_275.xy / _shadowCoord_275.w); bool tmpvar_278; if (any(greaterThan (tmpvar_277, vec2(1.0, 1.0)))) { @@ -1187,13 +1187,13 @@ void main () / _shadowCoord_275.w))); }; result_202 = (result_202 + tmpvar_276); - vec4 tmpvar_279; + mediump vec4 tmpvar_279; tmpvar_279.zw = vec2(0.0, 0.0); tmpvar_279.xy = (vec2(1.5, 1.5) * tmpvar_203); - vec4 _shadowCoord_280; + mediump vec4 _shadowCoord_280; _shadowCoord_280 = (tmpvar_201 + tmpvar_279); lowp float tmpvar_281; - vec2 tmpvar_282; + mediump vec2 tmpvar_282; tmpvar_282 = (_shadowCoord_280.xy / _shadowCoord_280.w); bool tmpvar_283; if (any(greaterThan (tmpvar_282, vec2(1.0, 1.0)))) { @@ -1213,7 +1213,7 @@ void main () result_202 = tmpvar_284; visibility_1 = (tmpvar_284 / 16.0); } else { - vec2 _texcoord_285; + mediump vec2 _texcoord_285; _texcoord_285 = (v_texcoord4.xy / v_texcoord4.w); bvec2 tmpvar_286; tmpvar_286 = greaterThan (_texcoord_285, vec2(0.0, 0.0)); @@ -1232,21 +1232,21 @@ void main () tmpvar_290.y = -(tmpvar_289); tmpvar_290.z = -(tmpvar_289); colorCoverage_2 = tmpvar_290; - vec4 tmpvar_291; + mediump vec4 tmpvar_291; tmpvar_291.w = 1.0; tmpvar_291.xy = (v_texcoord4.xy / v_texcoord4.w); tmpvar_291.z = v_texcoord4.z; lowp float result_292; result_292 = 0.0; - vec2 tmpvar_293; + mediump vec2 tmpvar_293; tmpvar_293 = (u_smSamplingParams.zw * (u_params2.zz / 4.0)); - vec4 tmpvar_294; + mediump vec4 tmpvar_294; tmpvar_294.zw = vec2(0.0, 0.0); tmpvar_294.xy = (vec2(-1.5, -1.5) * tmpvar_293); - vec4 _shadowCoord_295; + mediump vec4 _shadowCoord_295; _shadowCoord_295 = (tmpvar_291 + tmpvar_294); lowp float tmpvar_296; - vec2 tmpvar_297; + mediump vec2 tmpvar_297; tmpvar_297 = (_shadowCoord_295.xy / _shadowCoord_295.w); bool tmpvar_298; if (any(greaterThan (tmpvar_297, vec2(1.0, 1.0)))) { @@ -1262,13 +1262,13 @@ void main () / _shadowCoord_295.w))); }; result_292 = tmpvar_296; - vec4 tmpvar_299; + mediump vec4 tmpvar_299; tmpvar_299.zw = vec2(0.0, 0.0); tmpvar_299.xy = (vec2(-1.5, -0.5) * tmpvar_293); - vec4 _shadowCoord_300; + mediump vec4 _shadowCoord_300; _shadowCoord_300 = (tmpvar_291 + tmpvar_299); lowp float tmpvar_301; - vec2 tmpvar_302; + mediump vec2 tmpvar_302; tmpvar_302 = (_shadowCoord_300.xy / _shadowCoord_300.w); bool tmpvar_303; if (any(greaterThan (tmpvar_302, vec2(1.0, 1.0)))) { @@ -1284,13 +1284,13 @@ void main () / _shadowCoord_300.w))); }; result_292 = (tmpvar_296 + tmpvar_301); - vec4 tmpvar_304; + mediump vec4 tmpvar_304; tmpvar_304.zw = vec2(0.0, 0.0); tmpvar_304.xy = (vec2(-1.5, 0.5) * tmpvar_293); - vec4 _shadowCoord_305; + mediump vec4 _shadowCoord_305; _shadowCoord_305 = (tmpvar_291 + tmpvar_304); lowp float tmpvar_306; - vec2 tmpvar_307; + mediump vec2 tmpvar_307; tmpvar_307 = (_shadowCoord_305.xy / _shadowCoord_305.w); bool tmpvar_308; if (any(greaterThan (tmpvar_307, vec2(1.0, 1.0)))) { @@ -1306,13 +1306,13 @@ void main () / _shadowCoord_305.w))); }; result_292 = (result_292 + tmpvar_306); - vec4 tmpvar_309; + mediump vec4 tmpvar_309; tmpvar_309.zw = vec2(0.0, 0.0); tmpvar_309.xy = (vec2(-1.5, 1.5) * tmpvar_293); - vec4 _shadowCoord_310; + mediump vec4 _shadowCoord_310; _shadowCoord_310 = (tmpvar_291 + tmpvar_309); lowp float tmpvar_311; - vec2 tmpvar_312; + mediump vec2 tmpvar_312; tmpvar_312 = (_shadowCoord_310.xy / _shadowCoord_310.w); bool tmpvar_313; if (any(greaterThan (tmpvar_312, vec2(1.0, 1.0)))) { @@ -1328,13 +1328,13 @@ void main () / _shadowCoord_310.w))); }; result_292 = (result_292 + tmpvar_311); - vec4 tmpvar_314; + mediump vec4 tmpvar_314; tmpvar_314.zw = vec2(0.0, 0.0); tmpvar_314.xy = (vec2(-0.5, -1.5) * tmpvar_293); - vec4 _shadowCoord_315; + mediump vec4 _shadowCoord_315; _shadowCoord_315 = (tmpvar_291 + tmpvar_314); lowp float tmpvar_316; - vec2 tmpvar_317; + mediump vec2 tmpvar_317; tmpvar_317 = (_shadowCoord_315.xy / _shadowCoord_315.w); bool tmpvar_318; if (any(greaterThan (tmpvar_317, vec2(1.0, 1.0)))) { @@ -1350,13 +1350,13 @@ void main () / _shadowCoord_315.w))); }; result_292 = (result_292 + tmpvar_316); - vec4 tmpvar_319; + mediump vec4 tmpvar_319; tmpvar_319.zw = vec2(0.0, 0.0); tmpvar_319.xy = (vec2(-0.5, -0.5) * tmpvar_293); - vec4 _shadowCoord_320; + mediump vec4 _shadowCoord_320; _shadowCoord_320 = (tmpvar_291 + tmpvar_319); lowp float tmpvar_321; - vec2 tmpvar_322; + mediump vec2 tmpvar_322; tmpvar_322 = (_shadowCoord_320.xy / _shadowCoord_320.w); bool tmpvar_323; if (any(greaterThan (tmpvar_322, vec2(1.0, 1.0)))) { @@ -1372,13 +1372,13 @@ void main () / _shadowCoord_320.w))); }; result_292 = (result_292 + tmpvar_321); - vec4 tmpvar_324; + mediump vec4 tmpvar_324; tmpvar_324.zw = vec2(0.0, 0.0); tmpvar_324.xy = (vec2(-0.5, 0.5) * tmpvar_293); - vec4 _shadowCoord_325; + mediump vec4 _shadowCoord_325; _shadowCoord_325 = (tmpvar_291 + tmpvar_324); lowp float tmpvar_326; - vec2 tmpvar_327; + mediump vec2 tmpvar_327; tmpvar_327 = (_shadowCoord_325.xy / _shadowCoord_325.w); bool tmpvar_328; if (any(greaterThan (tmpvar_327, vec2(1.0, 1.0)))) { @@ -1394,13 +1394,13 @@ void main () / _shadowCoord_325.w))); }; result_292 = (result_292 + tmpvar_326); - vec4 tmpvar_329; + mediump vec4 tmpvar_329; tmpvar_329.zw = vec2(0.0, 0.0); tmpvar_329.xy = (vec2(-0.5, 1.5) * tmpvar_293); - vec4 _shadowCoord_330; + mediump vec4 _shadowCoord_330; _shadowCoord_330 = (tmpvar_291 + tmpvar_329); lowp float tmpvar_331; - vec2 tmpvar_332; + mediump vec2 tmpvar_332; tmpvar_332 = (_shadowCoord_330.xy / _shadowCoord_330.w); bool tmpvar_333; if (any(greaterThan (tmpvar_332, vec2(1.0, 1.0)))) { @@ -1416,13 +1416,13 @@ void main () / _shadowCoord_330.w))); }; result_292 = (result_292 + tmpvar_331); - vec4 tmpvar_334; + mediump vec4 tmpvar_334; tmpvar_334.zw = vec2(0.0, 0.0); tmpvar_334.xy = (vec2(0.5, -1.5) * tmpvar_293); - vec4 _shadowCoord_335; + mediump vec4 _shadowCoord_335; _shadowCoord_335 = (tmpvar_291 + tmpvar_334); lowp float tmpvar_336; - vec2 tmpvar_337; + mediump vec2 tmpvar_337; tmpvar_337 = (_shadowCoord_335.xy / _shadowCoord_335.w); bool tmpvar_338; if (any(greaterThan (tmpvar_337, vec2(1.0, 1.0)))) { @@ -1438,13 +1438,13 @@ void main () / _shadowCoord_335.w))); }; result_292 = (result_292 + tmpvar_336); - vec4 tmpvar_339; + mediump vec4 tmpvar_339; tmpvar_339.zw = vec2(0.0, 0.0); tmpvar_339.xy = (vec2(0.5, -0.5) * tmpvar_293); - vec4 _shadowCoord_340; + mediump vec4 _shadowCoord_340; _shadowCoord_340 = (tmpvar_291 + tmpvar_339); lowp float tmpvar_341; - vec2 tmpvar_342; + mediump vec2 tmpvar_342; tmpvar_342 = (_shadowCoord_340.xy / _shadowCoord_340.w); bool tmpvar_343; if (any(greaterThan (tmpvar_342, vec2(1.0, 1.0)))) { @@ -1460,13 +1460,13 @@ void main () / _shadowCoord_340.w))); }; result_292 = (result_292 + tmpvar_341); - vec4 tmpvar_344; + mediump vec4 tmpvar_344; tmpvar_344.zw = vec2(0.0, 0.0); tmpvar_344.xy = (vec2(0.5, 0.5) * tmpvar_293); - vec4 _shadowCoord_345; + mediump vec4 _shadowCoord_345; _shadowCoord_345 = (tmpvar_291 + tmpvar_344); lowp float tmpvar_346; - vec2 tmpvar_347; + mediump vec2 tmpvar_347; tmpvar_347 = (_shadowCoord_345.xy / _shadowCoord_345.w); bool tmpvar_348; if (any(greaterThan (tmpvar_347, vec2(1.0, 1.0)))) { @@ -1482,13 +1482,13 @@ void main () / _shadowCoord_345.w))); }; result_292 = (result_292 + tmpvar_346); - vec4 tmpvar_349; + mediump vec4 tmpvar_349; tmpvar_349.zw = vec2(0.0, 0.0); tmpvar_349.xy = (vec2(0.5, 1.5) * tmpvar_293); - vec4 _shadowCoord_350; + mediump vec4 _shadowCoord_350; _shadowCoord_350 = (tmpvar_291 + tmpvar_349); lowp float tmpvar_351; - vec2 tmpvar_352; + mediump vec2 tmpvar_352; tmpvar_352 = (_shadowCoord_350.xy / _shadowCoord_350.w); bool tmpvar_353; if (any(greaterThan (tmpvar_352, vec2(1.0, 1.0)))) { @@ -1504,13 +1504,13 @@ void main () / _shadowCoord_350.w))); }; result_292 = (result_292 + tmpvar_351); - vec4 tmpvar_354; + mediump vec4 tmpvar_354; tmpvar_354.zw = vec2(0.0, 0.0); tmpvar_354.xy = (vec2(1.5, -1.5) * tmpvar_293); - vec4 _shadowCoord_355; + mediump vec4 _shadowCoord_355; _shadowCoord_355 = (tmpvar_291 + tmpvar_354); lowp float tmpvar_356; - vec2 tmpvar_357; + mediump vec2 tmpvar_357; tmpvar_357 = (_shadowCoord_355.xy / _shadowCoord_355.w); bool tmpvar_358; if (any(greaterThan (tmpvar_357, vec2(1.0, 1.0)))) { @@ -1526,13 +1526,13 @@ void main () / _shadowCoord_355.w))); }; result_292 = (result_292 + tmpvar_356); - vec4 tmpvar_359; + mediump vec4 tmpvar_359; tmpvar_359.zw = vec2(0.0, 0.0); tmpvar_359.xy = (vec2(1.5, -0.5) * tmpvar_293); - vec4 _shadowCoord_360; + mediump vec4 _shadowCoord_360; _shadowCoord_360 = (tmpvar_291 + tmpvar_359); lowp float tmpvar_361; - vec2 tmpvar_362; + mediump vec2 tmpvar_362; tmpvar_362 = (_shadowCoord_360.xy / _shadowCoord_360.w); bool tmpvar_363; if (any(greaterThan (tmpvar_362, vec2(1.0, 1.0)))) { @@ -1548,13 +1548,13 @@ void main () / _shadowCoord_360.w))); }; result_292 = (result_292 + tmpvar_361); - vec4 tmpvar_364; + mediump vec4 tmpvar_364; tmpvar_364.zw = vec2(0.0, 0.0); tmpvar_364.xy = (vec2(1.5, 0.5) * tmpvar_293); - vec4 _shadowCoord_365; + mediump vec4 _shadowCoord_365; _shadowCoord_365 = (tmpvar_291 + tmpvar_364); lowp float tmpvar_366; - vec2 tmpvar_367; + mediump vec2 tmpvar_367; tmpvar_367 = (_shadowCoord_365.xy / _shadowCoord_365.w); bool tmpvar_368; if (any(greaterThan (tmpvar_367, vec2(1.0, 1.0)))) { @@ -1570,13 +1570,13 @@ void main () / _shadowCoord_365.w))); }; result_292 = (result_292 + tmpvar_366); - vec4 tmpvar_369; + mediump vec4 tmpvar_369; tmpvar_369.zw = vec2(0.0, 0.0); tmpvar_369.xy = (vec2(1.5, 1.5) * tmpvar_293); - vec4 _shadowCoord_370; + mediump vec4 _shadowCoord_370; _shadowCoord_370 = (tmpvar_291 + tmpvar_369); lowp float tmpvar_371; - vec2 tmpvar_372; + mediump vec2 tmpvar_372; tmpvar_372 = (_shadowCoord_370.xy / _shadowCoord_370.w); bool tmpvar_373; if (any(greaterThan (tmpvar_372, vec2(1.0, 1.0)))) { @@ -1598,21 +1598,21 @@ void main () }; }; }; - vec3 tmpvar_375; + mediump vec3 tmpvar_375; tmpvar_375 = -(normalize(v_view)); - vec3 tmpvar_376; - float tmpvar_377; + mediump vec3 tmpvar_376; + mediump float tmpvar_377; tmpvar_376 = -(normalize(u_lightPosition.xyz)); tmpvar_377 = 1.0; if ((0.0 != u_lightPosition.w)) { - vec3 tmpvar_378; + mediump vec3 tmpvar_378; tmpvar_378 = (u_lightPosition.xyz - v_view); - vec3 tmpvar_379; + mediump vec3 tmpvar_379; tmpvar_379 = normalize(tmpvar_378); tmpvar_376 = tmpvar_379; - float tmpvar_380; + mediump float tmpvar_380; tmpvar_380 = cos((u_lightAttenuationSpotOuter.w * 0.0174533)); - float tmpvar_381; + mediump float tmpvar_381; tmpvar_381 = sqrt(dot (tmpvar_378, tmpvar_378)); tmpvar_377 = ((1.0/(( (u_lightAttenuationSpotOuter.x + (u_lightAttenuationSpotOuter.y * tmpvar_381)) @@ -1630,9 +1630,9 @@ void main () (u_lightAttenuationSpotOuter.w >= 90.0) ))); }; - float tmpvar_382; + mediump float tmpvar_382; tmpvar_382 = dot (v_normal, tmpvar_376); - vec2 tmpvar_383; + mediump vec2 tmpvar_383; tmpvar_383.x = tmpvar_382; tmpvar_383.y = ((( float((tmpvar_382 >= 0.0)) @@ -1641,9 +1641,9 @@ void main () ((2.0 * tmpvar_382) * v_normal) - tmpvar_376), tmpvar_375)), u_materialKs.w) ) * (2.0 + u_materialKs.w)) / 8.0); - vec2 tmpvar_384; + mediump vec2 tmpvar_384; tmpvar_384 = (max (tmpvar_383, 0.0) * tmpvar_377); - float tmpvar_385; + mediump float tmpvar_385; tmpvar_385 = sqrt(dot (v_view, v_view)); lowp vec3 tmpvar_386; tmpvar_386 = mix (vec3(0.0, 0.0, 0.0), (pow ( diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_pcf_linear_omni.bin b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_pcf_linear_omni.bin index d916bcc2e..db31dc841 100644 --- a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_pcf_linear_omni.bin +++ b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_pcf_linear_omni.bin @@ -1,44 +1,44 @@ -FSHFvarying vec3 v_normal; -varying vec4 v_position; -varying vec4 v_texcoord1; -varying vec4 v_texcoord2; -varying vec4 v_texcoord3; -varying vec4 v_texcoord4; -varying vec3 v_view; -uniform vec4 u_params1; -uniform vec4 u_params2; -uniform vec4 u_color; -uniform vec3 u_materialKa; -uniform vec3 u_materialKd; -uniform vec4 u_materialKs; -uniform vec4 u_lightPosition; -uniform vec4 u_lightAmbientPower; -uniform vec4 u_lightDiffusePower; -uniform vec4 u_lightSpecularPower; -uniform vec4 u_lightSpotDirectionInner; -uniform vec4 u_lightAttenuationSpotOuter; -uniform vec4 u_smSamplingParams; -uniform vec3 u_tetraNormalGreen; -uniform vec3 u_tetraNormalYellow; -uniform vec3 u_tetraNormalBlue; -uniform vec3 u_tetraNormalRed; +FSHFvarying mediump vec3 v_normal; +varying mediump vec4 v_position; +varying mediump vec4 v_texcoord1; +varying mediump vec4 v_texcoord2; +varying mediump vec4 v_texcoord3; +varying mediump vec4 v_texcoord4; +varying mediump vec3 v_view; +uniform mediump vec4 u_params1; +uniform mediump vec4 u_params2; +uniform mediump vec4 u_color; +uniform mediump vec3 u_materialKa; +uniform mediump vec3 u_materialKd; +uniform mediump vec4 u_materialKs; +uniform mediump vec4 u_lightPosition; +uniform mediump vec4 u_lightAmbientPower; +uniform mediump vec4 u_lightDiffusePower; +uniform mediump vec4 u_lightSpecularPower; +uniform mediump vec4 u_lightSpotDirectionInner; +uniform mediump vec4 u_lightAttenuationSpotOuter; +uniform mediump vec4 u_smSamplingParams; +uniform mediump vec3 u_tetraNormalGreen; +uniform mediump vec3 u_tetraNormalYellow; +uniform mediump vec3 u_tetraNormalBlue; +uniform mediump vec3 u_tetraNormalRed; uniform sampler2D u_shadowMap0; void main () { - vec4 shadowcoord_1; - vec4 faceSelection_2; + mediump vec4 shadowcoord_1; + mediump vec4 faceSelection_2; lowp vec3 colorCoverage_3; - vec2 tmpvar_4; + mediump vec2 tmpvar_4; tmpvar_4 = vec2((u_params2.z / 4.0)); faceSelection_2.x = dot (u_tetraNormalGreen, v_position.xyz); faceSelection_2.y = dot (u_tetraNormalYellow, v_position.xyz); faceSelection_2.z = dot (u_tetraNormalBlue, v_position.xyz); faceSelection_2.w = dot (u_tetraNormalRed, v_position.xyz); - float tmpvar_5; + mediump float tmpvar_5; tmpvar_5 = max (max (faceSelection_2.x, faceSelection_2.y), max (faceSelection_2.z, faceSelection_2.w)); if ((faceSelection_2.x == tmpvar_5)) { shadowcoord_1 = v_texcoord1; - vec2 _texcoord_6; + mediump vec2 _texcoord_6; _texcoord_6 = (v_texcoord1.xy / v_texcoord1.w); bvec2 tmpvar_7; tmpvar_7 = greaterThan (_texcoord_6, vec2(0.0, 0.0)); @@ -60,7 +60,7 @@ void main () } else { if ((faceSelection_2.y == tmpvar_5)) { shadowcoord_1 = v_texcoord2; - vec2 _texcoord_12; + mediump vec2 _texcoord_12; _texcoord_12 = (v_texcoord2.xy / v_texcoord2.w); bvec2 tmpvar_13; tmpvar_13 = greaterThan (_texcoord_12, vec2(0.0, 0.0)); @@ -82,7 +82,7 @@ void main () } else { if ((faceSelection_2.z == tmpvar_5)) { shadowcoord_1 = v_texcoord3; - vec2 _texcoord_18; + mediump vec2 _texcoord_18; _texcoord_18 = (v_texcoord3.xy / v_texcoord3.w); bvec2 tmpvar_19; tmpvar_19 = greaterThan (_texcoord_18, vec2(0.0, 0.0)); @@ -103,7 +103,7 @@ void main () colorCoverage_3 = tmpvar_23; } else { shadowcoord_1 = v_texcoord4; - vec2 _texcoord_24; + mediump vec2 _texcoord_24; _texcoord_24 = (v_texcoord4.xy / v_texcoord4.w); bvec2 tmpvar_25; tmpvar_25 = greaterThan (_texcoord_24, vec2(0.0, 0.0)); @@ -125,22 +125,22 @@ void main () }; }; }; - vec4 tmpvar_30; + mediump vec4 tmpvar_30; tmpvar_30.w = 1.0; tmpvar_30.xy = (shadowcoord_1.xy / shadowcoord_1.w); tmpvar_30.z = shadowcoord_1.z; lowp float tmpvar_31; lowp float result_32; result_32 = 0.0; - vec2 tmpvar_33; + mediump vec2 tmpvar_33; tmpvar_33 = (u_smSamplingParams.zw * tmpvar_4); - vec4 tmpvar_34; + mediump vec4 tmpvar_34; tmpvar_34.zw = vec2(0.0, 0.0); tmpvar_34.xy = (vec2(-1.5, -1.5) * tmpvar_33); - vec4 _shadowCoord_35; + mediump vec4 _shadowCoord_35; _shadowCoord_35 = (tmpvar_30 + tmpvar_34); lowp float tmpvar_36; - vec2 tmpvar_37; + mediump vec2 tmpvar_37; tmpvar_37 = (_shadowCoord_35.xy / _shadowCoord_35.w); bool tmpvar_38; if (any(greaterThan (tmpvar_37, vec2(1.0, 1.0)))) { @@ -156,13 +156,13 @@ void main () / _shadowCoord_35.w))); }; result_32 = tmpvar_36; - vec4 tmpvar_39; + mediump vec4 tmpvar_39; tmpvar_39.zw = vec2(0.0, 0.0); tmpvar_39.xy = (vec2(-1.5, -0.5) * tmpvar_33); - vec4 _shadowCoord_40; + mediump vec4 _shadowCoord_40; _shadowCoord_40 = (tmpvar_30 + tmpvar_39); lowp float tmpvar_41; - vec2 tmpvar_42; + mediump vec2 tmpvar_42; tmpvar_42 = (_shadowCoord_40.xy / _shadowCoord_40.w); bool tmpvar_43; if (any(greaterThan (tmpvar_42, vec2(1.0, 1.0)))) { @@ -178,13 +178,13 @@ void main () / _shadowCoord_40.w))); }; result_32 = (tmpvar_36 + tmpvar_41); - vec4 tmpvar_44; + mediump vec4 tmpvar_44; tmpvar_44.zw = vec2(0.0, 0.0); tmpvar_44.xy = (vec2(-1.5, 0.5) * tmpvar_33); - vec4 _shadowCoord_45; + mediump vec4 _shadowCoord_45; _shadowCoord_45 = (tmpvar_30 + tmpvar_44); lowp float tmpvar_46; - vec2 tmpvar_47; + mediump vec2 tmpvar_47; tmpvar_47 = (_shadowCoord_45.xy / _shadowCoord_45.w); bool tmpvar_48; if (any(greaterThan (tmpvar_47, vec2(1.0, 1.0)))) { @@ -200,13 +200,13 @@ void main () / _shadowCoord_45.w))); }; result_32 = (result_32 + tmpvar_46); - vec4 tmpvar_49; + mediump vec4 tmpvar_49; tmpvar_49.zw = vec2(0.0, 0.0); tmpvar_49.xy = (vec2(-1.5, 1.5) * tmpvar_33); - vec4 _shadowCoord_50; + mediump vec4 _shadowCoord_50; _shadowCoord_50 = (tmpvar_30 + tmpvar_49); lowp float tmpvar_51; - vec2 tmpvar_52; + mediump vec2 tmpvar_52; tmpvar_52 = (_shadowCoord_50.xy / _shadowCoord_50.w); bool tmpvar_53; if (any(greaterThan (tmpvar_52, vec2(1.0, 1.0)))) { @@ -222,13 +222,13 @@ void main () / _shadowCoord_50.w))); }; result_32 = (result_32 + tmpvar_51); - vec4 tmpvar_54; + mediump vec4 tmpvar_54; tmpvar_54.zw = vec2(0.0, 0.0); tmpvar_54.xy = (vec2(-0.5, -1.5) * tmpvar_33); - vec4 _shadowCoord_55; + mediump vec4 _shadowCoord_55; _shadowCoord_55 = (tmpvar_30 + tmpvar_54); lowp float tmpvar_56; - vec2 tmpvar_57; + mediump vec2 tmpvar_57; tmpvar_57 = (_shadowCoord_55.xy / _shadowCoord_55.w); bool tmpvar_58; if (any(greaterThan (tmpvar_57, vec2(1.0, 1.0)))) { @@ -244,13 +244,13 @@ void main () / _shadowCoord_55.w))); }; result_32 = (result_32 + tmpvar_56); - vec4 tmpvar_59; + mediump vec4 tmpvar_59; tmpvar_59.zw = vec2(0.0, 0.0); tmpvar_59.xy = (vec2(-0.5, -0.5) * tmpvar_33); - vec4 _shadowCoord_60; + mediump vec4 _shadowCoord_60; _shadowCoord_60 = (tmpvar_30 + tmpvar_59); lowp float tmpvar_61; - vec2 tmpvar_62; + mediump vec2 tmpvar_62; tmpvar_62 = (_shadowCoord_60.xy / _shadowCoord_60.w); bool tmpvar_63; if (any(greaterThan (tmpvar_62, vec2(1.0, 1.0)))) { @@ -266,13 +266,13 @@ void main () / _shadowCoord_60.w))); }; result_32 = (result_32 + tmpvar_61); - vec4 tmpvar_64; + mediump vec4 tmpvar_64; tmpvar_64.zw = vec2(0.0, 0.0); tmpvar_64.xy = (vec2(-0.5, 0.5) * tmpvar_33); - vec4 _shadowCoord_65; + mediump vec4 _shadowCoord_65; _shadowCoord_65 = (tmpvar_30 + tmpvar_64); lowp float tmpvar_66; - vec2 tmpvar_67; + mediump vec2 tmpvar_67; tmpvar_67 = (_shadowCoord_65.xy / _shadowCoord_65.w); bool tmpvar_68; if (any(greaterThan (tmpvar_67, vec2(1.0, 1.0)))) { @@ -288,13 +288,13 @@ void main () / _shadowCoord_65.w))); }; result_32 = (result_32 + tmpvar_66); - vec4 tmpvar_69; + mediump vec4 tmpvar_69; tmpvar_69.zw = vec2(0.0, 0.0); tmpvar_69.xy = (vec2(-0.5, 1.5) * tmpvar_33); - vec4 _shadowCoord_70; + mediump vec4 _shadowCoord_70; _shadowCoord_70 = (tmpvar_30 + tmpvar_69); lowp float tmpvar_71; - vec2 tmpvar_72; + mediump vec2 tmpvar_72; tmpvar_72 = (_shadowCoord_70.xy / _shadowCoord_70.w); bool tmpvar_73; if (any(greaterThan (tmpvar_72, vec2(1.0, 1.0)))) { @@ -310,13 +310,13 @@ void main () / _shadowCoord_70.w))); }; result_32 = (result_32 + tmpvar_71); - vec4 tmpvar_74; + mediump vec4 tmpvar_74; tmpvar_74.zw = vec2(0.0, 0.0); tmpvar_74.xy = (vec2(0.5, -1.5) * tmpvar_33); - vec4 _shadowCoord_75; + mediump vec4 _shadowCoord_75; _shadowCoord_75 = (tmpvar_30 + tmpvar_74); lowp float tmpvar_76; - vec2 tmpvar_77; + mediump vec2 tmpvar_77; tmpvar_77 = (_shadowCoord_75.xy / _shadowCoord_75.w); bool tmpvar_78; if (any(greaterThan (tmpvar_77, vec2(1.0, 1.0)))) { @@ -332,13 +332,13 @@ void main () / _shadowCoord_75.w))); }; result_32 = (result_32 + tmpvar_76); - vec4 tmpvar_79; + mediump vec4 tmpvar_79; tmpvar_79.zw = vec2(0.0, 0.0); tmpvar_79.xy = (vec2(0.5, -0.5) * tmpvar_33); - vec4 _shadowCoord_80; + mediump vec4 _shadowCoord_80; _shadowCoord_80 = (tmpvar_30 + tmpvar_79); lowp float tmpvar_81; - vec2 tmpvar_82; + mediump vec2 tmpvar_82; tmpvar_82 = (_shadowCoord_80.xy / _shadowCoord_80.w); bool tmpvar_83; if (any(greaterThan (tmpvar_82, vec2(1.0, 1.0)))) { @@ -354,13 +354,13 @@ void main () / _shadowCoord_80.w))); }; result_32 = (result_32 + tmpvar_81); - vec4 tmpvar_84; + mediump vec4 tmpvar_84; tmpvar_84.zw = vec2(0.0, 0.0); tmpvar_84.xy = (vec2(0.5, 0.5) * tmpvar_33); - vec4 _shadowCoord_85; + mediump vec4 _shadowCoord_85; _shadowCoord_85 = (tmpvar_30 + tmpvar_84); lowp float tmpvar_86; - vec2 tmpvar_87; + mediump vec2 tmpvar_87; tmpvar_87 = (_shadowCoord_85.xy / _shadowCoord_85.w); bool tmpvar_88; if (any(greaterThan (tmpvar_87, vec2(1.0, 1.0)))) { @@ -376,13 +376,13 @@ void main () / _shadowCoord_85.w))); }; result_32 = (result_32 + tmpvar_86); - vec4 tmpvar_89; + mediump vec4 tmpvar_89; tmpvar_89.zw = vec2(0.0, 0.0); tmpvar_89.xy = (vec2(0.5, 1.5) * tmpvar_33); - vec4 _shadowCoord_90; + mediump vec4 _shadowCoord_90; _shadowCoord_90 = (tmpvar_30 + tmpvar_89); lowp float tmpvar_91; - vec2 tmpvar_92; + mediump vec2 tmpvar_92; tmpvar_92 = (_shadowCoord_90.xy / _shadowCoord_90.w); bool tmpvar_93; if (any(greaterThan (tmpvar_92, vec2(1.0, 1.0)))) { @@ -398,13 +398,13 @@ void main () / _shadowCoord_90.w))); }; result_32 = (result_32 + tmpvar_91); - vec4 tmpvar_94; + mediump vec4 tmpvar_94; tmpvar_94.zw = vec2(0.0, 0.0); tmpvar_94.xy = (vec2(1.5, -1.5) * tmpvar_33); - vec4 _shadowCoord_95; + mediump vec4 _shadowCoord_95; _shadowCoord_95 = (tmpvar_30 + tmpvar_94); lowp float tmpvar_96; - vec2 tmpvar_97; + mediump vec2 tmpvar_97; tmpvar_97 = (_shadowCoord_95.xy / _shadowCoord_95.w); bool tmpvar_98; if (any(greaterThan (tmpvar_97, vec2(1.0, 1.0)))) { @@ -420,13 +420,13 @@ void main () / _shadowCoord_95.w))); }; result_32 = (result_32 + tmpvar_96); - vec4 tmpvar_99; + mediump vec4 tmpvar_99; tmpvar_99.zw = vec2(0.0, 0.0); tmpvar_99.xy = (vec2(1.5, -0.5) * tmpvar_33); - vec4 _shadowCoord_100; + mediump vec4 _shadowCoord_100; _shadowCoord_100 = (tmpvar_30 + tmpvar_99); lowp float tmpvar_101; - vec2 tmpvar_102; + mediump vec2 tmpvar_102; tmpvar_102 = (_shadowCoord_100.xy / _shadowCoord_100.w); bool tmpvar_103; if (any(greaterThan (tmpvar_102, vec2(1.0, 1.0)))) { @@ -442,13 +442,13 @@ void main () / _shadowCoord_100.w))); }; result_32 = (result_32 + tmpvar_101); - vec4 tmpvar_104; + mediump vec4 tmpvar_104; tmpvar_104.zw = vec2(0.0, 0.0); tmpvar_104.xy = (vec2(1.5, 0.5) * tmpvar_33); - vec4 _shadowCoord_105; + mediump vec4 _shadowCoord_105; _shadowCoord_105 = (tmpvar_30 + tmpvar_104); lowp float tmpvar_106; - vec2 tmpvar_107; + mediump vec2 tmpvar_107; tmpvar_107 = (_shadowCoord_105.xy / _shadowCoord_105.w); bool tmpvar_108; if (any(greaterThan (tmpvar_107, vec2(1.0, 1.0)))) { @@ -464,13 +464,13 @@ void main () / _shadowCoord_105.w))); }; result_32 = (result_32 + tmpvar_106); - vec4 tmpvar_109; + mediump vec4 tmpvar_109; tmpvar_109.zw = vec2(0.0, 0.0); tmpvar_109.xy = (vec2(1.5, 1.5) * tmpvar_33); - vec4 _shadowCoord_110; + mediump vec4 _shadowCoord_110; _shadowCoord_110 = (tmpvar_30 + tmpvar_109); lowp float tmpvar_111; - vec2 tmpvar_112; + mediump vec2 tmpvar_112; tmpvar_112 = (_shadowCoord_110.xy / _shadowCoord_110.w); bool tmpvar_113; if (any(greaterThan (tmpvar_112, vec2(1.0, 1.0)))) { @@ -489,21 +489,21 @@ void main () tmpvar_114 = (result_32 + tmpvar_111); result_32 = tmpvar_114; tmpvar_31 = (tmpvar_114 / 16.0); - vec3 tmpvar_115; + mediump vec3 tmpvar_115; tmpvar_115 = -(normalize(v_view)); - vec3 tmpvar_116; - float tmpvar_117; + mediump vec3 tmpvar_116; + mediump float tmpvar_117; tmpvar_116 = -(normalize(u_lightPosition.xyz)); tmpvar_117 = 1.0; if ((0.0 != u_lightPosition.w)) { - vec3 tmpvar_118; + mediump vec3 tmpvar_118; tmpvar_118 = (u_lightPosition.xyz - v_view); - vec3 tmpvar_119; + mediump vec3 tmpvar_119; tmpvar_119 = normalize(tmpvar_118); tmpvar_116 = tmpvar_119; - float tmpvar_120; + mediump float tmpvar_120; tmpvar_120 = cos((u_lightAttenuationSpotOuter.w * 0.0174533)); - float tmpvar_121; + mediump float tmpvar_121; tmpvar_121 = sqrt(dot (tmpvar_118, tmpvar_118)); tmpvar_117 = ((1.0/(( (u_lightAttenuationSpotOuter.x + (u_lightAttenuationSpotOuter.y * tmpvar_121)) @@ -521,9 +521,9 @@ void main () (u_lightAttenuationSpotOuter.w >= 90.0) ))); }; - float tmpvar_122; + mediump float tmpvar_122; tmpvar_122 = dot (v_normal, tmpvar_116); - vec2 tmpvar_123; + mediump vec2 tmpvar_123; tmpvar_123.x = tmpvar_122; tmpvar_123.y = ((( float((tmpvar_122 >= 0.0)) @@ -532,9 +532,9 @@ void main () ((2.0 * tmpvar_122) * v_normal) - tmpvar_116), tmpvar_115)), u_materialKs.w) ) * (2.0 + u_materialKs.w)) / 8.0); - vec2 tmpvar_124; + mediump vec2 tmpvar_124; tmpvar_124 = (max (tmpvar_123, 0.0) * tmpvar_117); - float tmpvar_125; + mediump float tmpvar_125; tmpvar_125 = sqrt(dot (v_view, v_view)); lowp vec3 tmpvar_126; tmpvar_126 = mix (vec3(0.0, 0.0, 0.0), (pow ( diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_pcf_omni.bin b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_pcf_omni.bin index f1856e310..e640eb8df 100644 --- a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_pcf_omni.bin +++ b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_pcf_omni.bin @@ -1,44 +1,44 @@ -FSHFvarying vec3 v_normal; -varying vec4 v_position; -varying vec4 v_texcoord1; -varying vec4 v_texcoord2; -varying vec4 v_texcoord3; -varying vec4 v_texcoord4; -varying vec3 v_view; -uniform vec4 u_params1; -uniform vec4 u_params2; -uniform vec4 u_color; -uniform vec3 u_materialKa; -uniform vec3 u_materialKd; -uniform vec4 u_materialKs; -uniform vec4 u_lightPosition; -uniform vec4 u_lightAmbientPower; -uniform vec4 u_lightDiffusePower; -uniform vec4 u_lightSpecularPower; -uniform vec4 u_lightSpotDirectionInner; -uniform vec4 u_lightAttenuationSpotOuter; -uniform vec4 u_smSamplingParams; -uniform vec3 u_tetraNormalGreen; -uniform vec3 u_tetraNormalYellow; -uniform vec3 u_tetraNormalBlue; -uniform vec3 u_tetraNormalRed; +FSHFvarying mediump vec3 v_normal; +varying mediump vec4 v_position; +varying mediump vec4 v_texcoord1; +varying mediump vec4 v_texcoord2; +varying mediump vec4 v_texcoord3; +varying mediump vec4 v_texcoord4; +varying mediump vec3 v_view; +uniform mediump vec4 u_params1; +uniform mediump vec4 u_params2; +uniform mediump vec4 u_color; +uniform mediump vec3 u_materialKa; +uniform mediump vec3 u_materialKd; +uniform mediump vec4 u_materialKs; +uniform mediump vec4 u_lightPosition; +uniform mediump vec4 u_lightAmbientPower; +uniform mediump vec4 u_lightDiffusePower; +uniform mediump vec4 u_lightSpecularPower; +uniform mediump vec4 u_lightSpotDirectionInner; +uniform mediump vec4 u_lightAttenuationSpotOuter; +uniform mediump vec4 u_smSamplingParams; +uniform mediump vec3 u_tetraNormalGreen; +uniform mediump vec3 u_tetraNormalYellow; +uniform mediump vec3 u_tetraNormalBlue; +uniform mediump vec3 u_tetraNormalRed; uniform sampler2D u_shadowMap0; void main () { - vec4 shadowcoord_1; - vec4 faceSelection_2; + mediump vec4 shadowcoord_1; + mediump vec4 faceSelection_2; lowp vec3 colorCoverage_3; - vec2 tmpvar_4; + mediump vec2 tmpvar_4; tmpvar_4 = vec2((u_params2.z / 4.0)); faceSelection_2.x = dot (u_tetraNormalGreen, v_position.xyz); faceSelection_2.y = dot (u_tetraNormalYellow, v_position.xyz); faceSelection_2.z = dot (u_tetraNormalBlue, v_position.xyz); faceSelection_2.w = dot (u_tetraNormalRed, v_position.xyz); - float tmpvar_5; + mediump float tmpvar_5; tmpvar_5 = max (max (faceSelection_2.x, faceSelection_2.y), max (faceSelection_2.z, faceSelection_2.w)); if ((faceSelection_2.x == tmpvar_5)) { shadowcoord_1 = v_texcoord1; - vec2 _texcoord_6; + mediump vec2 _texcoord_6; _texcoord_6 = (v_texcoord1.xy / v_texcoord1.w); bvec2 tmpvar_7; tmpvar_7 = greaterThan (_texcoord_6, vec2(0.0, 0.0)); @@ -60,7 +60,7 @@ void main () } else { if ((faceSelection_2.y == tmpvar_5)) { shadowcoord_1 = v_texcoord2; - vec2 _texcoord_12; + mediump vec2 _texcoord_12; _texcoord_12 = (v_texcoord2.xy / v_texcoord2.w); bvec2 tmpvar_13; tmpvar_13 = greaterThan (_texcoord_12, vec2(0.0, 0.0)); @@ -82,7 +82,7 @@ void main () } else { if ((faceSelection_2.z == tmpvar_5)) { shadowcoord_1 = v_texcoord3; - vec2 _texcoord_18; + mediump vec2 _texcoord_18; _texcoord_18 = (v_texcoord3.xy / v_texcoord3.w); bvec2 tmpvar_19; tmpvar_19 = greaterThan (_texcoord_18, vec2(0.0, 0.0)); @@ -103,7 +103,7 @@ void main () colorCoverage_3 = tmpvar_23; } else { shadowcoord_1 = v_texcoord4; - vec2 _texcoord_24; + mediump vec2 _texcoord_24; _texcoord_24 = (v_texcoord4.xy / v_texcoord4.w); bvec2 tmpvar_25; tmpvar_25 = greaterThan (_texcoord_24, vec2(0.0, 0.0)); @@ -128,15 +128,15 @@ void main () lowp float tmpvar_30; lowp float result_31; result_31 = 0.0; - vec2 tmpvar_32; + mediump vec2 tmpvar_32; tmpvar_32 = ((u_smSamplingParams.zw * tmpvar_4) * shadowcoord_1.w); - vec4 tmpvar_33; + mediump vec4 tmpvar_33; tmpvar_33.zw = vec2(0.0, 0.0); tmpvar_33.xy = (vec2(-1.5, -1.5) * tmpvar_32); - vec4 _shadowCoord_34; + mediump vec4 _shadowCoord_34; _shadowCoord_34 = (shadowcoord_1 + tmpvar_33); lowp float tmpvar_35; - vec2 tmpvar_36; + mediump vec2 tmpvar_36; tmpvar_36 = (_shadowCoord_34.xy / _shadowCoord_34.w); bool tmpvar_37; if (any(greaterThan (tmpvar_36, vec2(1.0, 1.0)))) { @@ -152,13 +152,13 @@ void main () / _shadowCoord_34.w))); }; result_31 = tmpvar_35; - vec4 tmpvar_38; + mediump vec4 tmpvar_38; tmpvar_38.zw = vec2(0.0, 0.0); tmpvar_38.xy = (vec2(-1.5, -0.5) * tmpvar_32); - vec4 _shadowCoord_39; + mediump vec4 _shadowCoord_39; _shadowCoord_39 = (shadowcoord_1 + tmpvar_38); lowp float tmpvar_40; - vec2 tmpvar_41; + mediump vec2 tmpvar_41; tmpvar_41 = (_shadowCoord_39.xy / _shadowCoord_39.w); bool tmpvar_42; if (any(greaterThan (tmpvar_41, vec2(1.0, 1.0)))) { @@ -174,13 +174,13 @@ void main () / _shadowCoord_39.w))); }; result_31 = (tmpvar_35 + tmpvar_40); - vec4 tmpvar_43; + mediump vec4 tmpvar_43; tmpvar_43.zw = vec2(0.0, 0.0); tmpvar_43.xy = (vec2(-1.5, 0.5) * tmpvar_32); - vec4 _shadowCoord_44; + mediump vec4 _shadowCoord_44; _shadowCoord_44 = (shadowcoord_1 + tmpvar_43); lowp float tmpvar_45; - vec2 tmpvar_46; + mediump vec2 tmpvar_46; tmpvar_46 = (_shadowCoord_44.xy / _shadowCoord_44.w); bool tmpvar_47; if (any(greaterThan (tmpvar_46, vec2(1.0, 1.0)))) { @@ -196,13 +196,13 @@ void main () / _shadowCoord_44.w))); }; result_31 = (result_31 + tmpvar_45); - vec4 tmpvar_48; + mediump vec4 tmpvar_48; tmpvar_48.zw = vec2(0.0, 0.0); tmpvar_48.xy = (vec2(-1.5, 1.5) * tmpvar_32); - vec4 _shadowCoord_49; + mediump vec4 _shadowCoord_49; _shadowCoord_49 = (shadowcoord_1 + tmpvar_48); lowp float tmpvar_50; - vec2 tmpvar_51; + mediump vec2 tmpvar_51; tmpvar_51 = (_shadowCoord_49.xy / _shadowCoord_49.w); bool tmpvar_52; if (any(greaterThan (tmpvar_51, vec2(1.0, 1.0)))) { @@ -218,13 +218,13 @@ void main () / _shadowCoord_49.w))); }; result_31 = (result_31 + tmpvar_50); - vec4 tmpvar_53; + mediump vec4 tmpvar_53; tmpvar_53.zw = vec2(0.0, 0.0); tmpvar_53.xy = (vec2(-0.5, -1.5) * tmpvar_32); - vec4 _shadowCoord_54; + mediump vec4 _shadowCoord_54; _shadowCoord_54 = (shadowcoord_1 + tmpvar_53); lowp float tmpvar_55; - vec2 tmpvar_56; + mediump vec2 tmpvar_56; tmpvar_56 = (_shadowCoord_54.xy / _shadowCoord_54.w); bool tmpvar_57; if (any(greaterThan (tmpvar_56, vec2(1.0, 1.0)))) { @@ -240,13 +240,13 @@ void main () / _shadowCoord_54.w))); }; result_31 = (result_31 + tmpvar_55); - vec4 tmpvar_58; + mediump vec4 tmpvar_58; tmpvar_58.zw = vec2(0.0, 0.0); tmpvar_58.xy = (vec2(-0.5, -0.5) * tmpvar_32); - vec4 _shadowCoord_59; + mediump vec4 _shadowCoord_59; _shadowCoord_59 = (shadowcoord_1 + tmpvar_58); lowp float tmpvar_60; - vec2 tmpvar_61; + mediump vec2 tmpvar_61; tmpvar_61 = (_shadowCoord_59.xy / _shadowCoord_59.w); bool tmpvar_62; if (any(greaterThan (tmpvar_61, vec2(1.0, 1.0)))) { @@ -262,13 +262,13 @@ void main () / _shadowCoord_59.w))); }; result_31 = (result_31 + tmpvar_60); - vec4 tmpvar_63; + mediump vec4 tmpvar_63; tmpvar_63.zw = vec2(0.0, 0.0); tmpvar_63.xy = (vec2(-0.5, 0.5) * tmpvar_32); - vec4 _shadowCoord_64; + mediump vec4 _shadowCoord_64; _shadowCoord_64 = (shadowcoord_1 + tmpvar_63); lowp float tmpvar_65; - vec2 tmpvar_66; + mediump vec2 tmpvar_66; tmpvar_66 = (_shadowCoord_64.xy / _shadowCoord_64.w); bool tmpvar_67; if (any(greaterThan (tmpvar_66, vec2(1.0, 1.0)))) { @@ -284,13 +284,13 @@ void main () / _shadowCoord_64.w))); }; result_31 = (result_31 + tmpvar_65); - vec4 tmpvar_68; + mediump vec4 tmpvar_68; tmpvar_68.zw = vec2(0.0, 0.0); tmpvar_68.xy = (vec2(-0.5, 1.5) * tmpvar_32); - vec4 _shadowCoord_69; + mediump vec4 _shadowCoord_69; _shadowCoord_69 = (shadowcoord_1 + tmpvar_68); lowp float tmpvar_70; - vec2 tmpvar_71; + mediump vec2 tmpvar_71; tmpvar_71 = (_shadowCoord_69.xy / _shadowCoord_69.w); bool tmpvar_72; if (any(greaterThan (tmpvar_71, vec2(1.0, 1.0)))) { @@ -306,13 +306,13 @@ void main () / _shadowCoord_69.w))); }; result_31 = (result_31 + tmpvar_70); - vec4 tmpvar_73; + mediump vec4 tmpvar_73; tmpvar_73.zw = vec2(0.0, 0.0); tmpvar_73.xy = (vec2(0.5, -1.5) * tmpvar_32); - vec4 _shadowCoord_74; + mediump vec4 _shadowCoord_74; _shadowCoord_74 = (shadowcoord_1 + tmpvar_73); lowp float tmpvar_75; - vec2 tmpvar_76; + mediump vec2 tmpvar_76; tmpvar_76 = (_shadowCoord_74.xy / _shadowCoord_74.w); bool tmpvar_77; if (any(greaterThan (tmpvar_76, vec2(1.0, 1.0)))) { @@ -328,13 +328,13 @@ void main () / _shadowCoord_74.w))); }; result_31 = (result_31 + tmpvar_75); - vec4 tmpvar_78; + mediump vec4 tmpvar_78; tmpvar_78.zw = vec2(0.0, 0.0); tmpvar_78.xy = (vec2(0.5, -0.5) * tmpvar_32); - vec4 _shadowCoord_79; + mediump vec4 _shadowCoord_79; _shadowCoord_79 = (shadowcoord_1 + tmpvar_78); lowp float tmpvar_80; - vec2 tmpvar_81; + mediump vec2 tmpvar_81; tmpvar_81 = (_shadowCoord_79.xy / _shadowCoord_79.w); bool tmpvar_82; if (any(greaterThan (tmpvar_81, vec2(1.0, 1.0)))) { @@ -350,13 +350,13 @@ void main () / _shadowCoord_79.w))); }; result_31 = (result_31 + tmpvar_80); - vec4 tmpvar_83; + mediump vec4 tmpvar_83; tmpvar_83.zw = vec2(0.0, 0.0); tmpvar_83.xy = (vec2(0.5, 0.5) * tmpvar_32); - vec4 _shadowCoord_84; + mediump vec4 _shadowCoord_84; _shadowCoord_84 = (shadowcoord_1 + tmpvar_83); lowp float tmpvar_85; - vec2 tmpvar_86; + mediump vec2 tmpvar_86; tmpvar_86 = (_shadowCoord_84.xy / _shadowCoord_84.w); bool tmpvar_87; if (any(greaterThan (tmpvar_86, vec2(1.0, 1.0)))) { @@ -372,13 +372,13 @@ void main () / _shadowCoord_84.w))); }; result_31 = (result_31 + tmpvar_85); - vec4 tmpvar_88; + mediump vec4 tmpvar_88; tmpvar_88.zw = vec2(0.0, 0.0); tmpvar_88.xy = (vec2(0.5, 1.5) * tmpvar_32); - vec4 _shadowCoord_89; + mediump vec4 _shadowCoord_89; _shadowCoord_89 = (shadowcoord_1 + tmpvar_88); lowp float tmpvar_90; - vec2 tmpvar_91; + mediump vec2 tmpvar_91; tmpvar_91 = (_shadowCoord_89.xy / _shadowCoord_89.w); bool tmpvar_92; if (any(greaterThan (tmpvar_91, vec2(1.0, 1.0)))) { @@ -394,13 +394,13 @@ void main () / _shadowCoord_89.w))); }; result_31 = (result_31 + tmpvar_90); - vec4 tmpvar_93; + mediump vec4 tmpvar_93; tmpvar_93.zw = vec2(0.0, 0.0); tmpvar_93.xy = (vec2(1.5, -1.5) * tmpvar_32); - vec4 _shadowCoord_94; + mediump vec4 _shadowCoord_94; _shadowCoord_94 = (shadowcoord_1 + tmpvar_93); lowp float tmpvar_95; - vec2 tmpvar_96; + mediump vec2 tmpvar_96; tmpvar_96 = (_shadowCoord_94.xy / _shadowCoord_94.w); bool tmpvar_97; if (any(greaterThan (tmpvar_96, vec2(1.0, 1.0)))) { @@ -416,13 +416,13 @@ void main () / _shadowCoord_94.w))); }; result_31 = (result_31 + tmpvar_95); - vec4 tmpvar_98; + mediump vec4 tmpvar_98; tmpvar_98.zw = vec2(0.0, 0.0); tmpvar_98.xy = (vec2(1.5, -0.5) * tmpvar_32); - vec4 _shadowCoord_99; + mediump vec4 _shadowCoord_99; _shadowCoord_99 = (shadowcoord_1 + tmpvar_98); lowp float tmpvar_100; - vec2 tmpvar_101; + mediump vec2 tmpvar_101; tmpvar_101 = (_shadowCoord_99.xy / _shadowCoord_99.w); bool tmpvar_102; if (any(greaterThan (tmpvar_101, vec2(1.0, 1.0)))) { @@ -438,13 +438,13 @@ void main () / _shadowCoord_99.w))); }; result_31 = (result_31 + tmpvar_100); - vec4 tmpvar_103; + mediump vec4 tmpvar_103; tmpvar_103.zw = vec2(0.0, 0.0); tmpvar_103.xy = (vec2(1.5, 0.5) * tmpvar_32); - vec4 _shadowCoord_104; + mediump vec4 _shadowCoord_104; _shadowCoord_104 = (shadowcoord_1 + tmpvar_103); lowp float tmpvar_105; - vec2 tmpvar_106; + mediump vec2 tmpvar_106; tmpvar_106 = (_shadowCoord_104.xy / _shadowCoord_104.w); bool tmpvar_107; if (any(greaterThan (tmpvar_106, vec2(1.0, 1.0)))) { @@ -460,13 +460,13 @@ void main () / _shadowCoord_104.w))); }; result_31 = (result_31 + tmpvar_105); - vec4 tmpvar_108; + mediump vec4 tmpvar_108; tmpvar_108.zw = vec2(0.0, 0.0); tmpvar_108.xy = (vec2(1.5, 1.5) * tmpvar_32); - vec4 _shadowCoord_109; + mediump vec4 _shadowCoord_109; _shadowCoord_109 = (shadowcoord_1 + tmpvar_108); lowp float tmpvar_110; - vec2 tmpvar_111; + mediump vec2 tmpvar_111; tmpvar_111 = (_shadowCoord_109.xy / _shadowCoord_109.w); bool tmpvar_112; if (any(greaterThan (tmpvar_111, vec2(1.0, 1.0)))) { @@ -485,21 +485,21 @@ void main () tmpvar_113 = (result_31 + tmpvar_110); result_31 = tmpvar_113; tmpvar_30 = (tmpvar_113 / 16.0); - vec3 tmpvar_114; + mediump vec3 tmpvar_114; tmpvar_114 = -(normalize(v_view)); - vec3 tmpvar_115; - float tmpvar_116; + mediump vec3 tmpvar_115; + mediump float tmpvar_116; tmpvar_115 = -(normalize(u_lightPosition.xyz)); tmpvar_116 = 1.0; if ((0.0 != u_lightPosition.w)) { - vec3 tmpvar_117; + mediump vec3 tmpvar_117; tmpvar_117 = (u_lightPosition.xyz - v_view); - vec3 tmpvar_118; + mediump vec3 tmpvar_118; tmpvar_118 = normalize(tmpvar_117); tmpvar_115 = tmpvar_118; - float tmpvar_119; + mediump float tmpvar_119; tmpvar_119 = cos((u_lightAttenuationSpotOuter.w * 0.0174533)); - float tmpvar_120; + mediump float tmpvar_120; tmpvar_120 = sqrt(dot (tmpvar_117, tmpvar_117)); tmpvar_116 = ((1.0/(( (u_lightAttenuationSpotOuter.x + (u_lightAttenuationSpotOuter.y * tmpvar_120)) @@ -517,9 +517,9 @@ void main () (u_lightAttenuationSpotOuter.w >= 90.0) ))); }; - float tmpvar_121; + mediump float tmpvar_121; tmpvar_121 = dot (v_normal, tmpvar_115); - vec2 tmpvar_122; + mediump vec2 tmpvar_122; tmpvar_122.x = tmpvar_121; tmpvar_122.y = ((( float((tmpvar_121 >= 0.0)) @@ -528,9 +528,9 @@ void main () ((2.0 * tmpvar_121) * v_normal) - tmpvar_115), tmpvar_114)), u_materialKs.w) ) * (2.0 + u_materialKs.w)) / 8.0); - vec2 tmpvar_123; + mediump vec2 tmpvar_123; tmpvar_123 = (max (tmpvar_122, 0.0) * tmpvar_116); - float tmpvar_124; + mediump float tmpvar_124; tmpvar_124 = sqrt(dot (v_view, v_view)); lowp vec3 tmpvar_125; tmpvar_125 = mix (vec3(0.0, 0.0, 0.0), (pow ( diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_vsm.bin b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_vsm.bin index 74279dda9d8ccf9baa90037caa567234b9a6c0ad..24b15656e075721e9a44ff70f81cdd3a3ed85e2e 100644 GIT binary patch delta 470 zcmdm`ut-VVE!cyRqae$pEU~CEGcR2sH#H@*G`C&4s2Mq{bMirYtkH+?uO2FEcH_C>LfH#DLQHg2bZ4++srv`HA_Gswj4q#wX|J z{G9wE6y?T1V{#Kq zQj0PZbG#GbQWJm3OqOAko@~!3H#wD2X>vcK5(~)E$shPd`QfS{?wI_5TM|PofJ=I^ z36t^Wd?qEP%`;i#7&q@{y~{Lt35VI_M;t= 90.0) ))); }; - float tmpvar_82; + mediump float tmpvar_82; tmpvar_82 = dot (v_normal, tmpvar_76); - vec2 tmpvar_83; + mediump vec2 tmpvar_83; tmpvar_83.x = tmpvar_82; tmpvar_83.y = ((( float((tmpvar_82 >= 0.0)) @@ -316,9 +316,9 @@ void main () ((2.0 * tmpvar_82) * v_normal) - tmpvar_76), tmpvar_75)), u_materialKs.w) ) * (2.0 + u_materialKs.w)) / 8.0); - vec2 tmpvar_84; + mediump vec2 tmpvar_84; tmpvar_84 = (max (tmpvar_83, 0.0) * tmpvar_77); - float tmpvar_85; + mediump float tmpvar_85; tmpvar_85 = sqrt(dot (v_view, v_view)); lowp vec3 tmpvar_86; tmpvar_86 = mix (vec3(0.0, 0.0, 0.0), (pow ( diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_vsm_linear.bin b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_vsm_linear.bin index 5fc0e65f18b25cd6e711800b4d1236beaf2f5488..a4862c8af9ef9f241344a1647dded174ea8cdcd6 100644 GIT binary patch delta 510 zcmaE+a860wE!cyRqae$pEU~CEGcR2sH#H@*G`C&4s2Mq{bMirYtkH+?uO2FEcH_C>LfH#DLQHg2bZ4++srv`HA_Gswj4q#wX|J zg_nBbhB%*BjwPB!aVxXfg84s%5$qm30xatnX~7;k89&7}YfrOEXi zbujId|8Tg%*$$jxaQ0Nr2pD_w8_sklxQo+r@)JuYuj3J$oX4XGQ!=@a=Qo_)!3#HX J^BLY*OaQ`sx|;w1 delta 322 zcmX@7^h}}NE!cyRqae$pEU~CEGcR4CEH&9!p)5WxzbH2`$C?XC*aRqCoROH4U!I(w zUzCC(2hviOnObhmRhpNX2Gk2O$3&qtz96wEF}K(dhq#foCAx;>{G9wE6y?T1V{#Kq zQj0PZbG#GbQWJm3OqOAko@~!3H#wD2X>vah?_^YF1zS9shewhht`y>!$u(TklTDb6 zH|H~PGi`2SDPr9GhxH88{Tf?!{l= 90.0) ))); }; - float tmpvar_82; + mediump float tmpvar_82; tmpvar_82 = dot (v_normal, tmpvar_76); - vec2 tmpvar_83; + mediump vec2 tmpvar_83; tmpvar_83.x = tmpvar_82; tmpvar_83.y = ((( float((tmpvar_82 >= 0.0)) @@ -324,9 +324,9 @@ void main () ((2.0 * tmpvar_82) * v_normal) - tmpvar_76), tmpvar_75)), u_materialKs.w) ) * (2.0 + u_materialKs.w)) / 8.0); - vec2 tmpvar_84; + mediump vec2 tmpvar_84; tmpvar_84 = (max (tmpvar_83, 0.0) * tmpvar_77); - float tmpvar_85; + mediump float tmpvar_85; tmpvar_85 = sqrt(dot (v_view, v_view)); lowp vec3 tmpvar_86; tmpvar_86 = mix (vec3(0.0, 0.0, 0.0), (pow ( diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_vsm_linear_omni.bin b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_vsm_linear_omni.bin index 4d3e6b4ad035fed16548d2d8afead795463488f0..f0f7e10c89c423ef050438332581dc072c6c31fd 100644 GIT binary patch delta 728 zcmZ2t`Nvw^E!cz6t#R#~vc#gw%)E4k+|-oJ(%gcH{1O^arb1b2vWY@jd_jJ3W=Up# zo;4S`T6<}Bn6^l1O*CyKsTIlj`9&$lnEHC9Rge@L1MMiwOf9$OD$UDG%P-1>yJe4L z29i1xh0^$f#G=I9Vj~Qt5Vw}bC+Fwn7h#n(2I|gDEJ-cOOw934#85I>mQe=gnaLK6 zGP-CM=VYd5lmx&-0?nn93mKK+x+gO#^P=dU93U++`8*>RT*VDWO&EI;lQxVwS&K;t z&h}E4Jyf`B28Y7r9vUIz*D delta 350 zcmexky~HxoE!cz6t#R#~vc#gw%)E4kveaZ_g|hg({G!~%9BVElVH2QmL4I*&NoIZ? zhD1qfMRIn>RC?Fiw8Ya&q$l*40d#i#c90ZBF5S z%CtF4i)HjZ%IP diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_vsm_omni.bin b/examples/runtime/shaders/gles/fs_shadowmaps_color_lightning_vsm_omni.bin index 26d2f6173d512d05674930ca58d40191ff783141..aeeb236c40b2fe7dad3b842eddcad489c8fe44bd 100644 GIT binary patch delta 718 zcmexnan4%YE!cz6t#R#~vc#gw%)E4k+|-oJ(%gcH{1O^arb1b2vWY@jd_jJ3W=Up# zo;4S`T6<}Bn6^l1O*CyKsTIlj`9&$lnEHC9Rge@L1MMiwOf9$OD$UDG%P-1>yJe4L z29i1xh0^$f#G=I9Vj~Qt5Vw}bC+Fwn7h#n(2I|gDEJ-cOOw934#85I>mQe=gnaLK6 zGP-CM=VYd5lmx&-0?nn93mKK+x+f#Cw=$~0#cwcb!q}6Tv|-H2T1-lCwl@>Pm|P}B zxOgvZ^2@>D8*gaMr2q@E&99kE7~$IFSWdy%o1e3+VS;levA;ras=1ya zI0?Kr5gZEv4Y*;O;{_kWWhUE;m@6VV$XKByw*Z(r;*Bkl95cCHqz-1~WEN3ZINL)s n49=b_8UbT({vw)=up&yr7A7%yn#6B7dx9j~pv_k#7cl_>+9<2(;K(p(M8e7*z4bmO#yu=Zn@& nRuyxZTqqVg`J7nzW?k_#rpdD4i)HL$HWF diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_color_texture.bin b/examples/runtime/shaders/gles/fs_shadowmaps_color_texture.bin index 3519843c64177368968f4db66239cde0b292e7ea..8d25ff196dd06db6d8a163bb4baf35ea55e9ade6 100644 GIT binary patch delta 43 tcmX@ea*;*cE!cxGU(U{^EU~CEGcR2sH#H@*G`C?2^4pRUC delta 50 zcmcb}a*##SE!cxGU(U{^EU~CEGcR4CEH&9kp)9^6wIVq`zbM7PnyWM~GcCU;ccY~Q F69BI-5fcCa diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_hblur.bin b/examples/runtime/shaders/gles/fs_shadowmaps_hblur.bin index 7b777d6d6ff3f3b672c2f2f04ba74964b55f007c..1bf50013e5e28181b53bc5895e741f2a27bcb060 100644 GIT binary patch delta 99 zcmeyvy@W^HE!czc_T%4g$`XqzGxO3Fa#K?>OLGe*@=LSBn3~d>P^LmzYO;w!S$s)q WMRIR4xFOZYAsh delta 59 zcmZn>yCbUU7VN=z`|o)>Ze diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_packdepth.bin b/examples/runtime/shaders/gles/fs_shadowmaps_packdepth.bin index 09b93ac3a1c76e65cb4b265f85973eafff1d23d4..82ed06142a2f48a25d9935f23976d12e061a4538 100644 GIT binary patch delta 42 rcmbQuw3r`9UIGAp-3l=P diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_packdepth_linear.bin b/examples/runtime/shaders/gles/fs_shadowmaps_packdepth_linear.bin index c98de4172caaf299c1232f63bdce5d0a43ee8f9d..5b2481588014a519d0c3407ed90c155179e0eae4 100644 GIT binary patch delta 42 rcmaFO_?uDOE!cx`iL_@`Sz=LTW?s5NZfZ(qX>P$penoZ|Q-2QtNQ@7v delta 26 hcmey(_?nU5E!cx`iL_@`Sz=LTW?uS4am9%ay8(Z!39$eG diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_packdepth_vsm.bin b/examples/runtime/shaders/gles/fs_shadowmaps_packdepth_vsm.bin index 0760f2f075435f66d0f637e4b4874b986f633287..30a28e045e769fe66cc0372e116efcd5eadc0275 100644 GIT binary patch delta 76 zcmX@j{FzzYE!cyxU`o-Cvc#gw%)E4k+|-oJ(%gcH{L1VwrlCKaS?>yG9u9&rCyOv{ F2LNRp9ZLWJ delta 36 scmey&e43fxE!cyxU`o-Cvc#gw%)Io8;>r`9{3gzDnfN4dvMu8_012`V$^ZZW diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_packdepth_vsm_linear.bin b/examples/runtime/shaders/gles/fs_shadowmaps_packdepth_vsm_linear.bin index 516d3c5a96b055fb35513ab020745b9ec4a906dd..f145f669665f51b6d253b01ca46026f6fe322e07 100644 GIT binary patch delta 64 zcmeytG=o{(E!cx`iL_@`Sz=LTW?s5NZfZ(qX>P$penoZ|Q{M&7EDC@#4{iql;qDkK delta 32 ocmbQi{DX<#E!cx`iL_@`Sz=LTW?uS4am9%a&J(-+CqCK+0Jo70dH?_b diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_texture.bin b/examples/runtime/shaders/gles/fs_shadowmaps_texture.bin index 68f15a151409df630b03be40556bde5ca3f08285..2587cd07b1a6a3a6614883fbab014fb44dcd9d4d 100644 GIT binary patch delta 31 mcmdnSxQ|iXE!cxGU(U{^EU~CEGcR2sH#H@*G`CG>4^EeQ`q delta 26 hcmX@dw2z73E!cxGU(U{^EU~CEGcSFjxb?)SF92|f2}=L~ diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_unpackdepth_vsm.bin b/examples/runtime/shaders/gles/fs_shadowmaps_unpackdepth_vsm.bin index 30a4770bf642558d97a05268625906809c93fc6d..e508b408be44f4db8b66231a69a636ba58588b1e 100644 GIT binary patch delta 42 rcmZ3=w3SKRE!cxGU(U{^EU~CEGcR2sH#H@*G`C3IhLB<>FR delta 26 hcmdnWw3Lb8E!cxGU(U{^EU~CEGcSFjxb?)S+W>2h2><{9 diff --git a/examples/runtime/shaders/gles/fs_shadowmaps_vblur.bin b/examples/runtime/shaders/gles/fs_shadowmaps_vblur.bin index 7b777d6d6ff3f3b672c2f2f04ba74964b55f007c..1bf50013e5e28181b53bc5895e741f2a27bcb060 100644 GIT binary patch delta 99 zcmeyvy@W^HE!czc_T%4g$`XqzGxO3Fa#K?>OLGe*@=LSBn3~d>P^LmzYO;w!S$s)q WMRIR4xFOZYAsh delta 59 zcmZn>yCbUU7VN=z`|o)>Ze diff --git a/examples/runtime/shaders/gles/fs_shadowvolume_color_lightning.bin b/examples/runtime/shaders/gles/fs_shadowvolume_color_lightning.bin index 028d5507179b59a378e061b4abdf161dbcf37766..cac305995b3ad2792b2d7df4c76e2e6dca019196 100644 GIT binary patch delta 498 zcmaFNcR@hhE!cz6Y^_jNSz=LTW?s5NZfZ(qX>P$peu*R~Q=u$1*+ii%z97HYnhQ-C zNX{52SC*MtZp~GimzkDdlnXNhqOlY#8IoF&nuDQYqQ96LiY=w_1&Kw8xj>81%$is& zrH-W1SfMmNF*hkQHLnCy=^9B@B&8-mrOEj@`9+utZ>cDwDNM^x$51v|kWqmhs&29Y zqbHnQ!Ds?!uV(axv%fPs!`YTh2sJrOR&ep9Ovl5y6o5bj9I$#7l?wWhFxD&A1W9Ns z80r~l0tJmgl(vEfQaFNCYXQ9l2`jxSO-)T}pdOeTCo?Ad&Vxt*C4Xp%KoEf*I9 E0PT>idH?_b delta 251 zcmca0@R-lvE!cz6Y^_jNSz=LTW?s5NS!%MeLRoxXeo<~>jx`sOunADOAio$z45YLy zGqv2Bt28e&4X9`0M6rqM#V4MVocLa1GC!llWPL`l$-a!rMnH2-6iVaM^3&mJL3V+} zax&91N&@nWgA!9ROM&J?jheiR(Q`64lksFXCZEZ(n4Bg*0kY+pEhi^1A5#T8MX#b# zK_B8Oy>d+jZ3RO;15Kca5s=cf=2Dnk%VM+nAWIvwKxuqIVo_plv0jxmS1lJ80|2-k BRDJ*e diff --git a/examples/runtime/shaders/gles/fs_shadowvolume_color_texture.bin b/examples/runtime/shaders/gles/fs_shadowvolume_color_texture.bin index 3519843c64177368968f4db66239cde0b292e7ea..8d25ff196dd06db6d8a163bb4baf35ea55e9ade6 100644 GIT binary patch delta 43 tcmX@ea*;*cE!cxGU(U{^EU~CEGcR2sH#H@*G`C?2^4pRUC delta 50 zcmcb}a*##SE!cxGU(U{^EU~CEGcR4CEH&9kp)9^6wIVq`zbM7PnyWM~GcCU;ccY~Q F69BI-5fcCa diff --git a/examples/runtime/shaders/gles/fs_shadowvolume_svbackcolor.bin b/examples/runtime/shaders/gles/fs_shadowvolume_svbackcolor.bin index 111977a20678702c9abfb31cc712eea94d92fbc5..2a7257548f263018543efa95e818b102ec342701 100644 GIT binary patch delta 29 icmc~P5qAsrU}OM-(!9*H{Gwci+|-oJ(%gcH{ILLbi3sQb delta 21 acmXTP;dcx6U}OM-(!9*H{G!~6;;{fZYz5Z< diff --git a/examples/runtime/shaders/gles/fs_shadowvolume_svbacktex1.bin b/examples/runtime/shaders/gles/fs_shadowvolume_svbacktex1.bin index aef88dcc74c370faf891fc36036dbffc0f69183d..aed408908cdc6af68a77d81f8e8fe9ce5c858e84 100644 GIT binary patch delta 29 ecmZ3=yp?%^BztaZN@i(p!9)pf7;|HiGa~?*3JOI4 delta 13 UcmdnWyp(x@ecl+1uvc#gw%)E4k+|-oJ(%b@tw4D6J5{0t(Y-_I4yv(%xqFk8N TL?vZ*sH%xB%`oQ1W6q2K@`fJy delta 49 zcmZ3<(#fLa7VN>ecl+1uvc#gw%)E4kw4D6J5{0t(Y-_I4yv(%xqTGo_$`fOoHa>S^ F1OU{;6CVHo diff --git a/examples/runtime/shaders/gles/fs_shadowvolume_texture.bin b/examples/runtime/shaders/gles/fs_shadowvolume_texture.bin index 68f15a151409df630b03be40556bde5ca3f08285..2587cd07b1a6a3a6614883fbab014fb44dcd9d4d 100644 GIT binary patch delta 31 mcmdnSxQ|iXE!cxGU(U{^EU~CEGcR2sH#H@*G`ChuvSRiE!czcWv*FwSz=LTW?s5NZfZ(qX>P$pehFnLQ=u$1*+ii%z97HYnhRZ- zm2@(aGGm~!vdq+SYp&9~%(VQXT$phXGfKgdA*mIqIhZPP6H81KASy53nx&wHCHVc7XtvDWur>~ delta 262 zcmZ20bV8usE!czcWv*FwSz=LTW?s5NS!%MeLRoxXeo<~>jx`sOunADOAio$z%m^q} zl3J0RpI?+>fFc7jq%1SF+?uO2FEb5jnnG@3iHSlfn&8BX;uAkeP8MX8m~05dfsD$+ zKo@}2rRAr?^-iA7s4#gyW7=e0CgaH&Og@wMFgZX`b$ZR>eiTRi+*kyVZl?wV0 uN9vVpDrhSh>KSMPMT~%yrZtzs=J_nGECQwR1&Kw8xy5=_)?Bq*Tnqr!j#t6} diff --git a/examples/runtime/shaders/gles/fs_sms_mesh.bin b/examples/runtime/shaders/gles/fs_sms_mesh.bin index 95a00ccd4978496d31b04e6449f3ea4e0838cfed..dfe753897e6bc42d9cc067d336b9603a87c8caaa 100644 GIT binary patch delta 1065 zcmZ9}OH1QW7zSW!(>6`-*F;8`vk{Y`olZL&EnYy8E>s3DxDiTe(wfpVrD{3~ia$UQ z3AlHoTR{>11L9)T{V?GCfEgHYn2j4#YR+5C>OJQ?-}ydHj`NR`{OnS}!8U6Jqtx0~ z8&#qyvbv=;k3vG>EfPa1e<4P3W4$En?Xs@723vc5?~QM9T$pO{T&NQ!J~O>2;1 zPU>!_tO*)c<5FEBBlcld8YUxRcU#?2#O{!iB$+RcIlI}#Y~M$Ry)b3x3eDHfD$V<@ zxS3@}>AJ>zrTK;_(#*SRH1E3>XufyB54hoX+$uGl9{=5Vg-;&T?0Hc0(}S8B7Cnww z_+KpigcmcNdEx(g;iozH6Aqs9!LRz@Pkr!=AM@1x@Hc*VHUM7jXX2ulqEIMy2$y0(y4(=+Ltim@A=*S8 zbZ~JH#2n1fp>%K%hf;8Lap}@QC=@#O?Mp@W8Xy~$u6dQ)4nJ<{`&y6ZMBTWCw&7S|U51+=~;?GzU{!9V~ zfhF7qIJBU^e$evRLy%!v;TS3c56YIu4#yep#yK(}fy0o;24RMmVUCYsF(A@;Oc=fq zjz<#$#}kq%5r)?hj?WPRB`VWSq72`o98Y5cCo#!LoS_`&xQq)BRkBl+;a=r&4s2Mq{bMirYtkH+?uO2FEcH_C>L&4xRVT$Sw;#u$?=BPTncdcrMB!aYad#{ zn3JU#lVfrdD-<*g^bB+qQu0d_G&D4TxWhqDd2g(s`A zAY2&F5&)N5$C3qSgVbrUTEqD%tO#|RSu^3{Aa#0d2z4232zA@pP}Lc+Bh=-vBh>9? zN43|S1EH>v1EKB!2dX+7PK3HLPK3InoT&CXa3R!HaUs;5Ze%qg zlRbG5Vb{ciPHwWeqLy-l}%DoGmU;&O&3{g*Y& zThb_44ldeSkBH6EDG?L#M3hvtVtg*Ts~i&(k)N>4{Cnq!cBw zY0xaJo>xV)iD{N3-Lo7|7-XDE=_4Z6?67HFumCf8e9hD_a0qD6rZJdh;B4xIuWT|# zHin2@ned%m#;2WO!(lLmonzSNRE#)^u#@53sbcJ;$np%gyaI=dV$a1ebSVhCDNfxC z&u#_l9*P?e!`P#s;H7x*GB|v7^!)-ZeKMYW42yn)DL(uRYXN1VJqBc0gABVtliz|e a76gV9p^kTfA{}D54%P7!qQm^$EB^~oX`7G$ diff --git a/examples/runtime/shaders/gles/fs_sms_shadow_pd.bin b/examples/runtime/shaders/gles/fs_sms_shadow_pd.bin index 09b93ac3a1c76e65cb4b265f85973eafff1d23d4..82ed06142a2f48a25d9935f23976d12e061a4538 100644 GIT binary patch delta 42 rcmbQuw3r`9UIGAp-3l=P diff --git a/examples/runtime/shaders/gles/fs_stencil_color_lightning.bin b/examples/runtime/shaders/gles/fs_stencil_color_lightning.bin index 06eecc3d171713b521197d77f97b877e92e7a36d..b0391eb6ca3954067e3bec69f47829875583b1c5 100644 GIT binary patch delta 349 zcmey#H&H;`E!cxGsQQ~&Sz=LTW?s5NZfZ(qX>P$pehEh?Q=u$1*;t`0zAQ7f+?uO2 zFEcH_C>N$qAvdwaM4=SB>7uGfJF6YU7QpxfI|IgSZ;#W|z#Ocw;1)$u5i$>`)^n&t~j`vsIX0!r45` gk#KejvpbxV!Z delta 177 zcmbOz@RKjVE!cxGsQQ~&Sz=LTW?s5NS!%MeLRoxXeo<~>jx`sWa9L(*xiwd5US=9l zULiNJ#6+Pq9z}3sfyBfK5)(H_OuQgA@m+x$*u0#~^o$bc{G9xvcq3~r1*j!Jvs^NZ w;*EhKljkr-O#Z{zIk}hV#pGJ%h{<=E-6m_Zm`~1PvERIrMTTkfRW=(&0L0%w$N&HU diff --git a/examples/runtime/shaders/gles/fs_stencil_color_texture.bin b/examples/runtime/shaders/gles/fs_stencil_color_texture.bin index 3519843c64177368968f4db66239cde0b292e7ea..8d25ff196dd06db6d8a163bb4baf35ea55e9ade6 100644 GIT binary patch delta 43 tcmX@ea*;*cE!cxGU(U{^EU~CEGcR2sH#H@*G`C?2^4pRUC delta 50 zcmcb}a*##SE!cxGU(U{^EU~CEGcR4CEH&9kp)9^6wIVq`zbM7PnyWM~GcCU;ccY~Q F69BI-5fcCa diff --git a/examples/runtime/shaders/gles/fs_stencil_texture.bin b/examples/runtime/shaders/gles/fs_stencil_texture.bin index 68f15a151409df630b03be40556bde5ca3f08285..2587cd07b1a6a3a6614883fbab014fb44dcd9d4d 100644 GIT binary patch delta 31 mcmdnSxQ|iXE!cxGU(U{^EU~CEGcR2sH#H@*G`CP$pehEz|Q=u$1*+`)*z9h9GIX}NB z#lV^iU9p3>6GWRrZeodvLTP+iW@@=LS7}~mT7FS3%uJ9$AjyKnqQu-{4C#rDlIloS z8Ut0PWTvH+7N=q=-6+lubLjDYI}}|xnduoN&iOg{Me#<~TnfmR8!Ld^<&s$xZ;T`} zxrQ+UX4>S-j9qYc4AVG^w1&W0s delta 225 zcmdllG+(gZE!cyx&i9W`Sz=LTW?s5NS!%MeLRoxXeo<~>jx`sOun|zWB()+rKffr& z07V9*p)51C+?uO2FEb6OQz198#6+PKO%P}_NU$KWC^5Gfs+OrJcj89LiI*fMeiEB3 zz}Tk-wm&B`J)^`qKPSH^-pHCu0qQ8A4KA5Q@y0-r$#)ndCfhJ|PCm=@V)9<*h{>`n YZj-ZF%qOp6vETfWMTTj!D7zLD086w`e*gdg diff --git a/examples/runtime/shaders/gles/fs_tree.bin b/examples/runtime/shaders/gles/fs_tree.bin index 614a7d5f217d7f7ef12f48396b99c7388ab448f2..3361bf705aa4eee79f629a721e5b16d1945416d5 100644 GIT binary patch delta 159 zcmcb~v5-^TE!czcWv*FwSz=LTW?s5NZfZ(qX>P$pehFnLQ=u$1*;t`0z97HYnhRZ- zm9z?)va-z7a%-;Ayv(%xqFlIfnGx(zbsG;XV1%(J$1|D0*^`*uVC>D;nVJ{@NtHVx delta 130 zcmZ3;d6Og4E!czcWv*FwSz=LTW?s5NS!%MeLRoxXeo<~>jx`sWa6x`CikJ~lX-R5D wa(;eMiUEoY$dIzk)N*UC(!9(xplK5)Mr`~zpKXWXaE2J diff --git a/examples/runtime/shaders/gles/fs_update.bin b/examples/runtime/shaders/gles/fs_update.bin index 5612ee8b644741aafeb7e8162d541f1171f53b3d..bc4ec137feabbe4d680f630c1597bf8105681216 100644 GIT binary patch delta 31 mcmdnNcz{vdE!cxGU(U{^EU~CEGcR2sH#H@*G`C@cR5j3$(+P?nl(qL3J0 zl9-pCnpa}Yg{d!I8m_NWx*kcNu|ipVUVc$-VvaReSz=LTW?nkXGLW$#X}Gai(ZUlPjFf#~cD@Co&_d9+Z Ls^MDISRVoaqYmE7VN=jd1Bt9#FCPt%%swiRE4tCWD|wN_`Lk0+{7GfF1W-*E18LLQWG1b zCN7eS1u8ODD1$31ODw9)%u5I91qqiV=B20Rl~{8ji5r2$Q!A45^NUgpP-H+l$}&^S z;ewML8O0|jFp5sDWwf4rfYE6(7nAj5U#85-`CVyrro}9;8Ir%;70|403PFVl| diff --git a/examples/runtime/shaders/gles/vs_bump_instanced.bin b/examples/runtime/shaders/gles/vs_bump_instanced.bin index a28c7aff8c1f03acd525538e55b60a0528b81b51..5dfc4e3387ba871e786e967d31134c789a6d4116 100644 GIT binary patch delta 538 zcmdnNyMkXbEZBq5^2EGHi6tdPnMtK3sS3HNDVe3Y1rr6O*kMd98BHitp)57oL?JQ0 zBrz{NHLt{)3sYabEL>l;q&kYe%=nbVl0-vnx>if7Vo_>r%~h6IRGFEV4tLf~>3SrE z#tLQedHF@Ti8&Z5K~4op!<~v|5=h<%B%fN5oS$EmVt~_xvdq+SBuO?%08I{L6jz2Y z6><|xOcYAvAqq?LGSh%gg1LBdHKPhl%Us4nSl~?NWpakI{h2J`>~^LsIQs)rD4gxW zYz1f6GP}ar2blxmY(W-;nZYa}Jjfw6xsFwA@9=B`|lzvR1=|ud_Y`0CalA AaR2}S delta 316 zcmZ3%zk^pREZBq5^2EGHi6tdPnMtK3sS0JO$tDVk@p<`0xrsT}TyTkrRx%Ugq$W1V z#DZ01#-}8fBpM(ofarvX8{!Z*!Xa*K%~h6IRGFEVK3S1b8f1g9LK)l*P$`fFAmNh4 zy!6z(61WzSxDiM^wIVq`zbFOhC^Q{qnW^P)!N~_1#V0>t6rKE+QE9R|Q~u<6Oiq(u zFj-92V9uO8lR0GaS7yt}W-Km~n^*!S-(qo^til>Rxt`T^@)_3R$?j~GlTWZc005DW Ba(e&( diff --git a/examples/runtime/shaders/gles/vs_callback.bin b/examples/runtime/shaders/gles/vs_callback.bin index 6bacfa008ff76becc8f45d860ba42fcf21da6e20..81c505c5b51d2e4aa3e6da71b8935abb1feed299 100644 GIT binary patch delta 119 zcmZ3+e2-Z&EZBpwW$~Rqi6tdPnMtK3sS3HNDVe3Y1rr6O*kMd9DK#ilp)57oM4>D` mIX@@A$iSMbEU~CEGcO&kDawcqs=Z4Cu6<)6j5%46u@wNHG%XDP delta 86 zcmcb|yo^~ZEZBpwW$~Rqi6tdPnMtK3sS0JO$tDVk@yYo)`9%iSTyTkrR#IYMxiYw1 ZSz=LTW?uTlDx-;8)FwVEm>k8}0sx-WAx8iJ diff --git a/examples/runtime/shaders/gles/vs_cubes.bin b/examples/runtime/shaders/gles/vs_cubes.bin index a95ee0cd59859045ac572a35d45104f3721e45e0..dce24d48800a1266cffa9c098fcec6eb6744bb3c 100644 GIT binary patch delta 97 zcmeBX+RP*w7VN>er2D;RVo6C+W>RTMszPpRN@i(p!9+nRb{JDjN)5_XC`(N?Q7DT~ b&der2D;RVo6C+W>RTMszO<6vWY@sd~$wHevyGS7hGbZmDI!-iHS98 I6IXQt0FBBPRR910 diff --git a/examples/runtime/shaders/gles/vs_hdr_blur.bin b/examples/runtime/shaders/gles/vs_hdr_blur.bin index 803d8c85b299a764e235210c4313f8a8ea04f542..a089435dddf6ec40a75793ebdc524005e1393895 100644 GIT binary patch delta 262 zcmbQrHJ4j5EZBqb_T%4g5=%;oGLuS6QWbJjQ!-0)3nmK6u)~--(wb1FLRo6EkwRH~ zNoqxMetuDkfi+iIVo_ygUOHS~f;3!T6^cF+Bz?x1`qm-zoseOJI^vNA%&^IvjD2wS hG{zHfb}W+toZZ8;6V7&FMu-s)}Q=_dB@~6Ec%llv+M!@J+(TE diff --git a/examples/runtime/shaders/gles/vs_hdr_bright.bin b/examples/runtime/shaders/gles/vs_hdr_bright.bin index 94cc7cda16f92fa1e8c389a25ef8a6d60bf18f34..facd03bfcf18dc21accbc32e7a8a1b9f409bf32c 100644 GIT binary patch delta 100 zcmbQvw4X^bEZBoFU(U`Zv81FZGpV#BRUtPuC9^cQV4|Q5JB+C#tqEl+l%*ycDU`*R eq*f&7=NF|ISaX%;Wv1m9<-+wPXu$QgPXGYUZzLuF delta 37 tcmdnbG@VH>EZBoFU(U`Zv81FZGpV#Bb)uxqL|dte@zN8U)Fy7|2LRzP4Eq28 diff --git a/examples/runtime/shaders/gles/vs_hdr_lum.bin b/examples/runtime/shaders/gles/vs_hdr_lum.bin index 94cc7cda16f92fa1e8c389a25ef8a6d60bf18f34..facd03bfcf18dc21accbc32e7a8a1b9f409bf32c 100644 GIT binary patch delta 100 zcmbQvw4X^bEZBoFU(U`Zv81FZGpV#BRUtPuC9^cQV4|Q5JB+C#tqEl+l%*ycDU`*R eq*f&7=NF|ISaX%;Wv1m9<-+wPXu$QgPXGYUZzLuF delta 37 tcmdnbG@VH>EZBoFU(U`Zv81FZGpV#Bb)uxqL|dte@zN8U)Fy7|2LRzP4Eq28 diff --git a/examples/runtime/shaders/gles/vs_hdr_lumavg.bin b/examples/runtime/shaders/gles/vs_hdr_lumavg.bin index 94cc7cda16f92fa1e8c389a25ef8a6d60bf18f34..facd03bfcf18dc21accbc32e7a8a1b9f409bf32c 100644 GIT binary patch delta 100 zcmbQvw4X^bEZBoFU(U`Zv81FZGpV#BRUtPuC9^cQV4|Q5JB+C#tqEl+l%*ycDU`*R eq*f&7=NF|ISaX%;Wv1m9<-+wPXu$QgPXGYUZzLuF delta 37 tcmdnbG@VH>EZBoFU(U`Zv81FZGpV#Bb)uxqL|dte@zN8U)Fy7|2LRzP4Eq28 diff --git a/examples/runtime/shaders/gles/vs_hdr_mesh.bin b/examples/runtime/shaders/gles/vs_hdr_mesh.bin index a7a11ce491db3fd4567cf70d82c002d82c381d4b..878ec1ddd715a7abdb02bbb9bac99ce61cf41525 100644 GIT binary patch delta 152 zcmaFNvYAyfEZBq5Y^_jNVo6C+W>RTMszPpRN@i(p!9+nRb{JC&!E`oKfr=`Wr6wCI xl*N~2rj}cCmF8upRTMszO<6vav#9d|rN0Zeor#7hGbZmDI!-LlLla pS$tV$YPmI6XEZBoFU(U`Zv81FZGpV#Bb)uxqL|dte@zN8U)Fy7|2LRzP4Eq28 diff --git a/examples/runtime/shaders/gles/vs_hdr_tonemap.bin b/examples/runtime/shaders/gles/vs_hdr_tonemap.bin index 5ef806ae4fbcfe37b5599d4cf1fb801a13f248c8..c238ac5771007f546675e83e2217619403485220 100644 GIT binary patch delta 238 zcmey&`I<{IEZBqb_T%4g5=%;oGLuS6QWbJjQ!-0)3nmK6u)~--(wb1FLRo6EkwRH~ zNoqxMetuDkfi+iIVo_ygUOHS~f;3!T6^cF+Bz?x1`qm-zoseOJI^vNA%&^IvjOK8* aJ!2o7eTH!#oZZQE4$cl^MzEDxE&u@k3|pN5 delta 144 zcmaFO^_f#JEZBqb_T%4g5=%;oGLuS6QYT8vOth7n7%w%kQOdV0HQ7X=EWRYQA~`?5 zD88<0 diff --git a/examples/runtime/shaders/gles/vs_ibl_mesh.bin b/examples/runtime/shaders/gles/vs_ibl_mesh.bin index fa8ae6760ad151211ed25b3b59500cfb45337e3e..68f7dd23d1d3fa12a1cf698db553cee6197e4127 100644 GIT binary patch delta 142 zcmdnS@{dI_EZBoFsQQ~&Vo6C+W>RTMszPpRN@i(p!9+nRb{JDjN)5_XC`(N?Rw#?l u%P-1J%(3PwODw9)%u9!BiZWz_YVVYXYhSJiXC5zvF(;cdR>RpF8CwCZM>Tu^ delta 93 zcmeyzvW-P6EZBoFsQQ~&Vo6C+W>RTMszO<6vav#9d|rN0Zeor#7hGbZm6RA*t_&_$ gmRMAonU_AX%5dUl*@-t4CNUOFu3)U1{EM*#09REbi2wiq diff --git a/examples/runtime/shaders/gles/vs_ibl_skybox.bin b/examples/runtime/shaders/gles/vs_ibl_skybox.bin index f6ed295a6b30c082146aa2bdc1f0967df3ab0f62..484c9c74bffcf2e7c8b39823830a15ee84c304d5 100644 GIT binary patch delta 116 zcmeBRKENy)7VN=zAlK0}v81FZGpV#BRUtPuC9^cQV4|Q5JB+C#tqf%er2D;RVo6C+W>RTMszPpRN@i(p!9+nRb{JDjMjgsjC`(N?QOJx> zNi0b;u;#+l6)TBNsS!4%y^^X}Of|9QDoZS?%*;!NyJWW{8`MpgRA8(xg)rAmPGOu2 E0HB{s$N&HU delta 80 zcmcb~(#WC}7VN>er2D;RVo6C+W>RTMszO<6vWY@sd~$wHevyGS7hGbZmCVFAiHUU* e6X!`x+$S;dp4h}c5|d>Zl_t9}=1<Ri{~i6tdPnMtK3sS3HNDVe3Y1rr6O*kMd9DK#ilp)57oM4>D` zIX@@A$iSMbEU~CEGcO&kDauF%Nu@DRWm#rwxiwd5US?W;Q7&BF0vR@_HM`{D*4$7~ zglSI8$xkd%D9J4VS`cq&&7}a-Ihm8O6sBQvEn^&Ri{~i6tdPnMtK3sS0JO$;Jwa@p<`0xrsT}TyTkrR#IX>ITMAl z_~iVY{2~KuuCm0U%FMj=HxX@ j7L(sF#ZL}qc9=YyId8HcOXlPzmi);-St2J#u}%U2R(MKs diff --git a/examples/runtime/shaders/gles/vs_oit.bin b/examples/runtime/shaders/gles/vs_oit.bin index 6d48059a96fa90dc52898753ebf34c1eeff35bff..226bd2690ace80aaa1023bd7d2f7d6b5220a5f52 100644 GIT binary patch delta 130 zcmZ3=@{~m~EZBo_Z%Dm$Vo6C+W>RTMszPpRN@i(p!9+n*We7_lH?hP-p)|fMGqv2B ot28e&Ex#xit}N1)9j0TdGn{$d2F9E$#OMfT2QlWs+4~vO07@t@X8-^I delta 65 zcmaFLvXn(IEZBo_Z%Dm$Vo6C+W>RTM>O@IX;lvUXh0^%4%+zvguF|~BwEUvniG{Wk Vw>eE>w4UtD=rFmPF?SMEDgXn@7ghiO diff --git a/examples/runtime/shaders/gles/vs_oit_blit.bin b/examples/runtime/shaders/gles/vs_oit_blit.bin index 94cc7cda16f92fa1e8c389a25ef8a6d60bf18f34..facd03bfcf18dc21accbc32e7a8a1b9f409bf32c 100644 GIT binary patch delta 100 zcmbQvw4X^bEZBoFU(U`Zv81FZGpV#BRUtPuC9^cQV4|Q5JB+C#tqEl+l%*ycDU`*R eq*f&7=NF|ISaX%;Wv1m9<-+wPXu$QgPXGYUZzLuF delta 37 tcmdnbG@VH>EZBoFU(U`Zv81FZGpV#Bb)uxqL|dte@zN8U)Fy7|2LRzP4Eq28 diff --git a/examples/runtime/shaders/gles/vs_raymarching.bin b/examples/runtime/shaders/gles/vs_raymarching.bin index e5ce571c4e4d7ffa1767c25320e1b9763e2d1e75..f082e454b09086ac0d3c354b55e6bb0370c64ae8 100644 GIT binary patch delta 145 zcmcb|G>us@EZBpQvH8=(#FCPt%%swiRE6Bsl+4oHf{B7s>@cR5j3$(+P?nl(q>vb2 vl3J0RpI?+>V9iyQSX7yrmk!q#FM+DK3|Vn$US?W;Q7&BZ1P!<)+m{0XL2x#S delta 65 zcmbQne2+;hEZBpQvH8=(#FCPt%%swiRE4tCWD|wN_~iVY{2~KuF1W-*E18LLQWG1* OC(f6ict~yHhh+dHbQzui diff --git a/examples/runtime/shaders/gles/vs_shadowmaps_color.bin b/examples/runtime/shaders/gles/vs_shadowmaps_color.bin index bb6aab4f3f68ea7feca923b16b7674171cc6e0db..8d5597962252d67650a2807e15503298d835b70d 100644 GIT binary patch delta 54 wcmX@Yc!yCkEZBpQ0SFRHN{TX*N=s4|a#K?>OLGe*3QDsuQIO@4SW;4ynN(Vms*szSl3AKtFi}v79mdp>QiC!T%2Jb!70TlC z@{4j4bF8__5{oJ`^U~p(qGVOjRF-9?mRoa`=4GY8qSty%7L@Hm?i=M9j#a& delta 133 zcmeBXpUtKf7VN>uQIO@4SW;4ynN(Vms!*1iY@(1DpO;^ho0wzG1(%p;B_#%wGgc^r z%atV-Rc7X;Ppp!iIA3hyUa5)q<-`+9OcYAvb28I2N_mx#bh?7s>vNp*^_@WO#lE&+%Osd diff --git a/examples/runtime/shaders/gles/vs_shadowmaps_color_lightning_csm.bin b/examples/runtime/shaders/gles/vs_shadowmaps_color_lightning_csm.bin index e836887d53339d4454464e314064d7c93cc8bdf6..78c579e267f8d24a50006416e8a4cd87c3eb0e0e 100644 GIT binary patch delta 392 zcmZqT+Qcmx7VN?3*0^>~Vo6C+W>RTMszPpRN@i(p!9+nRb{JDjN*BshC`(N?Rw#?l z%P-1J%(3PwODw9)%u9!90!f=Flua}g)KP5FMEHkw{peR4fnyWM~GY#lsRA-jP7bF%X z<`x5;geE^ZictY(b_Iet4Z+;Pr~z}w~Vo6C+W>RTMszO<6vWY@sd|rN0Zeor#7hGbZm6R+{&RC%g zE?1UVRGFEV4$)FJ(NTEf9I1)>q$WO)n#{x~HCctxV6qh>_vCa&elXq1C}avYy)?cc zu_!UO*wC7*G%qs^Xp=&2Vu^`DX?$@;VoH9wZ(@OONreGicJd2Gg~UvWHDKWxoYw}=IqIWEIpf-vhXqj06q{#n*aa+ diff --git a/examples/runtime/shaders/gles/vs_shadowmaps_color_lightning_linear.bin b/examples/runtime/shaders/gles/vs_shadowmaps_color_lightning_linear.bin index 0461e4d7bb79c889f3792fb951526b3afed800cd..89e2856c69cfa0d651cc8232f8fd7ed93878e486 100644 GIT binary patch delta 250 zcmey&_L^NXEZBpQqae#8v81FZGpV#BRUtPuC9^cQV4|QDJB+C%r3Pgxl%*ycE0o3O z&C5&!YJsckmSKZhvs6JH!cxdhEHP0i vjnBzU&nWRNsle29M+xqtzlAX7@cR5lrEI1P?nl(tWXx8 zmtT~dm}AXVmRMAonU@aJ1d=vUD4S>~tcj!nC=y?iT9KTeUzB2qp=V;RG%m%)n2HZd z!(DaTkPYJ0$y|&wJ`kotZeodvLTP+%eoAUiSY~Q@Kv8~{HCJg~W*X4NsLm{nFGws( z%q<2w2~B=-6r%#n>P8iKinQ3K|V$+sB`;cRavOE|lksT$7y%aj9WXE67|*~Vo6C+W>RTMszPpRN@i(p!9+nRb{JDjN*BshC`(N?Rw#?l z%P-1J%(3PwODw9)%u9!90!f=Flua}g)uIi)N!wcMJkG%qs^=q8v$CVr4%gZN`I7o)s7k`@z%()fbJqQu-{pi|IvO?F_E zhG~mrRDdzd5zMIw=4M6>SO87F#aIYudofwU*-cE#T*D{OR>bm O*%e6aYe;Mp*1rHM!=b?d delta 255 zcmeC=+sLC87VN?3*0^>~Vo6C+W>RTMszO<6vWY@sd|rN0Zeor#7hGbZm6R+{&RC%g zE?1UVRGFEV4$)FJ(NTEf9I1)>q$WO)n#{x~B?47lmYG^^%~hJ0nFcg+vIC=xZ(@mw zLTP+%eoAUi7*H~xC_f9X0Ag5ad_iJSVs5b^LOd6uD0H!co A6aWAK diff --git a/examples/runtime/shaders/gles/vs_shadowmaps_color_lightning_omni.bin b/examples/runtime/shaders/gles/vs_shadowmaps_color_lightning_omni.bin index 5a6e7f390deaf7853a4f06bceba679aa580aff0a..c7b8ada7fa9a63ee018a5d3cb2d2f9bb0cdec5b7 100644 GIT binary patch delta 395 zcmcc0*~={%7VN?3*0^>~Vo6C+W>RTMszPpRN@i(p!9+nRb{JDjN*BshC`(N?Rw#?l z%P-1J%(3PwODw9)%u9!90!f=Flua}g)uIi)N!wcMJkG%qs^=q8v$CVr4%gZN`I7o)s7k`@z%()fbJqQu-{pi|IvO?F_E zhG~mrRDdzd5zMIw=4M6>SO87F#aIYudofwU*-cEzRIZ;7VN?3*0^>~Vo6C+W>RTMszO<6vWY@sd|rN0Zeor#7hGbZm6R+{&RC%g zE?1UVRGFEV4$)FJ(NTEf9I1)>q$WO)n#{x~B?47lmYG^^%~hJ0nFcg+vIC=xZ(@mw zLTP+%eoAUi7*H~xC_f9X0Ag5ad_iJSVs5b^LOd6uDEZBoFU(U`Zv81FZGpV#Bb)uxqL|dte@zN8U)Fy7|2LRzP4Eq28 diff --git a/examples/runtime/shaders/gles/vs_shadowmaps_depth.bin b/examples/runtime/shaders/gles/vs_shadowmaps_depth.bin index bb6aab4f3f68ea7feca923b16b7674171cc6e0db..8d5597962252d67650a2807e15503298d835b70d 100644 GIT binary patch delta 54 wcmX@Yc!yCkEZBpQ0SFRHN{TX*N=s4|a#K?>OLGe*3QDsjEZBqb_T%4g5=%;oGLuS6QWbJjQ!-0)3nmK6u)~--(wb1FLRo6EkwRH~ zNoqxMetuDkfi+iIVo_ygUOHS~f;3!T6^cF+Bz?x1`qm-zosiLiI6@&evBX57G(I;! zB{e53GqpURC_l@Zt28e&Ex#xiX5}PCZJ3plwHQ6%>_WyqIQt*tJ~(?f(>XZ1gBigN HWw`(V+0bdH delta 148 zcmZ3=y_8EZEZBqb_T%4g5=%;oGLuS6QYT8vOth7n7%w%kQOdV0HQ7X=EWRYQA~`?5 zD8Prk(1J2{RTMszPpRN@i(p!9+m|HYm$ogB>QA=L~0VXaoTL C(-=_z delta 34 qcmcb}w2?_LEZBo_iL_@`Vo6C+W>RTM>O@J4iIHj(+npv}Yybe!j|~n0 diff --git a/examples/runtime/shaders/gles/vs_shadowmaps_texture.bin b/examples/runtime/shaders/gles/vs_shadowmaps_texture.bin index 94cc7cda16f92fa1e8c389a25ef8a6d60bf18f34..facd03bfcf18dc21accbc32e7a8a1b9f409bf32c 100644 GIT binary patch delta 100 zcmbQvw4X^bEZBoFU(U`Zv81FZGpV#BRUtPuC9^cQV4|Q5JB+C#tqEl+l%*ycDU`*R eq*f&7=NF|ISaX%;Wv1m9<-+wPXu$QgPXGYUZzLuF delta 37 tcmdnbG@VH>EZBoFU(U`Zv81FZGpV#Bb)uxqL|dte@zN8U)Fy7|2LRzP4Eq28 diff --git a/examples/runtime/shaders/gles/vs_shadowmaps_texture_lightning.bin b/examples/runtime/shaders/gles/vs_shadowmaps_texture_lightning.bin index 4e09e76e793164227eafcb398ea21b0cf4fb45bb..d6aa67f9a162d626b59d40bc34b8407b372277a9 100644 GIT binary patch delta 213 zcmaFBvV&DJEZBpw&i9W`Vo6C+W>RTMszPpRN@i(p!9+nRb{JDjMia_ZC`(N?Qb>$1 zNv%lE&o4?bu;waDEUL`RONZ-=mq1lqhEMSXaSe!d3b~0TCJLqTx%nxnIboTp<;?eq#!yoL delta 81 zcmdnN`hZ0%EZBpw&i9W`Vo6C+W>RTMszO<6vWY@sd|rN0Zeor#7hGbZmCVFAsfi8Z f6X#1!JSaBtzSLw!MzzWMj0KaIGuBVmW9k9`-=ZD@ diff --git a/examples/runtime/shaders/gles/vs_shadowmaps_unpackdepth.bin b/examples/runtime/shaders/gles/vs_shadowmaps_unpackdepth.bin index 94cc7cda16f92fa1e8c389a25ef8a6d60bf18f34..facd03bfcf18dc21accbc32e7a8a1b9f409bf32c 100644 GIT binary patch delta 100 zcmbQvw4X^bEZBoFU(U`Zv81FZGpV#BRUtPuC9^cQV4|Q5JB+C#tqEl+l%*ycDU`*R eq*f&7=NF|ISaX%;Wv1m9<-+wPXu$QgPXGYUZzLuF delta 37 tcmdnbG@VH>EZBoFU(U`Zv81FZGpV#Bb)uxqL|dte@zN8U)Fy7|2LRzP4Eq28 diff --git a/examples/runtime/shaders/gles/vs_shadowmaps_vblur.bin b/examples/runtime/shaders/gles/vs_shadowmaps_vblur.bin index 665c46851bd1da71444c00050f5a51bd50f03dcf..2d4f7533ca3cce64a0b745b852a390b023cbb916 100644 GIT binary patch delta 276 zcmZ3=wUk>jEZBqb_T%4g5=%;oGLuS6QWbJjQ!-0)3nmK6u)~--(wb1FLRo6EkwRH~ zNoqxMetuDkfi+iIVo_ygUOHS~f;3!T6^cF+Bz?x1`qm-zosiLiI6@&evBX57G(I;! zB{e53GqpURC_l@Zt28e&Ex#xiX5}PCZJ3plwHQ6%>_WyqIQt*tJ~(?f(>XZ1gBigN HWw`(V+0bdH delta 148 zcmZ3=y_8EZEZBqb_T%4g5=%;oGLuS6QYT8vOth7n7%w%kQOdV0HQ7X=EWRYQA~`?5 zD8Prk(1J2{RTMszPpRN@i(p!9+nRb{JC&!E`oKfr=`Wr6wCI zl*N~2rj}cCmF8upK+I9dO)N1{D2>m}Pf5)Q1F8)u%Fn`7e^3!_+e2p< ibFwmHIGkO{*Z^n$U|hgg8lRSvSrDda%~i|A#Q*?2qe~J1 delta 143 zcmeyzx{_5ZEZBq5Y^_jNVo6C+W>RTMszO<6vWY@sd|rN0Zeor#7hGbZmDI!-LlK~~ zu|ipVS!QavHCJg~W*Si4#EmjCi6tfqrSZA>DXBSOK)HaT{49k0PsPbfj82nt7{ex? dVyvGW$TVM2SEDpOEhn=eOjFaEtCow40RWbwGIIa` diff --git a/examples/runtime/shaders/gles/vs_shadowvolume_color_texture.bin b/examples/runtime/shaders/gles/vs_shadowvolume_color_texture.bin index 94cc7cda16f92fa1e8c389a25ef8a6d60bf18f34..facd03bfcf18dc21accbc32e7a8a1b9f409bf32c 100644 GIT binary patch delta 100 zcmbQvw4X^bEZBoFU(U`Zv81FZGpV#BRUtPuC9^cQV4|Q5JB+C#tqEl+l%*ycDU`*R eq*f&7=NF|ISaX%;Wv1m9<-+wPXu$QgPXGYUZzLuF delta 37 tcmdnbG@VH>EZBoFU(U`Zv81FZGpV#Bb)uxqL|dte@zN8U)Fy7|2LRzP4Eq28 diff --git a/examples/runtime/shaders/gles/vs_shadowvolume_svback.bin b/examples/runtime/shaders/gles/vs_shadowvolume_svback.bin index 3d1f6a8b124d34bd93a3f057136a5b6be7037e4d..a2b0888100810301432e252b6bcdf19603ed7180 100644 GIT binary patch delta 73 zcmaFF)Wj?q7VN>u00fC8B}JJ@r6s8fxv43crMU$Y1*O@bEG>B+sGvewYO=}1`wA0t Lh1p^1>K_9DSS%Tq delta 34 ocmZo-e#9gg7VN>u00fC8B}JJ@r6s8oC8a0Y$WBZ&pSa)=0H%lwEC2ui diff --git a/examples/runtime/shaders/gles/vs_shadowvolume_svfront.bin b/examples/runtime/shaders/gles/vs_shadowvolume_svfront.bin index bb6aab4f3f68ea7feca923b16b7674171cc6e0db..8d5597962252d67650a2807e15503298d835b70d 100644 GIT binary patch delta 54 wcmX@Yc!yCkEZBpQ0SFRHN{TX*N=s4|a#K?>OLGe*3QDsecl+1u#FCPt%%swiRE6Bsl+4oHf{B7M>@cQ|v=Wr5kd~95SfWrC hpKZ-mnwOcDUz7{i5GfDWP;LQduDb?fPHtvw1porNEQA06 delta 60 zcmX@W(!nAa7VN>ecl+1u#FCPt%%swi)QOTZ6K$o0(sJ?>OBBlDv#q&G^D@)&i*hGc Q%1>NiKJot5$$J=E0Jy#wApigX diff --git a/examples/runtime/shaders/gles/vs_shadowvolume_texture.bin b/examples/runtime/shaders/gles/vs_shadowvolume_texture.bin index 94cc7cda16f92fa1e8c389a25ef8a6d60bf18f34..facd03bfcf18dc21accbc32e7a8a1b9f409bf32c 100644 GIT binary patch delta 100 zcmbQvw4X^bEZBoFU(U`Zv81FZGpV#BRUtPuC9^cQV4|Q5JB+C#tqEl+l%*ycDU`*R eq*f&7=NF|ISaX%;Wv1m9<-+wPXu$QgPXGYUZzLuF delta 37 tcmdnbG@VH>EZBoFU(U`Zv81FZGpV#Bb)uxqL|dte@zN8U)Fy7|2LRzP4Eq28 diff --git a/examples/runtime/shaders/gles/vs_shadowvolume_texture_lightning.bin b/examples/runtime/shaders/gles/vs_shadowvolume_texture_lightning.bin index 6feb481eda1ebb9dfaa6256d990a1758b04ad96f..e827ab6b6dcb2bfc556265e7f4d736b82faf0aab 100644 GIT binary patch delta 224 zcmeyv`jAaBEZBqbWv*FwVo6C+W>RTMszPpRN@i(p!9+nRb{JDjMia_ZC`(N?Qb>$1 zNv%lE&o4?bu;waDEUL`RONZ-=H-hV%AgzL=&sd=>zAQ7f+?uO2FEcH_C>O3}zYH7H v(wp*d&EFMa%*o=6&Tw`lV>q0>p0NSW)??bsR~ny|lUWd^Y0Xv3#l-*s&Q?-P delta 171 zcmaFJ_J>s~EZBqbWv*FwVo6C+W>RTMszO<6vWY@sd|rN0Zeor#7hGbZmCVFAsfi7S z9zYdF3T5#nsTIlj`9&!P)?8(YMU|O(=^(wvK$)`4)N*UC(!9(xpdkvmi6tfqrSZA> zDXBSO$TE{98RaKCFe*&WV04&C5&!YJsckmSKZhvs3}bI;;%0@M$58 XIXRTk63*^rtcJ7MnR4LlBBpKtE^SNk delta 109 zcmaFL_Lo&FEZBpQqae#8v81FZGpV#BRiP|3*+d~RJ}OLGe*3QDsOLGe*3QDsWu^i3D&!`Xm?)IS=jNxR=7b^3Ox&q4@nyl}M8^8b HFBo$H+2%4} diff --git a/examples/runtime/shaders/gles/vs_stencil_color_texture.bin b/examples/runtime/shaders/gles/vs_stencil_color_texture.bin index 94cc7cda16f92fa1e8c389a25ef8a6d60bf18f34..facd03bfcf18dc21accbc32e7a8a1b9f409bf32c 100644 GIT binary patch delta 100 zcmbQvw4X^bEZBoFU(U`Zv81FZGpV#BRUtPuC9^cQV4|Q5JB+C#tqEl+l%*ycDU`*R eq*f&7=NF|ISaX%;Wv1m9<-+wPXu$QgPXGYUZzLuF delta 37 tcmdnbG@VH>EZBoFU(U`Zv81FZGpV#Bb)uxqL|dte@zN8U)Fy7|2LRzP4Eq28 diff --git a/examples/runtime/shaders/gles/vs_stencil_texture.bin b/examples/runtime/shaders/gles/vs_stencil_texture.bin index 94cc7cda16f92fa1e8c389a25ef8a6d60bf18f34..facd03bfcf18dc21accbc32e7a8a1b9f409bf32c 100644 GIT binary patch delta 100 zcmbQvw4X^bEZBoFU(U`Zv81FZGpV#BRUtPuC9^cQV4|Q5JB+C#tqEl+l%*ycDU`*R eq*f&7=NF|ISaX%;Wv1m9<-+wPXu$QgPXGYUZzLuF delta 37 tcmdnbG@VH>EZBoFU(U`Zv81FZGpV#Bb)uxqL|dte@zN8U)Fy7|2LRzP4Eq28 diff --git a/examples/runtime/shaders/gles/vs_stencil_texture_lightning.bin b/examples/runtime/shaders/gles/vs_stencil_texture_lightning.bin index 4e09e76e793164227eafcb398ea21b0cf4fb45bb..d6aa67f9a162d626b59d40bc34b8407b372277a9 100644 GIT binary patch delta 213 zcmaFBvV&DJEZBpw&i9W`Vo6C+W>RTMszPpRN@i(p!9+nRb{JDjMia_ZC`(N?Qb>$1 zNv%lE&o4?bu;waDEUL`RONZ-=mq1lqhEMSXaSe!d3b~0TCJLqTx%nxnIboTp<;?eq#!yoL delta 81 zcmdnN`hZ0%EZBpw&i9W`Vo6C+W>RTMszO<6vWY@sd|rN0Zeor#7hGbZmCVFAsfi8Z f6X#1!JSaBtzSLw!MzzWMj0KaIGuBVmW9k9`-=ZD@ diff --git a/examples/runtime/shaders/gles/vs_tree.bin b/examples/runtime/shaders/gles/vs_tree.bin index 19a566c7f6880090aee4d983a676b1bc21edb7b9..1090f28a60bfb17d5b8acb4a4cba6f31a66b1589 100644 GIT binary patch delta 197 zcmX@gx|B^aEZBqbWv*FwVo6C+W>RTMszPpRN@i(p!9+nRb{JDjMia_ZC`(N?Qb>$1 zNv%lE&o4?bu;waDEUL`RONZ-=H-hV%AgzL=&sd=>zAQ7f+?uO2FEcH_C>O3}zYH7H c(wiDE&660NVa&-+jCFAKe#RU)TZ?Hn02mlaEdT%j delta 149 zcmZ3=c9c~sEZBqbWv*FwVo6C+W>RTMszO<6vav#9d|rN0Zeor#7hGbZmCVFAsfi7S z9zYdF3T5#nsTIlj`9&!P)?8(YMU|O(=@7kT@nxB*<<8$*< eQggzPWhP59YE1TIbecSwv39ZqQ}*O;rda^>$ThbB diff --git a/examples/runtime/shaders/gles/vs_update.bin b/examples/runtime/shaders/gles/vs_update.bin index 359cae12982f0e7f3f98adc70f5661b7b1ea2d2a..b85eee5c059b2cdc9d2525f29864d74b51c666f4 100644 GIT binary patch delta 100 zcmbQvw4X^bEZBoFU(U`Zv81FZGpV#BRUtPuC9^cQV4|Q5JB+C#tqEl+l%*ycE0o2T eq*f&7=NF|ISaX%;Wv1m9<-+wPXu$QgPXGYUnEZBoFU(U`Zv81FZGpV#Bb)uxqL|dte@zN8U)Fy7|2LRzP4Eq28 diff --git a/examples/runtime/shaders/glsl/fs_raymarching.bin b/examples/runtime/shaders/glsl/fs_raymarching.bin index b515ef727..d40d29f4c 100644 --- a/examples/runtime/shaders/glsl/fs_raymarching.bin +++ b/examples/runtime/shaders/glsl/fs_raymarching.bin @@ -275,61 +275,112 @@ void main () tmpvar_78.xw = vec2(1.0, 1.0); tmpvar_78.y = tmpvar_77; tmpvar_78.z = (float((tmpvar_75 >= 0.0)) * max (0.0, tmpvar_76.y)); - float tmpvar_79; - tmpvar_79 = ((0.9 * tmpvar_77) + (pow (tmpvar_78.z, 128.0) * max ( - (0.2 + (0.8 * pow ((1.0 - tmpvar_75), 5.0))) - , 0.0))); + float occ_79; vec3 _pos_80; - _pos_80 = tmpvar_24; - vec3 _normal_81; - _normal_81 = tmpvar_74; - float occ_83; - occ_83 = 0.0; - for (int ii_82 = 1; ii_82 < 4; ii_82++) { - float tmpvar_84; - tmpvar_84 = float(ii_82); - vec3 _pos_85; - _pos_85 = (_pos_80 + ((_normal_81 * tmpvar_84) * 0.2)); - vec3 tmpvar_86; - tmpvar_86 = max ((abs(_pos_85) - vec3(2.5, 2.5, 2.5)), 0.0); - vec3 _pos_87; - _pos_87 = (_pos_85 + vec3(4.0, 0.0, 0.0)); - vec3 _pos_88; - _pos_88 = (_pos_85 + vec3(-4.0, 0.0, 0.0)); - vec3 _pos_89; - _pos_89 = (_pos_85 + vec3(0.0, 4.0, 0.0)); - vec3 _pos_90; - _pos_90 = (_pos_85 + vec3(0.0, -4.0, 0.0)); - vec3 _pos_91; - _pos_91 = (_pos_85 + vec3(0.0, 0.0, 4.0)); - vec3 _pos_92; - _pos_92 = (_pos_85 + vec3(0.0, 0.0, -4.0)); - occ_83 = (occ_83 + (( - (tmpvar_84 * 0.2) - - - min (min (min (min ( - min (min ((sqrt( - dot (tmpvar_86, tmpvar_86) - ) - 0.5), (sqrt( - dot (_pos_87, _pos_87) - ) - 1.0)), (sqrt(dot (_pos_88, _pos_88)) - 1.0)) - , - (sqrt(dot (_pos_89, _pos_89)) - 1.0) - ), ( - sqrt(dot (_pos_90, _pos_90)) - - 1.0)), (sqrt( - dot (_pos_91, _pos_91) - ) - 1.0)), (sqrt(dot (_pos_92, _pos_92)) - 1.0)) - ) / exp2(tmpvar_84))); - }; - float tmpvar_93; - tmpvar_93 = pow ((tmpvar_79 * (1.0 - occ_83)), 0.454545); - vec4 tmpvar_94; - tmpvar_94.w = 1.0; - tmpvar_94.x = tmpvar_93; - tmpvar_94.y = tmpvar_93; - tmpvar_94.z = tmpvar_93; - gl_FragColor = tmpvar_94; + _pos_80 = (tmpvar_24 + (tmpvar_74 * 0.2)); + vec3 tmpvar_81; + tmpvar_81 = max ((abs(_pos_80) - vec3(2.5, 2.5, 2.5)), 0.0); + vec3 _pos_82; + _pos_82 = (_pos_80 + vec3(4.0, 0.0, 0.0)); + vec3 _pos_83; + _pos_83 = (_pos_80 + vec3(-4.0, 0.0, 0.0)); + vec3 _pos_84; + _pos_84 = (_pos_80 + vec3(0.0, 4.0, 0.0)); + vec3 _pos_85; + _pos_85 = (_pos_80 + vec3(0.0, -4.0, 0.0)); + vec3 _pos_86; + _pos_86 = (_pos_80 + vec3(0.0, 0.0, 4.0)); + vec3 _pos_87; + _pos_87 = (_pos_80 + vec3(0.0, 0.0, -4.0)); + occ_79 = ((0.2 - min ( + min (min (min (min ( + min ((sqrt(dot (tmpvar_81, tmpvar_81)) - 0.5), (sqrt(dot (_pos_82, _pos_82)) - 1.0)) + , + (sqrt(dot (_pos_83, _pos_83)) - 1.0) + ), ( + sqrt(dot (_pos_84, _pos_84)) + - 1.0)), (sqrt( + dot (_pos_85, _pos_85) + ) - 1.0)), (sqrt(dot (_pos_86, _pos_86)) - 1.0)) + , + (sqrt(dot (_pos_87, _pos_87)) - 1.0) + )) / 2.0); + vec3 _pos_88; + _pos_88 = (tmpvar_24 + (0.4 * tmpvar_74)); + vec3 tmpvar_89; + tmpvar_89 = max ((abs(_pos_88) - vec3(2.5, 2.5, 2.5)), 0.0); + vec3 _pos_90; + _pos_90 = (_pos_88 + vec3(4.0, 0.0, 0.0)); + vec3 _pos_91; + _pos_91 = (_pos_88 + vec3(-4.0, 0.0, 0.0)); + vec3 _pos_92; + _pos_92 = (_pos_88 + vec3(0.0, 4.0, 0.0)); + vec3 _pos_93; + _pos_93 = (_pos_88 + vec3(0.0, -4.0, 0.0)); + vec3 _pos_94; + _pos_94 = (_pos_88 + vec3(0.0, 0.0, 4.0)); + vec3 _pos_95; + _pos_95 = (_pos_88 + vec3(0.0, 0.0, -4.0)); + occ_79 = (occ_79 + ((0.4 - + min (min (min (min ( + min (min ((sqrt( + dot (tmpvar_89, tmpvar_89) + ) - 0.5), (sqrt( + dot (_pos_90, _pos_90) + ) - 1.0)), (sqrt(dot (_pos_91, _pos_91)) - 1.0)) + , + (sqrt(dot (_pos_92, _pos_92)) - 1.0) + ), ( + sqrt(dot (_pos_93, _pos_93)) + - 1.0)), (sqrt( + dot (_pos_94, _pos_94) + ) - 1.0)), (sqrt(dot (_pos_95, _pos_95)) - 1.0)) + ) / 4.0)); + vec3 _pos_96; + _pos_96 = (tmpvar_24 + (0.6 * tmpvar_74)); + vec3 tmpvar_97; + tmpvar_97 = max ((abs(_pos_96) - vec3(2.5, 2.5, 2.5)), 0.0); + vec3 _pos_98; + _pos_98 = (_pos_96 + vec3(4.0, 0.0, 0.0)); + vec3 _pos_99; + _pos_99 = (_pos_96 + vec3(-4.0, 0.0, 0.0)); + vec3 _pos_100; + _pos_100 = (_pos_96 + vec3(0.0, 4.0, 0.0)); + vec3 _pos_101; + _pos_101 = (_pos_96 + vec3(0.0, -4.0, 0.0)); + vec3 _pos_102; + _pos_102 = (_pos_96 + vec3(0.0, 0.0, 4.0)); + vec3 _pos_103; + _pos_103 = (_pos_96 + vec3(0.0, 0.0, -4.0)); + occ_79 = (occ_79 + ((0.6 - + min (min (min (min ( + min (min ((sqrt( + dot (tmpvar_97, tmpvar_97) + ) - 0.5), (sqrt( + dot (_pos_98, _pos_98) + ) - 1.0)), (sqrt(dot (_pos_99, _pos_99)) - 1.0)) + , + (sqrt(dot (_pos_100, _pos_100)) - 1.0) + ), ( + sqrt(dot (_pos_101, _pos_101)) + - 1.0)), (sqrt( + dot (_pos_102, _pos_102) + ) - 1.0)), (sqrt(dot (_pos_103, _pos_103)) - 1.0)) + ) / 8.0)); + float tmpvar_104; + tmpvar_104 = pow ((( + (0.9 * tmpvar_77) + + + (pow (tmpvar_78.z, 128.0) * max ((0.2 + (0.8 * + pow ((1.0 - tmpvar_75), 5.0) + )), 0.0)) + ) * (1.0 - occ_79)), 0.454545); + vec4 tmpvar_105; + tmpvar_105.w = 1.0; + tmpvar_105.x = tmpvar_104; + tmpvar_105.y = tmpvar_104; + tmpvar_105.z = tmpvar_104; + gl_FragColor = tmpvar_105; gl_FragDepth = (tmpvar_23 / tmpvar_7); } else { gl_FragColor = v_color0; diff --git a/examples/runtime/shaders/glsl/fs_sms_mesh.bin b/examples/runtime/shaders/glsl/fs_sms_mesh.bin index 453872ced28105094a1d4d5f14484d23325ae407..cc372335d25b3690222c2203588cd18b90371de7 100644 GIT binary patch delta 105 zcmexv^}uRFGh<9{VugZ+fu4bmLP~y#f`*0$mjW1Q80i@(XepHB7L+9x#T#ovgtZjP q;`8#0auahj6?9>eMw&Vbx*8DS%&Jt4viP#h)N)Nt&CTB!8>In5OCO5> delta 140 zcmaE0_1$ViGh=;0ez}51ZeoRkhJl`ejzUU)iGqd(mjW1QXc*}kC}=5^VugZ+fu4bmLP~y#f`*0$mjW1Q80i@(XepHB7L+9x#T#ovgtZjP q;`8#0auahj6?9>eMw&Vbx*8DS%&Jt4viP#h)N)Nt&CMSeD`fyT2p?bo delta 140 zcmca)^U`KREn|H_ez}51ZeoRkhJl`ejzUU)iGqd(mjW1QXc*}kC}=5^m_program[_handle.idx].create(s_renderCtx->m_vertexShaders[_vsh.idx], s_renderCtx->m_fragmentShaders[_fsh.idx]); } - void Context::rendererDestroyProgram(FragmentShaderHandle _handle) + void Context::rendererDestroyProgram(ProgramHandle _handle) { s_renderCtx->m_program[_handle.idx].destroy(); } diff --git a/src/renderer_gl.cpp b/src/renderer_gl.cpp index 454ed89b3..adf17b860 100644 --- a/src/renderer_gl.cpp +++ b/src/renderer_gl.cpp @@ -507,7 +507,6 @@ namespace bgfx NULL }; -#if !BGFX_CONFIG_RENDERER_OPENGLES3 static void GL_APIENTRY stubVertexAttribDivisor(GLuint /*_index*/, GLuint /*_divisor*/) { } @@ -521,7 +520,6 @@ namespace bgfx { GL_CHECK(glDrawElements(_mode, _count, _type, _indices) ); } -#endif // !BGFX_CONFIG_RENDERER_OPENGLES3 static void GL_APIENTRY stubFrameTerminatorGREMEDY() { @@ -1353,7 +1351,6 @@ namespace bgfx } else { - if (!BX_ENABLED(BX_PLATFORM_IOS) ) { if (s_extension[Extension::ARB_instanced_arrays].m_supported @@ -1916,7 +1913,6 @@ namespace bgfx else { BX_UNUSED(_zoffset, _depth); - BX_TRACE("x %d, y %d, w %d, h %d", _xoffset, _yoffset, _width, _height); GL_CHECK(glTexSubImage2D(_target, _level, _xoffset, _yoffset, _width, _height, _format, _type, _data) ); } }